diff --git a/.github/workflows/fetch.yml b/.github/workflows/fetch.yml index f4179decc..ea71f96b8 100644 --- a/.github/workflows/fetch.yml +++ b/.github/workflows/fetch.yml @@ -39,7 +39,7 @@ jobs: key: ${{ runner.os }}-pip-${{ steps.get-week.outputs.WEEK }}-${{ hashFiles('setup.cfg') }} - name: Install eodag run: | - python -m pip install . + python -m pip install ".[all-providers]" - name: Fetch and update external product types reference run: | export JSON_OUTPUT_FILE="eodag/resources/ext_product_types.json" @@ -59,7 +59,7 @@ jobs: echo "commit [${COMMIT_SHA}](${COMMIT_URL})" >> $GITHUB_STEP_SUMMARY echo '```diff' >> $GITHUB_STEP_SUMMARY git show --name-only --format=tformat: >> $GITHUB_STEP_SUMMARY - (diff <(curl ${JSON_REF_FILE} | jq ) <(cat ${JSON_OUTPUT_FILE} | jq) || true) >> $GITHUB_STEP_SUMMARY + (diff <(curl ${JSON_REF_FILE} | jq --sort-keys) <(cat ${JSON_OUTPUT_FILE} | jq --sort-keys) || true) >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY # truncated PR body (too long causes error) full_update_summary=$(cat $GITHUB_STEP_SUMMARY) @@ -67,7 +67,7 @@ jobs: echo "${full_update_summary:0:65536}" >> $GITHUB_ENV echo 'EOF' >> $GITHUB_ENV - name: Create Pull Request - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v6 with: branch: external-product-types-ref-update delete-branch: true diff --git a/CHANGES.rst b/CHANGES.rst index 2315cfbdf..c0c7d7e8c 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,10 +1,114 @@ Release history --------------- +3.0.0b1 (2024-06-24) +++++++++++++++++++++ + +Breaking changes +^^^^^^^^^^^^^^^^ + +* `search() `_ method now + returns only a :class:`~eodag.api.search_result.SearchResult` instead of a 2 values tuple (:pull:`1200`). It can + optionally store the estimated total number of products in ``SearchResult.number_matched`` if the method is called + with ``count=True`` (``False`` by default). +* Packaging refactoring and new `optional dependencies + `_ (:pull:`1108`) + (:pull:`1219`). EODAG default installs with a minimal set of dependencies. + New sets of extra requirements are: ``eodag[all]``, ``eodag[all-providers]``, ``eodag[ecmwf]``, ``eodag[usgs]``, + ``eodag[csw]``, ``eodag[server]``. Previous existing sets of extra requirements are also kept: + ``eodag[notebook]``, ``eodag[tutorials]``, ``eodag[dev]``, ``eodag[docs]``. + +Core features and fixes +^^^^^^^^^^^^^^^^^^^^^^^ + +* Providers groups (:pull:`1071`) +* Configurable download timeout (:pull:`1124`) +* `Search by id `_ now + uses :meth:`~eodag.api.core.EODataAccessGateway.search_all` and + `crunch `_ + (:pull:`1099`). +* Free text search available for all fields when `guessing a produc type + `_ (:pull:`1070`), + mission dates filtering support (:pull:`1222`) +* Configurable requests ``ssl_verify`` (:pull:`1045`) +* Fixed and refactored `queryables` (:pull:`1050`)(:pull:`1097`)(:pull:`1102`)(:pull:`1157`), authentication fix + (:pull:`1194`), support for local constraints files (:pull:`1105`) +* Fixed `metadata mapping` in templates detection (:pull:`1139`), ``format_query_params()`` fixes (:pull:`1145`) and + refactor (:pull:`1142`) + +Providers and product types updates +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* `dedl `_ as new provider (:pull:`750`) +* `dedt_lumi `_ as new provider (:pull:`1119`) + (:pull:`1126`), with authentication using destine credentials (:pull:`1127`) +* `cop_marine `_ as new provider (:pull:`1131`)(:pull:`1224`) +* `eumetsat_ds `_ as new provider (:pull:`1060`), including `METOP` product types + (:pull:`1143`)(:pull:`1189`) +* `OData` API usage for ``creodias`` & ``cop_dataspace`` (:pull:`1149`), fixes for empty geometries (:pull:`1186`), + search datetime intervals (:pull:`1158`), and removed `discover_product_types` (:pull:`1112`) +* ``cop_ads`` and ``cop_cds`` now use :class:`~eodag.plugins.search.build_search_result.BuildSearchResult` and + :class:`~eodag.plugins.download.http.HTTPDownload` instead of move ``CdsApi`` (:pull:`1029`), `EFAS` dates formatting + (:pull:`1178`), ``area`` metadata mapping fix (:pull:`1225`) +* ``wekeo`` now uses `hda-broker 2.0` API (:pull:`1034`), lists queryables (:pull:`1104`), has fixed pagination + (:pull:`1098`) and CLMS search by id (:pull:`1100`) +* Adjusted timeouts (:pull:`1163`) +* Opened time intervals supported for STAC providers (:pull:`1144`) +* New product types (:pull:`1164`)(:pull:`1227`), providers and product types configuration update (:pull:`1212`) + +Plugins new features and fixes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* Refactored search plugins methods to use ``PreparedSearch`` and ``RawSearchResult`` new classes (:pull:`1191`) +* Refresh token for :class:`~eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth` plugin + (:pull:`1138`), tests (:pull:`1135`), and fix (:pull:`1232`) +* :class:`~eodag.plugins.authentication.header.HTTPHeaderAuth` accepts headers definition in credentials (:pull:`1215`) +* ``flatten_top_dirs`` download plugins option set to true by default (#1220) +* ``base_uri`` download plugins setting is not systematically mandatory any more (:pull:`1230`) +* Re-login in :class:`~eodag.plugins.apis.usgs.UsgsApi` plugin on api file error (:pull:`1046`) +* Allow no auth for :class:`~eodag.plugins.download.http.HTTPDownload` download requests (:pull:`1196`) +* Refactorization of ``Api`` base plugin that now inherits from ``Search`` and ``Download`` (:pull:`1051`) +* ``orderLink`` support in `build_search_result.*` plugins (:pull:`1082`), and parsing fix (:pull:`1091`) + +Server mode +^^^^^^^^^^^ + +* Offline products order handling (:pull:`918`) +* External enhanced product types metadata (:pull:`1008`)(:pull:`1171`)(:pull:`1176`)(:pull:`1180`)(:pull:`1197`) +* Collections search using updated :meth:`~eodag.api.core.EODataAccessGateway.guess_product_type` (:pull:`909`) +* Providers groups (:pull:`1192`), and fixes for listing (:pull:`1187`) and items self links (:pull:`1090`) +* ``HEAD`` requests enabled (:pull:`1120`) +* LRU caching (:pull:`1073`) +* Additional item properties (:pull:`1170`) +* ``order`` and ``storage`` extensions usage (:pull:`1117`) +* ``bbox`` in queryables (:pull:`1185`), fixed some types missing (:pull:`1083`) +* Blacklist configution for assets alternate URLs (:pull:`1213`) +* ``id`` vs ``title`` in item metadata fix (:pull:`1193`) +* Error handling fixes (:pull:`1078`)(:pull:`1103`)(:pull:`1182`) +* Other server-mode fixes (:pull:`1065`)(:pull:`1087`)(:pull:`1094`)(:pull:`1095`)(:pull:`1096`)(:pull:`1106`) + (:pull:`1113`)(:pull:`1115`)(:pull:`1156`)(:pull:`1174`)(:pull:`1210`)(:pull:`1221`)(:pull:`1223`) + +Miscellaneous +^^^^^^^^^^^^^ + +* **[build]** Updated requirements for ``uvicorn`` (:pull:`1152`), ``shapely`` (:pull:`1155`), ``orjson`` (:pull:`1150`) + (:pull:`1079`) +* **[build]** Remove ``requests-ftp`` (:pull:`1085`) +* **[style]** type hints related fixes and refactoring (:pull:`1052`) +* **[docs]** sphinx theme updated and removed jquery (:pull:`1054`), newlines between badges fixes (:pull:`1109`), and other + documentation fixes and updates (:pull:`1057`)(:pull:`1059`)(:pull:`1062`)(:pull:`1063`)(:pull:`1081`)(:pull:`1121`) + (:pull:`1122`) +* **[ci]** Fetch product types Github action updates (:pull:`1202`)(:pull:`1205`) +* Various minor fixes and improvements (:pull:`1072`)(:pull:`1077`)(:pull:`1101`)(:pull:`1111`)(:pull:`1118`) + (:pull:`1132`)(:pull:`1141`)(:pull:`1190`) +* External product types reference updates (:pull:`1086`)(:pull:`1093`)(:pull:`1107`)(:pull:`1110`)(:pull:`1114`) + (:pull:`1136`)(:pull:`1137`)(:pull:`1140`)(:pull:`1146`)(:pull:`1151`)(:pull:`1153`)(:pull:`1160`)(:pull:`1165`) + (:pull:`1203`)(:pull:`1204`)(:pull:`1206`)(:pull:`1207`)(:pull:`1208`)(:pull:`1229`) + 2.12.1 (2024-03-05) +++++++++++++++++++ -* :class:`~eodag.plugins.apis.cds.CdsApi` queryables fix (:pull:`1048`) +* `CdsApi` queryables fix (:pull:`1048`) 2.12.0 (2024-02-19) +++++++++++++++++++ @@ -22,10 +126,10 @@ Release history * New product types added for `cop_ads` and `cop_cds` (:pull:`898`) * Adds missing `tileIdentifier` and `quicklook` for `creodias`, `creodias_s3` and `cop_dataspace` (:pull:`957`) (:pull:`1014`) -* HTTP download with :class:`~eodag.plugins.apis.cds.CdsApi` (:pull:`946`) +* HTTP download with `CdsApi` (:pull:`946`) * Download streaming available for :class:`~eodag.plugins.download.aws.AwsDownload` plugin (:pull:`997`) * Lists STAC alternate assets in server mode (:pull:`961`) -* `_dc_qs` used in server-mode to store :class:`~eodag.plugins.apis.cds.CdsApi` search criteria (:pull:`958`)(:pull:`1000`) +* `_dc_qs` used in server-mode to store `CdsApi` search criteria (:pull:`958`)(:pull:`1000`) * New eodag exception :class:`~eodag.utils.exceptions.TimeOutError` (:pull:`982`) * Cast loaded environment variables type using config type-hints (:pull:`987`) * Type hints fixes (:pull:`880`)(:pull:`983`) @@ -106,7 +210,7 @@ Release history (:pull:`659`) * Fetch product types optimization (:pull:`683`) * Fixes external product types update for unknown provider (:pull:`682`) -* Default dates and refactor for `:class:`~eodag.plugins.apis.cds.CdsApi` and `:class:`~eodag.plugins.apis.cds.EcmwfApi` (:pull:`672`)(:pull:`678`)(:pull:`679`) +* Default dates and refactor for `CdsApi` and :class:`~eodag.plugins.apis.ecmwf.EcmwfApi` (:pull:`672`)(:pull:`678`)(:pull:`679`) * `peps` `storageStatus` update (:pull:`677`) * Customized and faster `deepcopy` (:pull:`664`) * Various minor fixes and improvements (:pull:`665`)(:pull:`666`)(:pull:`667`)(:pull:`668`)(:pull:`669`)(:pull:`670`) @@ -198,7 +302,7 @@ Release history (:pull:`480`)(:pull:`467`)(:pull:`470`)(:pull:`471`)(:pull:`472`)(:pull:`473`)(:pull:`481`)(:pull:`486`)(:pull:`493`) (:pull:`491`)(:pull:`500`) * New providers `cop_ads `_ and `cop_cds `_ - for Copernicus Atmosphere and Climate Data Stores using :class:`~eodag.plugins.apis.cds.CdsApi` plugin, developed in + for Copernicus Atmosphere and Climate Data Stores using `CdsApi` plugin, developed in the context of DOMINO-X (:pull:`504`)(:pull:`513`) * :class:`~eodag.plugins.apis.usgs.UsgsApi` plugin fixed and updated (:pull:`489`)(:pull:`508`) * Cache usage for ``jsonpath.parse()`` (:pull:`502`) diff --git a/NOTICE b/NOTICE index 93a19ad34..9f763bc3c 100644 --- a/NOTICE +++ b/NOTICE @@ -22,7 +22,6 @@ https://github.com/boto/botocore https://github.com/h2non/jsonpath-ng https://github.com/CS-SI/eodag-cube https://github.com/ecmwf/ecmwf-api-client -https://github.com/ecmwf/cdsapi https://github.com/ijl/orjson https://github.com/stac-utils/pystac @@ -46,7 +45,11 @@ https://github.com/tiangolo/fastapi https://github.com/urllib3/urllib3 https://github.com/annotated-types/annotated-types https://github.com/pypa/setuptools - +https://github.com/pydantic/pydantic +https://github.com/pydantic/pydantic-core +https://github.com/pydantic/pydantic-settings +https://github.com/geopython/pygeofilter +https://github.com/tkem/cachetools ================================================================ The BSD-2-Clause Licence diff --git a/README.rst b/README.rst index 303bbe626..a95885868 100644 --- a/README.rst +++ b/README.rst @@ -3,32 +3,36 @@ | -.. image:: https://badge.fury.io/py/eodag.svg +.. |pypi-badge| image:: https://badge.fury.io/py/eodag.svg :target: https://badge.fury.io/py/eodag -.. image:: https://img.shields.io/conda/vn/conda-forge/eodag +.. |conda-badge| image:: https://img.shields.io/conda/vn/conda-forge/eodag :target: https://anaconda.org/conda-forge/eodag -.. image:: https://readthedocs.org/projects/eodag/badge/?version=latest&style=flat +.. |rtd-badge| image:: https://readthedocs.org/projects/eodag/badge/?version=latest&style=flat :target: https://eodag.readthedocs.io/en/latest/ -.. image:: https://github.com/CS-SI/eodag/actions/workflows/test.yml/badge.svg +.. |gha-badge| image:: https://github.com/CS-SI/eodag/actions/workflows/test.yml/badge.svg :target: https://github.com/CS-SI/eodag/actions -.. image:: https://img.shields.io/github/issues/CS-SI/eodag.svg +.. |ghi-badge| image:: https://img.shields.io/github/issues/CS-SI/eodag.svg :target: https://github.com/CS-SI/eodag/issues -.. image:: https://mybinder.org/badge_logo.svg +.. |binder-badge| image:: https://mybinder.org/badge_logo.svg :target: https://mybinder.org/v2/git/https%3A%2F%2Fgithub.com%2FCS-SI%2Feodag.git/master?filepath=docs%2Fnotebooks%2Fintro_notebooks.ipynb +|pypi-badge| |conda-badge| |rtd-badge| |gha-badge| |ghi-badge| |binder-badge| + | -.. image:: https://img.shields.io/pypi/l/eodag.svg +.. |license-badge| image:: https://img.shields.io/pypi/l/eodag.svg :target: https://pypi.org/project/eodag/ -.. image:: https://img.shields.io/pypi/pyversions/eodag.svg +.. |versions-badge| image:: https://img.shields.io/pypi/pyversions/eodag.svg :target: https://pypi.org/project/eodag/ +|license-badge| |versions-badge| + | .. @@ -80,6 +84,9 @@ And with ``conda`` from the `conda-forge channel `_. + Usage ===== @@ -98,7 +105,7 @@ Example usage for interacting with the api in your Python code: dag = EODataAccessGateway() - search_results, total_count = dag.search( + search_results = dag.search( productType='S2_MSI_L1C', geom={'lonmin': 1, 'latmin': 43.5, 'lonmax': 2, 'latmax': 44}, # accepts WKT polygons, shapely.geometry, ... start='2021-01-01', @@ -112,10 +119,13 @@ This will search for Sentinel 2 level-1C products on the default provider and re an estimated total number of products matching the search criteria. And then it will download these products. Please check the `Python API User Guide `_ for more details. +**[New in v3.0.0]** `search() `_ +method now returns only a single ``SearchResult`` instead of a 2 values tuple. + STAC REST API ------------- -An eodag instance can be exposed through a STAC compliant REST api from the command line: +An eodag instance can be exposed through a STAC compliant REST api from the command line (``eodag[server]`` needed): .. code-block:: bash @@ -173,7 +183,7 @@ An eodag instance can be exposed through a STAC compliant REST api from the comm .. code-block:: bash - docker run -p 5000:5000 --rm csspace/eodag-server:2.12.1 + docker run -p 5000:5000 --rm csspace/eodag-server:3.0.0b1 You can also browse over your STAC API server using `STAC Browser `_. Simply run: diff --git a/charts/eodag-server/Chart.lock b/charts/eodag-server/Chart.lock index d8f06a13a..18499873a 100644 --- a/charts/eodag-server/Chart.lock +++ b/charts/eodag-server/Chart.lock @@ -1,6 +1,6 @@ dependencies: - name: common repository: oci://registry-1.docker.io/bitnamicharts - version: 2.4.0 -digest: sha256:b371e6f7f1449fa3abdcb97a04b0bbb2b5d36a4facb8e79041ac36a455b02bb0 -generated: "2023-06-19T12:39:44.271254606+02:00" + version: 2.19.3 +digest: sha256:de997835d9ce9a9deefc2d70d8c62b11aa1d1a76ece9e86a83736ab9f930bf4d +generated: "2024-06-03T18:43:30.71045378+02:00" diff --git a/charts/eodag-server/Chart.yaml b/charts/eodag-server/Chart.yaml index 734300a00..cb310b36d 100644 --- a/charts/eodag-server/Chart.yaml +++ b/charts/eodag-server/Chart.yaml @@ -1,11 +1,11 @@ apiVersion: v2 -appVersion: 2.12.1 +appVersion: 3.0.0b1 dependencies: - name: common repository: oci://registry-1.docker.io/bitnamicharts tags: - bitnami-common - version: 2.x + version: 2.x.x description: EODAG (Earth Observation Data Access Gateway) is a tool for searching, aggregating results and downloading remote sensed images offering a unified API for data access regardless of the data provider. @@ -15,4 +15,4 @@ name: eodag-server sources: - https://github.com/CS-SI/eodag type: application -version: 2.12.1 +version: 3.0.0b1 diff --git a/charts/eodag-server/README.md b/charts/eodag-server/README.md index 646193d2e..e5ed91e9b 100644 --- a/charts/eodag-server/README.md +++ b/charts/eodag-server/README.md @@ -46,7 +46,6 @@ The command removes all the Kubernetes components associated with the chart and | `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` | | `global.storageClass` | Global StorageClass for Persistent Volume(s) | `""` | - ### Common parameters | Name | Description | Value | @@ -60,7 +59,6 @@ The command removes all the Kubernetes components associated with the chart and | `clusterDomain` | Kubernetes cluster domain name | `cluster.local` | | `extraDeploy` | Array of extra objects to deploy with the release | `[]` | - ### EODAG Server parameters | Name | Description | Value | @@ -179,6 +177,11 @@ The command removes all the Kubernetes components associated with the chart and | `serviceAccount.name` | The name of the ServiceAccount to use. | `""` | | `serviceAccount.annotations` | Additional custom annotations for the ServiceAccount | `{}` | | `serviceAccount.automountServiceAccountToken` | Automount service account token for the server service account | `true` | +| `autoscaling.enabled` | Enable autoscaling | `false` | +| `autoscaling.minReplicas` | Minimum number of replicas | `1` | +| `autoscaling.maxReplicas` | Maximum number of replicas | `10` | +| `autoscaling.targetCPU` | Target CPU utilization percentage | `""` | +| `autoscaling.targetMemory` | Target Memory utilization percentage | `""` | ```console diff --git a/charts/eodag-server/templates/hpa.yaml b/charts/eodag-server/templates/hpa.yaml new file mode 100644 index 000000000..31c750ed5 --- /dev/null +++ b/charts/eodag-server/templates/hpa.yaml @@ -0,0 +1,48 @@ +{{- /* +Copyright Broadcom, Inc. All Rights Reserved. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ include "common.names.namespace" . | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + scaleTargetRef: + apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} + kind: Deployment + name: {{ include "common.names.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetMemory }} + - type: Resource + resource: + name: memory + {{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .) }} + targetAverageUtilization: {{ .Values.autoscaling.targetMemory }} + {{- else }} + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemory }} + {{- end }} + {{- end }} + {{- if .Values.autoscaling.targetCPU }} + - type: Resource + resource: + name: cpu + {{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .) }} + targetAverageUtilization: {{ .Values.autoscaling.targetCPU }} + {{- else }} + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPU }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/eodag-server/values.yaml b/charts/eodag-server/values.yaml index c1acef6b0..200b15c17 100644 --- a/charts/eodag-server/values.yaml +++ b/charts/eodag-server/values.yaml @@ -481,7 +481,7 @@ config: # credentials: # username: # password: - # cop_cds: + # usgs: # priority: # Lower value means lower priority (Default: 0) # api: # outputs_prefix: @@ -690,3 +690,17 @@ serviceAccount: ## @param serviceAccount.automountServiceAccountToken Automount service account token for the server service account ## automountServiceAccountToken: true + +## Autoscaling configuration +## @param autoscaling.enabled Enable autoscaling +## @param autoscaling.minReplicas Minimum number of replicas +## @param autoscaling.maxReplicas Maximum number of replicas +## @param autoscaling.targetCPU Target CPU utilization percentage +## @param autoscaling.targetMemory Target Memory utilization percentage +## +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 10 + targetCPU: "" + targetMemory: "" diff --git a/docker/stac-server.dockerfile b/docker/stac-server.dockerfile index eaac9570c..0a2a1fc36 100644 --- a/docker/stac-server.dockerfile +++ b/docker/stac-server.dockerfile @@ -52,7 +52,7 @@ COPY README.rst README.rst COPY ./eodag /eodag/eodag # install eodag -RUN python -m pip install . +RUN python -m pip install .[all-providers,server] # add python path ENV PYTHONPATH="${PYTHONPATH}:/eodag/eodag/resources" diff --git a/docs/_static/custom.css b/docs/_static/custom.css index ef83a8420..296faea86 100644 --- a/docs/_static/custom.css +++ b/docs/_static/custom.css @@ -1,6 +1,29 @@ +.bd-main .bd-content .bd-article-container { + max-width: 100%; /* default is 60em */ + } + .bd-page-width { + max-width: 100%; /* default is 88rem */ + } + .green { color: green; } + +table.datatable { + display: block; overflow-x: auto; width: 100%; max-height: 500px; font-size: smaller; border-bottom: 0px; +} + +table.datatable th:nth-child(2), table.datatable td:nth-child(2), +table.datatable th:nth-child(3), table.datatable td:nth-child(3), +table.datatable th:nth-child(5), table.datatable td:nth-child(5), +table.datatable th:nth-child(7), table.datatable td:nth-child(7), +table.datatable th:nth-child(8), table.datatable td:nth-child(8), +table.datatable th:nth-child(9), table.datatable td:nth-child(9), +table.datatable th:nth-child(10), table.datatable td:nth-child(10), +table.datatable th:nth-child(11), table.datatable td:nth-child(11) { + display: none; +} + table.params { display: block; overflow-x: auto; diff --git a/docs/_static/eodag_logo.png b/docs/_static/eodag_logo.png deleted file mode 100644 index e809603a4..000000000 Binary files a/docs/_static/eodag_logo.png and /dev/null differ diff --git a/docs/_static/eodag_logo_160.png b/docs/_static/eodag_logo_160.png new file mode 100644 index 000000000..77690ec70 Binary files /dev/null and b/docs/_static/eodag_logo_160.png differ diff --git a/docs/_static/eodag_logo_160r.png b/docs/_static/eodag_logo_160r.png new file mode 100644 index 000000000..13670cb7c Binary files /dev/null and b/docs/_static/eodag_logo_160r.png differ diff --git a/docs/_static/params_mapping_extra.csv b/docs/_static/params_mapping_extra.csv index d305504f5..ad2c3d5cf 100644 --- a/docs/_static/params_mapping_extra.csv +++ b/docs/_static/params_mapping_extra.csv @@ -1,17 +1,137 @@ -parameter,astraea_eod,cop_ads,cop_cds,cop_dataspace,creodias,earth_search,earth_search_cog,earth_search_gcs,ecmwf,onda,peps,planetary_computer,sara,theia,usgs_satapi_aws -assets,metadata only,,,,,metadata only,metadata only,metadata only,,,,metadata only,,,metadata only -awsProductId,,,,,,,,,,,,,,,metadata only -downloadLink,metadata only,,,metadata only,metadata only,metadata only,metadata only,metadata only,,metadata only,metadata only,metadata only,metadata only,metadata only,metadata only -geometry,:green:`queryable metadata`,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata` -gridSquare,,,,,,:green:`queryable metadata`,,,,,,,,, -id,:green:`queryable metadata`,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,metadata only,:green:`queryable metadata` -latitudeBand,,,,,,:green:`queryable metadata`,,,,,,,,, -orderLink,,,,,,,,,,metadata only,,,,, -polarizationChannels,metadata only,,,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,metadata only,,:green:`queryable metadata`,,metadata only,:green:`queryable metadata` -polarizationMode,,,,,:green:`queryable metadata`,,metadata only,,,,:green:`queryable metadata`,,:green:`queryable metadata`,metadata only, -quicklook,metadata only,,,metadata only,metadata only,metadata only,metadata only,metadata only,,metadata only,metadata only,metadata only,metadata only,metadata only,metadata only -storageStatus,metadata only,,,metadata only,metadata only,metadata only,metadata only,metadata only,,metadata only,metadata only,metadata only,metadata only,metadata only,metadata only -thumbnail,metadata only,,,metadata only,metadata only,metadata only,metadata only,metadata only,,,metadata only,metadata only,metadata only,metadata only,metadata only -tileIdentifier,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`, -uid,,,,metadata only,metadata only,,,,,metadata only,metadata only,,metadata only,metadata only, -utmZone,,,,,,:green:`queryable metadata`,,,,,,,,, +parameter,astraea_eod,cop_ads,cop_cds,cop_dataspace,cop_marine,creodias,dedt_lumi,earth_search,earth_search_cog,earth_search_gcs,ecmwf,eumetsat_ds,onda,peps,planetary_computer,sara,theia,usgs_satapi_aws +_date,,metadata only,metadata only,,,,,,,,,,,,,,, +accuracy,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +acquisitionInformation,,,,,,,,,,,,metadata only,,,,,, +activity,,,,,,,:green:`queryable metadata`,,,,,,,,,,, +aerosol_type,,:green:`queryable metadata`,,,,,,,,,,,,,,,, +altitude,,:green:`queryable metadata`,,,,,,,,,,,,,,,, +anoffset,,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,,,,,,,,,, +api_product_type,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +assets,metadata only,,,,,,,metadata only,metadata only,metadata only,,metadata only,,,metadata only,,,metadata only +awsProductId,,,,,,,,,,,,,,,,,,metadata only +band,,:green:`queryable metadata`,,,,,,,,,,,,,,,, +bitmap,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +block,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +cdr_type,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +channel,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +class,,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,,,,,,,,,, +collection,,,,:green:`queryable metadata`,,:green:`queryable metadata`,,,,,,,,,,,, +cycleNumber,,,,,,,,,,,,:green:`queryable metadata`,,,,,, +database,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +dataset,,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,,,,,,,,,, +dataset_type,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +date_range,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +day,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +defaultGeometry,,metadata only,metadata only,,metadata only,,,,,,,metadata only,,,,,, +diagnostic,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +direction,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +domain,,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,,,,,,,,,, +downloadLink,metadata only,metadata only,metadata only,metadata only,,metadata only,metadata only,metadata only,metadata only,metadata only,,metadata only,metadata only,metadata only,metadata only,metadata only,metadata only,metadata only +duplicates,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +ensemble_member,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +expect,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +experiment,,,:green:`queryable metadata`,,,,:green:`queryable metadata`,,,,,,,,,,, +expver,,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,,,,,,,,,, +extraInformation,,,,,,,,,,,,metadata only,,,,,, +fcperiod,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +fieldset,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +filter,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +fire,,,,,,,,,,,,:green:`queryable metadata`,,,,,, +forcing_type,,:green:`queryable metadata`,,,,,,,,,,,,,,,, +format,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +frequency,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +gcm,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +generation,,,,,,,:green:`queryable metadata`,,,,,,,,,,, +geometry,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,metadata only,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata` +grid,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +gridSquare,,,,,,,,:green:`queryable metadata`,,,,,,,,,, +hdate,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +horizontal_resolution,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +hydrological_model,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +id,:green:`queryable metadata`,metadata only,metadata only,:green:`queryable metadata`,,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,metadata only,:green:`queryable metadata` +ident,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +input_observations,,:green:`queryable metadata`,,,,,,,,,,,,,,,, +interpolation,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +intgrid,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +iteration,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +latitude,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +latitudeBand,,,,,,,,:green:`queryable metadata`,,,,,,,,,, +leadtime_hour,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +leadtime_month,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +level,,:green:`queryable metadata`,,,,,,,,,,,,,,,, +levelist,,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,,,,,,,,,, +levtype,,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,,,,,,,,,, +links,,,,,,,,,,,,,,metadata only,,,, +location,,:green:`queryable metadata`,,,,,,,,,,,,,,,, +longitude,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +lsm,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +method,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +model,,:green:`queryable metadata`,,,,,:green:`queryable metadata`,,,,,,,,,,, +model_level,,:green:`queryable metadata`,,,,,,,,,,,,,,,, +model_levels,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +month,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +number,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +obsgroup,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +obstype,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +orderLink,,metadata only,metadata only,,,,metadata only,,,,,,metadata only,,,,, +origin,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +originating_centre,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +packing,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +padding,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +param,,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,,,,,,,,,, +period,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +polarizationChannels,metadata only,,,:green:`queryable metadata`,,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,metadata only,,:green:`queryable metadata`,,metadata only,:green:`queryable metadata` +polarizationMode,,,,,,,,,metadata only,,,,,:green:`queryable metadata`,,:green:`queryable metadata`,metadata only, +pressure_level,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +priority,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +processing_level,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +processing_type,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +product,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +productIdentifier,,,,metadata only,,metadata only,,,,,,,,,,,, +productInformation,,,,,,,,,,,,metadata only,,,,,, +qs,,metadata only,metadata only,,,,metadata only,,,,,,,,,,, +quantity,,:green:`queryable metadata`,,,,,,,,,,,,,,,, +quicklook,metadata only,,,metadata only,,metadata only,,metadata only,metadata only,metadata only,,metadata only,metadata only,metadata only,metadata only,metadata only,metadata only,metadata only +range,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +rcm,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +realization,,,,,,,:green:`queryable metadata`,,,,,,,,,,, +refdate,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +reference,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +region,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +relativeOrbitNumber,,,,,,,,,,,,:green:`queryable metadata`,,,,,, +reportype,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +repres,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +resol,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +rotation,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +satellite,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +section,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +sensor,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +sensor_and_algorithm,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +services,,,,,,,,,,,,,,metadata only,,,, +size,,,,,,,,,,,,:green:`queryable metadata`,,,,,, +sky_type,,:green:`queryable metadata`,,,,,,,,,,,,,,,, +source,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +statistic,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +step,,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,,,,,,,,,, +storageStatus,metadata only,metadata only,metadata only,metadata only,,metadata only,metadata only,metadata only,metadata only,metadata only,,metadata only,metadata only,metadata only,metadata only,metadata only,metadata only,metadata only +stream,,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,,,,,,,,,, +system,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +system_version,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +target,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +temporal_aggregation,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +thumbnail,metadata only,,,metadata only,,metadata only,,metadata only,metadata only,metadata only,,,,metadata only,metadata only,metadata only,metadata only,metadata only +tileIdentifier,,,,:green:`queryable metadata`,,:green:`queryable metadata`,,:green:`queryable metadata`,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`, +time,,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,,,,,,,,,, +time_aggregation,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +time_reference,,:green:`queryable metadata`,,,,,,,,,,,,,,,, +time_step,,:green:`queryable metadata`,,,,,,,,,,,,,,,, +timeliness,,,,,,,,,,,,:green:`queryable metadata`,,,,,, +truncation,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +type,,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,,,,metadata only,,,,,, +uid,,,,metadata only,,metadata only,,,,,,metadata only,metadata only,metadata only,,metadata only,metadata only, +use,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +utmZone,,,,,,,,:green:`queryable metadata`,,,,:green:`queryable metadata`,,,,,, +variable,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +variable_type,,,:green:`queryable metadata`,,,,,,,,,,,,,,, +version,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, +year,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,,,,,,,,,, diff --git a/docs/_static/params_mapping_offline_infos.json b/docs/_static/params_mapping_offline_infos.json index b6cc62123..714b3edee 100644 --- a/docs/_static/params_mapping_offline_infos.json +++ b/docs/_static/params_mapping_offline_infos.json @@ -1 +1 @@ -{"abstract": {"parameter": "abstract", "open-search": true, "class": "Additional INSPIRE obligated OpenSearch Parameters for Collection Search", "description": "Abstract.", "type": "String"}, "accessConstraint": {"parameter": "accessConstraint", "open-search": true, "class": "Additional INSPIRE obligated OpenSearch Parameters for Collection Search", "description": "Applied to assure the protection of privacy or intellectual property, and any special restrictions or limitations on obtaining the resource", "type": "String "}, "acquisitionStation": {"parameter": "acquisitionStation", "open-search": true, "class": "", "description": "", "type": ""}, "acquisitionSubType": {"parameter": "acquisitionSubType", "open-search": true, "class": "", "description": "", "type": ""}, "acquisitionType": {"parameter": "acquisitionType", "open-search": true, "class": "", "description": "", "type": ""}, "antennaLookDirection": {"parameter": "antennaLookDirection", "open-search": true, "class": "", "description": "", "type": ""}, "archivingCenter": {"parameter": "archivingCenter", "open-search": true, "class": "", "description": "", "type": ""}, "assets": {"parameter": "assets", "open-search": "", "class": "", "description": "", "type": ""}, "availabilityTime": {"parameter": "availabilityTime", "open-search": true, "class": "", "description": "", "type": ""}, "awsProductId": {"parameter": "awsProductId", "open-search": "", "class": "", "description": "", "type": ""}, "cloudCover": {"parameter": "cloudCover", "open-search": true, "class": "", "description": "", "type": ""}, "completionTimeFromAscendingNode": {"parameter": "completionTimeFromAscendingNode", "open-search": true, "class": "", "description": "", "type": ""}, "creationDate": {"parameter": "creationDate", "open-search": true, "class": "", "description": "", "type": ""}, "doi": {"parameter": "doi", "open-search": true, "class": "OpenSearch Parameters for Collection Search", "description": "Digital Object Identifier identifying the product (see http://www.doi.org)", "type": "String"}, "dopplerFrequency": {"parameter": "dopplerFrequency", "open-search": true, "class": "", "description": "", "type": ""}, "downloadLink": {"parameter": "downloadLink", "open-search": "", "class": "", "description": "", "type": ""}, "geometry": {"parameter": "geometry", "open-search": "", "class": "", "description": "", "type": ""}, "gridSquare": {"parameter": "gridSquare", "open-search": "", "class": "", "description": "", "type": ""}, "id": {"parameter": "id", "open-search": "", "class": "", "description": "", "type": ""}, "illuminationAzimuthAngle": {"parameter": "illuminationAzimuthAngle", "open-search": true, "class": "", "description": "", "type": ""}, "illuminationElevationAngle": {"parameter": "illuminationElevationAngle", "open-search": true, "class": "", "description": "", "type": ""}, "illuminationZenithAngle": {"parameter": "illuminationZenithAngle", "open-search": true, "class": "", "description": "", "type": ""}, "incidenceAngleVariation": {"parameter": "incidenceAngleVariation", "open-search": true, "class": "", "description": "", "type": ""}, "instrument": {"parameter": "instrument", "open-search": true, "class": "OpenSearch Parameters for Collection Search", "description": "A string identifying the instrument (e.g. MERIS, AATSR, ASAR, HRVIR. SAR).", "type": "String"}, "keyword": {"parameter": "keyword", "open-search": true, "class": "Additional INSPIRE obligated OpenSearch Parameters for Collection Search", "description": "Commonly used word(s) or formalised word(s) or phrase(s) used to describe the subject.", "type": "String"}, "latitudeBand": {"parameter": "latitudeBand", "open-search": "", "class": "", "description": "", "type": ""}, "lineage": {"parameter": "lineage", "open-search": true, "class": "Additional INSPIRE obligated OpenSearch Parameters for Collection Search", "description": "General explanation of the data producer\u2019s knowledge about the lineage of a dataset.", "type": "String"}, "maximumIncidenceAngle": {"parameter": "maximumIncidenceAngle", "open-search": true, "class": "", "description": "", "type": ""}, "minimumIncidenceAngle": {"parameter": "minimumIncidenceAngle", "open-search": true, "class": "", "description": "", "type": ""}, "modificationDate": {"parameter": "modificationDate", "open-search": true, "class": "", "description": "", "type": ""}, "orbitDirection": {"parameter": "orbitDirection", "open-search": true, "class": "", "description": "", "type": ""}, "orbitNumber": {"parameter": "orbitNumber", "open-search": true, "class": "", "description": "", "type": ""}, "orderLink": {"parameter": "orderLink", "open-search": "", "class": "", "description": "", "type": ""}, "organisationName": {"parameter": "organisationName", "open-search": true, "class": "Additional INSPIRE obligated OpenSearch Parameters for Collection Search", "description": "A string identifying the name of the organization responsible for the resource", "type": "String"}, "parentIdentifier": {"parameter": "parentIdentifier", "open-search": true, "class": "", "description": "", "type": ""}, "platform": {"parameter": "platform", "open-search": true, "class": "OpenSearch Parameters for Collection Search", "description": "A string with the platform short name (e.g. Sentinel-1)", "type": "String"}, "platformSerialIdentifier": {"parameter": "platformSerialIdentifier", "open-search": true, "class": "OpenSearch Parameters for Collection Search", "description": "A string with the Platform serial identifier", "type": "String"}, "polarizationChannels": {"parameter": "polarizationChannels", "open-search": "", "class": "", "description": "", "type": ""}, "polarizationMode": {"parameter": "polarizationMode", "open-search": "", "class": "", "description": "", "type": ""}, "processingCenter": {"parameter": "processingCenter", "open-search": true, "class": "", "description": "", "type": ""}, "processingDate": {"parameter": "processingDate", "open-search": true, "class": "", "description": "", "type": ""}, "processingLevel": {"parameter": "processingLevel", "open-search": true, "class": "OpenSearch Parameters for Collection Search", "description": "A string identifying the processing level applied to the entry", "type": "String"}, "processingMode": {"parameter": "processingMode", "open-search": true, "class": "", "description": "", "type": ""}, "processorName": {"parameter": "processorName", "open-search": true, "class": "", "description": "", "type": ""}, "productQualityStatus": {"parameter": "productQualityStatus", "open-search": true, "class": "", "description": "", "type": ""}, "productType": {"parameter": "productType", "open-search": true, "class": "OpenSearch Parameters for Collection Search", "description": "A string identifying the entry type (e.g. ER02_SAR_IM__0P, MER_RR__1P, SM_SLC__1S, GES_DISC_AIRH3STD_V005)", "type": "String "}, "productVersion": {"parameter": "productVersion", "open-search": true, "class": "", "description": "", "type": ""}, "publicationDate": {"parameter": "publicationDate", "open-search": true, "class": "Additional INSPIRE obligated OpenSearch Parameters for Collection Search", "description": "The date when the resource was issued", "type": "Date time"}, "quicklook": {"parameter": "quicklook", "open-search": "", "class": "", "description": "", "type": ""}, "resolution": {"parameter": "resolution", "open-search": true, "class": "", "description": "", "type": ""}, "sensorMode": {"parameter": "sensorMode", "open-search": true, "class": "", "description": "", "type": ""}, "sensorType": {"parameter": "sensorType", "open-search": true, "class": "OpenSearch Parameters for Collection Search", "description": "A string identifying the sensor type. Suggested values are: OPTICAL, RADAR, ALTIMETRIC, ATMOSPHERIC, LIMB", "type": "String"}, "snowCover": {"parameter": "snowCover", "open-search": true, "class": "", "description": "", "type": ""}, "startTimeFromAscendingNode": {"parameter": "startTimeFromAscendingNode", "open-search": true, "class": "", "description": "", "type": ""}, "storageStatus": {"parameter": "storageStatus", "open-search": "", "class": "", "description": "", "type": ""}, "swathIdentifier": {"parameter": "swathIdentifier", "open-search": true, "class": "", "description": "", "type": ""}, "thumbnail": {"parameter": "thumbnail", "open-search": "", "class": "", "description": "", "type": ""}, "tileIdentifier": {"parameter": "tileIdentifier", "open-search": "", "class": "", "description": "", "type": ""}, "title": {"parameter": "title", "open-search": true, "class": "Additional INSPIRE obligated OpenSearch Parameters for Collection Search", "description": "A name given to the resource", "type": "String "}, "topicCategory": {"parameter": "topicCategory", "open-search": true, "class": "Additional INSPIRE obligated OpenSearch Parameters for Collection Search", "description": "Main theme(s) of the dataset", "type": "String "}, "uid": {"parameter": "uid", "open-search": "", "class": "", "description": "", "type": ""}, "utmZone": {"parameter": "utmZone", "open-search": "", "class": "", "description": "", "type": ""}} +{"_date": {"parameter": "_date", "open-search": "", "class": "", "description": "", "type": ""}, "abstract": {"parameter": "abstract", "open-search": true, "class": "Additional INSPIRE obligated OpenSearch Parameters for Collection Search", "description": "Abstract.", "type": "String"}, "accessConstraint": {"parameter": "accessConstraint", "open-search": true, "class": "Additional INSPIRE obligated OpenSearch Parameters for Collection Search", "description": "Applied to assure the protection of privacy or intellectual property, and any special restrictions or limitations on obtaining the resource", "type": "String "}, "accuracy": {"parameter": "accuracy", "open-search": "", "class": "", "description": "", "type": ""}, "acquisitionInformation": {"parameter": "acquisitionInformation", "open-search": "", "class": "", "description": "", "type": ""}, "acquisitionStation": {"parameter": "acquisitionStation", "open-search": true, "class": "", "description": "", "type": ""}, "acquisitionSubType": {"parameter": "acquisitionSubType", "open-search": true, "class": "", "description": "", "type": ""}, "acquisitionType": {"parameter": "acquisitionType", "open-search": true, "class": "", "description": "", "type": ""}, "activity": {"parameter": "activity", "open-search": "", "class": "", "description": "", "type": ""}, "aerosol_type": {"parameter": "aerosol_type", "open-search": "", "class": "", "description": "", "type": ""}, "altitude": {"parameter": "altitude", "open-search": "", "class": "", "description": "", "type": ""}, "anoffset": {"parameter": "anoffset", "open-search": "", "class": "", "description": "", "type": ""}, "antennaLookDirection": {"parameter": "antennaLookDirection", "open-search": true, "class": "", "description": "", "type": ""}, "api_product_type": {"parameter": "api_product_type", "open-search": "", "class": "", "description": "", "type": ""}, "archivingCenter": {"parameter": "archivingCenter", "open-search": true, "class": "", "description": "", "type": ""}, "assets": {"parameter": "assets", "open-search": "", "class": "", "description": "", "type": ""}, "availabilityTime": {"parameter": "availabilityTime", "open-search": true, "class": "", "description": "", "type": ""}, "awsProductId": {"parameter": "awsProductId", "open-search": "", "class": "", "description": "", "type": ""}, "band": {"parameter": "band", "open-search": "", "class": "", "description": "", "type": ""}, "bitmap": {"parameter": "bitmap", "open-search": "", "class": "", "description": "", "type": ""}, "block": {"parameter": "block", "open-search": "", "class": "", "description": "", "type": ""}, "cdr_type": {"parameter": "cdr_type", "open-search": "", "class": "", "description": "", "type": ""}, "channel": {"parameter": "channel", "open-search": "", "class": "", "description": "", "type": ""}, "class": {"parameter": "class", "open-search": "", "class": "", "description": "", "type": ""}, "cloudCover": {"parameter": "cloudCover", "open-search": true, "class": "", "description": "", "type": ""}, "collection": {"parameter": "collection", "open-search": "", "class": "", "description": "", "type": ""}, "completionTimeFromAscendingNode": {"parameter": "completionTimeFromAscendingNode", "open-search": true, "class": "", "description": "", "type": ""}, "creationDate": {"parameter": "creationDate", "open-search": true, "class": "", "description": "", "type": ""}, "cycleNumber": {"parameter": "cycleNumber", "open-search": "", "class": "", "description": "", "type": ""}, "database": {"parameter": "database", "open-search": "", "class": "", "description": "", "type": ""}, "dataset": {"parameter": "dataset", "open-search": "", "class": "", "description": "", "type": ""}, "dataset_type": {"parameter": "dataset_type", "open-search": "", "class": "", "description": "", "type": ""}, "date_range": {"parameter": "date_range", "open-search": "", "class": "", "description": "", "type": ""}, "day": {"parameter": "day", "open-search": "", "class": "", "description": "", "type": ""}, "defaultGeometry": {"parameter": "defaultGeometry", "open-search": "", "class": "", "description": "", "type": ""}, "diagnostic": {"parameter": "diagnostic", "open-search": "", "class": "", "description": "", "type": ""}, "direction": {"parameter": "direction", "open-search": "", "class": "", "description": "", "type": ""}, "doi": {"parameter": "doi", "open-search": true, "class": "OpenSearch Parameters for Collection Search", "description": "Digital Object Identifier identifying the product (see http://www.doi.org)", "type": "String"}, "domain": {"parameter": "domain", "open-search": "", "class": "", "description": "", "type": ""}, "dopplerFrequency": {"parameter": "dopplerFrequency", "open-search": true, "class": "", "description": "", "type": ""}, "downloadLink": {"parameter": "downloadLink", "open-search": "", "class": "", "description": "", "type": ""}, "duplicates": {"parameter": "duplicates", "open-search": "", "class": "", "description": "", "type": ""}, "ensemble_member": {"parameter": "ensemble_member", "open-search": "", "class": "", "description": "", "type": ""}, "expect": {"parameter": "expect", "open-search": "", "class": "", "description": "", "type": ""}, "experiment": {"parameter": "experiment", "open-search": "", "class": "", "description": "", "type": ""}, "expver": {"parameter": "expver", "open-search": "", "class": "", "description": "", "type": ""}, "extraInformation": {"parameter": "extraInformation", "open-search": "", "class": "", "description": "", "type": ""}, "fcperiod": {"parameter": "fcperiod", "open-search": "", "class": "", "description": "", "type": ""}, "fieldset": {"parameter": "fieldset", "open-search": "", "class": "", "description": "", "type": ""}, "filter": {"parameter": "filter", "open-search": "", "class": "", "description": "", "type": ""}, "fire": {"parameter": "fire", "open-search": "", "class": "", "description": "", "type": ""}, "forcing_type": {"parameter": "forcing_type", "open-search": "", "class": "", "description": "", "type": ""}, "format": {"parameter": "format", "open-search": "", "class": "", "description": "", "type": ""}, "frequency": {"parameter": "frequency", "open-search": "", "class": "", "description": "", "type": ""}, "gcm": {"parameter": "gcm", "open-search": "", "class": "", "description": "", "type": ""}, "generation": {"parameter": "generation", "open-search": "", "class": "", "description": "", "type": ""}, "geometry": {"parameter": "geometry", "open-search": "", "class": "", "description": "", "type": ""}, "grid": {"parameter": "grid", "open-search": "", "class": "", "description": "", "type": ""}, "gridSquare": {"parameter": "gridSquare", "open-search": "", "class": "", "description": "", "type": ""}, "hdate": {"parameter": "hdate", "open-search": "", "class": "", "description": "", "type": ""}, "horizontal_resolution": {"parameter": "horizontal_resolution", "open-search": "", "class": "", "description": "", "type": ""}, "hydrological_model": {"parameter": "hydrological_model", "open-search": "", "class": "", "description": "", "type": ""}, "id": {"parameter": "id", "open-search": "", "class": "", "description": "", "type": ""}, "ident": {"parameter": "ident", "open-search": "", "class": "", "description": "", "type": ""}, "illuminationAzimuthAngle": {"parameter": "illuminationAzimuthAngle", "open-search": true, "class": "", "description": "", "type": ""}, "illuminationElevationAngle": {"parameter": "illuminationElevationAngle", "open-search": true, "class": "", "description": "", "type": ""}, "illuminationZenithAngle": {"parameter": "illuminationZenithAngle", "open-search": true, "class": "", "description": "", "type": ""}, "incidenceAngleVariation": {"parameter": "incidenceAngleVariation", "open-search": true, "class": "", "description": "", "type": ""}, "input_observations": {"parameter": "input_observations", "open-search": "", "class": "", "description": "", "type": ""}, "instrument": {"parameter": "instrument", "open-search": true, "class": "OpenSearch Parameters for Collection Search", "description": "A string identifying the instrument (e.g. MERIS, AATSR, ASAR, HRVIR. SAR).", "type": "String"}, "interpolation": {"parameter": "interpolation", "open-search": "", "class": "", "description": "", "type": ""}, "intgrid": {"parameter": "intgrid", "open-search": "", "class": "", "description": "", "type": ""}, "iteration": {"parameter": "iteration", "open-search": "", "class": "", "description": "", "type": ""}, "keyword": {"parameter": "keyword", "open-search": true, "class": "Additional INSPIRE obligated OpenSearch Parameters for Collection Search", "description": "Commonly used word(s) or formalised word(s) or phrase(s) used to describe the subject.", "type": "String"}, "latitude": {"parameter": "latitude", "open-search": "", "class": "", "description": "", "type": ""}, "latitudeBand": {"parameter": "latitudeBand", "open-search": "", "class": "", "description": "", "type": ""}, "leadtime_hour": {"parameter": "leadtime_hour", "open-search": "", "class": "", "description": "", "type": ""}, "leadtime_month": {"parameter": "leadtime_month", "open-search": "", "class": "", "description": "", "type": ""}, "level": {"parameter": "level", "open-search": "", "class": "", "description": "", "type": ""}, "levelist": {"parameter": "levelist", "open-search": "", "class": "", "description": "", "type": ""}, "levtype": {"parameter": "levtype", "open-search": "", "class": "", "description": "", "type": ""}, "lineage": {"parameter": "lineage", "open-search": true, "class": "Additional INSPIRE obligated OpenSearch Parameters for Collection Search", "description": "General explanation of the data producer\u2019s knowledge about the lineage of a dataset.", "type": "String"}, "links": {"parameter": "links", "open-search": "", "class": "", "description": "", "type": ""}, "location": {"parameter": "location", "open-search": "", "class": "", "description": "", "type": ""}, "longitude": {"parameter": "longitude", "open-search": "", "class": "", "description": "", "type": ""}, "lsm": {"parameter": "lsm", "open-search": "", "class": "", "description": "", "type": ""}, "maximumIncidenceAngle": {"parameter": "maximumIncidenceAngle", "open-search": true, "class": "", "description": "", "type": ""}, "method": {"parameter": "method", "open-search": "", "class": "", "description": "", "type": ""}, "minimumIncidenceAngle": {"parameter": "minimumIncidenceAngle", "open-search": true, "class": "", "description": "", "type": ""}, "model": {"parameter": "model", "open-search": "", "class": "", "description": "", "type": ""}, "model_level": {"parameter": "model_level", "open-search": "", "class": "", "description": "", "type": ""}, "model_levels": {"parameter": "model_levels", "open-search": "", "class": "", "description": "", "type": ""}, "modificationDate": {"parameter": "modificationDate", "open-search": true, "class": "", "description": "", "type": ""}, "month": {"parameter": "month", "open-search": "", "class": "", "description": "", "type": ""}, "number": {"parameter": "number", "open-search": "", "class": "", "description": "", "type": ""}, "obsgroup": {"parameter": "obsgroup", "open-search": "", "class": "", "description": "", "type": ""}, "obstype": {"parameter": "obstype", "open-search": "", "class": "", "description": "", "type": ""}, "orbitDirection": {"parameter": "orbitDirection", "open-search": true, "class": "", "description": "", "type": ""}, "orbitNumber": {"parameter": "orbitNumber", "open-search": true, "class": "", "description": "", "type": ""}, "orderLink": {"parameter": "orderLink", "open-search": "", "class": "", "description": "", "type": ""}, "organisationName": {"parameter": "organisationName", "open-search": true, "class": "Additional INSPIRE obligated OpenSearch Parameters for Collection Search", "description": "A string identifying the name of the organization responsible for the resource", "type": "String"}, "origin": {"parameter": "origin", "open-search": "", "class": "", "description": "", "type": ""}, "originating_centre": {"parameter": "originating_centre", "open-search": "", "class": "", "description": "", "type": ""}, "packing": {"parameter": "packing", "open-search": "", "class": "", "description": "", "type": ""}, "padding": {"parameter": "padding", "open-search": "", "class": "", "description": "", "type": ""}, "param": {"parameter": "param", "open-search": "", "class": "", "description": "", "type": ""}, "parentIdentifier": {"parameter": "parentIdentifier", "open-search": true, "class": "", "description": "", "type": ""}, "period": {"parameter": "period", "open-search": "", "class": "", "description": "", "type": ""}, "platform": {"parameter": "platform", "open-search": true, "class": "OpenSearch Parameters for Collection Search", "description": "A string with the platform short name (e.g. Sentinel-1)", "type": "String"}, "platformSerialIdentifier": {"parameter": "platformSerialIdentifier", "open-search": true, "class": "OpenSearch Parameters for Collection Search", "description": "A string with the Platform serial identifier", "type": "String"}, "polarizationChannels": {"parameter": "polarizationChannels", "open-search": "", "class": "", "description": "", "type": ""}, "polarizationMode": {"parameter": "polarizationMode", "open-search": "", "class": "", "description": "", "type": ""}, "pressure_level": {"parameter": "pressure_level", "open-search": "", "class": "", "description": "", "type": ""}, "priority": {"parameter": "priority", "open-search": "", "class": "", "description": "", "type": ""}, "processingCenter": {"parameter": "processingCenter", "open-search": true, "class": "", "description": "", "type": ""}, "processingDate": {"parameter": "processingDate", "open-search": true, "class": "", "description": "", "type": ""}, "processingLevel": {"parameter": "processingLevel", "open-search": true, "class": "OpenSearch Parameters for Collection Search", "description": "A string identifying the processing level applied to the entry", "type": "String"}, "processingMode": {"parameter": "processingMode", "open-search": true, "class": "", "description": "", "type": ""}, "processing_level": {"parameter": "processing_level", "open-search": "", "class": "", "description": "", "type": ""}, "processing_type": {"parameter": "processing_type", "open-search": "", "class": "", "description": "", "type": ""}, "processorName": {"parameter": "processorName", "open-search": true, "class": "", "description": "", "type": ""}, "product": {"parameter": "product", "open-search": "", "class": "", "description": "", "type": ""}, "productIdentifier": {"parameter": "productIdentifier", "open-search": "", "class": "", "description": "", "type": ""}, "productInformation": {"parameter": "productInformation", "open-search": "", "class": "", "description": "", "type": ""}, "productQualityStatus": {"parameter": "productQualityStatus", "open-search": true, "class": "", "description": "", "type": ""}, "productType": {"parameter": "productType", "open-search": true, "class": "OpenSearch Parameters for Collection Search", "description": "A string identifying the entry type (e.g. ER02_SAR_IM__0P, MER_RR__1P, SM_SLC__1S, GES_DISC_AIRH3STD_V005)", "type": "String "}, "productVersion": {"parameter": "productVersion", "open-search": true, "class": "", "description": "", "type": ""}, "publicationDate": {"parameter": "publicationDate", "open-search": true, "class": "Additional INSPIRE obligated OpenSearch Parameters for Collection Search", "description": "The date when the resource was issued", "type": "Date time"}, "qs": {"parameter": "qs", "open-search": "", "class": "", "description": "", "type": ""}, "quantity": {"parameter": "quantity", "open-search": "", "class": "", "description": "", "type": ""}, "quicklook": {"parameter": "quicklook", "open-search": "", "class": "", "description": "", "type": ""}, "range": {"parameter": "range", "open-search": "", "class": "", "description": "", "type": ""}, "rcm": {"parameter": "rcm", "open-search": "", "class": "", "description": "", "type": ""}, "realization": {"parameter": "realization", "open-search": "", "class": "", "description": "", "type": ""}, "refdate": {"parameter": "refdate", "open-search": "", "class": "", "description": "", "type": ""}, "reference": {"parameter": "reference", "open-search": "", "class": "", "description": "", "type": ""}, "region": {"parameter": "region", "open-search": "", "class": "", "description": "", "type": ""}, "relativeOrbitNumber": {"parameter": "relativeOrbitNumber", "open-search": "", "class": "", "description": "", "type": ""}, "reportype": {"parameter": "reportype", "open-search": "", "class": "", "description": "", "type": ""}, "repres": {"parameter": "repres", "open-search": "", "class": "", "description": "", "type": ""}, "resol": {"parameter": "resol", "open-search": "", "class": "", "description": "", "type": ""}, "resolution": {"parameter": "resolution", "open-search": true, "class": "", "description": "", "type": ""}, "rotation": {"parameter": "rotation", "open-search": "", "class": "", "description": "", "type": ""}, "satellite": {"parameter": "satellite", "open-search": "", "class": "", "description": "", "type": ""}, "section": {"parameter": "section", "open-search": "", "class": "", "description": "", "type": ""}, "sensor": {"parameter": "sensor", "open-search": "", "class": "", "description": "", "type": ""}, "sensorMode": {"parameter": "sensorMode", "open-search": true, "class": "", "description": "", "type": ""}, "sensorType": {"parameter": "sensorType", "open-search": true, "class": "OpenSearch Parameters for Collection Search", "description": "A string identifying the sensor type. Suggested values are: OPTICAL, RADAR, ALTIMETRIC, ATMOSPHERIC, LIMB", "type": "String"}, "sensor_and_algorithm": {"parameter": "sensor_and_algorithm", "open-search": "", "class": "", "description": "", "type": ""}, "services": {"parameter": "services", "open-search": "", "class": "", "description": "", "type": ""}, "size": {"parameter": "size", "open-search": "", "class": "", "description": "", "type": ""}, "sky_type": {"parameter": "sky_type", "open-search": "", "class": "", "description": "", "type": ""}, "snowCover": {"parameter": "snowCover", "open-search": true, "class": "", "description": "", "type": ""}, "source": {"parameter": "source", "open-search": "", "class": "", "description": "", "type": ""}, "startTimeFromAscendingNode": {"parameter": "startTimeFromAscendingNode", "open-search": true, "class": "", "description": "", "type": ""}, "statistic": {"parameter": "statistic", "open-search": "", "class": "", "description": "", "type": ""}, "step": {"parameter": "step", "open-search": "", "class": "", "description": "", "type": ""}, "storageStatus": {"parameter": "storageStatus", "open-search": "", "class": "", "description": "", "type": ""}, "stream": {"parameter": "stream", "open-search": "", "class": "", "description": "", "type": ""}, "swathIdentifier": {"parameter": "swathIdentifier", "open-search": true, "class": "", "description": "", "type": ""}, "system": {"parameter": "system", "open-search": "", "class": "", "description": "", "type": ""}, "system_version": {"parameter": "system_version", "open-search": "", "class": "", "description": "", "type": ""}, "target": {"parameter": "target", "open-search": "", "class": "", "description": "", "type": ""}, "temporal_aggregation": {"parameter": "temporal_aggregation", "open-search": "", "class": "", "description": "", "type": ""}, "thumbnail": {"parameter": "thumbnail", "open-search": "", "class": "", "description": "", "type": ""}, "tileIdentifier": {"parameter": "tileIdentifier", "open-search": "", "class": "", "description": "", "type": ""}, "time": {"parameter": "time", "open-search": "", "class": "", "description": "", "type": ""}, "time_aggregation": {"parameter": "time_aggregation", "open-search": "", "class": "", "description": "", "type": ""}, "time_reference": {"parameter": "time_reference", "open-search": "", "class": "", "description": "", "type": ""}, "time_step": {"parameter": "time_step", "open-search": "", "class": "", "description": "", "type": ""}, "timeliness": {"parameter": "timeliness", "open-search": "", "class": "", "description": "", "type": ""}, "title": {"parameter": "title", "open-search": true, "class": "Additional INSPIRE obligated OpenSearch Parameters for Collection Search", "description": "A name given to the resource", "type": "String "}, "topicCategory": {"parameter": "topicCategory", "open-search": true, "class": "Additional INSPIRE obligated OpenSearch Parameters for Collection Search", "description": "Main theme(s) of the dataset", "type": "String "}, "truncation": {"parameter": "truncation", "open-search": "", "class": "", "description": "", "type": ""}, "type": {"parameter": "type", "open-search": "", "class": "", "description": "", "type": ""}, "uid": {"parameter": "uid", "open-search": "", "class": "", "description": "", "type": ""}, "use": {"parameter": "use", "open-search": "", "class": "", "description": "", "type": ""}, "utmZone": {"parameter": "utmZone", "open-search": "", "class": "", "description": "", "type": ""}, "variable": {"parameter": "variable", "open-search": "", "class": "", "description": "", "type": ""}, "variable_type": {"parameter": "variable_type", "open-search": "", "class": "", "description": "", "type": ""}, "version": {"parameter": "version", "open-search": "", "class": "", "description": "", "type": ""}, "year": {"parameter": "year", "open-search": "", "class": "", "description": "", "type": ""}} diff --git a/docs/_static/params_mapping_opensearch.csv b/docs/_static/params_mapping_opensearch.csv index f41d25245..5e6b8d467 100644 --- a/docs/_static/params_mapping_opensearch.csv +++ b/docs/_static/params_mapping_opensearch.csv @@ -1,47 +1,47 @@ -parameter,astraea_eod,cop_ads,cop_cds,cop_dataspace,creodias,earth_search,earth_search_cog,earth_search_gcs,ecmwf,onda,peps,planetary_computer,sara,theia,usgs_satapi_aws -:abbr:`abstract ([Additional INSPIRE obligated OpenSearch Parameters for Collection Search] Abstract. (String))`,metadata only,,,,metadata only,metadata only,metadata only,metadata only,,,metadata only,metadata only,metadata only,,metadata only -":abbr:`accessConstraint ([Additional INSPIRE obligated OpenSearch Parameters for Collection Search] Applied to assure the protection of privacy or intellectual property, and any special restrictions or limitations on obtaining the resource (String ))`",,,,,metadata only,,,,,,metadata only,,metadata only,metadata only, -acquisitionStation,metadata only,,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,metadata only,:green:`queryable metadata` -acquisitionSubType,metadata only,,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,metadata only,:green:`queryable metadata` -acquisitionType,,,,,metadata only,,,,,,metadata only,,metadata only,, -antennaLookDirection,,,,,,,,,,,,,,metadata only, -archivingCenter,,,,,,,,,,,,,,metadata only, -availabilityTime,metadata only,,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,metadata only,:green:`queryable metadata` -cloudCover,metadata only,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata` -completionTimeFromAscendingNode,:green:`queryable metadata`,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata` -creationDate,metadata only,,,,metadata only,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,metadata only,metadata only,:green:`queryable metadata`,metadata only,metadata only,:green:`queryable metadata` -:abbr:`doi ([OpenSearch Parameters for Collection Search] Digital Object Identifier identifying the product (see http://www.doi.org) (String))`,metadata only,,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,,:green:`queryable metadata` -dopplerFrequency,metadata only,,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,metadata only,:green:`queryable metadata` -illuminationAzimuthAngle,metadata only,,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,metadata only,:green:`queryable metadata` -illuminationElevationAngle,metadata only,,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,,metadata only,:green:`queryable metadata` -illuminationZenithAngle,,,,,,,,,,,,,,metadata only, -incidenceAngleVariation,,,,,,,,,,,,,,metadata only, -":abbr:`instrument ([OpenSearch Parameters for Collection Search] A string identifying the instrument (e.g. MERIS, AATSR, ASAR, HRVIR. SAR). (String))`",metadata only,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata` -:abbr:`keyword ([Additional INSPIRE obligated OpenSearch Parameters for Collection Search] Commonly used word(s) or formalised word(s) or phrase(s) used to describe the subject. (String))`,,,,,metadata only,,,,,,metadata only,,metadata only,metadata only, -:abbr:`lineage ([Additional INSPIRE obligated OpenSearch Parameters for Collection Search] General explanation of the data producer’s knowledge about the lineage of a dataset. (String))`,,,,,,,,,,:green:`queryable metadata`,,,,, -maximumIncidenceAngle,,,,,,,,,,,,,,metadata only, -minimumIncidenceAngle,,,,,,,,,,,,,,metadata only, -modificationDate,metadata only,,,metadata only,metadata only,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,metadata only,:green:`queryable metadata`,metadata only,metadata only,:green:`queryable metadata` -orbitDirection,metadata only,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata` -orbitNumber,metadata only,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,metadata only,:green:`queryable metadata` -:abbr:`organisationName ([Additional INSPIRE obligated OpenSearch Parameters for Collection Search] A string identifying the name of the organization responsible for the resource (String))`,,,,:green:`queryable metadata`,:green:`queryable metadata`,,,,,,:green:`queryable metadata`,,:green:`queryable metadata`,metadata only, -parentIdentifier,,,,,:green:`queryable metadata`,,,,,,:green:`queryable metadata`,,:green:`queryable metadata`,metadata only, -:abbr:`platform ([OpenSearch Parameters for Collection Search] A string with the platform short name (e.g. Sentinel-1) (String))`,metadata only,,,metadata only,metadata only,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,metadata only,:green:`queryable metadata`,metadata only,:green:`queryable metadata`,:green:`queryable metadata` -:abbr:`platformSerialIdentifier ([OpenSearch Parameters for Collection Search] A string with the Platform serial identifier (String))`,metadata only,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,metadata only,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata` -processingCenter,,,,,metadata only,,,,,,metadata only,,metadata only,, -processingDate,,,,,,,,,,metadata only,,,,metadata only, -:abbr:`processingLevel ([OpenSearch Parameters for Collection Search] A string identifying the processing level applied to the entry (String))`,metadata only,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata` -processingMode,,,,,,,,,,,,,,metadata only, -processorName,,,,,metadata only,,,,,,metadata only,,metadata only,, -productQualityStatus,,,,,metadata only,,,,,:green:`queryable metadata`,metadata only,,metadata only,, -":abbr:`productType ([OpenSearch Parameters for Collection Search] A string identifying the entry type (e.g. ER02_SAR_IM__0P, MER_RR__1P, SM_SLC__1S, GES_DISC_AIRH3STD_V005) (String ))`",:green:`queryable metadata`,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata` -productVersion,metadata only,,,,metadata only,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,metadata only,:green:`queryable metadata`,metadata only,metadata only,:green:`queryable metadata` -:abbr:`publicationDate ([Additional INSPIRE obligated OpenSearch Parameters for Collection Search] The date when the resource was issued (Date time))`,metadata only,,,metadata only,metadata only,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,metadata only,:green:`queryable metadata`,metadata only,metadata only,:green:`queryable metadata` -resolution,metadata only,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,metadata only,:green:`queryable metadata` -sensorMode,metadata only,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,metadata only,:green:`queryable metadata` -":abbr:`sensorType ([OpenSearch Parameters for Collection Search] A string identifying the sensor type. Suggested values are: OPTICAL, RADAR, ALTIMETRIC, ATMOSPHERIC, LIMB (String))`",,,,,,,,,,:green:`queryable metadata`,,,,, -snowCover,,,,,:green:`queryable metadata`,,,,,,:green:`queryable metadata`,,:green:`queryable metadata`,metadata only, -startTimeFromAscendingNode,metadata only,,,:green:`queryable metadata`,:green:`queryable metadata`,metadata only,metadata only,metadata only,,:green:`queryable metadata`,:green:`queryable metadata`,metadata only,:green:`queryable metadata`,:green:`queryable metadata`,metadata only -swathIdentifier,,,,,:green:`queryable metadata`,,,,,,:green:`queryable metadata`,,:green:`queryable metadata`,, -:abbr:`title ([Additional INSPIRE obligated OpenSearch Parameters for Collection Search] A name given to the resource (String ))`,metadata only,,,metadata only,metadata only,metadata only,metadata only,metadata only,,metadata only,metadata only,metadata only,metadata only,metadata only,metadata only -:abbr:`topicCategory ([Additional INSPIRE obligated OpenSearch Parameters for Collection Search] Main theme(s) of the dataset (String ))`,,,,,metadata only,,,,,:green:`queryable metadata`,metadata only,,metadata only,, +parameter,astraea_eod,cop_ads,cop_cds,cop_dataspace,cop_marine,creodias,dedt_lumi,earth_search,earth_search_cog,earth_search_gcs,ecmwf,eumetsat_ds,onda,peps,planetary_computer,sara,theia,usgs_satapi_aws +:abbr:`abstract ([Additional INSPIRE obligated OpenSearch Parameters for Collection Search] Abstract. (String))`,metadata only,,,,,,,metadata only,metadata only,metadata only,,,,metadata only,metadata only,metadata only,,metadata only +":abbr:`accessConstraint ([Additional INSPIRE obligated OpenSearch Parameters for Collection Search] Applied to assure the protection of privacy or intellectual property, and any special restrictions or limitations on obtaining the resource (String ))`",,,,,,,,,,,,,,metadata only,,metadata only,metadata only, +acquisitionStation,metadata only,,,,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,,,:green:`queryable metadata`,,metadata only,:green:`queryable metadata` +acquisitionSubType,metadata only,,,,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,,,:green:`queryable metadata`,,metadata only,:green:`queryable metadata` +acquisitionType,,,,,,,,,,,,,,metadata only,,metadata only,, +antennaLookDirection,,,,,,,,,,,,,,,,,metadata only, +archivingCenter,,,,,,,,,,,,,,,,,metadata only, +availabilityTime,metadata only,,,,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,,,:green:`queryable metadata`,,metadata only,:green:`queryable metadata` +cloudCover,metadata only,,,:green:`queryable metadata`,,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata` +completionTimeFromAscendingNode,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata` +creationDate,metadata only,,,,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,metadata only,metadata only,:green:`queryable metadata`,metadata only,metadata only,:green:`queryable metadata` +:abbr:`doi ([OpenSearch Parameters for Collection Search] Digital Object Identifier identifying the product (see http://www.doi.org) (String))`,metadata only,,,,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,,,:green:`queryable metadata`,,,:green:`queryable metadata` +dopplerFrequency,metadata only,,,,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,,,:green:`queryable metadata`,,metadata only,:green:`queryable metadata` +illuminationAzimuthAngle,metadata only,,,,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,,,:green:`queryable metadata`,,metadata only,:green:`queryable metadata` +illuminationElevationAngle,metadata only,,,,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,,,:green:`queryable metadata`,,metadata only,:green:`queryable metadata` +illuminationZenithAngle,,,,,,,,,,,,,,,,,metadata only, +incidenceAngleVariation,,,,,,,,,,,,,,,,,metadata only, +":abbr:`instrument ([OpenSearch Parameters for Collection Search] A string identifying the instrument (e.g. MERIS, AATSR, ASAR, HRVIR. SAR). (String))`",metadata only,,,:green:`queryable metadata`,,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,metadata only,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata` +:abbr:`keyword ([Additional INSPIRE obligated OpenSearch Parameters for Collection Search] Commonly used word(s) or formalised word(s) or phrase(s) used to describe the subject. (String))`,,,,,,,,,,,,,,metadata only,,metadata only,metadata only, +:abbr:`lineage ([Additional INSPIRE obligated OpenSearch Parameters for Collection Search] General explanation of the data producer’s knowledge about the lineage of a dataset. (String))`,,,,,,,,,,,,,:green:`queryable metadata`,,,,, +maximumIncidenceAngle,,,,,,,,,,,,,,,,,metadata only, +minimumIncidenceAngle,,,,,,,,,,,,,,,,,metadata only, +modificationDate,metadata only,,,metadata only,,metadata only,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,metadata only,,metadata only,:green:`queryable metadata`,metadata only,metadata only,:green:`queryable metadata` +orbitDirection,metadata only,,,:green:`queryable metadata`,,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata` +orbitNumber,metadata only,,,:green:`queryable metadata`,,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,metadata only,:green:`queryable metadata` +:abbr:`organisationName ([Additional INSPIRE obligated OpenSearch Parameters for Collection Search] A string identifying the name of the organization responsible for the resource (String))`,,,,:green:`queryable metadata`,,:green:`queryable metadata`,,,,,,,,:green:`queryable metadata`,,:green:`queryable metadata`,metadata only, +parentIdentifier,,,,,,,,,,,,:green:`queryable metadata`,,:green:`queryable metadata`,,:green:`queryable metadata`,metadata only, +:abbr:`platform ([OpenSearch Parameters for Collection Search] A string with the platform short name (e.g. Sentinel-1) (String))`,metadata only,,,:green:`queryable metadata`,,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,metadata only,:green:`queryable metadata`,metadata only,:green:`queryable metadata`,:green:`queryable metadata` +:abbr:`platformSerialIdentifier ([OpenSearch Parameters for Collection Search] A string with the Platform serial identifier (String))`,metadata only,,,:green:`queryable metadata`,,:green:`queryable metadata`,,:green:`queryable metadata`,metadata only,:green:`queryable metadata`,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata` +processingCenter,,,,,,,,,,,,,,metadata only,,metadata only,, +processingDate,,,,,,,,,,,,,metadata only,,,,metadata only, +:abbr:`processingLevel ([OpenSearch Parameters for Collection Search] A string identifying the processing level applied to the entry (String))`,metadata only,,,:green:`queryable metadata`,,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata` +processingMode,,,,,,,,,,,,,,,,,metadata only, +processorName,,,,,,,,,,,,,,metadata only,,metadata only,, +productQualityStatus,,,,,,,,,,,,,:green:`queryable metadata`,metadata only,,metadata only,, +":abbr:`productType ([OpenSearch Parameters for Collection Search] A string identifying the entry type (e.g. ER02_SAR_IM__0P, MER_RR__1P, SM_SLC__1S, GES_DISC_AIRH3STD_V005) (String ))`",:green:`queryable metadata`,metadata only,metadata only,:green:`queryable metadata`,,:green:`queryable metadata`,metadata only,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata` +productVersion,metadata only,,,,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,:green:`queryable metadata`,metadata only,:green:`queryable metadata`,metadata only,metadata only,:green:`queryable metadata` +:abbr:`publicationDate ([Additional INSPIRE obligated OpenSearch Parameters for Collection Search] The date when the resource was issued (Date time))`,metadata only,,,metadata only,,metadata only,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,:green:`queryable metadata`,,metadata only,:green:`queryable metadata`,metadata only,metadata only,:green:`queryable metadata` +resolution,metadata only,,,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,metadata only,:green:`queryable metadata` +sensorMode,metadata only,,,:green:`queryable metadata`,,:green:`queryable metadata`,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,metadata only,:green:`queryable metadata` +":abbr:`sensorType ([OpenSearch Parameters for Collection Search] A string identifying the sensor type. Suggested values are: OPTICAL, RADAR, ALTIMETRIC, ATMOSPHERIC, LIMB (String))`",,,,,,,,,,,,,:green:`queryable metadata`,,,,, +snowCover,,,,,,,,,,,,,,:green:`queryable metadata`,,:green:`queryable metadata`,metadata only, +startTimeFromAscendingNode,metadata only,metadata only,metadata only,:green:`queryable metadata`,,:green:`queryable metadata`,metadata only,metadata only,metadata only,metadata only,,:green:`queryable metadata`,:green:`queryable metadata`,:green:`queryable metadata`,metadata only,:green:`queryable metadata`,:green:`queryable metadata`,metadata only +swathIdentifier,,,,,,,,,,,,,,:green:`queryable metadata`,,:green:`queryable metadata`,, +:abbr:`title ([Additional INSPIRE obligated OpenSearch Parameters for Collection Search] A name given to the resource (String ))`,metadata only,metadata only,metadata only,metadata only,,metadata only,,metadata only,metadata only,metadata only,,:green:`queryable metadata`,metadata only,metadata only,metadata only,metadata only,metadata only,metadata only +:abbr:`topicCategory ([Additional INSPIRE obligated OpenSearch Parameters for Collection Search] Main theme(s) of the dataset (String ))`,,,,,,,,,,,,,:green:`queryable metadata`,metadata only,,metadata only,, diff --git a/docs/_static/product_types.js b/docs/_static/product_types.js deleted file mode 100644 index 8cbf28293..000000000 --- a/docs/_static/product_types.js +++ /dev/null @@ -1,213 +0,0 @@ -/** - * Update the style of one link among those in the "column_links" paragraph - * @param {HTMLAnchorElement} link The link whose style will be updated - */ -function update_link_style(link) { - if (link.className.includes("highlighted")) { - link.style.color = "#fafafa"; - link.style.background = "rgb(232,62,140)"; - } else { - link.style.color = "rgb(232,62,140)"; - link.style.background = "transparent"; - } -} - -/** - * After clicking on a column link, it may be necessary to update the style of the "all" and "none" links - */ -function update_all_none_links_style() { - let all_link = document.getElementById("all_link"); - let none_link = document.getElementById("none_link"); - - /* Hide the "all" link when it is highlighted */ - if (all_link.className == "highlighted") { - all_link.className = "hidden"; - update_link_style(all_link); - } - - /* Hide the "none" link when it is highlighted */ - if (none_link.className == "highlighted") { - none_link.className = "hidden"; - update_link_style(none_link); - } - - /* Highlight the "all" link when all the column links are highlighted */ - if (JSON.stringify(document.getElementsByClassName("toggle-vis highlighted")) == JSON.stringify(document.getElementsByClassName("toggle-vis"))) { - all_link.className = "highlighted"; - update_link_style(all_link); - } - - /* Highlight the "none" link when all the column links are hidden */ - if (JSON.stringify(document.getElementsByClassName("toggle-vis highlighted")) == "{}") { - none_link.className = "highlighted"; - update_link_style(none_link); - } -} - -/** - * Show all the columns of the table - */ -function show_all() { - let hidden_toggle_vis_list = document.getElementsByClassName("toggle-vis hidden"); - let hidden_toggle_vis_list_length = hidden_toggle_vis_list.length; - - /* Show the columns with a hidden link by simulating a click on their links */ - for (let i = 0; i < hidden_toggle_vis_list_length; i++) { - hidden_toggle_vis_list[0].click(); - } -} - -/** - * Hide all the columns of the table - */ -function hide_all() { - let highlighted_toggle_vis_list = document.getElementsByClassName("toggle-vis highlighted"); - let highlighted_toggle_vis_list_length = highlighted_toggle_vis_list.length; - - /* Hide the columns with an highlighted link by simulating a click on their links */ - for (let i = 0; i < highlighted_toggle_vis_list_length; i++) { - highlighted_toggle_vis_list[0].click(); - } -} - -/** - * Add a title tooltip to each product type paragraph - * @param {HTMLTableElement} datatable_table The table element of the datatable generated by ./product_types_information.csv - */ -function add_title_tooltip(datatable_table) { - let head_row_th = datatable_table.getElementsByTagName("THEAD")[0].getElementsByTagName("TH"); - let product_type_rows = document.getElementsByTagName("TBODY")[0].getElementsByTagName("TR"); - - /* Seek the title column index */ - let title_index = 1; - while (head_row_th[title_index].children[0].innerHTML != "title") { - title_index++; - } - - /* Add tooltips containing the product type titles to the product type paragraphs */ - for (let i = 0; i < product_type_rows.length; i++) { - let row_title = product_type_rows[i].children[title_index].children[0].innerHTML; - let product_type_paragraph = product_type_rows[i].children[0].children[0]; - product_type_paragraph.innerHTML = `${product_type_paragraph.innerHTML}`; - } -} - -/** - * Add style to the table and its cells - * @param {Object} table The table object generated by ./product_types_information.csv - */ -function style_table(table) { - let dataTables_table_0 = table.context[0].oInstance[0]; - let dataTables_table_0_td = dataTables_table_0.getElementsByTagName("TD"); - - /* Add pre-made style classes for datatables to the table element */ - dataTables_table_0.classList.add("hover", "cell-border"); - - /* Continue to style the table */ - dataTables_table_0.style.display = "block"; - dataTables_table_0.style.overflowX = "auto"; - dataTables_table_0.style.width = "100%"; - dataTables_table_0.style.maxHeight = "500px"; - dataTables_table_0.style.fontSize = "smaller"; - dataTables_table_0.style.borderBottom = "0"; - - /* Style table cells */ - for (let i = 0; i < dataTables_table_0_td.length; i++) { - dataTables_table_0_td[i].style.paddingTop = "0"; - dataTables_table_0_td[i].style.paddingBottom = "0"; - } - - /* Create a title tooltip for each product type */ - add_title_tooltip(dataTables_table_0); -} - -/** - * Display the initial configuration by managing table and column links style - * and hiding columns with hidden links in the table - * @param {Object} table The table object generated by ./product_types_information.csv - */ -function display_initial_configuration(table) { - let toggle_vis_list = document.getElementsByClassName("toggle-vis"); - let all_link = document.getElementById("all_link"); - let none_link = document.getElementById("none_link"); - - /* Add style to the table */ - style_table(table); - - /* Hide the "all" and "none" links */ - update_link_style(all_link); - update_link_style(none_link); - - for (let i = 0; i < toggle_vis_list.length; i++) { - /* Highlight default columns of the initial configuration and hide the other ones */ - update_link_style(toggle_vis_list[i]); - /* Hide columns in the table if their links are hidden */ - if (toggle_vis_list[i].className == "toggle-vis hidden") { - table.column(parseInt(toggle_vis_list[i].attributes["data-column"].value)).visible(false, false); - } - } - /* Adjust column sizing and redraw */ - table.columns.adjust().draw(false); -} - -/** - * Initialize the display of the table and the paragraph containing all the links about columns management - * @param {Object} table The table object generated by ./product_types_information.csv - */ -function init_table_and_column_links_paragraph_display(table) { - let links_paragraph = document.getElementById("column_links"); - let dataTables_table_0 = table.context[0].oInstance[0]; - let table_0_thead_tr = dataTables_table_0.children[1].children[0]; - let hidden_parameters = ["abstract", "instrument", "platformSerialIdentifier", "keywords", "sensorType", "license", "title", "missionStartDate"]; - - /* Create the "all" and "none" links with hidden classes */ - links_paragraph.innerHTML = `Show / hide columns: /
`; - - /* Create a link for each column with the corresponding classes */ - for (let i = 1; i < table_0_thead_tr.childElementCount; i++) { - let column_name = table_0_thead_tr.children[i].children[0].innerHTML; - if (hidden_parameters.includes(column_name)) { - link_second_class = "hidden"; - } else { - link_second_class = "highlighted"; - } - if (i == 1) { - links_paragraph.innerHTML += `${column_name}`; - } else { - links_paragraph.innerHTML += ` - ${column_name}`; - } - } - - /* Finish the initial configuration display by styling elements */ - display_initial_configuration(table); -} - -$(document).ready(function () { - let table_0 = $('table.datatable').DataTable({ - pagingType: 'full_numbers' - }); - let table_0_span = document.getElementById("table_0_span"); - - /* Run the display initialization function once the table has been loaded in one of its parent elements */ - table_0_span.addEventListener('DOMSubtreeModified', init_table_and_column_links_paragraph_display(table_0), false); - - /* When the link of a column is clicked, toggle the visibility of this column in the table - and update its style and the one of the "all" and "none" links */ - $('a.toggle-vis').on('click', function (e) { - e.preventDefault(); - - /* Get the column API object */ - let column = table_0.column($(this).attr('data-column')); - - /* Toggle the visibility in the table */ - column.visible(!column.visible()); - - /* Toggle link classes */ - $(this).toggleClass("highlighted"); - $(this).toggleClass("hidden"); - - /* Update the style of the clicked link and the one of the "all" and "none" links */ - update_link_style($(this)[0]); - update_all_none_links_style(); - }); -}); diff --git a/docs/_static/product_types_information.csv b/docs/_static/product_types_information.csv index dc700927f..82af92f12 100644 --- a/docs/_static/product_types_information.csv +++ b/docs/_static/product_types_information.csv @@ -1,169 +1,242 @@ -product type,abstract,instrument,platform,platformSerialIdentifier,processingLevel,keywords,sensorType,license,title,missionStartDate,astraea_eod,aws_eos,cop_ads,cop_cds,cop_dataspace,creodias,creodias_s3,earth_search,earth_search_cog,earth_search_gcs,ecmwf,hydroweb_next,meteoblue,onda,peps,planetary_computer,sara,theia,usgs,usgs_satapi_aws,wekeo -CAMS_EAC4,"EAC4 (ECMWF Atmospheric Composition Reanalysis 4) is the fourth generation ECMWF global reanalysis of atmospheric composition. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using a model of the atmosphere based on the laws of physics and chemistry. This principle, called data assimilation, is based on the method used by numerical weather prediction centres and air quality forecasting centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued. Reanalysis works in the same way to allow for the provision of a dataset spanning back more than a decade. Reanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product. The assimilation system is able to estimate biases between observations and to sift good-quality data from poor data. The atmosphere model allows for estimates at locations where data coverage is low or for atmospheric pollutants for which no direct observations are available. The provision of estimates at each grid point around the globe for each regular output time, over a long period, always using the same format, makes reanalysis a very convenient and popular dataset to work with. The observing system has changed drastically over time, and although the assimilation system can resolve data holes, the initially much sparser networks will lead to less accurate estimates. For this reason, EAC4 is only available from 2003 onwards. Although the analysis procedure considers chunks of data in a window of 12 hours in one go, EAC4 provides estimates every 3 hours, worldwide. This is made possible by the 4D-Var assimilation method, which takes account of the exact timing of the observations and model evolution within the assimilation window. ",,CAMS,CAMS,,"Copernicus,ADS,CAMS,Atmosphere,Atmospheric,EWMCF,EAC4",ATMOSPHERIC,proprietary,CAMS global reanalysis (EAC4),2003-01-01T00:00:00Z,,,available,,,,,,,,,,,,,,,,,, -CAMS_EAC4_MONTHLY,"EAC4 (ECMWF Atmospheric Composition Reanalysis 4) is the fourth generation ECMWF global reanalysis of atmospheric composition. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using a model of the atmosphere based on the laws of physics and chemistry. This principle, called data assimilation, is based on the method used by numerical weather prediction centres and air quality forecasting centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued. Reanalysis works in the same way to allow for the provision of a dataset spanning back more than a decade. Reanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product. The assimilation system is able to estimate biases between observations and to sift good-quality data from poor data. The atmosphere model allows for estimates at locations where data coverage is low or for atmospheric pollutants for which no direct observations are available. The provision of estimates at each grid point around the globe for each regular output time, over a long period, always using the same format, makes reanalysis a very convenient and popular dataset to work with. The observing system has changed drastically over time, and although the assimilation system can resolve data holes, the initially much sparser networks will lead to less accurate estimates. For this reason, EAC4 is only available from 2003 onwards. Although the analysis procedure considers chunks of data in a window of 12 hours in one go, EAC4 provides estimates every 3 hours, worldwide. This is made possible by the 4D-Var assimilation method, which takes account of the exact timing of the observations and model evolution within the assimilation window. ",,CAMS,CAMS,,"Copernicus,ADS,CAMS,Atmosphere,Atmospheric,EWMCF,EAC4",ATMOSPHERIC,proprietary,CAMS global reanalysis (EAC4) monthly averaged fields,2003-01-01T00:00:00Z,,,available,,,,,,,,,,,,,,,,,, -CAMS_EU_AIR_QUALITY_FORECAST,"This dataset provides daily air quality analyses and forecasts for Europe. CAMS produces specific daily air quality analyses and forecasts for the European domain at significantly higher spatial resolution (0.1 degrees, approx. 10km) than is available from the global analyses and forecasts. The production is based on an ensemble of eleven air quality forecasting systems across Europe. A median ensemble is calculated from individual outputs, since ensemble products yield on average better performance than the individual model products. The spread between the eleven models are used to provide an estimate of the forecast uncertainty. The analysis combines model data with observations provided by the European Environment Agency (EEA) into a complete and consistent dataset using various data assimilation techniques depending upon the air-quality forecasting system used. In parallel, air quality forecasts are produced once a day for the next four days. Both the analysis and the forecast are available at hourly time steps at seven height levels. Note that only nitrogen monoxide, nitrogen dioxide, sulphur dioxide, ozone, PM2.5, PM10 and dust are regularly validated against in situ observations, and therefore forecasts of all other variables are unvalidated and should be considered experimental. ",,CAMS,CAMS,,"Copernicus,ADS,CAMS,Atmosphere,Atmospheric,Air,Forecast,EEA",ATMOSPHERIC,proprietary,CAMS European air quality forecasts,2021-01-01T00:00:00Z,,,available,,,,,,,,,,,,,,,,,, -CAMS_EU_AIR_QUALITY_RE,"This dataset provides annual air quality reanalyses for Europe based on both unvalidated (interim) and validated observations. CAMS produces annual air quality (interim) reanalyses for the European domain at significantly higher spatial resolution (0.1 degrees, approx. 10km) than is available from the global reanalyses. The production is currently based on an ensemble of nine air quality data assimilation systems across Europe. A median ensemble is calculated from individual outputs, since ensemble products yield on average better performance than the individual model products. The spread between the nine models can be used to provide an estimate of the analysis uncertainty. The reanalysis combines model data with observations provided by the European Environment Agency (EEA) into a complete and consistent dataset using various data assimilation techniques depending upon the air-quality forecasting system used. Additional sources of observations can complement the in-situ data assimilation, like satellite data. An interim reanalysis is provided each year for the year before based on the unvalidated near-real-time observation data stream that has not undergone full quality control by the data providers yet. Once the fully quality-controlled observations are available from the data provider, typically with an additional delay of about 1 year, a final validated annual reanalysis is provided. Both reanalyses are available at hourly time steps at height levels. ",,CAMS,CAMS,,"Copernicus,ADS,CAMS,Atmosphere,Atmospheric,Air,EEA",ATMOSPHERIC,proprietary,CAMS European air quality reanalyses,2013-01-01T00:00:00Z,,,available,,,,,,,,,,,,,,,,,, -CAMS_GAC_FORECAST,"CAMS produces global forecasts for atmospheric composition twice a day. The forecasts consist of more than 50 chemical species (e.g. ozone, nitrogen dioxide, carbon monoxide) and seven different types of aerosol (desert dust, sea salt, organic matter, black carbon, sulphate, nitrate and ammonium aerosol). In addition, several meteorological variables are available as well. The initial conditions of each forecast are obtained by combining a previous forecast with current satellite observations through a process called data assimilation. This best estimate of the state of the atmosphere at the initial forecast time step, called the analysis, provides a globally complete and consistent dataset allowing for estimates at locations where observation data coverage is low or for atmospheric pollutants for which no direct observations are available. The forecast itself uses a model of the atmosphere based on the laws of physics and chemistry to determine the evolution of the concentrations of all species over time for the next five days. Apart from the required initial state, it also uses inventory-based or observation-based emission estimates as a boundary condition at the surface. The CAMS global forecasting system is upgraded about once a year resulting in technical and scientific changes. The horizontal or vertical resolution can change, new species can be added, and more generally the accuracy of the forecasts can be improved. Details of these system changes can be found in the documentation. Users looking for a more consistent long-term data set should consider using the CAMS Global Reanalysis instead, which is available through the ADS and spans the period from 2003 onwards. Finally, because some meteorological fields in the forecast do not fall within the general CAMS data licence, they are only available with a delay of 5 days. ",,CAMS,CAMS,,"Copernicus,ADS,CAMS,Atmosphere,Atmospheric,Forecast,GAC",ATMOSPHERIC,proprietary,CAMS global atmospheric composition forecasts,2015-01-02T00:00:00Z,,,available,,,,,,,,,,,,,,,,,, -CAMS_GFE_GFAS,"Emissions of atmospheric pollutants from biomass burning and vegetation fires are key drivers of the evolution of atmospheric composition, with a high degree of spatial and temporal variability, and an accurate representation of them in models is essential. The CAMS Global Fire Assimilation System (GFAS) utilises satellite observations of fire radiative power (FRP) to provide near-real-time information on the location, relative intensity and estimated emissions from biomass burning and vegetation fires. Emissions are estimated by (i) conversion of FRP observations to the dry matter (DM) consumed by the fire, and (ii) application of emission factors to DM for different biomes, based on field and laboratory studies in the scientific literature, to estimate the emissions. Emissions estimates for 40 pyrogenic species are available from GFAS, including aerosols, reactive gases and greenhouse gases, on a regular grid with a spatial resolution of 0.1 degrees longitude by 0.1 degrees latitude. This version of GFAS (v1.2) provides daily averaged data based on a combination of FRP observations from two Moderate Resolution Imaging Spectroradiometer (MODIS) instruments, one on the NASA EOS-Terra satellite and the other on the NASA EOS-Aqua satellite from 1 January 2003 to present. GFAS also provides daily estimates of smoke plume injection heights derived from FRP observations and meteorological information from the operational weather forecasts from ECMWF. GFAS data have been used to provide surface boundary conditions for the CAMS global atmospheric composition and European regional air quality forecasts, and the wider atmospheric chemistry modelling community. ",,CAMS,CAMS,,"Copernicus,ADS,CAMS,Atmosphere,Atmospheric,Fire,FRP,DM,MODIS,NASA,EOS,ECMWF,GFAS",ATMOSPHERIC,proprietary,CAMS global biomass burning emissions based on fire radiative power (GFAS),2003-01-01T00:00:00Z,,,available,,,,,,,,,,,,,,,,,, -CAMS_GLOBAL_EMISSIONS,"This data set contains gridded distributions of global anthropogenic and natural emissions. Natural and anthropogenic emissions of atmospheric pollutants and greenhouse gases are key drivers of the evolution of the composition of the atmosphere, so an accurate representation of them in forecast models of atmospheric composition is essential. CAMS compiles inventories of emission data that serve as input to its own forecast models, but which can also be used by other atmospheric chemical transport models. These inventories are based on a combination of existing data sets and new information, describing anthropogenic emissions from fossil fuel use on land, shipping, and aviation, and natural emissions from vegetation, soil, the ocean and termites. The anthropogenic emissions on land are further separated in specific activity sectors (e.g., power generation, road traffic, industry). The CAMS emission data sets provide good consistency between the emissions of greenhouse gases, reactive gases, and aerosol particles and their precursors. Because most inventory-based data sets are only available with a delay of several years, the CAMS emission inventories also extend these existing data sets forward in time by using the trends from the most recent available years, producing timely input data for real-time forecast models. Most of the data sets are updated once or twice per year adding the most recent year to the data record, while re-processing the original data record for consistency, when needed. This is reflected by the different version numbers. ",,CAMS,CAMS,,"Copernicus,ADS,CAMS,Atmosphere,Atmospheric,Emissions,Pollutants,GHG",ATMOSPHERIC,proprietary,CAMS global emission inventories,2000-01-01T00:00:00Z,,,available,,,,,,,,,,,,,,,,,, -CAMS_GREENHOUSE_EGG4,"This dataset is part of the ECMWF Atmospheric Composition Reanalysis focusing on long-lived greenhouse gases: carbon dioxide (CO2) and methane (CH4). The emissions and natural fluxes at the surface are crucial for the evolution of the long-lived greenhouse gases in the atmosphere. In this dataset the CO2 fluxes from terrestrial vegetation are modelled in order to simulate the variability across a wide range of scales from diurnal to inter-annual. The CH4 chemical loss is represented by a climatological loss rate and the emissions at the surface are taken from a range of datasets. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using a model of the atmosphere based on the laws of physics and chemistry. This principle, called data assimilation, is based on the method used by numerical weather prediction centres and air quality forecasting centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued. Reanalysis works in the same way to allow for the provision of a dataset spanning back more than a decade. Reanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product. The assimilation system is able to estimate biases between observations and to sift good-quality data from poor data. The atmosphere model allows for estimates at locations where data coverage is low or for atmospheric pollutants for which no direct observations are available. The provision of estimates at each grid point around the globe for each regular output time, over a long period, always using the same format, makes reanalysis a very convenient and popular dataset to work with. The observing system has changed drastically over time, and although the assimilation system can resolve data holes, the initially much sparser networks will lead to less accurate estimates. For this reason, EAC4 is only available from 2003 onwards. The analysis procedure assimilates data in a window of 12 hours using the 4D-Var assimilation method, which takes account of the exact timing of the observations and model evolution within the assimilation window. ",,CAMS,CAMS,,"Copernicus,ADS,CAMS,Atmospheric,Atmosphere,CO2,CH4,GHG,ECMWF,EGG4",ATMOSPHERIC,proprietary,CAMS global greenhouse gas reanalysis (EGG4),2003-01-01T00:00:00Z,,,available,,,,,,,,,,,,,,,,,, -CAMS_GREENHOUSE_EGG4_MONTHLY,"This dataset is part of the ECMWF Atmospheric Composition Reanalysis focusing on long-lived greenhouse gases: carbon dioxide (CO2) and methane (CH4). The emissions and natural fluxes at the surface are crucial for the evolution of the long-lived greenhouse gases in the atmosphere. In this dataset the CO2 fluxes from terrestrial vegetation are modelled in order to simulate the variability across a wide range of scales from diurnal to inter-annual. The CH4 chemical loss is represented by a climatological loss rate and the emissions at the surface are taken from a range of datasets. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using a model of the atmosphere based on the laws of physics and chemistry. This principle, called data assimilation, is based on the method used by numerical weather prediction centres and air quality forecasting centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued. Reanalysis works in the same way to allow for the provision of a dataset spanning back more than a decade. Reanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product. The assimilation system is able to estimate biases between observations and to sift good-quality data from poor data. The atmosphere model allows for estimates at locations where data coverage is low or for atmospheric pollutants for which no direct observations are available. The provision of estimates at each grid point around the globe for each regular output time, over a long period, always using the same format, makes reanalysis a very convenient and popular dataset to work with. The observing system has changed drastically over time, and although the assimilation system can resolve data holes, the initially much sparser networks will lead to less accurate estimates. For this reason, EAC4 is only available from 2003 onwards. The analysis procedure assimilates data in a window of 12 hours using the 4D-Var assimilation method, which takes account of the exact timing of the observations and model evolution within the assimilation window. ",,CAMS,CAMS,,"Copernicus,ADS,CAMS,Atmospheric,Atmosphere,CO2,CH4,Greenhouse,ECMWF,EGG4",ATMOSPHERIC,proprietary,CAMS global greenhouse gas reanalysis (EGG4) monthly averaged fields,2003-01-01T00:00:00Z,,,available,,,,,,,,,,,,,,,,,, -CAMS_GREENHOUSE_INVERSION,"This data set contains net fluxes at the surface, atmospheric mixing ratios at model levels, and column-mean atmospheric mixing ratios for carbon dioxide (CO2), methane (CH4) and nitrous oxide (N20). Natural and anthropogenic surface fluxes of greenhouse gases are key drivers of the evolution of Earth’s climate, so their monitoring is essential. Such information has been used in particular as part of the Assessment Reports of the Intergovernmental Panel on Climate Change (IPCC). Ground-based and satellite remote-sensing observations provide a means to quantifying the net fluxes between the land and ocean on the one hand and the atmosphere on the other hand. This is done through a process called atmospheric inversion, which uses transport models of the atmosphere to link the observed concentrations of CO2, CH4 and N2O to the net fluxes at the Earth's surface. By correctly modelling the winds, vertical diffusion, and convection in the global atmosphere, the observed concentrations of the greenhouse gases are used to infer the surface fluxes for the last few decades. For CH4 and N2O, the flux inversions account also for the chemical loss of these greenhouse gases. The net fluxes include contributions from the natural biosphere (e.g., vegetation, wetlands) as well anthropogenic contributions (e.g., fossil fuel emissions, rice fields). The data sets for the three species are updated once or twice per year adding the most recent year to the data record, while re-processing the original data record for consistency. This is reflected by the different version numbers. In addition, fluxes for methane are available based on surface air samples only or based on a combination of surface air samples and satellite observations (reflected by an 's' in the version number). ",,CAMS,CAMS,,"Copernicus,ADS,CAMS,Atmosphere,Atmospheric,IPCC,CO2,CH4,N2O",ATMOSPHERIC,proprietary,CAMS global inversion-optimised greenhouse gas fluxes and concentrations,1979-01-01T00:00:00Z,,,available,,,,,,,,,,,,,,,,,, -CAMS_GRF,"This dataset provides geographical distributions of the radiative forcing (RF) by key atmospheric constituents. The radiative forcing estimates are based on the CAMS reanalysis and additional model simulations and are provided separately for CO2 CH4, O3 (tropospheric and stratospheric), interactions between anthropogenic aerosols and radiation and interactions between anthropogenic aerosols and clouds. Radiative forcing measures the imbalance in the Earth's energy budget caused by a perturbation of the climate system, such as changes in atmospheric composition caused by human activities. RF is a useful predictor of globally-averaged temperature change, especially when rapid adjustments of atmospheric temperature and moisture profiles are taken into account. RF has therefore become a quantitative metric to compare the potential climate response to different perturbations. Increases in greenhouse gas concentrations over the industrial era exerted a positive RF, causing a gain of energy in the climate system. In contrast, concurrent changes in atmospheric aerosol concentrations are thought to exert a negative RF leading to a loss of energy. Products are quantified both in ""all-sky"" conditions, meaning that the radiative effects of clouds are included in the radiative transfer calculations, and in ""clear-sky"" conditions, which are computed by excluding clouds in the radiative transfer calculations. The upgrade from version 1.5 to 2 consists of an extension of the period by 2017-2018, the addition of an ""effective radiative forcing"" product and new ways to calculate the pre-industrial reference state for aerosols and cloud condensation nuclei. More details are given in the documentation section. New versions may be released in future as scientific methods develop, and existing versions may be extended with later years if data for the period is available from the CAMS reanalysis. Newer versions supercede old versions so it is always recommended to use the latest one. CAMS also produces distributions of aerosol optical depths, distinguishing natural from anthropogenic aerosols, which are a separate dataset. See ""Related Data"". ",,CAMS,CAMS,,"Copernicus,ADS,CAMS,Atmospheric,Atmosphere,RF,CO2,CH4,O3,Aerosol",ATMOSPHERIC,proprietary,CAMS global radiative forcings,2003-01-01T00:00:00Z,,,available,,,,,,,,,,,,,,,,,, -CAMS_GRF_AUX,"This dataset provides aerosol optical depths and aerosol-radiation radiative effects for four different aerosol origins: anthropogenic, mineral dust, marine, and land-based fine-mode natural aerosol. The latter mostly consists of biogenic aerosols. The data are a necessary complement to the ""CAMS global radiative forcings"" dataset (see ""Related Data""). The calculation of aerosol radiative forcing requires a discrimination between aerosol of anthropogenic and natural origin. However, the CAMS reanalysis, which is used to provide the aerosol concentrations, does not make this distinction. The anthropogenic fraction was therefore derived by a method which uses aerosol size as a proxy for aerosol origin. ",,CAMS,CAMS,,"Copernicus,ADS,CAMS,Atmospheric,Atmosphere,RF,CO2,CH4,O3,Aerosol",ATMOSPHERIC,proprietary,CAMS global radiative forcing - auxilliary variables,2003-01-01T00:00:00Z,,,available,,,,,,,,,,,,,,,,,, -CAMS_SOLAR_RADIATION,"The CAMS solar radiation services provide historical values (2004 to present) of global (GHI), direct (BHI) and diffuse (DHI) solar irradiation, as well as direct normal irradiation (BNI). The aim is to fulfil the needs of European and national policy development and the requirements of both commercial and public downstream services, e.g. for planning, monitoring, efficiency improvements and the integration of solar energy systems into energy supply grids. For clear-sky conditions, an irradiation time series is provided for any location in the world using information on aerosol, ozone and water vapour from the CAMS global forecasting system. Other properties, such as ground albedo and ground elevation, are also taken into account. Similar time series are available for cloudy (or ""all sky"") conditions but, since the high-resolution cloud information is directly inferred from satellite observations, these are currently only available inside the field-of-view of the Meteosat Second Generation (MSG) satellite, which is roughly Europe, Africa, the Atlantic Ocean and the Middle East. Data is offered in both ASCII and netCDF format. Additionally, an ASCII ""expert mode"" format can be selected which contains in addition to the irradiation, all the input data used in their calculation (aerosol optical properties, water vapour concentration, etc). This additional information is only meaningful in the time frame at which the calculation is performed and so is only available at 1-minute time steps in universal time (UT). ",,CAMS,CAMS,,"Copernicus,ADS,CAMS,Solar,Radiation",ATMOSPHERIC,proprietary,CAMS solar radiation time-series,2004-01-02T00:00:00Z,,,available,,,,,,,,,,,,,,,,,, -CBERS4_AWFI_L2,"China-Brazil Earth Resources Satellite, CBERS-4 AWFI camera Level-2 product. System corrected images, expect some translation error. ",AWFI,CBERS,CBERS-4,L2,"AWFI,CBERS,CBERS-4,L2",OPTICAL,proprietary,CBERS-4 AWFI Level-2,2014-12-07T00:00:00Z,,available,,,,,,,,,,,,,,,,,,, -CBERS4_AWFI_L4,"China-Brazil Earth Resources Satellite, CBERS-4 AWFI camera Level-4 product. Orthorectified with ground control points. ",AWFI,CBERS,CBERS-4,L4,"AWFI,CBERS,CBERS-4,L4",OPTICAL,proprietary,CBERS-4 AWFI Level-4,2014-12-07T00:00:00Z,,available,,,,,,,,,,,,,,,,,,, -CBERS4_MUX_L2,"China-Brazil Earth Resources Satellite, CBERS-4 MUX camera Level-2 product. System corrected images, expect some translation error. ",MUX,CBERS,CBERS-4,L2,"MUX,CBERS,CBERS-4,L2",OPTICAL,proprietary,CBERS-4 MUX Level-2,2014-12-07T00:00:00Z,,available,,,,,,,,,,,,,,,,,,, -CBERS4_MUX_L4,"China-Brazil Earth Resources Satellite, CBERS-4 MUX camera Level-4 product. Orthorectified with ground control points. ",MUX,CBERS,CBERS-4,L4,"MUX,CBERS,CBERS-4,L4",OPTICAL,proprietary,CBERS-4 MUX Level-4,2014-12-07T00:00:00Z,,available,,,,,,,,,,,,,,,,,,, -CBERS4_PAN10M_L2,"China-Brazil Earth Resources Satellite, CBERS-4 PAN10M camera Level-2 product. System corrected images, expect some translation error. ",PAN10M,CBERS,CBERS-4,L2,"PAN10M,CBERS,CBERS-4,L2",OPTICAL,proprietary,CBERS-4 PAN10M Level-2,2014-12-07T00:00:00Z,,available,,,,,,,,,,,,,,,,,,, -CBERS4_PAN10M_L4,"China-Brazil Earth Resources Satellite, CBERS-4 PAN10M camera Level-4 product. Orthorectified with ground control points. ",PAN10M,CBERS,CBERS-4,L4,"PAN10M,CBERS,CBERS-4,L4",OPTICAL,proprietary,CBERS-4 PAN10M Level-4,2014-12-07T00:00:00Z,,available,,,,,,,,,,,,,,,,,,, -CBERS4_PAN5M_L2,"China-Brazil Earth Resources Satellite, CBERS-4 PAN5M camera Level-2 product. System corrected images, expect some translation error. ",PAN5M,CBERS,CBERS-4,L2,"PAN5M,CBERS,CBERS-4,L2",OPTICAL,proprietary,CBERS-4 PAN5M Level-2,2014-12-07T00:00:00Z,,available,,,,,,,,,,,,,,,,,,, -CBERS4_PAN5M_L4,"China-Brazil Earth Resources Satellite, CBERS-4 PAN5M camera Level-4 product. Orthorectified with ground control points. ",PAN5M,CBERS,CBERS-4,L4,"PAN5M,CBERS,CBERS-4,L4",OPTICAL,proprietary,CBERS-4 PAN5M Level-4,2014-12-07T00:00:00Z,,available,,,,,,,,,,,,,,,,,,, -CLMS_CORINE,"The CORINE Land Cover (CLC) inventory was initiated in 1985 (reference year 1990). Updates have been produced in 2000, 2006, 2012, and 2018. It consists of an inventory of land cover in 44 classes. CLC uses a Minimum Mapping Unit (MMU) of 25 hectares (ha) for areal phenomena and a minimum width of 100 m for linear phenomena. The time series are complemented by change layers, which highlight changes in land cover with an MMU of 5 ha. Different MMUs mean that the change layer has higher resolution than the status layer. Due to differences in MMUs the difference between two status layers will not equal to the corresponding CLC-Changes layer. If you are interested in CLC-Changes between two neighbour surveys always use the CLC-Change layer. ",,"Sentinel-2, LANDSAT, SPOT-4/5, IRS P6 LISS III","S2, L5, L7, L8, SPOT4, SPOT5",,"Land-cover,LCL,CORINE,CLMS",,proprietary,CORINE Land Cover,1986-01-01T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -CLMS_GLO_DMP_333M,"Dry matter Productivity (DMP) is an indication of the overall growth rate or dry biomass increase of the vegetation and is directly related to ecosystem Net Primary Productivity (NPP), however its units (kilograms of gross dry matter per hectare per day) are customized for agro-statistical purposes. Compared to the Gross DMP (GDMP), or its equivalent Gross Primary Productivity, the main difference lies in the inclusion of the autotrophic respiration. Like the FAPAR products that are used as input for the GDMP estimation, these GDMP products are provided in Near Real Time, with consolidations in the next periods, or as offline product. ","OLCI,PROBA-V",Sentinel-3,,,"Land,Dry-matter-productivity,DMP,OLCI,PROBA-V,Sentinel-3",,proprietary,10-daily Dry Matter Productivity 333M,2014-01-10T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -CLMS_GLO_FAPAR_333M,"The FAPAR quantifies the fraction of the solar radiation absorbed by plants for photosynthesis. It refers only to the green and living elements of the canopy. The FAPAR depends on the canopy structure, vegetation element optical properties, atmospheric conditions and angular configuration. To overcome this latter dependency, a daily integrated FAPAR value is assessed. FAPAR is very useful as input to a number of primary productivity models and is recognized as an Essential Climate Variable (ECV) by the Global Climate Observing System (GCOS). The product at 333m resolution is provided in Near Real Time and consolidated in the next six periods. ","OLCI,PROBA-V",Sentinel-3,,,"Land,Fraction-of-absorbed-PAR,FAPAR,OLCI,PROBA-V,Sentinel-3",,proprietary,Global 10-daily Fraction of Absorbed PAR 333m,2014-01-10T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -CLMS_GLO_FCOVER_333M,"The Fraction of Vegetation Cover (FCover) corresponds to the fraction of ground covered by green vegetation. Practically, it quantifies the spatial extent of the vegetation. Because it is independent from the illumination direction and it is sensitive to the vegetation amount, FCover is a very good candidate for the replacement of classical vegetation indices for the monitoring of ecosystems. The product at 333m resolution is provided in Near Real Time and consolidated in the next six periods. ","OLCI,PROBA-V",Sentinel-3,,,"Land,Fraction-of-vegetation-cover,OLCI,PROBA-V,Sentinel-3",,proprietary,Global 10-daily Fraction of Vegetation Cover 333m,2014-01-10T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -CLMS_GLO_GDMP_333M,"Gross dry matter Productivity (GDMP) is an indication of the overall growth rate or dry biomass increase of the vegetation and is directly related to ecosystem Gross Primary Productivity (GPP), that reflects the ecosystem's overall production of organic compounds from atmospheric carbon dioxide, however its units (kilograms of gross dry matter per hectare per day) are customized for agro-statistical purposes. Like the FAPAR products that are used as input for the GDMP estimation, these GDMP products are provided in Near Real Time, with consolidations in the next periods, or as offline product. ","OLCI,PROBA-V",Sentinel-3,,,"Land,Gross-dry-matter-productivity,GDMP,GPP,OLCI,PROBA-V,Sentinel-3",,proprietary,10-daily Gross Dry Matter Productivity 333M,2014-01-10T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -CLMS_GLO_LAI_333M,"LAI was defined by CEOS as half the developed area of the convex hull wrapping the green canopy elements per unit horizontal ground. This definition allows accounting for elements which are not flat such as needles or stems. LAI is strongly non linearly related to reflectance. Therefore, its estimation from remote sensing observations will be scale dependant over heterogeneous landscapes. When observing a canopy made of different layers of vegetation, it is therefore mandatory to consider all the green layers. This is particularly important for forest canopies where the understory may represent a very significant contribution to the total canopy LAI. The derived LAI corresponds therefore to the total green LAI, including the contribution of the green elements of the understory. The product at 333m resolution is provided in Near Real Time and consolidated in the next six periods. ","OLCI,PROBA-V",Sentinel-3,,,"Land,Leaf-area-index,LAI,OLCI,PROBA-V,Sentinel-3",,proprietary,Global 10-daily Leaf Area Index 333m,2014-01-10T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -CLMS_GLO_NDVI_1KM_LTS,"The Normalized Difference Vegetation Index (NDVI) is a proxy to quantify the vegetation amount. It is defined as NDVI=(NIR-Red)/(NIR+Red) where NIR corresponds to the reflectance in the near infrared band, and Red to the reflectance in the red band. The time series of dekadal (10-daily) NDVI 1km version 2 observations over the period 1999-2017 is used to calculate Long Term Statistics (LTS) for each of the 36 10-daily periods (dekads) of the year. The calculated LTS include the minimum, median, maximum, average, standard deviation and the number of observations in the covered time series period. These LTS can be used as a reference for actual NDVI observations, which allows evaluating whether vegetation conditions deviate from a 'normal' situation. ","VEGETATION,PROBA-V",SPOT,,,"Land,NDVI,LTS,SPOT,VEGETATION,PROBA-V",,proprietary,"Normalized Difference Vegetation Index: global Long Term Statistics (raster 1km) - version 2, Apr 2019",1999-01-01T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -CLMS_GLO_NDVI_333M,"The Normalized Difference Vegetation Index (NDVI) is a proxy to quantify the vegetation amount. It is defined as NDVI=(NIR-Red)/(NIR+Red) where NIR corresponds to the reflectance in the near infrared band, and Red to the reflectance in the red band. It is closely related to FAPAR and is little scale dependant. ",PROBA-V,,,,"Land,NDVI,PROBA-V",,proprietary,Global 10-daily Normalized Difference Vegetation Index 333M,2014-01-01T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -COP_DEM_GLO30_DGED,"Defence Gridded Elevation Data (DGED, 32 Bit floating point) formatted Copernicus DEM GLO-30 data. The Copernicus Digital Elevation Model is a Digital Surface Model (DSM) that represents the surface of the Earth including buildings, infrastructure and vegetation. The Copernicus DEM is provided in 3 different instances: EEA-10, GLO-30 and GLO-90. GLO-30 provides worldwide coverage at 30 meters.Data were acquired through the TanDEM-X mission between 2011 and 2015. The datasets were made available for use in 2019 and will be maintained until 2026. ",,TerraSAR,,,"TerraSAR,TanDEM-X,DEM,surface,GLO-30,DSM,GDGED",ALTIMETRIC,proprietary,Copernicus DEM GLO-30 DGED,2010-06-21T00:00:00Z,,,,,,available,available,available,,,,,,,,,,,,,available -COP_DEM_GLO30_DTED,"Digital Terrain Elevation Data (DTED, 16 Bit signed integer) formatted Copernicus DEM GLO-30 data. The Copernicus Digital Elevation Model is a Digital Surface Model (DSM) that represents the surface of the Earth including buildings, infrastructure and vegetation. The Copernicus DEM is provided in 3 different instances: EEA-10, GLO-30 and GLO-90. GLO-30 provides worldwide coverage at 30 meters.Data were acquired through the TanDEM-X mission between 2011 and 2015. The datasets were made available for use in 2019 and will be maintained until 2026. ",,TerraSAR,,,"TerraSAR,TanDEM-X,DEM,surface,GLO-30,DSM,DTED",ALTIMETRIC,proprietary,Copernicus DEM GLO-30 DTED,2010-06-21T00:00:00Z,,,,,,available,available,,,,,,,,,,,,,, -COP_DEM_GLO90_DGED,"Defence Gridded Elevation Data (DGED, 32 Bit floating point) formatted Copernicus DEM GLO-90 data. The Copernicus Digital Elevation Model is a Digital Surface Model (DSM) that represents the surface of the Earth including buildings, infrastructure and vegetation. The Copernicus DEM is provided in 3 different instances: EEA-10, GLO-30 and GLO-90. GLO-90 provides worldwide coverage at 90 meters.Data were acquired through the TanDEM-X mission between 2011 and 2015. The datasets were made available for use in 2019 and will be maintained until 2026. ",,TerraSAR,,,"TerraSAR,TanDEM-X,DEM,surface,GLO-90,DSM,GDGED",ALTIMETRIC,proprietary,Copernicus DEM GLO-90 DGED,2010-06-21T00:00:00Z,,,,,,available,available,available,,,,,,,,,,,,,available -COP_DEM_GLO90_DTED,"Digital Terrain Elevation Data (DTED, 16 Bit signed integer) formatted Copernicus DEM GLO-90 data. The Copernicus Digital Elevation Model is a Digital Surface Model (DSM) that represents the surface of the Earth including buildings, infrastructure and vegetation. The Copernicus DEM is provided in 3 different instances: EEA-10, GLO-30 and GLO-90. GLO-90 provides worldwide coverage at 90 meters.Data were acquired through the TanDEM-X mission between 2011 and 2015. The datasets were made available for use in 2019 and will be maintained until 2026. ",,TerraSAR,,,"TerraSAR,TanDEM-X,DEM,surface,GLO-90,DSM,DTED",ALTIMETRIC,proprietary,Copernicus DEM GLO-90 DTED,2010-06-21T00:00:00Z,,,,,,available,available,,,,,,,,,,,,,, -EEA_DAILY_SSM_1KM,"Surface Soil Moisture (SSM) is the relative water content of the top few centimetres soil, describing how wet or dry the soil is in its topmost layer, expressed in percent saturation. It is measured by satellite radar sensors and allows insights in local precipitation impacts and soil conditions. SSM is a key driver of water and heat fluxes between the ground and the atmosphere, regulating air temperature and humidity. Moreover, in its role as water supply, it is vital to vegetation health. Vice versa, SSM is very sensitive to external forcing in the form of precipitation, temperature, solar irradiation, humidity, and wind. SSM is thus both an integrator of climatic conditions and a driver of local weather and climate, and plays a major role in global water-, energy- and carbon- cycles. Knowledge on the dynamics of soil moisture is important in the understanding of processes in many environmental and socio-economic fields, e.g., its impact on vegetation vitality, crop yield, droughts or exposure to flood threats. ","C-SAR,Metop ASCAT",Sentinel-1,,,"SSM,C-SAR,Metop-ASCAT,Sentinel-1",RADAR,proprietary,"Surface Soil Moisture: continental Europe daily (raster 1km) - version 1, Apr 2019",2015-01-01T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -EEA_DAILY_SWI_1KM,"The Soil Water Index (SWI) quantifies the moisture condition at various depths in the soil. It is mainly driven by the precipitation via the process of infiltration. Soil moisture is a very heterogeneous variable and varies on small scales with soil properties and drainage patterns. Satellite measurements integrate over relative large-scale areas, with the presence of vegetation adding complexity to the interpretation. Soil moisture is a key parameter in numerous environmental studies including hydrology, meteorology and agriculture, and is recognized as an Essential Climate Variable (ECV) by the Global Climate Observing System (GCOS). The SWI product provides daily information about moisture conditions in different soil layers. It includes a quality flag (QFLAG) indicating the availability of SSM measurements for SWI calculations, and a Surface State Flag (SSF) indicating frozen or snow covered soils. ","C-SAR,Metop ASCAT",Sentinel-1,,,"SWI,QFLAG,SSF,C-SAR,Metop-ASCAT,Sentinel-1",RADAR,proprietary,"Soil Water Index: continental Europe daily (raster 1km) - version 1, Apr 2019",2015-01-01T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -EEA_DAILY_VI,"Vegetation Indices (VI) comprises four daily vegetation indices (PPI, NDVI, LAI and FAPAR) and quality information, that are part of the Copernicus Land Monitoring Service (CLMS) HR-VPP product suite. The 10m resolution, daily updated Plant Phenology Index (PPI), Normalized Difference Vegetation Index (NDVI), Leaf Area Index (LAI) and Fraction of Absorbed Photosynthetically Active Radiation (fAPAR) are derived from Copernicus Sentinel-2 satellite observations. They are provided together with a related quality indicator (QFLAG2) that flags clouds, shadows, snow, open water and other areas where the VI retrieval is less reliable. These Vegetation Indices are made available as a set of raster files with 10 x 10m resolution, in UTM/WGS84 projection corresponding to the Sentinel-2 tiling grid, for those tiles that cover the EEA38 countries and the United Kingdom and for the period from 2017 until today, with daily updates. The Vegetation Indices are part of the pan-European High Resolution Vegetation Phenology and Productivity (HR-VPP) component of the Copernicus Land Monitoring Service (CLMS). ",,Sentinel-2,"S2A, S2B",,"Land,Plant-phenology-index,Phenology,Vegetation,Sentinel-2,S2A,S2B",RADAR,proprietary,"Vegetation Indices, daily, UTM projection",,,,,,,,,,,,,,,,,,,,,,available -EFAS_FORECAST,"This dataset provides gridded modelled hydrological time series forced with medium-range meteorological forecasts. The data is a consistent representation of the most important hydrological variables across the European Flood Awareness System (EFAS) domain. The temporal resolution is sub-daily high-resolution and ensemble forecasts of:\n\nRiver discharge\nSoil moisture for three soil layers\nSnow water equivalent\n\nIt also provides static data on soil depth for the three soil layers. Soil moisture and river discharge data are accompanied by ancillary files for interpretation (see related variables and links in the documentation).\nThis data set was produced by forcing the LISFLOOD hydrological model at a 5x5km resolution with meteorological forecasts. The forecasts are initialised twice daily at 00 and 12 UTC with time steps of 6 or 24 hours and lead times between 5 and 15 days depending on the forcing numerical weather prediction model. The forcing meteorological data are high-resolution and ensemble forecasts from the European Centre of Medium-range Weather Forecasts (ECMWF) with 51 ensemble members, high-resolution forecasts from the Deutsches Wetter Dienst (DWD) and the ensemble forecasts from the COSMO Local Ensemble Prediction System (COSMO-LEPS) with 20 ensemble members. The hydrological forecasts are available from 2018-10-10 up until present with a 30-day delay. The real-time data is only available to EFAS partners.\nCompanion datasets, also available through the CDS, are historical simulations which can be used to derive the hydrological climatology and for verification; reforecasts for research, local skill assessment and post-processing; and seasonal forecasts and reforecasts for users looking for longer leadtime forecasts. For users looking for global hydrological data, we refer to the Global Flood Awareness System (GloFAS) forecasts and historical simulations. All these datasets are part of the operational flood forecasting within the Copernicus Emergency Management Service (CEMS).\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours, River discharge in the last 6 hours, Snow depth water equivalent, Soil depth, Volumetric soil moisture\n\nVariables in the dataset/application are:\nOrography, Upstream area ",,CEMS,CEMS,,"ECMWF,CEMS,EFAS,forecast,river,discharge",ATMOSPHERIC,proprietary,River discharge and related forecasted data by the European Flood Awareness System,2018-10-11T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -EFAS_HISTORICAL,"This dataset provides gridded modelled daily hydrological time series forced with meteorological observations. The data set is a consistent representation of the most important hydrological variables across the European Flood Awareness System (EFAS) domain. The temporal resolution is up to 30 years modelled time series of:\n\nRiver discharge\nSoil moisture for three soil layers\nSnow water equivalent\n\nIt also provides static data on soil depth for the three soil layers. Soil moisture and river discharge data are accompanied by ancillary files for interpretation (see related variables and links in the documentation).\nThis dataset was produced by forcing the LISFLOOD hydrological model with gridded observational data of precipitation and temperature at a 5x5 km resolution across the EFAS domain. The most recent version\nuses a 6-hourly time step, whereas older versions uses a 24-hour time step. It is available from 1991-01-01 up until near-real time, with a delay of 6 days. The real-time data is only available to EFAS partners.\nCompanion datasets, also available through the CDS, are forecasts for users who are looking medium-range forecasts, reforecasts for research, local skill assessment and post-processing, and seasonal forecasts and reforecasts for users looking for long-term forecasts. For users looking for global hydrological data, we refer to the Global Flood Awareness System (GloFAS) forecasts and historical simulations. All these datasets are part of the operational flood forecasting within the Copernicus Emergency Management Service (CEMS).\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours, River discharge in the last 6 hours, Snow depth water equivalent, Soil depth, Volumetric soil moisture\n\nVariables in the dataset/application are:\nOrography, Upstream area ",,CEMS,CEMS,,"ECMWF,CEMS,EFAS,historical,river,discharge",ATMOSPHERIC,proprietary,River discharge and related historical data from the European Flood Awareness System,1992-01-02T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -EFAS_REFORECAST,"This dataset provides gridded modelled hydrological time series forced with medium- to sub-seasonal range meteorological reforecasts. The data is a consistent representation of the most important hydrological variables across the European Flood Awareness System (EFAS) domain. The temporal resolution is 20 years of sub-daily reforecasts initialised twice weekly (Mondays and Thursdays) of:\n\nRiver discharge\nSoil moisture for three soil layers\nSnow water equivalent\n\nIt also provides static data on soil depth for the three soil layers. Soil moisture and river discharge data are accompanied by ancillary files for interpretation (see related variables and links in the documentation).\nThis dataset was produced by forcing the LISFLOOD hydrological model at a 5x5km resolution with ensemble meteorological reforecasts from the European Centre of Medium-range Weather Forecasts (ECMWF). Reforecasts are forecasts run over past dates and are typically used to assess the skill of a forecast system or to develop tools for statistical error correction of the forecasts. The reforecasts are initialised twice weekly with lead times up to 46 days, at 6-hourly time steps for 20 years. For more specific information on the how the reforecast dataset is produced we refer to the documentation.\nCompanion datasets, also available through the Climate Data Store (CDS), are the operational forecasts, historical simulations which can be used to derive the hydrological climatology, and seasonal forecasts and reforecasts for users looking for long term forecasts. For users looking for global hydrological data, we refer to the Global Flood Awareness System (GloFAS) forecasts an historical simulations. All these datasets are part of the operational flood forecasting within the Copernicus Emergency Management Service (CEMS).\n\nVariables in the dataset/application are:\nRiver discharge, Snow depth water equivalent, Soil depth, Volumetric soil moisture\n\nVariables in the dataset/application are:\nOrography, Upstream area ",,CEMS,CEMS,,"ECMWF,CEMS,EFAS,reforecast,river,discharge",ATMOSPHERIC,proprietary,Reforecasts of river discharge and related data by the European Flood Awareness System,2003-03-27T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -EFAS_SEASONAL,"This dataset provides gridded modelled daily hydrological time series forced with seasonal meteorological forecasts. The dataset is a consistent representation of the most important hydrological variables across the European Flood Awareness (EFAS) domain. The temporal resolution is daily forecasts initialised once a month consisting of:\n\nRiver discharge\nSoil moisture for three soil layers\nSnow water equivalent\n\nIt also provides static data on soil depth for the three soil layers. Soil moisture and river discharge data are accompanied by ancillary files for interpretation (see related variables and links in the documentation).\nThis dataset was produced by forcing the LISFLOOD hydrological model at a 5x5km resolution with seasonal meteorological ensemble forecasts. The forecasts are initialised on the first of each month with a lead time of 215 days at 24-hour time steps. The meteorological data are seasonal forecasts (SEAS5) from the European Centre of Medium-range Weather Forecasts (ECMWF) with 51 ensemble members. The forecasts are available from November 2020.\nCompanion datasets, also available through the Climate Data Store (CDS), are seasonal reforecasts for research, local skill assessment and post-processing of the seasonal forecasts. There are also medium-range forecasts for users who want to look at shorter time ranges. These are accompanied by historical simulations which can be used to derive the hydrological climatology, and medium-range reforecasts. For users looking for global hydrological data, we refer to the Global Flood Awareness System (GloFAS) forecasts and historical simulations. All these datasets are part of the operational flood forecasting within the Copernicus Emergency Management Service (CEMS).\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours, Snow depth water equivalent, Soil depth, Volumetric soil moisture\n\nVariables in the dataset/application are:\nOrography, Upstream area ",,CEMS,CEMS,,"ECMWF,CEMS,EFAS,seasonal,forecast,river,discharge",ATMOSPHERIC,proprietary,Seasonal forecasts of river discharge and related data by the European Flood Awareness System,2020-11-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -EFAS_SEASONAL_REFORECAST,"This dataset provides modelled daily hydrological time series forced with seasonal meteorological reforecasts. The dataset is a consistent representation of the most important hydrological variables across the European Flood Awareness (EFAS) domain. The temporal resolution is daily forecasts initialised once a month over the reforecast period 1991-2020 of:\n\nRiver discharge\nSoil moisture for three soil layers\nSnow water equivalent\n\nIt also provides static data on soil depth for the three soil layers. Soil moisture and river discharge data are accompanied by ancillary files for interpretation (see related variables and links in the documentation).\nThis dataset was produced by forcing the LISFLOOD hydrological model at a 5x5km gridded resolution with seasonal meteorological ensemble reforecasts. Reforecasts are forecasts run over past dates and are typically used to assess the skill of a forecast system or to develop tools for statistical error correction of the forecasts. The reforecasts are initialised on the first of each month with a lead time of 215 days at 24-hour time steps. The forcing meteorological data are seasonal reforecasts from the European Centre of Medium-range Weather Forecasts (ECMWF), consisting of 25 ensemble members up until December 2016, and after that 51 members. Hydrometeorological reforecasts are available from 1991-01-01 up until 2020-10-01. \nCompanion datasets, also available through the Climate Data Store (CDS), are seasonal forecasts, for which the seasonal reforecasts can be useful for local skill assessment and post-processing of the seasonal forecasts. For users looking for shorter time ranges there are medium-range forecasts and reforecasts, as well as historical simulations which can be used to derive the hydrological climatology. For users looking for global hydrological data, we refer to the Global Flood Awareness System (GloFAS) forecasts and historical simulations. All these datasets are part of the operational flood forecasting within the Copernicus Emergency Management Service (CEMS).\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours, Snow depth water equivalent, Soil depth, Volumetric soil moisture\n\nVariables in the dataset/application are:\nOrography, Upstream area"" ",,CEMS,CEMS,,"ECMWF,CEMS,EFAS,seasonal,reforecast,river,discharge",ATMOSPHERIC,proprietary,Seasonal reforecasts of river discharge and related data by the European Flood Awareness System,1991-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -ERA5_LAND,"ERA5-Land is a reanalysis dataset providing a consistent view of the evolution of land variables over several decades at an enhanced resolution compared to ERA5. ERA5-Land has been produced by replaying the land component of the ECMWF ERA5 climate reanalysis. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using the laws of physics. Reanalysis produces data that goes several decades back in time, providing an accurate description of the climate of the past. ERA5-Land uses as input to control the simulated land fields ERA5 atmospheric variables, such as air temperature and air humidity. This is called the atmospheric forcing. Without the constraint of the atmospheric forcing, the model-based estimates can rapidly deviate from reality. Therefore, while observations are not directly used in the production of ERA5-Land, they have an indirect influence through the atmospheric forcing used to run the simulation. In addition, the input air temperature, air humidity and pressure used to run ERA5-Land are corrected to account for the altitude difference between the grid of the forcing and the higher resolution grid of ERA5-Land. This correction is called 'lapse rate correction'. The ERA5-Land dataset, as any other simulation, provides estimates which have some degree of uncertainty. Numerical models can only provide a more or less accurate representation of the real physical processes governing different components of the Earth System. In general, the uncertainty of model estimates grows as we go back in time, because the number of observations available to create a good quality atmospheric forcing is lower. ERA5-land parameter fields can currently be used in combination with the uncertainty of the equivalent ERA5 fields. The temporal and spatial resolutions of ERA5-Land makes this dataset very useful for all kind of land surface applications such as flood or drought forecasting. The temporal and spatial resolution of this dataset, the period covered in time, as well as the fixed grid used for the data distribution at any period enables decisions makers, businesses and individuals to access and use more accurate information on land states. Variables in the dataset/application are: 10m u-component of wind, 10m v-component of wind, 2m dewpoint temperature, 2m temperature, Evaporation from bare soil, Evaporation from open water surfaces excluding oceans, Evaporation from the top of canopy, Evaporation from vegetation transpiration, Forecast albedo, Lake bottom temperature, Lake ice depth, Lake ice temperature, Lake mix-layer depth, Lake mix-layer temperature, Lake shape factor, Lake total layer temperature, Leaf area index, high vegetation, Leaf area index, low vegetation, Potential evaporation, Runoff, Skin reservoir content, Skin temperature, Snow albedo, Snow cover, Snow density, Snow depth, Snow depth water equivalent, Snow evaporation, Snowfall, Snowmelt, Soil temperature level 1, Soil temperature level 2, Soil temperature level 3, Soil temperature level 4, Sub-surface runoff, Surface latent heat flux, Surface net solar radiation, Surface net thermal radiation, Surface pressure, Surface runoff, Surface sensible heat flux, Surface solar radiation downwards, Surface thermal radiation downwards, Temperature of snow layer, Total evaporation, Total precipitation, Volumetric soil water layer 1, Volumetric soil water layer 2, Volumetric soil water layer 3, Volumetric soil water layer 4 ",,ERA5,ERA5,,"ECMWF,Reanalysis,ERA5,CDS,Atmospheric,land,hourly,evolution",ATMOSPHERIC,proprietary,ERA5-Land hourly data from 1950 to present,1950-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -ERA5_LAND_MONTHLY,"ERA5-Land is a reanalysis dataset providing a consistent view of the evolution of land variables over several decades at an enhanced resolution compared to ERA5. ERA5-Land has been produced by replaying the land component of the ECMWF ERA5 climate reanalysis. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using the laws of physics. Reanalysis produces data that goes several decades back in time, providing an accurate description of the climate of the past. ERA5-Land provides a consistent view of the water and energy cycles at surface level during several decades. It contains a detailed record from 1950 onwards, with a temporal resolution of 1 hour. The native spatial resolution of the ERA5-Land reanalysis dataset is 9km on a reduced Gaussian grid (TCo1279). The data in the CDS has been regridded to a regular lat-lon grid of 0.1x0.1 degrees. The data presented here is a post-processed subset of the full ERA5-Land dataset. Monthly-mean averages have been pre-calculated to facilitate many applications requiring easy and fast access to the data, when sub-monthly fields are not required. Hourly fields can be found in the ERA5-Land hourly fields CDS page. Documentation can be found in the online ERA5-Land documentation. Variables in the dataset/application are: | 10m u-component of wind, 10m v-component of wind, 2m dewpoint temperature, 2m temperature, Evaporation from bare soil, Evaporation from open water surfaces excluding oceans, Evaporation from the top of canopy, Evaporation from vegetation transpiration, Forecast albedo, Lake bottom temperature, Lake ice depth, Lake ice temperature, Lake mix-layer depth, Lake mix-layer temperature, Lake shape factor, Lake total layer temperature, Leaf area index, high vegetation, Leaf area index, low vegetation, Potential evaporation, Runoff, Skin reservoir content, Skin temperature, Snow albedo, Snow cover, Snow density, Snow depth, Snow depth water equivalent, Snow evaporation, Snowfall, Snowmelt, Soil temperature level 1, Soil temperature level 2, Soil temperature level 3, Soil temperature level 4, Sub-surface runoff, Surface latent heat flux, Surface net solar radiation, Surface net thermal radiation, Surface pressure, Surface runoff, Surface sensible heat flux, Surface solar radiation downwards, Surface thermal radiation downwards, Temperature of snow layer, Total evaporation, Total precipitation, Volumetric soil water layer 1, Volumetric soil water layer 2, Volumetric soil water layer 3, Volumetric soil water layer 4 ",,ERA5,ERA5,,"ECMWF,Reanalysis,ERA5,CDS,Atmospheric,land,monthly,evolution",ATMOSPHERIC,proprietary,ERA5-Land monthly averaged data from 1950 to present,1950-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -ERA5_PL,"ERA5 is the fifth generation ECMWF reanalysis for the global climate and weather for the past 4 to 7 decades. Currently data is available from 1950, split into Climate Data Store entries for 1950-1978 (preliminary back extension) and from 1979 onwards (final release plus timely updates, this page). ERA5 replaces the ERA-Interim reanalysis. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using the laws of physics. This principle, called data assimilation, is based on the method used by numerical weather prediction centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued. Reanalysis works in the same way, but at reduced resolution to allow for the provision of a dataset spanning back several decades. Reanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product. ERA5 provides hourly estimates for a large number of atmospheric, ocean-wave and land-surface quantities. An uncertainty estimate is sampled by an underlying 10-member ensemble at three-hourly intervals. Ensemble mean and spread have been pre-computed for convenience. Such uncertainty estimates are closely related to the information content of the available observing system which has evolved considerably over time. They also indicate flow-dependent sensitive areas. To facilitate many climate applications, monthly-mean averages have been pre-calculated too, though monthly means are not available for the ensemble mean and spread. ERA5 is updated daily with a latency of about 5 days. In case that serious flaws are detected in this early release (called ERA5T), this data could be different from the final release 2 to 3 months later. So far this has not been the case and when this does occur users will be notified. The data set presented here is a regridded subset of the full ERA5 data set on native resolution. It is online on spinning disk, which should ensure fast and easy access. It should satisfy the requirements for most common applications. An overview of all ERA5 datasets can be found in this article. Information on access to ERA5 data on native resolution is provided in these guidelines. Data has been regridded to a regular lat-lon grid of 0.25 degrees for the reanalysis and 0.5 degrees for the uncertainty estimate (0.5 and 1 degree respectively for ocean waves). There are four main sub sets: hourly and monthly products, both on pressure levels (upper air fields) and single levels (atmospheric, ocean-wave and land surface quantities). The present entry is ""ERA5 hourly data on pressure levels from 1979 to present"". Variables in the dataset/application are: Divergence, Fraction of cloud cover, Geopotential, Ozone mass mixing ratio, Potential vorticity, Relative humidity, Specific cloud ice water content, Specific cloud liquid water content, Specific humidity, Specific rain water content, Specific snow water content, Temperature, U-component of wind, V-component of wind, Vertical velocity, Vorticity (relative) ",,ERA5,ERA5,,"ECMWF,Reanalysis,ERA5,CDS,Atmospheric,land,sea,hourly,pressure,levels",ATMOSPHERIC,proprietary,ERA5 hourly data on pressure levels from 1940 to present,1940-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -ERA5_PL_MONTHLY,"ERA5 is the fifth generation ECMWF reanalysis for the global climate and weather for the past 8 decades. Data is available from 1940 onwards. ERA5 replaces the ERA-Interim reanalysis. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using the laws of physics. This principle, called data assimilation, is based on the method used by numerical weather prediction centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued. Reanalysis works in the same way, but at reduced resolution to allow for the provision of a dataset spanning back several decades. Reanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product. ERA5 provides hourly estimates for a large number of atmospheric, ocean-wave and land-surface quantities. An uncertainty estimate is sampled by an underlying 10-member ensemble at three-hourly intervals. Ensemble mean and spread have been pre-computed for convenience. Such uncertainty estimates are closely related to the information content of the available observing system which has evolved considerably over time. They also indicate flow-dependent sensitive areas. To facilitate many climate applications, monthly-mean averages have been pre-calculated too, though monthly means are not available for the ensemble mean and spread. ERA5 is updated daily with a latency of about 5 days (monthly means are available around the 6th of each month). In case that serious flaws are detected in this early release (called ERA5T), this data could be different from the final release 2 to 3 months later. So far this has only been the case for the month September 2021, while it will also be the case for October, November and December 2021. For months prior to September 2021 the final release has always been equal to ERA5T, and the goal is to align the two again after December 2021. ERA5 is updated daily with a latency of about 5 days (monthly means are available around the 6th of each month). In case that serious flaws are detected in this early release (called ERA5T), this data could be different from the final release 2 to 3 months later. In case that this occurs users are notified. The data set presented here is a regridded subset of the full ERA5 data set on native resolution. It is online on spinning disk, which should ensure fast and easy access. It should satisfy the requirements for most common applications. Data has been regridded to a regular lat-lon grid of 0.25 degrees for the reanalysis and 0.5 degrees for the uncertainty estimate (0.5 and 1 degree respectively for ocean waves). There are four main sub sets: hourly and monthly products, both on pressure levels (upper air fields) and single levels (atmospheric, ocean-wave and land surface quantities). ",,ERA5,ERA5,,"Climate,ECMWF,Reanalysis,ERA5,CDS,Atmospheric,land,sea,monthly,pressure,levels",ATMOSPHERIC,proprietary,ERA5 monthly averaged data on pressure levels from 1940 to present,1940-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -ERA5_SL,"ERA5 is the fifth generation ECMWF reanalysis for the global climate and weather for the past 8 decades. Data is available from 1940 onwards. ERA5 replaces the ERA-Interim reanalysis. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using the laws of physics. This principle, called data assimilation, is based on the method used by numerical weather prediction centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued. Reanalysis works in the same way, but at reduced resolution to allow for the provision of a dataset spanning back several decades. Reanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product. ERA5 provides hourly estimates for a large number of atmospheric, ocean-wave and land-surface quantities. An uncertainty estimate is sampled by an underlying 10-member ensemble at three-hourly intervals. Ensemble mean and spread have been pre-computed for convenience. Such uncertainty estimates are closely related to the information content of the available observing system which has evolved considerably over time. They also indicate flow-dependent sensitive areas. To facilitate many climate applications, monthly-mean averages have been pre-calculated too, though monthly means are not available for the ensemble mean and spread. ERA5 is updated daily with a latency of about 5 days. In case that serious flaws are detected in this early release (called ERA5T), this data could be different from the final release 2 to 3 months later. In case that this occurs users are notified. The data set presented here is a regridded subset of the full ERA5 data set on native resolution. It is online on spinning disk, which should ensure fast and easy access. It should satisfy the requirements for most common applications. Data has been regridded to a regular lat-lon grid of 0.25 degrees for the reanalysis and 0.5 degrees for the uncertainty estimate (0.5 and 1 degree respectively for ocean waves). There are four main sub sets: hourly and monthly products, both on pressure levels (upper air fields) and single levels (atmospheric,ocean-wave and land surface quantities). ",,ERA5,ERA5,,"ECMWF,Reanalysis,ERA5,CDS,Atmospheric,land,sea,hourly,single,levels",ATMOSPHERIC,proprietary,ERA5 hourly data on single levels from 1940 to present,1940-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -ERA5_SL_MONTHLY,"ERA5 is the fifth generation ECMWF reanalysis for the global climate and weather for the past 8 decades. Data is available from 1940 onwards. ERA5 replaces the ERA-Interim reanalysis. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using the laws of physics. This principle, called data assimilation, is based on the method used by numerical weather prediction centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued. Reanalysis works in the same way, but at reduced resolution to allow for the provision of a dataset spanning back several decades. Reanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product. ERA5 provides hourly estimates for a large number of atmospheric, ocean-wave and land-surface quantities. An uncertainty estimate is sampled by an underlying 10-member ensemble at three-hourly intervals. Ensemble mean and spread have been pre-computed for convenience. Such uncertainty estimates are closely related to the information content of the available observing system which has evolved considerably over time. They also indicate flow-dependent sensitive areas. To facilitate many climate applications, monthly-mean averages have been pre-calculated too, though monthly means are not available for the ensemble mean and spread. ERA5 is updated daily with a latency of about 5 days (monthly means are available around the 6th of each month). In case that serious flaws are detected in this early release (called ERA5T), this data could be different from the final release 2 to 3 months later. In case that this occurs users are notified. The data set presented here is a regridded subset of the full ERA5 data set on native resolution. It is online on spinning disk, which should ensure fast and easy access. It should satisfy the requirements for most common applications. Data has been regridded to a regular lat-lon grid of 0.25 degrees for the reanalysis and 0.5 degrees for the uncertainty estimate (0.5 and 1 degree respectively for ocean waves). There are four main sub sets: hourly and monthly products, both on pressure levels (upper air fields) and single levels (atmospheric, ocean-wave and land surface quantities). ",,ERA5,ERA5,,"Climate,ECMWF,Reanalysis,ERA5,CDS,Atmospheric,land,sea,monthly,single,levels",ATMOSPHERIC,proprietary,ERA5 monthly averaged data on single levels from 1940 to present,1940-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -FIRE_HISTORICAL,"This data set provides complete historical reconstruction of meteorological conditions favourable to the start, spread and sustainability of fires. The fire danger metrics provided are part of a vast dataset produced by the Copernicus Emergency Management Service for the European Forest Fire Information System (EFFIS). The European Forest Fire Information System incorporates the fire danger indices for three different models developed in Canada, United States and Australia. In this dataset the fire danger indices are calculated using weather forecast from historical simulations provided by ECMWF ERA5 reanalysis. ERA5 by combining model data and a vast set of quality controlled observations provides a globally complete and consistent data-set and is regarded as a good proxy for observed atmospheric conditions. The selected data records in this data set are regularly extended with time as ERA5 forcing data become available. This dataset is produced by ECMWF in its role of the computational centre for fire danger forecast of the CEMS, on behalf of the Joint Research Centre which is the managing entity of the service. Variables in the dataset/application are: Build-up index, Burning index, Danger rating, Drought code, Duff moisture code, Energy release component, Fine fuel moisture code, Fire daily severity index, Fire danger index, Fire weather index, Ignition component, Initial spread index, Keetch-Byram drought index, Spread component ",,CEMS,CEMS,,"ECMWF,EFFIS,fire,historical,ERA5,european,sustainability,CEMS,system",ATMOSPHERIC,proprietary,Fire danger indices historical data from the Copernicus Emergency Management Service,1940-01-03T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -GLACIERS_DIST_RANDOLPH,"A glacier is defined as a perennial mass of ice, and possibly firn and snow, originating on the land surface from the recrystallization of snow or other forms of solid precipitation and showing evidence of past or present flow. There are several types of glaciers such as glacierets, mountain glaciers, valley glaciers and ice fields, as well as ice caps. Some glacier tongues reach into lakes or the sea, and can develop floating ice tongues or ice shelves. Glacier changes are recognized as independent and high-confidence natural indicators of climate change. Past, current and future glacier changes affect global sea level, the regional water cycle and local hazards.\nThis dataset is a snapshot of global glacier outlines compiled from\nmaps, aerial photographs and satellite images mostly acquired in the period 2000-2010. ",,,INSITU,,"ECMWF,WGMS,INSITU,CDS,C3S,glacier,randolph,distribution,inventory",ATMOSPHERIC,proprietary,Glaciers distribution data from the Randolph Glacier Inventory for year 2000,2000-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -GLACIERS_ELEVATION_AND_MASS_CHANGE,This dataset provides in situ and remote sensing derived glacier changes from individual glaciers globally. The dataset represents the latest homogenized state-of-the-art glacier change data collected by scientists and the national correspondents of each country as provided to the World Glacier Monitoring Service (WGMS). The product is an extract of the WGMS Fluctuations of Glacier (FoG) database and consists of two data sets providing time series of glacier changes: glacier elevation change series from the geodetic method and glacier mass-balance series from the glaciological method ,,INSITU,INSITU,,"ECMWF,WGMS,INSITU,CDS,C3S,glacier,elevation,mass,change",ATMOSPHERIC,proprietary,Glaciers elevation and mass change data from 1850 to present from the Fluctuations of Glaciers Database,1850-01-01T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -GLOFAS_FORECAST,"This dataset contains global modelled daily data of river discharge forced with meteorological forecasts. The data was produced by the Global Flood Awareness System (GloFAS), which is part of the Copernicus Emergency Management Service (CEMS). River discharge, or river flow as it is also known, is defined as the amount of water that flows through a river section at a given time. \nThis dataset is simulated by forcing a hydrological modelling chain with input from ECMWF ensemble forecast combined with the ECMWF extended-range ensemble forecast up to 30 days. Data availability for the GloFAS forecast is from 2019-11-05 up to near real time.\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours\n\nVariables in the dataset/application are:\nUpstream area ",,CEMS,CEMS,,"ECMWF,CEMS,GloFAS,forecast,river,discharge",ATMOSPHERIC,proprietary,River discharge and related forecasted data by the Global Flood Awareness System,2021-05-26T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -GLOFAS_HISTORICAL,"This dataset contains global modelled daily data of river discharge from the Global Flood Awareness System (GloFAS), which is part of the Copernicus Emergency Management Service (CEMS). River discharge, or river flow as it is also known, is defined as the amount of water that flows through a river section at a given time. \nThis dataset is simulated by forcing a hydrological modelling chain with inputs from a global reanalysis. Data availability for the historical simulation is from 1979-01-01 up to near real time.\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours\n\nVariables in the dataset/application are:\nUpstream area ",,CEMS,CEMS,,"ECMWF,CEMS,GloFAS,historical,river,discharge",ATMOSPHERIC,proprietary,River discharge and related historical data from the Global Flood Awareness System,1979-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -GLOFAS_REFORECAST,"This dataset provides a gridded modelled time series of river discharge, forced with medium- to sub-seasonal range meteorological reforecasts. The data is a consistent representation of a key hydrological variable across the global domain, and is a product of the Global Flood Awareness System (GloFAS). It is accompanied by an ancillary file for interpretation that provides the upstream area (see the related variables table and associated link in the documentation).\nThis dataset was produced by forcing a hydrological modelling chain with input from the European Centre for Medium-range Weather Forecasts (ECMWF) 11-member ensemble ECMWF-ENS reforecasts. Reforecasts are forecasts run over past dates, and those presented here are used for providing a suitably long time period against which the skill of the 30-day real-time operational forecast can be assessed. The reforecasts are initialised twice weekly with lead times up to 46 days, at 24-hour steps for 20 years in the recent history. For more specific information on the how the reforecast dataset is produced we refer to the documentation.\nCompanion datasets, also available through the Climate Data Store (CDS), are the operational forecasts, historical simulations that can be used to derive the hydrological climatology, and seasonal forecasts and reforecasts for users looking for long term forecasts. For users looking specifically for European hydrological data, we refer to the European Flood Awareness System (EFAS) forecasts and historical simulations. All these datasets are part of the operational flood forecasting within the Copernicus Emergency Management Service (CEMS).\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours\n\nVariables in the dataset/application are:\nUpstream area ",,CEMS,CEMS,,"ECMWF,CEMS,GloFAS,reforecast,river,discharge",ATMOSPHERIC,proprietary,Reforecasts of river discharge and related data by the Global Flood Awareness System,2003-03-27T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -GLOFAS_SEASONAL,"This dataset provides a gridded modelled time series of river discharge, forced with seasonal range meteorological forecasts. The data is a consistent representation of a key hydrological variable across the global domain, and is a product of the Global Flood Awareness System (GloFAS). It is accompanied by an ancillary file for interpretation that provides the upstream area (see the related variables table and associated link in the documentation).\nThis dataset was produced by forcing the LISFLOOD hydrological model at a 0.1° (~11 km at the equator) resolution with downscaled runoff forecasts from the European Centre for Medium-range Weather Forecasts (ECMWF) 51-member ensemble seasonal forecasting system, SEAS5. The forecasts are initialised on the first of each month with a 24-hourly time step, and cover 123 days.\nCompanion datasets, also available through the Climate Data Store (CDS), are the operational forecasts, historical simulations that can be used to derive the hydrological climatology, and medium-range and seasonal reforecasts. The latter dataset enables research, local skill assessment and post-processing of the seasonal forecasts. In addition, the seasonal reforecasts are also used to derive a specific range dependent climatology for the seasonal system. For users looking specifically for European hydrological data, we refer to the European Flood Awareness System (EFAS) forecasts and historical simulations. All these datasets are part of the operational flood forecasting within the Copernicus Emergency Management Service (CEMS).\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours\n\nVariables in the dataset/application are:\nUpstream area ",,CEMS,CEMS,,"ECMWF,CEMS,GloFAS,seasonal,forecast,river,discharge",ATMOSPHERIC,proprietary,Seasonal forecasts of river discharge and related data by the Global Flood Awareness System,2021-06-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -GLOFAS_SEASONAL_REFORECAST,"This dataset provides a gridded modelled time series of river discharge forced with seasonal range meteorological reforecasts. The data is a consistent representation of a key hydrological variable across the global domain, and is a product of the Global Flood Awareness System (GloFAS). It is accompanied by an ancillary file for interpretation that provides the upstream area (see the related variables table and associated link in the documentation).\nThis dataset was produced by forcing a hydrological modelling chain with input from the European Centre for Medium-range Weather Forecasts (ECMWF) ensemble seasonal forecasting system, SEAS5. For the period of 1981 to 2016 the number of ensemble members is 25, whilst reforecasts produced for 2017 onwards use a 51-member ensemble. Reforecasts are forecasts run over past dates, with those presented here used for producing the seasonal river discharge thresholds. In addition, they provide a suitably long time period against which the skill of the seasonal forecast can be assessed. The reforecasts are initialised monthly and run for 123 days, with a 24-hourly time step. For more specific information on the how the seasonal reforecast dataset is produced we refer to the documentation.\nCompanion datasets, also available through the Climate Data Store (CDS), include the seasonal forecasts, for which the dataset provided here can be useful for local skill assessment and post-processing. For users looking for shorter term forecasts there are also medium-range forecasts and reforecasts available, as well as historical simulations that can be used to derive the hydrological climatology. For users looking specifically for European hydrological data, we refer to the European Flood Awareness System (EFAS) forecasts and historical simulations. All these datasets are part of the operational flood forecasting within the Copernicus Emergency Management Service (CEMS).\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours\n\nVariables in the dataset/application are:\nUpstream area"" ",,CEMS,CEMS,,"ECMWF,CEMS,GloFAS,seasonal,forecast,river,discharge",ATMOSPHERIC,proprietary,Seasonal reforecasts of river discharge and related data from the Global Flood Awareness System,1981-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -L57_REFLECTANCE,"Landsat 5,7,8 L2A data (old format) distributed by Theia (2014 to 2017-03-20) using MUSCATE prototype, Lamber 93 projection. ","OLI,TIRS",LANDSAT,"L5,L7,L8",L2A,"OLI,TIRS,LANDSAT,L5,L7,L8,L2,L2A,MUSCATE",OPTICAL,proprietary,"Landsat 5,7,8 Level-2A",2014-01-01T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, -L8_OLI_TIRS_C1L1,Landsat 8 Operational Land Imager and Thermal Infrared Sensor Collection 1 Level-1 products. Details at https://landsat.usgs.gov/sites/default/files/documents/LSDS-1656_Landsat_Level-1_Product_Collection_Definition.pdf ,"OLI,TIRS",LANDSAT8,L8,L1,"OLI,TIRS,LANDSAT,LANDSAT8,L8,L1,C1,COLLECTION1",OPTICAL,proprietary,Landsat 8 Level-1,2013-02-11T00:00:00Z,,available,,,,,,,,available,,,,available,,,,,,, -L8_REFLECTANCE,"Landsat 8 L2A data distributed by Theia since 2017-03-20 using operational version of MUSCATE, UTM projection, and tiled using Sentinel-2 tiles. ","OLI,TIRS",LANDSAT8,L8,L2A,"OLI,TIRS,LANDSAT,LANDSAT8,L8,L2,L2A,MUSCATE",OPTICAL,proprietary,Landsat 8 Level-2A,2013-02-11T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, -LANDSAT_C2L1,The Landsat Level-1 product is a top of atmosphere product distributed as scaled and calibrated digital numbers. ,"OLI,TIRS",LANDSAT,"L1,L2,L3,L4,L5,L6,L7,L8",L1,"OLI,TIRS,LANDSAT,L1,L2,L3,L4,L5,L6,L7,L8,C2,COLLECTION2",OPTICAL,proprietary,Landsat Collection 2 Level-1 Product,1972-07-25T00:00:00Z,available,,,,,,,,,,,,,,,available,,,available,available, -LANDSAT_C2L2,Collection 2 Landsat OLI/TIRS Level-2 Science Products (L2SP) include Surface Reflectance and Surface Temperature scene-based products. ,"OLI,TIRS",LANDSAT,"L8,L9",L1,"OLI,TIRS,LANDSAT,L8,L9,L2,C2,COLLECTION2",OPTICAL,proprietary,Landsat OLI and TIRS Collection 2 Level-2 Science Products 30-meter multispectral data.,2013-02-11T00:00:00Z,,,,,,,,available,,,,,,,,available,,,available,, -LANDSAT_C2L2ALB_BT,"The Landsat Top of Atmosphere Brightness Temperature (BT) product is a top of atmosphere product with radiance calculated 'at-sensor', not atmospherically corrected, and expressed in units of Kelvin. ","OLI,TIRS",LANDSAT,"L4,L5,L7,L8",L2,"OLI,TIRS,LANDSAT,L4,L5,L7,L8,L2,BT,Brightness,Temperature,C2,COLLECTION2",OPTICAL,proprietary,Landsat Collection 2 Level-2 Albers Top of Atmosphere Brightness Temperature (BT) Product,1982-08-22T00:00:00Z,,,,,,,,,,,,,,,,,,,,available, -LANDSAT_C2L2ALB_SR,The Landsat Surface Reflectance (SR) product measures the fraction of incoming solar radiation that is reflected from Earth's surface to the Landsat sensor. ,"OLI,TIRS",LANDSAT,"L4,L5,L7,L8",L2,"OLI,TIRS,LANDSAT,L4,L5,L7,L8,L2,L2ALB,SR,Surface,Reflectance,C2,COLLECTION2",OPTICAL,proprietary,Landsat Collection 2 Level-2 Albers Surface Reflectance (SR) Product,1982-08-22T00:00:00Z,,,,,,,,,,,,,,,,,,,,available, -LANDSAT_C2L2ALB_ST,The Landsat Surface Temperature (ST) product represents the temperature of the Earth's surface in Kelvin (K). ,"OLI,TIRS",LANDSAT,"L4,L5,L7,L8",L2,"OLI,TIRS,LANDSAT,L4,L5,L7,L8,L2,L2ALB,Surface,Temperature,ST,C2,COLLECTION2",OPTICAL,proprietary,Landsat Collection 2 Level-2 Albers Surface Temperature (ST) Product,1982-08-22T00:00:00Z,,,,,,,,,,,,,,,,,,,,available, -LANDSAT_C2L2ALB_TA,The Landsat Top of Atmosphere (TA) Reflectance product applies per pixel angle band corrections to the Level-1 radiance product. ,"OLI,TIRS",LANDSAT,"L4,L5,L7,L8",L2,"OLI,TIRS,LANDSAT,L4,L5,L7,L8,L2,L2ALB,TA,Top,Atmosphere,Reflectance,C2,COLLECTION2",OPTICAL,proprietary,Landsat Collection 2 Level-2 Albers Top of Atmosphere (TA) Reflectance Product,1982-08-22T00:00:00Z,,,,,,,,,,,,,,,,,,,,available, -LANDSAT_C2L2_SR,The Landsat Surface Reflectance (SR) product measures the fraction of incoming solar radiation that is reflected from Earth's surface to the Landsat sensor. ,"OLI,TIRS",LANDSAT,"L4,L5,L7,L8",L2,"OLI,TIRS,LANDSAT,L4,L5,L7,L8,L2,SR,surface,reflectance,C2,COLLECTION2",OPTICAL,proprietary,Landsat Collection 2 Level-2 UTM Surface Reflectance (SR) Product,1982-08-22T00:00:00Z,,,,,,,,,,,,,,,,,,,,available, -LANDSAT_C2L2_ST,The Landsat Surface Temperature (ST) product represents the temperature of the Earth's surface in Kelvin (K). ,"OLI,TIRS",LANDSAT,"L4,L5,L7,L8",L2,"OLI,TIRS,LANDSAT,L4,L5,L7,L8,L2,ST,surface,temperature,C2,COLLECTION2",OPTICAL,proprietary,Landsat Collection 2 Level-2 UTM Surface Temperature (ST) Product,1982-08-22T00:00:00Z,,,,,,,,,,,,,,,,,,,,available, -MODIS_MCD43A4,"The MODerate-resolution Imaging Spectroradiometer (MODIS) Reflectance product MCD43A4 provides 500 meter reflectance data adjusted using a bidirectional reflectance distribution function (BRDF) to model the values as if they were taken from nadir view. The MCD43A4 product contains 16 days of data provided in a level-3 gridded data set in Sinusoidal projection. Both Terra and Aqua data are used in the generation of this product, providing the highest probability for quality assurance input data. It is designated with a shortname beginning with MCD, which is used to refer to 'combined' products, those comprised of data using both Terra and Aqua. ",MODIS,Terra+Aqua,EOS AM-1+PM-1,L3,"MODIS,Terra,Aqua,EOS,AM-1+PM-1,L3,MCD43A4",OPTICAL,proprietary,MODIS MCD43A4,2000-03-05T00:00:00Z,available,available,,,,,,,,,,,,,,available,,,,, -NAIP,"The National Agriculture Imagery Program (NAIP) acquires aerial imagery during the agricultural growing seasons in the continental U.S. This ""leaf-on"" imagery and typically ranges from 60 centimeters to 100 centimeters in resolution and is available from the naip-analytic Amazon S3 bucket as 4-band (RGB + NIR) imagery in MRF format. NAIP data is delivered at the state level; every year, a number of states receive updates, with an overall update cycle of two or three years. The tiling format of NAIP imagery is based on a 3.75' x 3.75' quarter quadrangle with a 300 meter buffer on all four sides. NAIP imagery is formatted to the UTM coordinate system using NAD83. NAIP imagery may contain as much as 10% cloud cover per tile. ",film and digital cameras,National Agriculture Imagery Program,NAIP,N/A,"film,digital,cameras,Agriculture,NAIP",OPTICAL,proprietary,National Agriculture Imagery Program,2003-01-01T00:00:00Z,available,available,,,,,,available,,,,,,,,available,,,,, -NEMSAUTO_TCDC,Total cloud cover from NOAAmodel Environment Monitoring System (NEMS) automatic domain switch. NEMSAUTO is the automatic delivery of the highest resolution meteoblue model available for any requested period of time and location. The NEMS model family are improved NMM successors (operational since 2013). NEMS is a multi-scale model (used from global down to local domains) and significantly improves cloud-development and precipitation forecast. Note that Automatic domain switching is only supported for multi point queries. Support for polygons may follow later. ,,NEMSAUTO,NEMSAUTO,,"meteoblue,NEMS,NEMSAUTO,CLOUD,COVER,TOTAL,TCDC,DAILY,MEAN",ATMOSPHERIC,proprietary,NEMSAUTO Total Cloud Cover daily mean,1984-01-01T00:00:00Z,,,,,,,,,,,,,available,,,,,,,, -NEMSGLOBAL_TCDC,Total cloud cover from NOAAmodel Environment Monitoring System (NEMS) global model. NEMSGLOBAL has 30km spatial and 1h temporal resolutions and produces seamless datasets from 1984 to 7 days ahead. ,,NEMSGLOBAL,NEMSGLOBAL,,"meteoblue,NEMS,NEMSGLOBAL,CLOUD,COVER,TOTAL,TCDC,DAILY,MEAN",ATMOSPHERIC,proprietary,NEMSGLOBAL Total Cloud Cover daily mean,1984-01-01T00:00:00Z,,,,,,,,,,,,,available,,,,,,,, -OSO,An overview of OSO Land Cover data is given on https://www.theia-land.fr/en/ceslist/land-cover-sec/ and the specific description of OSO products is available on https://www.theia-land.fr/product/carte-doccupation-des-sols-de-la-france-metropolitaine/ ,,,,L3B,"L3B,OSO,land,cover",,proprietary,OSO Land Cover,2016-01-01T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, -PLD_BUNDLE,"Pleiades Bundle (Pan, XS)",PHR,PLEIADES,"P1A,P1B",PRIMARY,"PHR,PLEIADES,P1A,P1B,PRIMARY,PLD,BUNDLE,Pan,Xs",OPTICAL,proprietary,Pleiades Bundle,2011-12-17T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, -PLD_PAN,Pleiades Panchromatic (Pan),PHR,PLEIADES,"P1A,P1B",PRIMARY,"PHR,PLEIADES,P1A,P1B,PRIMARY,PLD,PAN,Panchromatic",OPTICAL,proprietary,Pleiades Panchromatic,2011-12-17T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, -PLD_PANSHARPENED,Pleiades Pansharpened (Pan+XS),PHR,PLEIADES,"P1A,P1B",PRIMARY,"PHR,PLEIADES,P1A,P1B,PRIMARY,PLD,PANSHARPENED,Pan,Xs",OPTICAL,proprietary,Pleiades Pansharpened,2011-12-17T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, -PLD_XS,Pleiades Multispectral (XS),PHR,PLEIADES,"P1A,P1B",PRIMARY,"PHR,PLEIADES,P1A,P1B,PRIMARY,PLD,XS,Multispectral",OPTICAL,proprietary,Pleiades Multispectral,2011-12-17T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, -S1_SAR_GRD,"Level-1 Ground Range Detected (GRD) products consist of focused SAR data that has been detected, multi-looked and projected to ground range using an Earth ellipsoid model. Phase information is lost. The resulting product has approximately square spatial resolution pixels and square pixel spacing with reduced speckle at the cost of worse spatial resolution. GRD products can be in one of three resolutions: | Full Resolution (FR), High Resolution (HR), Medium Resolution (MR). The resolution is dependent upon the amount of multi-looking performed. Level-1 GRD products are available in MR and HR for IW and EW modes, MR for WV mode and MR, HR and FR for SM mode. SAFE formatted product, see https://sentinel.esa.int/web/sentinel/user-guides/sentinel-1-sar/data-formats/safe-specification ",SAR,SENTINEL1,"S1A,S1B",L1,"SAR,SENTINEL,SENTINEL1,S1,S1A,S1B,L1,GRD,SAFE",RADAR,proprietary,SENTINEL1 Level-1 Ground Range Detected,2014-04-03T00:00:00Z,available,available,,,available,available,available,available,,,,,,available,available,available,available,,,,available -S1_SAR_OCN,"Level-2 OCN products include components for Ocean Swell spectra (OSW) providing continuity with ERS and ASAR WV and two new components: Ocean Wind Fields (OWI) and Surface Radial Velocities (RVL). The OSW is a two-dimensional ocean surface swell spectrum and includes an estimate of the wind speed and direction per swell spectrum. The OSW is generated from Stripmap and Wave modes only. For Stripmap mode, there are multiple spectra derived from internally generated Level-1 SLC images. For Wave mode, there is one spectrum per vignette. The OWI is a ground range gridded estimate of the surface wind speed and direction at 10 m above the surface derived from internally generated Level-1 GRD images of SM, IW or EW modes. The RVL is a ground range gridded difference between the measured Level-2 Doppler grid and the Level-1 calculated geometrical Doppler. SAFE formatted product, see https://sentinel.esa.int/web/sentinel/user-guides/sentinel-1-sar/data-formats/safe-specification ",SAR,SENTINEL1,"S1A,S1B",L2,"SAR,SENTINEL,SENTINEL1,S1,S1A,S1B,L2,OCN,SAFE",RADAR,proprietary,SENTINEL1 Level-2 OCN,2014-04-03T00:00:00Z,,,,,available,available,available,,,,,,,available,available,,available,,,,available -S1_SAR_RAW,"The SAR Level-0 products consist of the sequence of Flexible Dynamic Block Adaptive Quantization (FDBAQ) compressed unfocused SAR raw data. For the data to be usable, it will need to be decompressed and processed using a SAR processor. SAFE formatted product, see https://sentinel.esa.int/web/sentinel/user-guides/sentinel-1-sar/data-formats/safe-specification ",SAR,SENTINEL1,"S1A,S1B",L0,"SAR,SENTINEL,SENTINEL1,S1,S1A,S1B,L0,RAW,SAFE",RADAR,proprietary,SENTINEL1 SAR Level-0,2014-04-03T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,,available -S1_SAR_SLC,"Level-1 Single Look Complex (SLC) products consist of focused SAR data geo-referenced using orbit and attitude data from the satellite and provided in zero-Doppler slant-range geometry. The products include a single look in each dimension using the full transmit signal bandwidth and consist of complex samples preserving the phase information. SAFE formatted product, see https://sentinel.esa.int/web/sentinel/user-guides/sentinel-1-sar/data-formats/safe-specification ",SAR,SENTINEL1,"S1A,S1B",L1,"SAR,SENTINEL,SENTINEL1,S1,S1A,S1B,L1,SLC,SAFE",RADAR,proprietary,SENTINEL1 Level-1 Single Look Complex,2014-04-03T00:00:00Z,,,,,available,available,available,,,,,,,available,available,,available,,,,available -S2_MSI_L1C,"The Level-1C product is composed of 100x100 km2 tiles (ortho-images in UTM/WGS84 projection). It results from using a Digital Elevation Model (DEM) to project the image in cartographic geometry. Per-pixel radiometric measurements are provided in Top Of Atmosphere (TOA) reflectances along with the parameters to transform them into radiances. Level-1C products are resampled with a constant Ground Sampling Distance (GSD) of 10, 20 and 60 meters depending on the native resolution of the different spectral bands. In Level-1C products, pixel coordinates refer to the upper left corner of the pixel. Level-1C products will additionally include Cloud Masks and ECMWF data (total column of ozone, total column of water vapour and mean sea level pressure). SAFE formatted product, see https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi/data-formats ",MSI,SENTINEL2,"S2A,S2B",L1,"MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L1,L1C,SAFE",OPTICAL,proprietary,SENTINEL2 Level-1C,2015-06-23T00:00:00Z,available,available,,,available,available,available,available,,available,,,,available,available,,available,,available,,available -S2_MSI_L2A,"The Level-2A product provides Bottom Of Atmosphere (BOA) reflectance images derived from the associated Level-1C products. Each Level-2A product is composed of 100x100 km2 tiles in cartographic geometry (UTM/WGS84 projection). SAFE formatted product, see https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi/data-formats ",MSI,SENTINEL2,"S2A,S2B",L2,"MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L2,L2A,SAFE",OPTICAL,proprietary,SENTINEL2 Level-2A,2018-03-26T00:00:00Z,available,available,,,available,available,available,,,,,,,available,,available,available,,,,available -S2_MSI_L2AP,"The Level-2A product provides Bottom Of Atmosphere (BOA) reflectance images derived from the associated Level-1C products. Each Level-2A product is composed of 100x100 km2 tiles in cartographic geometry (UTM/WGS84 projection). SAFE formatted product, see https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi/data-formats. Level-2AP are the pilot products of Level-2A product generated by ESA until March 2018. After March, they are operational products ",MSI,SENTINEL2,"S2A,S2B",L2,"MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L2,L2A,SAFE, pilot",OPTICAL,proprietary,SENTINEL2 Level-2A pilot,2017-05-23T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S2_MSI_L2A_COG,"The Level-2A product provides Bottom Of Atmosphere (BOA) reflectance images derived from the associated Level-1C products. Each Level-2A product is composed of 100x100 km2 tiles in cartographic geometry (UTM/WGS84 projection). Product containing Cloud Optimized GeoTIFF images, without SAFE formatting. ",MSI,SENTINEL2,"S2A,S2B",L2,"MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L2,L2A,COG",OPTICAL,proprietary,SENTINEL2 Level-2A,2015-06-23T00:00:00Z,,,,,,,,,available,,,,,,,,,,,, -S2_MSI_L2A_MAJA,"The level 2A products correct the data for atmospheric effects and detect the clouds and their shadows using MAJA. MAJA uses MUSCATE processing center at CNES, in the framework of THEIA land data center. Sentinel-2 level 1C data are downloaded from PEPS. The full description of the product format is available at https://theia.cnes.fr/atdistrib/documents/PSC-NT-411-0362-CNES_01_00_SENTINEL-2A_L2A_Products_Description.pdf ",MSI,SENTINEL2,"S2A,S2B",L2,"MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L2,L2A,MAJA",OPTICAL,proprietary,SENTINEL2 Level-2A,2015-06-23T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, -S2_MSI_L2B_MAJA_SNOW,The Theia snow product is derived from Sentinel-2 L2A images generated by Theia. It indicates the snow presence or absence on the land surface every fifth day if there is no cloud. The product is distributed by Theia as a raster file (8 bits GeoTIFF) of 20 m resolution and a vector file (Shapefile polygons). More details about the snow products description are available at http://www.cesbio.ups-tlse.fr/multitemp/?page_id=10748#en ,MSI,SENTINEL2,"S2A,S2B",L2,"MSI,MAJA,SENTINEL,sentinel2,S2,S2A,S2B,L2,L2B,SNOW",OPTICAL,proprietary,SENTINEL2 snow product,2015-06-23T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, -S2_MSI_L2B_MAJA_WATER,A description of the Land Water Quality data distributed by Theia is available at https://theia.cnes.fr/atdistrib/documents/THEIA-ST-411-0477-CNES_01-03_Format_Specification_of_OBS2CO_WaterColor_Products.pdf ,MSI,SENTINEL2,"S2A,S2B",L2,"MSI,MAJA,SENTINEL,sentinel2,S2,S2A,S2B,L2,L2B,WATER",OPTICAL,proprietary,SENTINEL2 L2B-WATER,2015-06-23T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, -S2_MSI_L3A_WASP,"The Level-3A product provides a monthly synthesis of surface reflectances from Theia's L2A products. The synthesis is based on a weighted arithmetic mean of clear observations. The data processing is produced by WASP (Weighted Average Synthesis Processor), by MUSCATE data center at CNES, in the framework of THEIA data center. The full description of the product format is available at https://theia.cnes.fr/atdistrib/documents/THEIA-ST-411-0419-CNES_01-04_Format_Specification_of_MUSCATE_Level-3A_Products-signed.pdf ",MSI,SENTINEL2,"S2A,S2B",L3,"MSI,SENTINEL,sentinel2,S2,S2A,S2B,L3,L3A,WASP",OPTICAL,proprietary,SENTINEL2 Level-3A,2015-06-23T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, -S3_EFR,"OLCI (Ocean and Land Colour Instrument) Full resolution: 300m at nadir. Level 1 products are calibrated Top Of Atmosphere radiance values at OLCI 21 spectral bands. Radiances are computed from the instrument digital counts by applying geo-referencing, radiometric processing (non-linearity correction, smear correction, dark offset correction, absolute gain calibration adjusted for gain evolution with time), and stray-light correction for straylight effects in OLCI camera's spectrometer and ground imager. Additionally, spatial resampling of OLCI pixels to the 'ideal' instrument grid, initial pixel classification, and annotation at tie points with auxiliary meteorological data and acquisition geometry are provided. The radiance products are accompanied by error estimate products, however the error values are currently not available. - All Sentinel-3 NRT products are available at pick-up point in less than 3h. - All Sentinel-3 Non Time Critical (NTC) products are available at pick-up point in less than 30 days. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. ",OLCI,SENTINEL3,"S3A,S3B",L1,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,EFR",OPTICAL,proprietary,SENTINEL3 EFR,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,,available -S3_ERR,"OLCI (Ocean and Land Colour Instrument) Reduced resolution: 1200m at nadir. All Sentinel-3 NRT products are available at pick-up point in less than 3h. Level 1 products are calibrated Top Of Atmosphere radiance values at OLCI 21 spectral bands. Radiances are computed from the instrument digital counts by applying geo-referencing, radiometric processing (non-linearity correction, smear correction, dark offset correction, absolute gain calibration adjusted for gain evolution with time), and stray-light correction for straylight effects in OLCI camera's spectrometer and ground imager. Additionally, spatial resampling of OLCI pixels to the 'ideal' instrument grid, initial pixel classification, and annotation at tie points with auxiliary meteorological data and acquisition geometry are provided. The radiance products are accompanied by error estimate products, however the error values are currently not available. - All Sentinel-3 NRT products are available at pick-up point in less than 3h - All Sentinel-3 Non Time Critical (NTC) products are available at pick-up point in less than 30 days Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. ",OLCI,SENTINEL3,"S3A,S3B",L1,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,ERR",OPTICAL,proprietary,SENTINEL3 ERR,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,,available -S3_LAN,LAN or SR_2_LAN___ (peps),SRAL,SENTINEL3,"S3A,S3B",L2,"SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,LAN",RADAR,proprietary,SENTINEL3 SRAL Level-2 LAN,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,,available -S3_OLCI_L2LFR,"The OLCI Level-2 Land Full Resolution (OL_2_LFR) products contain land and atmospheric geophysical products at Full resolution with a spatial sampling of approximately 300 m. The products are assumed to be computed in Near Real Time (NRT) (i.e. delivered to users less than 3 hours after acquisition), in Non-Time Critical (NTC) (i.e. within 1 month after acquisition) or in re-processed NTC. Details at https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-olci/product-types/level-2-land ",OLCI,SENTINEL3,"S3A,S3B",L2,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2LFR,LFR",OPTICAL,proprietary,SENTINEL3 OLCI Level-2 Land Full Resolution,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,,available -S3_OLCI_L2LRR,"The OLCI Level-2 Land Reduced Resolution (OL_2_LRR) products contain land and atmospheric geophysical products at Reduced resolution with a spatial sampling of approximately 1.2 km. The products are assumed to be computed in Near Real Time (NRT) (i.e. delivered to users less than 3 hours after acquisition), in Non-Time Critical (NTC) (i.e. within 1 month after acquisition) or in re-processed NTC. Details at https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-olci/product-types/level-2-land ",OLCI,SENTINEL3,"S3A,S3B",L2,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2LRR,LRR",OPTICAL,proprietary,SENTINEL3 OLCI Level-2 Land Reduced Resolution,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,,available -S3_OLCI_L2WFR,"The OLCI Level-2 Water Full Resolution (OL_2_WFR) products contain water and atmospheric geophysical products at Full resolution with a spatial sampling of approximately 300 m. The products are assumed to be computed in Near Real Time (NRT) (i.e. delivered to users less than 3 hours after acquisition), in Non-Time Critical (NTC) (i.e. within 1 month after acquisition) or in re-processed NTC. Details at https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-olci/product-types/level-2-water ",OLCI,SENTINEL3,"S3A,S3B",L2,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2WFR,WFR",OPTICAL,proprietary,SENTINEL3 OLCI Level-2 Water Full Resolution,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,,available -S3_OLCI_L2WFR_BC003,"OLCI Level 2 Marine products provide spectral information on the colour of the oceans (water reflectances). These radiometric products are used to estimate geophysical parameters e.g. estimates of phytoplankton biomass through determining the Chlorophyll-a (Chl) concentration. In coastal areas, they also allow monitoring of the sediment load via the Total Suspended Matter (TSM) product. Full resolution products are at a nominal 300m resolution. This collection contains reprocessed data from baseline collection 003. Operational data can be found in the corresponding collection. Details at https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-olci/product-types/level-2-water ",OLCI,SENTINEL3,"S3A,S3B",L2,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2WFR,WFR,REPROCESSED,BC003",OPTICAL,proprietary,SENTINEL3 OLCI Level-2 Water Full Resolution Reprocessed from BC003,2016-02-16T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S3_OLCI_L2WRR,"The OLCI Level-2 Water Reduced Resolution (OL_2_WRR) products contain water and atmospheric geophysical products at Reduced resolution with a spatial sampling of approximately 1.2 km. The products are assumed to be computed in Near Real Time (NRT) (i.e. delivered to users less than 3 hours after acquisition), in Non-Time Critical (NTC) (i.e. within 1 month after acquisition) or in re-processed NTC. Details at https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-olci/product-types/level-2-water ",OLCI,SENTINEL3,"S3A,S3B",L2,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2WRR,WRR",OPTICAL,proprietary,SENTINEL3 OLCI Level-2 Water Reduced Resolution,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,,available -S3_OLCI_L2WRR_BC003,"OLCI Level 2 Marine products provide spectral information on the colour of the oceans (water reflectances). These radiometric products are used to estimate geophysical parameters e.g. estimates of phytoplankton biomass through determining the Chlorophyll-a (Chl) concentration. In coastal areas, they also allow monitoring of the sediment load via the Total Suspended Matter (TSM) product. Reduced resolution products are at a nominal 1km resolution. This collection contains reprocessed data from baseline collection 003. Operational data can be found in the corresponding collection. ",OLCI,SENTINEL3,"S3A,S3B",L2,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2WRR,WRR,REPROCESSED,BC003",OPTICAL,proprietary,SENTINEL3 OLCI Level-2 Water Reduced Resolution Reprocessed from BC003,2016-02-16T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S3_OLCI_L4BALTIC,"Baltic Sea Surface Ocean Colour Plankton from Sentinel-3 OLCI L4 monthly observations For the Baltic Sea Ocean Satellite Observations, the Italian National Research Council (CNR – Rome, Italy), is providing Bio-Geo_Chemical (BGC) regional datasets: * ''plankton'' with the phytoplankton chlorophyll concentration (CHL) evaluated via region-specific neural network (Brando et al. 2021) Upstreams: OLCI-S3A & S3B Temporal resolution: monthly Spatial resolution: 300 meters To find this product in the catalogue, use the search keyword """"OCEANCOLOUR_BAL_BGC_L4_NRT"""". DOI (product) : https://doi.org/10.48670/moi-00295 ",OLCI,SENTINEL3,"S3A,S3B",L4,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L4,BGC,CHL,BALTIC",OPTICAL,proprietary,SENTINEL3 OLCI Baltic Sea Surface Ocean Colour Plankton,2023-04-10T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S3_RAC,Sentinel 3 OLCI products output during Radiometric Calibration mode ,OLCI,SENTINEL3,"S3A,S3B",L1,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L2,RAC",OPTICAL,proprietary,SENTINEL3 RAC,2016-02-16T00:00:00Z,,,,,,,,,,,,,,,,,available,,,, -S3_SLSTR_L1RBT,"SLSTR Level-1 observation mode products consisting of full resolution, geolocated, co-located nadir and along track view, Top of Atmosphere (TOA) brightness temperatures (in the case of thermal IR channels) or radiances (in the case of visible, NIR and SWIR channels) from all SLSTR channels, and quality flags, pixel classification information and meteorological annotations ",SLSTR,SENTINEL3,"S3A,S3B",L1,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1RBT,RBT",ATMOSPHERIC,proprietary,SENTINEL3 SLSTR Level-1,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,,available -S3_SLSTR_L1RBT_BC004,"SLSTR Level 1B Radiances and Brightness Temperatures (version BC004) - Sentinel 3 - Reprocessed The SLSTR level 1 products contain: the radiances of the 6 visible (VIS), Near Infra-Red (NIR) and Short Wave Infra-Red (SWIR) bands (on the A and B stripe grids); the Brightness Temperature (BT) for the 3 Thermal Infra-Red (TIR) bands; the BT for the 2 Fire (FIR) bands. Resolution: 1km at nadir (TIR), 500m (VIS). All are provided for both the oblique and nadir view. These measurements are accompanied with grid and time information, quality flags, error estimates and meteorological auxiliary data. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This collection contains reprocessed data from baseline collection 004. Operational data can be found in the corresponding collection. ",SLSTR,SENTINEL3,"S3A,S3B",L1,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1RBT,RBT,VIS,NIR,SWIR,BT,TIR,FIR,Reprocessed,BC004",ATMOSPHERIC,proprietary,SENTINEL3 SLSTR Level-1 RBT - Reprocessed from BC004,2018-05-09T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S3_SLSTR_L2,"The SLSTR Level-2 products are generated in five different types: 1. SL_2_WCT, including the Sea Surface Temperature for single and dual view, for 2 or 3 channels (internal product only), 2. SL_2_WST, including the Level-2P Sea surface temperature (provided to the users), 3. SL_2_LST, including the Land Surface Temperature parameters (provided to the users), 4. SL_2_FRP, including the Fire Radiative Power parameters (provided to the users), 5.SL_2_AOD, including the Aerosol Optical Depth parameters (provided to the users). The Level-2 product are organized in packages composed of one manifest file and several measurement and annotation data files (between 2 and 21 files depending on the package). The manifest file is in XML format and gathers general information concerning product and processing. The measurement and annotation data files are in netCDF 4 format, and include dimensions, variables and associated attributes. Regarding the measurement files: one measurement file, providing the land surface temperature, associated uncertainties and other supporting fields, is included in the SL_2_LST packet. The annotation data files are generated from the annotation files included in the SL_1RBT package and their format is identical to the files in the Level-1 packet.The SL_2_LST packet contains 10 annotation files, providing the same parameters as in SL_2_WCT and, in addition, some vegetation parameters. ",SLSTR,SENTINEL3,"S3A,S3B",L2,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2FRP,FRP,L2WCT,WCT,L2WST,WST,L2AOD,AOD",ATMOSPHERIC,proprietary,SENTINEL3 SLSTR Level-2,2017-07-05T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S3_SLSTR_L2AOD,"The Copernicus NRT S3 AOD processor quantifies the abundance of aerosol particles and monitors their global distribution and long-range transport, at the scale of 9.5 x 9.5 km2. All observations are made available in less than three hours from the SLSTR observation sensing time. It is only applicable during daytime. NOTE: The SLSTR L2 AOD product is generated by EUMETSAT in NRT only. An offline (NTC) AOD product is generated from SYN data by ESA, exploiting the synergy between the SLSTR and OLCI instruments. ",SLSTR,SENTINEL3,"S3A,S3B",L2,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2AOD,AOD",ATMOSPHERIC,proprietary,SENTINEL3 SLSTR Level-2 AOD,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,,,,available,,,,available -S3_SLSTR_L2FRP,"The SLSTR Level-2 FRP product is providing one measurement data file, FRP_in.nc, with Fire Radiative Power (FRP) values and associated parameters generated for each fire detected over land and projected on the SLSTR 1 km grid. The fire detection is based on a mixed thermal band, combining S7 radiometric measurements and, for pixels associated with a saturated value of S7 (i.e. above 311 K), F1 radiometric measurements. ",SLSTR,SENTINEL3,"S3A,S3B",L2,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2FRP,FRP",ATMOSPHERIC,proprietary,SENTINEL3 SLSTR Level-2 FRP,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,,available -S3_SLSTR_L2LST,The SLSTR Level-2 LST product provides land surface parameters generated on the wide 1 km measurement grid. It contains measurement file with Land Surface Temperature (LST) values with associated parameters (LST parameters are computed and provided for each pixel (re-gridded or orphan) included in the 1 km measurement grid) ,SLSTR,SENTINEL3,"S3A,S3B",L2,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2LST,LST",ATMOSPHERIC,proprietary,SENTINEL3 SLSTR Level-2 LST,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,, -S3_SLSTR_L2WST,The SLSTR Level-2 WST product provides water surface parameters generated on the wide 1 km measurement grid. It contains measurement file with Water Surface Temperature (WST) values with associated parameters (WST parameters are computed and provided for each pixel (re-gridded or orphan) included in the 1 km measurement grid) ,SLSTR,SENTINEL3,"S3A,S3B",L2,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2WST,WST",ATMOSPHERIC,proprietary,SENTINEL3 SLSTR Level-2 WST,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,,available -S3_SLSTR_L2WST_BC003,"The SLSTR SST has a spatial resolution of 1km at nadir. Skin Sea Surface Temperature following the GHRSST L2P GDS2 format specification, see https://www.ghrsst.org/ . Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This collection contains reprocessed data from baseline collection 003. Operational data can be found in the corresponding collection. ",SLSTR,SENTINEL3,"S3A,S3B",L2,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2WST,WST,REPROCESSED,BC003",ATMOSPHERIC,proprietary,SENTINEL3 SLSTR Level-2 WST Reprocessed from BC003,2016-04-18T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S3_SRA,"SRAL Level 1B: Complex echoes (In-phase (I) and Quadrature (Q)) for the Low Resolution Mode (LRM) and/or Synthetic Aperture Radar (SAR) mode both for C Band and Ku band. When the altimeter is in SAR mode, this product also contains the so-called Pseudo LRM (PLRM) echoes. - All Sentinel-3 Near Real Time (NRT) products are available at pick-up point in less than 3h. - All Sentinel-3 Non Time Critical (NTC) products are available at pick-up point in less than 30 days. - All Sentinel-3 Short Time Critical (STC) products are available at pick-up point in less than 48 hours. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. ",SRAL,SENTINEL3,"S3A,S3B",L1,"SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1",RADAR,proprietary,SENTINEL3 SRAL Level-1,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,,available -S3_SRA_1A_BC004,"SRAL Level 1A Unpacked L0 Complex Echoes (version BC004) - Sentinel-3 - Reprocessed Fundamental science and engineering product development supporting operational users. This product is most relevant to SAR processing specialists allowing fundamental studies on SAR processing such as Doppler beam formation and for calibration studies using ground-based Transponders. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This collection contains reprocessed data from baseline collection 004. Operational data can be found in the corresponding collection. ",SRAL,SENTINEL3,"S3A,S3B",L1A,"SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1A,REPROCESSED,BC004",RADAR,proprietary,SENTINEL3 SRAL Level-1A Unpacked - Reprocessed from BC004,2016-03-01T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S3_SRA_1B_BC004,"SRAL Level 1B (version BC004) - Sentinel-3 - Reprocessed SRAL Level 1B: Complex echoes (In-phase (I) and Quadrature (Q)) for the Low Resolution Mode (LRM) and/or Synthetic Aperture Radar (SAR) mode both for C Band and Ku band. When the altimeter is in SAR mode, this product also contains the so-called Pseudo LRM (PLRM) echoes. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This collection contains reprocessed data from baseline collection 004. Operational data can be found in the corresponding collection. ",SRAL,SENTINEL3,"S3A,S3B",L1B,"SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1B,REPROCESSED,BC004",RADAR,proprietary,SENTINEL3 SRAL Level-1B - Reprocessed from BC004,2016-03-01T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S3_SRA_A,"A Level 1A SRAL product contains one ""measurement data file"" containing the L1A measurements parameters: ECHO_SAR_Ku: L1A Tracking measurements (sorted and calibrated) in SAR mode - Ku-band (80-Hz) ECHO_PLRM: L1A Tracking measurements (sorted and calibrated) in pseudo-LRM mode - Ku and C bands (80-Hz) ",SRAL,SENTINEL3,"S3A,S3B",L1,"SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1",RADAR,proprietary,SENTINEL3 SRAL Level-1 SRA_A,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,,available -S3_SRA_BS,"A Level 1B-S SRAL product contains one ""measurement data file"" containing the L1b measurements parameters: ECHO_SAR_Ku : L1b Tracking measurements in SAR mode - Ku band (20-Hz) as defined in the L1b MEAS product completed with SAR expert information ECHO_PLRM : L1b Tracking measurements in pseudo-LRM mode - Ku and C bands (20-Hz) as defined in the L1b MEAS product ",SRAL,SENTINEL3,"S3A,S3B",L1,"SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1",RADAR,proprietary,SENTINEL3 SRAL Level-1 SRA_BS,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,,available -S3_SRA_BS_BC004,"SRAL Level 1B Stack Echoes (version BC004) - Sentinel-3 - Reprocessed SRAL Level 1B: Complex echoes (In-phase (I) and Quadrature (Q)) for the Low Resolution Mode (LRM) and/or Synthetic Aperture Radar (SAR) mode both for C Band and Ku band. When the altimeter is in SAR mode, this product also contains the so-called Pseudo LRM (PLRM) echoes. Complex (In-phase and Quadrature) echoes (I's and Q;s) after slant/Doppler range correction. This product is most relevant to geophysical retrieval algorithm developers (over ocean, land and ice surfaces), surface characterisations studies (e.g. impact of sea state bias, wave directional effects etc) and Quality Control systems. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This collection contains reprocessed data from baseline collection 004. Operational data can be found in the corresponding collection. ",SRAL,SENTINEL3,"S3A,S3B",L1B,"SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1B,REPROCESSED,STACK,ECHOES,BC004",RADAR,proprietary,SENTINEL3 SRAL Level-1B Stack Echoes - Reprocessed from BC004,2016-03-01T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S3_SY_AOD,"The Level-2 SYN AOD product (SY_2_AOD) is produced by a dedicated processor including the whole SYN L1 processing module and a global synergy level 2 processing module retrieving, over land and sea, aerosol optical thickness. The resolution of this product is wider than classic S3 products, as the dataset are provided on a 4.5 km² resolution ",SYNERGY,SENTINEL3,"S3A,S3B",L2,"SYNERGY,SY,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,AOD","OPTICAL,RADAR",proprietary,SENTINEL3 SYNERGY Level-2 AOD,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,, -S3_SY_SYN,"The Level-2 SYN product (SY_2_SYN) is produced by the Synergy Level-1/2 SDR software and contains surface reflectance and aerosol parameters over land. All measurement datasets are provided on the OLCI image grid, similar to the one included in the OLCI L1b product. Some sub-sampled annotations and atmospheric datasets are provided on the OLCI tie-points grid. Several associated variables are also provided in annotation data files. ",SYNERGY,SENTINEL3,"S3A,S3B",L2,"SYNERGY,SY,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,SYN","OPTICAL,RADAR",proprietary,SENTINEL3 SYNERGY Level-2 SYN,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,,available -S3_SY_V10,"The Level-2 VG1 and V10 SYN products (SY_2_VG1 and SY_2_V10 respectively) are produced by the SYNERGY Level-2 processor and contain 1 km VEGETATION-like product, 1 and 10 days synthesis surface reflectances and NDVI. The product grid and the four spectral bands are similar to the SYN Level-2 VGP product. ",SYNERGY,SENTINEL3,"S3A,S3B",LEVEL-2W,"SYNERGY,SY,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,V10","OPTICAL,RADAR",proprietary,SENTINEL3 SYNERGY Level-2 V10,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,, -S3_SY_VG1,"The Level-2 VG1 and V10 SYN products (SY_2_VG1 and SY_2_V10 respectively) are produced by the SYNERGY Level-2 processor and contain 1 km VEGETATION-like product, 1 and 10 days synthesis surface reflectances and NDVI. The product grid and the four spectral bands are similar to the SYN Level-2 VGP product. ",SYNERGY,SENTINEL3,"S3A,S3B",LEVEL-2,"SYNERGY,SY,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,VG1","OPTICAL,RADAR",proprietary,SENTINEL3 SYNERGY Level-2 VG1,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,, -S3_SY_VGP,"The Level-2 VGP SYN product (SY_2_VGP) is produced by the Global Synergy Level-1/2 software and contains 1 km VEGETATION-like product TOA reflectances. The ""1 km VEGETATION-like product"" label means that measurements are provided on a regular latitude-longitude grid, with an equatorial sampling distance of approximately 1 km. This product is restricted in longitude, including only filled ones. ",SYNERGY,SENTINEL3,"S3A,S3B",LEVEL-2,"SYNERGY,SY,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,VGP","OPTICAL,RADAR",proprietary,SENTINEL3 SYNERGY Level-2 VGP,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,, -S3_WAT,"The products contain the typical altimetry measurements, like the altimeter range, the sea surface height, the wind speed, significant wave height and all required geophysical corrections and related flags. Also the sea Ice freeboard measurement is included. The measurements in the standard data file provide the measurements in low (1 Hz = approx. 7km) and high resolution (20 Hz = approx. 300 m), in LRM mode or in SAR mode, for both C-band and Ku band. The SAR mode is the default mode. The reduced measurement data file contains 1 Hz measurements only. The enhanced measurement data file contains also the waveforms and associated parameters and the pseudo LRM measurements when in SAR mode. This product contains the following datasets: Sea Level Global(NRT) (PDS_MG3_CORE_14_GLONRT), Sea Level Global Reduced(NRT)(PDS_MG3_CORE_14_GLONRT_RD), Sea Level Global Standard(NRT) (PDS_MG3_CORE_14_GLONRT_SD), Sea Level Global Enhanced(NRT) (PDS_MG3_CORE_14_GLONRT_EN) - All Sentinel-3 NRT products are available at pick-up point in less than 3h. - All Sentinel-3 Non Time Critical (NTC) products are available at pick-up point in less than 30 days - All Sentinel-3 Short Time Critical (STC) products are available at pick-up point in less than 48 hours Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. ",SRAL,SENTINEL3,"S3A,S3B",L2,"SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,WAT",RADAR,proprietary,SENTINEL3 SRAL Level-2 WAT,2016-02-16T00:00:00Z,,,,,available,available,available,,,,,,,available,,,available,,,,available -S3_WAT_BC004,"The products contain the typical altimetry measurements, like the altimeter range, the sea surface height, the wind speed, significant wave height and all required geophysical corrections and related flags. Also the sea Ice freeboard measurement is included. The measurements in the standard data file provide the measurements in low (1 Hz = approx. 7km) and high resolution (20 Hz = approx. 300 m), in LRM mode or in SAR mode, for both C-band and Ku band. The SAR mode is the default mode. The reduced measurement data file contains 1 Hz measurements only. The enhanced measurement data file contains also the waveforms and associated parameters and the pseudo LRM measurements when in SAR mode. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This collection contains reprocessed data from baseline collection 004. Operational data can be found in the corresponding collection. ",SRAL,SENTINEL3,"S3A,S3B",L2,"SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,WAT,REPROCESSED,BC004",RADAR,proprietary,SRAL Level 2 Altimetry Global - Reprocessed from BC004,2016-03-01T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S5P_L1B2_IR_ALL,"Solar irradiance spectra for all bands (UV1-6 and SWIR) The TROPOMI instrument is a space-borne, nadir-viewing, imaging spectrometer covering wavelength bands between the ultraviolet and the shortwave infrared. The instrument, the single payload of the Sentinel-5P spacecraft, uses passive remote sensing techniques to attain its objective by measuring, at the Top Of Atmosphere (TOA), the solar radiation reflected by and radiated from the earth. The instrument operates in a push-broom configuration (non-scanning), with a swath width of ~2600 km on the Earth's surface. The typical pixel size (near nadir) will be 7x3.5 km2 for all spectral bands, with the exception of the UV1 band (7x28 km2) and SWIR bands (7x7 km2). ",TROPOMI,SENTINEL5P,S5P,"L1B, L2","SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,IR,SIR,SWIR,Irradiances,UVN",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B and Level 2 Irradiances for the SWIR and UNV bands,2017-10-13T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S5P_L1B_IR_SIR,"Solar irradiance spectra for the SWIR bands (band 7 and band 8). TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",TROPOMI,SENTINEL5P,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,IR,SIR,SWIR,Irradiances",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Irradiances for the SWIR bands,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,,,,,,,, -S5P_L1B_IR_UVN,"Solar irradiance spectra for the UVN bands (band 1 through band 6). TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",TROPOMI,SENTINEL5P,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,IR,UVN,Irradiances",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Irradiances for the UVN bands,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,,,,,,,, -S5P_L1B_RA_BD1,"Sentinel-5 Precursor Level 1B Radiances for spectral band 1. TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",TROPOMI,SENTINEL5P,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,RA,Radiances,BD1,BAND1,B01",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Radiances for spectral band 1,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L1B_RA_BD2,"Sentinel-5 Precursor Level 1B Radiances for spectral band 2. TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",TROPOMI,SENTINEL5P,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,RA,Radiances,BD2,BAND2,B02",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Radiances for spectral band 2,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L1B_RA_BD3,"Sentinel-5 Precursor Level 1B Radiances for spectral band 3. TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",TROPOMI,SENTINEL5P,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,RA,Radiances,BD3,BAND3,B03",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Radiances for spectral band 3,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L1B_RA_BD4,"Sentinel-5 Precursor Level 1B Radiances for spectral band 4. TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",TROPOMI,SENTINEL5P,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,RA,Radiances,BD4,BAND4,B04",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Radiances for spectral band 4,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L1B_RA_BD5,"Sentinel-5 Precursor Level 1B Radiances for spectral band 5. TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",TROPOMI,SENTINEL5P,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,RA,Radiances,BD5,BAND5,B05",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Radiances for spectral band 5,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L1B_RA_BD6,"Sentinel-5 Precursor Level 1B Radiances for spectral band 6. TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",TROPOMI,SENTINEL5P,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,RA,Radiances,BD6,BAND6,B06",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Radiances for spectral band 6,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L1B_RA_BD7,"Sentinel-5 Precursor Level 1B Radiances for spectral band 7. TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",TROPOMI,SENTINEL5P,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,RA,Radiances,BD7,BAND7,B07",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Radiances for spectral band 7,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L1B_RA_BD8,"Sentinel-5 Precursor Level 1B Radiances for spectral band 8. TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",TROPOMI,SENTINEL5P,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,RA,Radiances,BD8,BAND8,B08",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Radiances for spectral band 8,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L2_AER_AI,"TROPOMI aerosol index is referred to as the Ultraviolet Aerosol Index (UVAI). The relatively simple calculation of the Aerosol Index is based on wavelength dependent changes in Rayleigh scattering in the UV spectral range where ozone absorption is very small. UVAI can also be calculated in the presence of clouds so that daily, global coverage is possible. This is ideal for tracking the evolution of episodic aerosol plumes from dust outbreaks, volcanic ash, and biomass burning. ",TROPOMI,SENTINEL5P,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,AER,AI,Ultraviolet,Aerosol,Index",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Ultraviolet Aerosol Index,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L2_AER_LH,"The TROPOMI Aerosol Layer Height product focuses on retrieval of vertically localised aerosol layers in the free troposphere, such as desert dust, biomass burning aerosol, or volcanic ash plumes. The height of such layers is retrieved for cloud-free conditions. Height information for aerosols in the free troposphere is particularly important for aviation safety. Scientific applications include radiative forcing studies, long-range transport modelling and studies of cloud formation processes. Aerosol height information also helps to interpret the UV Aerosol Index (UVAI) in terms of aerosol absorption as the index is strongly height-dependent. ",TROPOMI,SENTINEL5P,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,AER,LH,Aerosol,Layer,Height",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Aerosol Layer Height,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L2_CH4,"Methane (CH4) is, after carbon dioxide (CO2), the most important contributor to the anthropogenically enhanced greenhouse effect. Roughly three-quarters of methane emissions are anthropogenic and as such it is important to continue the record of satellite-based measurements. TROPOMI aims at providing CH4 column concentrations with high sensitivity to the Earth's surface, good spatio/temporal coverage, and sufficient accuracy to facilitate inverse modelling of sources and sinks. The output product consists of the retrieved methane column and a row vector referred to as the column averaging kernel A. The column averaging kernel describes how the retrieved column relates to the true profile and should be used in validation exercises (when possible) or use of the product in source/sink inverse modelling. The output product also contains altitude levels of the layer interfaces to which the column averaging kernel corresponds. Additional output for Level-2 data products: viewing geometry, precision of retrieved methane, residuals of the fit, quality flags (cloudiness, terrain roughness etc.) and retrieved albedo and aerosol properties. The latter properties are required for a posteriori filtering and for estimation of total retrieval error. The Sentinel-5 Precursor mission flies in loose formation (about 3.5 - 5 minutes behind) with the S-NPP (SUOMI-National Polar-orbiting Partnership) mission to use VIIRS (Visible Infrared Imaging Radiometer Suite) cloud information to select cloud free TROPOMI pixels for high quality methane retrieval. ",TROPOMI,SENTINEL5P,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,CH4,Methane",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Methane,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L2_CLOUD,"The TROPOMI instrument, single payload onboard Sentinel-5 Precursor, retrieves operationally the most important quantities for cloud correction of satellite trace gas retrievals: cloud fraction, cloud optical thickness (albedo), and cloud-top pressure (height). Cloud parameters from TROPOMI are not only used for enhancing the accuracy of trace gas retrievals, but also to extend the satellite data record of cloud information derived from oxygen A-band measurements initiated with GOME. ",TROPOMI,SENTINEL5P,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,CLOUD",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Cloud,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L2_CO,"The TROPOMI instrument, single payload onboard Sentinel-5 Precursor, retrieves the CO global abundance exploiting clear-sky and cloudy-sky Earth radiance measurements in the 2.3 µm spectral range of the shortwave infrared (SWIR) part of the solar spectrum. TROPOMI clear sky observations provide CO total columns with sensitivity to the tropospheric boundary layer. For cloudy atmospheres, the column sensitivity changes according to the light path. The TROPOMI CO retrieval uses the same method employed by SCIAMACHY. ",TROPOMI,SENTINEL5P,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,CO,Carbon,Monoxide",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Carbon Monoxide,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L2_HCHO,"Formaldehyde is an intermediate gas in almost all oxidation chains of Non-Methane Volatile Organic Compounds (NMVOC), leading eventually to CO2. NMVOCs are, together with NOx, CO and CH4, among the most important precursors of tropospheric O3. The major HCHO source in the remote atmosphere is CH4 oxidation. Over the continents, the oxidation of higher NMVOCs emitted from vegetation, fires, traffic and industrial sources results in important and localised enhancements of the HCHO levels. In addition to the main product results, such as HCHO slant column, vertical column and air mass factor, the level 2 data files contain several additional parameters and diagnostic information. ",TROPOMI,SENTINEL5P,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,HCHO,Formaldehyde",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Formaldehyde,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L2_NO2,"The TROPOMI instrument, single payload onboard Sentinel-5 Precursor, retrieves operationally tropospheric and stratospheric NO2 column products. The TROPOMI NO2 data products pose an improvement over previous NO2 data sets, particularly in their unprecedented spatial resolution, but also in the separation of the stratospheric and tropospheric contributions of the retrieved slant columns, and in the calculation of the air-mass factors used to convert slant to total columns. ",TROPOMI,SENTINEL5P,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,NO2,Nitrogen,Dioxide",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Nitrogen Dioxide,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L2_NP_BD3,"S5P-NPP Cloud for spectral band 3. The S5P level 2 methane product is dependent on having information on cloud occurrence at spatial resolution finer than that achievable from TROPOMI itself. This information is also useful for other purposes, including assessing the influence of cloud on other L2 products and issues related to spatial co-registration. A level 2 auxiliary product was therefore developed to describe cloud in the TROPOMI field of view (FOV), using co-located observations of VIIRS (Visible Infra-red Imaging Radiometer Suite) on the U.S. S-NPP (Suomi - National Polar-orbiting Partnership). S5P flies in a so-called loose formation with the S-NPP with a temporal separation between them of less than 5 minutes. The main information contained in the S5P-NPP product is: 1. A statistical summary for each S5P FOV of the NPP-VIIRS L2 Cloud Mask (VCM). 2. The mean and standard deviation of the sun-normalised radiance in a number of VIIRS moderate resolution bands. This information is provided for three S5P spectral bands (to account for differences in spatial sampling). ",TROPOMI,SENTINEL5P,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,NP,NPP,Cloud,BD3,B03,BAND3",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 NPP Cloud for band 3,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L2_NP_BD6,"S5P-NPP Cloud for spectral band 6. The S5P level 2 methane product is dependent on having information on cloud occurrence at spatial resolution finer than that achievable from TROPOMI itself. This information is also useful for other purposes, including assessing the influence of cloud on other L2 products and issues related to spatial co-registration. A level 2 auxiliary product was therefore developed to describe cloud in the TROPOMI field of view (FOV), using co-located observations of VIIRS (Visible Infra-red Imaging Radiometer Suite) on the U.S. S-NPP (Suomi - National Polar-orbiting Partnership). S5P flies in a so-called loose formation with the S-NPP with a temporal separation between them of less than 5 minutes. The main information contained in the S5P-NPP product is: 1. A statistical summary for each S5P FOV of the NPP-VIIRS L2 Cloud Mask (VCM). 2. The mean and standard deviation of the sun-normalised radiance in a number of VIIRS moderate resolution bands. This information is provided for three S5P spectral bands (to account for differences in spatial sampling). ",TROPOMI,SENTINEL5P,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,NP,NPP,Cloud,BD6,B06,BAND6",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 NPP Cloud for band 6,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L2_NP_BD7,"S5P-NPP Cloud for spectral band 7. The S5P level 2 methane product is dependent on having information on cloud occurrence at spatial resolution finer than that achievable from TROPOMI itself. This information is also useful for other purposes, including assessing the influence of cloud on other L2 products and issues related to spatial co-registration. A level 2 auxiliary product was therefore developed to describe cloud in the TROPOMI field of view (FOV), using co-located observations of VIIRS (Visible Infra-red Imaging Radiometer Suite) on the U.S. S-NPP (Suomi - National Polar-orbiting Partnership). S5P flies in a so-called loose formation with the S-NPP with a temporal separation between them of less than 5 minutes. The main information contained in the S5P-NPP product is: 1. A statistical summary for each S5P FOV of the NPP-VIIRS L2 Cloud Mask (VCM). 2. The mean and standard deviation of the sun-normalised radiance in a number of VIIRS moderate resolution bands. This information is provided for three S5P spectral bands (to account for differences in spatial sampling). ",TROPOMI,SENTINEL5P,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,NP,NPP,Cloud,BD7,B07,BAND7",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 NPP Cloud for band 7,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L2_O3,"Ozone (O3) is of crucial importance for the equilibrium of the Earth's atmosphere. In the stratosphere, the ozone layer shields the biosphere from dangerous solar ultraviolet radiation. In the troposphere, it acts as an efficient cleansing agent, but at high concentration it also becomes harmful to the health of humans, animals, and vegetation. Ozone is also an important greenhouse-gas contributor to ongoing climate change. These products are provided in NetCDF-CF format and contain total ozone, ozone temperature, and error information including averaging kernels. ",TROPOMI,SENTINEL5P,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,O3,Ozone",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Ozone,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L2_O3_PR,"Retrieved ozone profiles are used to monitor the evolution of stratospheric and tropospheric ozone. Such monitoring is important as the ozone layer protects life on Earth against harmful UV radiation. The ozone layer is recovering from depletion due to manmade Chlorofluorocarbons (CFCs). Tropospheric ozone is toxic and it plays an important role in tropospheric chemistry. Also, ozone is a greenhouse gas and is therefore also relevant for climate change. The main parameters in the file are the retrieved ozone profile at 33 levels and the retrieved sub-columns of ozone in 6 layers. In addition, the total ozone column and tropospheric ozone columns are provided. For the ozone profile, the precision and smoothing errors, the a-priori profile and the averaging kernel are also provided. ",TROPOMI,SENTINEL5P,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,O3,PR,Ozone,Profile",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Ozone Profile,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S5P_L2_O3_TCL,"Ozone in the tropical troposphere plays various important roles. The intense UV radiation and high humidity in the tropics stimulate the formation of the hydroxyl radical (OH) by the photolysis of ozone. OH is the most important oxidant in the troposphere because it reacts with virtually all trace gases, such as CO, CH4 and other hydrocarbons. The tropics are also characterized by large emissions of nitrogen oxides (NOx), carbon monoxide (CO) and hydrocarbons, both from natural and anthropogenic sources. Ozone that is formed over regions where large amounts of these ozone precursors are emitted, can be transported over great distances and affects areas far from the source. The TROPOMI tropospheric ozone product is a level-2c product that represents three day averaged tropospheric ozone columns on a 0.5° by 1° latitude-longitude grid for the tropical region between 20°N and 20°S. The TROPOMI tropospheric ozone column product uses the TROPOMI Level-2 total OZONE and CLOUD products as input. ",TROPOMI,SENTINEL5P,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,O3,TCL,Tropospheric,Ozone",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Tropospheric Ozone,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,,,,,,,, -S5P_L2_SO2,"Sulphur dioxide (SO2) enters the Earth's atmosphere through both natural (~30%) and anthropogenic processes (~70%). It plays a role in chemistry on a local and global scale and its impact ranges from short term pollution to effects on climate. Beside the total column of SO2, enhanced levels of SO2 are flagged within the products. The recognition of enhanced SO2 values is essential in order to detect and monitor volcanic eruptions and anthropogenic pollution sources. Volcanic SO2 emissions may also pose a threat to aviation, along with volcanic ash. ",TROPOMI,SENTINEL5P,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,SO2,Sulphur,Dioxide",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Sulphur Dioxide,2017-10-13T00:00:00Z,,,,,available,available,available,,,,,,,available,,,,,,, -S6_AMR_L2_F06,"This is a reprocessed dataset at baseline F06, which is continued by the NRT/NTC data stream from 29/April/2022 onwards. AMR-C Level 2 Products as generated by the AMR-C CFI Processor. These products include antenna and brightness temperatures, wet tropospheric correction, water vapour content, and a rain flag. Sentinel-6 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. It is a collaborative Copernicus mission, implemented and co-funded by the European Commission, ESA, EUMETSAT and the USA, through NASA and the National Oceanic and Atmospheric Administration (NOAA). ",AMR-C,SENTINEL6-A,S6A,L2,"SENTINEL,SENTINEL6,S6,S6A,LEO,L2,AMR-C,RADIOMETER,MICROWAVE,F06",RADIOMETER,proprietary,Sentinel 6 - Climate-quality Advanced Microwave Radiometer Level 2 Products Reprocessed at F06,2020-11-28T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S6_P4_L1AHR_F06,"This is a reprocessed dataset at baseline F06, which is continued by the NRT/NTC data stream from 29/April/2022 onwards. The Level-1A product contains Level 1 intermediate output of the HR processor (RAW and RMC). It includes geo-located bursts of Ku echoes (at ~9 kHz) with all instrument calibrations applied. It includes the full rate complex waveforms input to the delay/Doppler or SAR processor. This product is most relevant to altimetry specialists, working on fundamental SAR processing techniques and calibration studies. Sentinel-6 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. It is a collaborative Copernicus mission, implemented and co-funded by the European Commission, ESA, EUMETSAT and the USA, through NASA and the National Oceanic and Atmospheric Administration (NOAA). ",Poseidon-4,SENTINEL6-A,S6A,L1A,"SENTINEL,SENTINEL6,S6,S6A,LEO,L1A,ALTIMETRIC,HR,POSEIDON4,P4,F06",ALTIMETRIC,proprietary,Sentinel 6 - Poseidon-4 Altimetry Level 1A High Resolution Reprocessed at F06,2020-12-17T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S6_P4_L1BAHR_F06,"This is a reprocessed dataset at baseline F06, which is continued by the NRT/NTC data stream from 29/April/2022 onwards. The Level-1B HR product is output of the HR processor. It includes geo-located, and fully calibrated multi-looked high-resolution Ku-band waveforms. This product is most relevant to geophysical retrieval algorithm developers (over ocean, land and ice surfaces), surface characterisations studies (e.g. impact of sea state bias, wave directional effects etc.) and Quality Control systems. Sentinel-6 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. It is a collaborative Copernicus mission, implemented and co-funded by the European Commission, ESA, EUMETSAT and the USA, through NASA and the National Oceanic and Atmospheric Administration (NOAA). ",Poseidon-4,SENTINEL6-A,S6A,L1B,"SENTINEL,SENTINEL6,S6,S6A,LEO,L1B,ALTIMETRIC,HR,POSEIDON4,P4,F06",ALTIMETRIC,proprietary,Sentinel 6 - Poseidon-4 Altimetry Level 1B High Resolution Reprocessed at F06,2020-12-17T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S6_P4_L1BLR_F06,"This is a reprocessed dataset at baseline F06, which is continued by the NRT/NTC data stream from 29/April/2022 onwards. The Level-1B LR product is output of the LR processor. It includes geo-located, and fully calibrated pulse-limited low-resolution Ku-band and C-band waveforms. This product is most relevant to geophysical retrieval algorithm developers (over ocean, land and ice surfaces), surface characterisations studies (e.g. impact of sea state bias, wave directional effects etc) and Quality Control systems. Sentinel-6 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. It is a collaborative Copernicus mission, implemented and co-funded by the European Commission, ESA, EUMETSAT and the USA, through NASA and the National Oceanic and Atmospheric Administration (NOAA). ",Poseidon-4,SENTINEL6-A,S6A,L1B,"SENTINEL,SENTINEL6,S6,S6A,LEO,L1B,ALTIMETRIC,LR,POSEIDON4,P4,F06",ALTIMETRIC,proprietary,Sentinel 6 - Poseidon-4 Altimetry Level 1B Low Resolution Reprocessed at F06,2020-12-17T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S6_P4_L2HR_F06,"This is a reprocessed dataset at baseline F06, which is continued by the NRT/NTC data stream from 29/April/2022 onwards. The level-2 high resolution products contain the typical altimetry measurements, like the altimeter range, the sea surface height, the wind speed, significant wave height and all required geophysical corrections and related flags derived either from RAW or RMC, or the combination of both. Two measurement data files are available (standard and reduced), each with a different number of variables. The standard data file includes 1 Hz and 20 Hz measurements for the Ku- band as well as geophysical corrections at 1 Hz and some at 20 Hz. The reduced data file contains only 1 Hz measurements for the Ku- and C-bands as well as geophysical corrections at 1 Hz. Note that the HR data products only contain Ku-band measurements. These products are suitable for users seeking information on sea state and those creating downstream added value products from multiple altimeters. Particularly for those seeking the highest resolution measurements. Sentinel-6 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. It is a collaborative Copernicus mission, implemented and co-funded by the European Commission, ESA, EUMETSAT and the USA, through NASA and the National Oceanic and Atmospheric Administration (NOAA). ",Poseidon-4,SENTINEL6-A,S6A,L2,"SENTINEL,SENTINEL6,S6,S6A,LEO,L2,ALTIMETRIC,HR,POSEIDON4,P4,F06",ALTIMETRIC,proprietary,Sentinel 6 - Poseidon-4 Altimetry Level 2 High Resolution Reprocessed at F06,2020-12-17T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -S6_P4_L2LR_F06,"This is a reprocessed dataset at baseline F06, which is continued by the NRT/NTC data stream from 29/April/2022 onwards. The product contain the typical altimetry measurements, like the altimeter range, the sea surface height, the wind speed, significant wave height and all required geophysical corrections and related flags derived from LR. Two measurement data files are available (standard and reduced), each with a different number of variables. The standard data file includes 1 Hz and 20 Hz measurements for the Ku- and C-bands as well as geophysical corrections at 1 Hz and some at 20 Hz. The reduced data file contains only 1 Hz measurements for the Ku- and C-bands as well as geophysical corrections at 1 Hz. These products are suitable for users seeking information on sea state and those creating downstream added value products from multiple altimeters. Sentinel-6 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. It is a collaborative Copernicus mission, implemented and co-funded by the European Commission, ESA, EUMETSAT and the USA, through NASA and the National Oceanic and Atmospheric Administration (NOAA). ",Poseidon-4,SENTINEL6-A,S6A,L2,"SENTINEL,SENTINEL6,S6,S6A,LEO,L2,ALTIMETRIC,LR,POSEIDON4,P4,F06",ALTIMETRIC,proprietary,Sentinel 6 - Poseidon-4 Altimetry Level 2 Low Resolution Reprocessed at F06,2020-12-17T00:00:00Z,,,,,,,,,,,,,,,,,,,,,available -SATELLITE_CARBON_DIOXIDE,"This dataset provides observations of atmospheric carbon dioxide (CO2)\namounts obtained from observations collected by several current and historical \nsatellite instruments. Carbon dioxide is a naturally occurring Greenhouse Gas (GHG), but one whose abundance has been increased substantially above its pre-industrial value of some 280 ppm by human activities, primarily because of emissions from combustion of fossil fuels, deforestation and other land-use change. The annual cycle (especially in the northern hemisphere) is primarily due to seasonal uptake and release of atmospheric CO2 by terrestrial vegetation.\nAtmospheric carbon dioxide abundance is indirectly observed by various satellite instruments. These instruments measure spectrally resolved near-infrared and/or infrared radiation reflected or emitted by the Earth and its atmosphere. In the measured signal, molecular absorption signatures from carbon dioxide and other constituent gasses can be identified. It is through analysis of those absorption lines in these radiance observations that the averaged carbon dioxide abundance in the sampled atmospheric column can be determined.\nThe software used to analyse the absorption lines and determine the carbon dioxide concentration in the sampled atmospheric column is referred to as the retrieval algorithm. For this dataset, carbon dioxide abundances have been determined by applying several algorithms to different satellite \ninstruments. Typically, different algorithms have different strengths and weaknesses and therefore, which product to use for a given application typically depends on the application.\nThe data set consists of 2 types of products: (i) column-averaged mixing ratios of CO2, denoted XCO2 and (ii) mid-tropospheric CO2 columns. The XCO2 products have been retrieved from SCIAMACHY/ENVISAT, TANSO-FTS/GOSAT and OCO-2. The mid-tropospheric CO2 product has been retrieved from the IASI instruments on-board the Metop satellite series and from AIRS. \nThe XCO2 products are available as Level 2 (L2) products (satellite orbit tracks) and as Level 3 (L3) product (gridded). The L2 products are available as individual sensor products (SCIAMACHY: BESD and WFMD algorithms; GOSAT: OCFP and SRFP algorithms) and as a multi-sensor merged product (EMMA algorithm). The L3 XCO2 product is provided in OBS4MIPS format. \nThe IASI and AIRS products are available as L2 products generated with the NLIS algorithm.\nThis data set is updated on a yearly basis, with each update cycle adding (if required) a new data version for the entire period, up to one year behind real time.\nThis dataset is produced on behalf of C3S with the exception of the SCIAMACHY and AIRS L2 products that were generated in the framework of the GHG-CCI project of the European Space Agency (ESA) Climate Change Initiative (CCI).\n\nVariables in the dataset/application are:\nColumn-average dry-air mole fraction of atmospheric carbon dioxide (XCO2), Mid-tropospheric columns of atmospheric carbon dioxide (CO2) ",,,,,"ECMWF,CDS,C3S,carbon-dioxide",ATMOSPHERIC,proprietary,Carbon dioxide data from 2002 to present derived from satellite observations,2002-10-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -SATELLITE_METHANE,"This dataset provides observations of atmospheric methane (CH4)\namounts obtained from observations collected by several current and historical \nsatellite instruments. Methane is a naturally occurring Greenhouse Gas (GHG), but one whose abundance has been increased substantially above its pre-industrial value of some 720 ppb by human activities, primarily because of agricultural emissions (e.g., rice production, ruminants) and fossil fuel production and use. A clear annual cycle is largely due to seasonal wetland emissions.\nAtmospheric methane abundance is indirectly observed by various satellite instruments. These instruments measure spectrally resolved near-infrared and infrared radiation reflected or emitted by the Earth and its atmosphere. In the measured signal, molecular absorption signatures from methane and constituent gasses can be identified. It is through analysis of those absorption lines in these radiance observations that the averaged methane abundance in the sampled atmospheric column can be determined.\nThe software used to analyse the absorption lines and determine the methane concentration in the sampled atmospheric column is referred to as the retrieval algorithm. For this dataset, methane abundances have been determined by applying several algorithms to different satellite instruments.\nThe data set consists of 2 types of products: (i) column-averaged mixing ratios of CH4, denoted XCH4 and (ii) mid-tropospheric CH4 columns. \nThe XCH4 products have been retrieved from SCIAMACHY/ENVISAT and TANSO-FTS/GOSAT. The mid-tropospheric CH4 product has been retrieved from the IASI instruments onboard the Metop satellite series. The XCH4 products are available as Level 2 (L2) products (satellite orbit tracks) and as Level 3 (L3) product (gridded). The L2 products are available as individual sensor products (SCIAMACHY: WFMD and IMAP algorithms; GOSAT: OCFP, OCPR, SRFP and SRPR algorithms) and as a multi-sensor merged product (EMMA algorithm). The L3 XCH4 product is provided in OBS4MIPS format. The IASI products are available as L2 products generated with the NLIS algorithm.\nThis data set is updated on a yearly basis, with each update cycle adding (if required) a new data version for the entire period, up to one year behind real time.\nThis dataset is produced on behalf of C3S with the exception of the SCIAMACHY L2 products that were generated in the framework of the GHG-CCI project of the European Space Agency (ESA) Climate Change Initiative (CCI).\n\nVariables in the dataset/application are:\nColumn-average dry-air mole fraction of atmospheric methane (XCH4), Mid-tropospheric columns of atmospheric methane (CH4) ",,,,,"ECMWF,CDS,C3S,methane",ATMOSPHERIC,proprietary,Methane data from 2002 to present derived from satellite observations,2002-10-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -SATELLITE_SEA_LEVEL_BLACK_SEA,"Sea level anomaly is the height of water over the mean sea surface in a given time and region. Up-to-date altimeter standards are used to estimate the sea level anomalies with a mapping algorithm dedicated to the Black sea region. Anomalies are computed with respect to a twenty-year mean reference period (1993-2012). The steady number of reference satellite used in the production of this dataset contributes to the long-term stability of the sea level record. Improvements of the accuracy, sampling of meso-scale processes and of the high-latitude coverage were achieved by using a few additional satellite missions. New data are provided with a delay of about 4-5 months relatively to near-real time or interim sea level products. This delay is mainly due to the timeliness of the input data, the centred processing temporal window and the validation process. However, this processing and validation adds stability and accuracy to the sea level variables and make them adapted to climate applications. This dataset includes uncertainties for each grid cell. More details about the sea level retrieval, additional filters, optimisation procedures, and the error estimation are given in the Documentation section. Variables in the dataset/application are: Absolute dynamic topography, Absolute geostrophic velocity meridian component, Absolute geostrophic velocity zonal component, Geostrophic velocity anomalies meridian component, Geostrophic velocity anomalies zonal component, Sea level anomaly ",,,,,"Climate,ECMWF,CDS,C3S,methane,sea",HYDROLOGICAL,proprietary,Sea level daily gridded data from satellite observations for the Black Sea from 1993 to 2020,1993-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -SEASONAL_MONTHLY_PL,"This entry covers pressure-level data aggregated on a monthly time resolution. \nSeasonal forecasts provide a long-range outlook of changes in the Earth system over periods of a few weeks or months, as a result of predictable changes in some of the slow-varying components of the system. For example, ocean temperatures typically vary slowly, on timescales of weeks or months; as the ocean has an impact on the overlaying atmosphere, the variability of its properties (e.g. temperature) can modify both local and remote atmospheric conditions. Such modifications of the 'usual' atmospheric conditions are the essence of all long-range (e.g. seasonal) forecasts. This is different from a weather forecast, which gives a lot more precise detail - both in time and space - of the evolution of the state of the atmosphere over a few days into the future. Beyond a few days, the chaotic nature of the atmosphere limits the possibility to predict precise changes at local scales. This is one of the reasons long-range forecasts of atmospheric conditions have large uncertainties. To quantify such uncertainties, long-range forecasts use ensembles, and meaningful forecast products reflect a distributions of outcomes.\nGiven the complex, non-linear interactions between the individual components of the Earth system, the best tools for long-range forecasting are climate models which include as many of the key components of the system and possible; typically, such models include representations of the atmosphere, ocean and land surface. These models are initialised with data describing the state of the system at the starting point of the forecast, and used to predict the evolution of this state in time.\nWhile uncertainties coming from imperfect knowledge of the initial conditions of the components of the Earth system can be described with the use of ensembles, uncertainty arising from approximations made in the models are very much dependent on the choice of model. A convenient way to quantify the effect of these approximations is to combine outputs from several models, independently developed, initialised and operated.\nTo this effect, the C3S provides a multi-system seasonal forecast service, where data produced by state-of-the-art seasonal forecast systems developed, implemented and operated at forecast centres in several European countries is collected, processed and combined to enable user-relevant applications. The composition of the C3S seasonal multi-system and the full content of the database underpinning the service are described in the documentation. The data is grouped in several catalogue entries (CDS datasets), currently defined by the type of variable (single-level or multi-level, on pressure surfaces) and the level of post-processing applied (data at original time resolution, processing on temporal aggregation and post-processing related to bias adjustment).\nThe variables available in this data set are listed in the table below. The data includes forecasts created in real-time (since 2017) and retrospective forecasts (hindcasts) initialised at equivalent intervals during the period 1993-2016.\n\nVariables in the dataset/application are:\nGeopotential, Specific humidity, Temperature, U-component of wind, V-component of wind ",,,,,"ECMWF,CDS,C3S,seasonal,forecast,monthly,pressure,levels",ATMOSPHERIC,proprietary,Seasonal forecast monthly statistics on pressure levels,1981-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -SEASONAL_MONTHLY_SL,"This entry covers single-level data aggregated on a monthly time resolution. \nSeasonal forecasts provide a long-range outlook of changes in the Earth system over periods of a few weeks or months, as a result of predictable changes in some of the slow-varying components of the system. For example, ocean temperatures typically vary slowly, on timescales of weeks or months; as the ocean has an impact on the overlaying atmosphere, the variability of its properties (e.g. temperature) can modify both local and remote atmospheric conditions. Such modifications of the 'usual' atmospheric conditions are the essence of all long-range (e.g. seasonal) forecasts. This is different from a weather forecast, which gives a lot more precise detail - both in time and space - of the evolution of the state of the atmosphere over a few days into the future. Beyond a few days, the chaotic nature of the atmosphere limits the possibility to predict precise changes at local scales. This is one of the reasons long-range forecasts of atmospheric conditions have large uncertainties. To quantify such uncertainties, long-range forecasts use ensembles, and meaningful forecast products reflect a distributions of outcomes.\nGiven the complex, non-linear interactions between the individual components of the Earth system, the best tools for long-range forecasting are climate models which include as many of the key components of the system and possible; typically, such models include representations of the atmosphere, ocean and land surface. These models are initialised with data describing the state of the system at the starting point of the forecast, and used to predict the evolution of this state in time.\nWhile uncertainties coming from imperfect knowledge of the initial conditions of the components of the Earth system can be described with the use of ensembles, uncertainty arising from approximations made in the models are very much dependent on the choice of model. A convenient way to quantify the effect of these approximations is to combine outputs from several models, independently developed, initialised and operated.\nTo this effect, the C3S provides a multi-system seasonal forecast service, where data produced by state-of-the-art seasonal forecast systems developed, implemented and operated at forecast centres in several European countries is collected, processed and combined to enable user-relevant applications. The composition of the C3S seasonal multi-system and the full content of the database underpinning the service are described in the documentation. The data is grouped in several catalogue entries (CDS datasets), currently defined by the type of variable (single-level or multi-level, on pressure surfaces) and the level of post-processing applied (data at original time resolution, processing on temporal aggregation and post-processing related to bias adjustment).\nThe variables available in this data set are listed in the table below. The data includes forecasts created in real-time (since 2017) and retrospective forecasts (hindcasts) initialised at equivalent intervals during the period 1993-2016.\n\nVariables in the dataset/application are:\n10m u-component of wind, 10m v-component of wind, 10m wind gust since previous post-processing, 10m wind speed, 2m dewpoint temperature, 2m temperature, East-west surface stress rate of accumulation, Evaporation, Maximum 2m temperature in the last 24 hours, Mean sea level pressure, Mean sub-surface runoff rate, Mean surface runoff rate, Minimum 2m temperature in the last 24 hours, North-south surface stress rate of accumulation, Runoff, Sea surface temperature, Sea-ice cover, Snow density, Snow depth, Snowfall, Soil temperature level 1, Solar insolation rate of accumulation, Surface latent heat flux, Surface sensible heat flux, Surface solar radiation, Surface solar radiation downwards, Surface thermal radiation, Surface thermal radiation downwards, Top solar radiation, Top thermal radiation, Total cloud cover, Total precipitation ",,,,,"ECMWF,CDS,C3S,seasonal,forecast,monthly,single,levels",ATMOSPHERIC,proprietary,Seasonal forecast monthly statistics on single levels,1981-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -SEASONAL_ORIGINAL_PL,"his entry covers pressure-level data at the original time resolution (once every 12 hours). \nSeasonal forecasts provide a long-range outlook of changes in the Earth system over periods of a few weeks or months, as a result of predictable changes in some of the slow-varying components of the system. For example, ocean temperatures typically vary slowly, on timescales of weeks or months; as the ocean has an impact on the overlaying atmosphere, the variability of its properties (e.g. temperature) can modify both local and remote atmospheric conditions. Such modifications of the 'usual' atmospheric conditions are the essence of all long-range (e.g. seasonal) forecasts. This is different from a weather forecast, which gives a lot more precise detail - both in time and space - of the evolution of the state of the atmosphere over a few days into the future. Beyond a few days, the chaotic nature of the atmosphere limits the possibility to predict precise changes at local scales. This is one of the reasons long-range forecasts of atmospheric conditions have large uncertainties. To quantify such uncertainties, long-range forecasts use ensembles, and meaningful forecast products reflect a distributions of outcomes.\nGiven the complex, non-linear interactions between the individual components of the Earth system, the best tools for long-range forecasting are climate models which include as many of the key components of the system and possible; typically, such models include representations of the atmosphere, ocean and land surface. These models are initialised with data describing the state of the system at the starting point of the forecast, and used to predict the evolution of this state in time.\nWhile uncertainties coming from imperfect knowledge of the initial conditions of the components of the Earth system can be described with the use of ensembles, uncertainty arising from approximations made in the models are very much dependent on the choice of model. A convenient way to quantify the effect of these approximations is to combine outputs from several models, independently developed, initialised and operated.\nTo this effect, the C3S provides a multi-system seasonal forecast service, where data produced by state-of-the-art seasonal forecast systems developed, implemented and operated at forecast centres in several European countries is collected, processed and combined to enable user-relevant applications. The composition of the C3S seasonal multi-system and the full content of the database underpinning the service are described in the documentation. The data is grouped in several catalogue entries (CDS datasets), currently defined by the type of variable (single-level or multi-level, on pressure surfaces) and the level of post-processing applied (data at original time resolution, processing on temporal aggregation and post-processing related to bias adjustment).\nThe variables available in this data set are listed in the table below. The data includes forecasts created in real-time (since 2017) and retrospective forecasts (hindcasts) initialised at equivalent intervals during the period 1993-2016.\n\nVariables in the dataset/application are:\nGeopotential, Specific humidity, Temperature, U-component of wind, V-component of wind ",,,,,"ECMWF,CDS,C3S,seasonal,forecast,subdaily,pressure,levels",ATMOSPHERIC,proprietary,Seasonal forecast subdaily data on pressure levels,1981-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -SEASONAL_ORIGINAL_SL,"This entry covers single-level data at the original time resolution (once a day, or once every 6 hours, depending on the variable). \nSeasonal forecasts provide a long-range outlook of changes in the Earth system over periods of a few weeks or months, as a result of predictable changes in some of the slow-varying components of the system. For example, ocean temperatures typically vary slowly, on timescales of weeks or months; as the ocean has an impact on the overlaying atmosphere, the variability of its properties (e.g. temperature) can modify both local and remote atmospheric conditions. Such modifications of the 'usual' atmospheric conditions are the essence of all long-range (e.g. seasonal) forecasts. This is different from a weather forecast, which gives a lot more precise detail - both in time and space - of the evolution of the state of the atmosphere over a few days into the future. Beyond a few days, the chaotic nature of the atmosphere limits the possibility to predict precise changes at local scales. This is one of the reasons long-range forecasts of atmospheric conditions have large uncertainties. To quantify such uncertainties, long-range forecasts use ensembles, and meaningful forecast products reflect a distributions of outcomes.\nGiven the complex, non-linear interactions between the individual components of the Earth system, the best tools for long-range forecasting are climate models which include as many of the key components of the system and possible; typically, such models include representations of the atmosphere, ocean and land surface. These models are initialised with data describing the state of the system at the starting point of the forecast, and used to predict the evolution of this state in time.\nWhile uncertainties coming from imperfect knowledge of the initial conditions of the components of the Earth system can be described with the use of ensembles, uncertainty arising from approximations made in the models are very much dependent on the choice of model. A convenient way to quantify the effect of these approximations is to combine outputs from several models, independently developed, initialised and operated.\nTo this effect, the C3S provides a multi-system seasonal forecast service, where data produced by state-of-the-art seasonal forecast systems developed, implemented and operated at forecast centres in several European countries is collected, processed and combined to enable user-relevant applications. The composition of the C3S seasonal multi-system and the full content of the database underpinning the service are described in the documentation. The data is grouped in several catalogue entries (CDS datasets), currently defined by the type of variable (single-level or multi-level, on pressure surfaces) and the level of post-processing applied (data at original time resolution, processing on temporal aggregation and post-processing related to bias adjustment).\nThe variables available in this data set are listed in the table below. The data includes forecasts created in real-time (since 2017) and retrospective forecasts (hindcasts) initialised at equivalent intervals during the period 1993-2016.\n\nVariables in the dataset/application are:\n10m u-component of wind, 10m v-component of wind, 10m wind gust since previous post-processing, 2m dewpoint temperature, 2m temperature, Eastward turbulent surface stress, Evaporation, Land-sea mask, Maximum 2m temperature in the last 24 hours, Mean sea level pressure, Minimum 2m temperature in the last 24 hours, Northward turbulent surface stress, Orography, Runoff, Sea surface temperature, Sea-ice cover, Snow density, Snow depth, Snowfall, Soil temperature level 1, Sub-surface runoff, Surface latent heat flux, Surface net solar radiation, Surface net thermal radiation, Surface runoff, Surface sensible heat flux, Surface solar radiation downwards, Surface thermal radiation downwards, TOA incident solar radiation, Top net solar radiation, Top net thermal radiation, Total cloud cover, Total precipitation ",,,,,"ECMWF,CDS,C3S,seasonal,forecast,daily,single,levels",ATMOSPHERIC,proprietary,Seasonal forecast daily and subdaily data on single levels,1981-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -SEASONAL_POSTPROCESSED_PL,"This entry covers pressure-level data post-processed for bias adjustment on a monthly time resolution. \nSeasonal forecasts provide a long-range outlook of changes in the Earth system over periods of a few weeks or months, as a result of predictable changes in some of the slow-varying components of the system. For example, ocean temperatures typically vary slowly, on timescales of weeks or months; as the ocean has an impact on the overlaying atmosphere, the variability of its properties (e.g. temperature) can modify both local and remote atmospheric conditions. Such modifications of the 'usual' atmospheric conditions are the essence of all long-range (e.g. seasonal) forecasts. This is different from a weather forecast, which gives a lot more precise detail - both in time and space - of the evolution of the state of the atmosphere over a few days into the future. Beyond a few days, the chaotic nature of the atmosphere limits the possibility to predict precise changes at local scales. This is one of the reasons long-range forecasts of atmospheric conditions have large uncertainties. To quantify such uncertainties, long-range forecasts use ensembles, and meaningful forecast products reflect a distributions of outcomes.\nGiven the complex, non-linear interactions between the individual components of the Earth system, the best tools for long-range forecasting are climate models which include as many of the key components of the system and possible; typically, such models include representations of the atmosphere, ocean and land surface. These models are initialised with data describing the state of the system at the starting point of the forecast, and used to predict the evolution of this state in time.\nWhile uncertainties coming from imperfect knowledge of the initial conditions of the components of the Earth system can be described with the use of ensembles, uncertainty arising from approximations made in the models are very much dependent on the choice of model. A convenient way to quantify the effect of these approximations is to combine outputs from several models, independently developed, initialised and operated.\nTo this effect, the C3S provides a multi-system seasonal forecast service, where data produced by state-of-the-art seasonal forecast systems developed, implemented and operated at forecast centres in several European countries is collected, processed and combined to enable user-relevant applications. The composition of the C3S seasonal multi-system and the full content of the database underpinning the service are described in the documentation. The data is grouped in several catalogue entries (CDS datasets), currently defined by the type of variable (single-level or multi-level, on pressure surfaces) and the level of post-processing applied (data at original time resolution, processing on temporal aggregation and post-processing related to bias adjustment).\nThe variables available in this data set are listed in the table below. The data includes forecasts created in real-time since 2017.\n\nVariables in the dataset/application are:\nGeopotential anomaly, Specific humidity anomaly, Temperature anomaly, U-component of wind anomaly, V-component of wind anomaly ",,,,,"ECMWF,CDS,C3S,seasonal,forecast,anomalies,pressure,levels",ATMOSPHERIC,proprietary,Seasonal forecast anomalies on pressure levels,2017-09-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -SEASONAL_POSTPROCESSED_SL,"This entry covers single-level data post-processed for bias adjustment on a monthly time resolution. \nSeasonal forecasts provide a long-range outlook of changes in the Earth system over periods of a few weeks or months, as a result of predictable changes in some of the slow-varying components of the system. For example, ocean temperatures typically vary slowly, on timescales of weeks or months; as the ocean has an impact on the overlaying atmosphere, the variability of its properties (e.g. temperature) can modify both local and remote atmospheric conditions. Such modifications of the 'usual' atmospheric conditions are the essence of all long-range (e.g. seasonal) forecasts. This is different from a weather forecast, which gives a lot more precise detail - both in time and space - of the evolution of the state of the atmosphere over a few days into the future. Beyond a few days, the chaotic nature of the atmosphere limits the possibility to predict precise changes at local scales. This is one of the reasons long-range forecasts of atmospheric conditions have large uncertainties. To quantify such uncertainties, long-range forecasts use ensembles, and meaningful forecast products reflect a distributions of outcomes.\nGiven the complex, non-linear interactions between the individual components of the Earth system, the best tools for long-range forecasting are climate models which include as many of the key components of the system and possible; typically, such models include representations of the atmosphere, ocean and land surface. These models are initialised with data describing the state of the system at the starting point of the forecast, and used to predict the evolution of this state in time.\nWhile uncertainties coming from imperfect knowledge of the initial conditions of the components of the Earth system can be described with the use of ensembles, uncertainty arising from approximations made in the models are very much dependent on the choice of model. A convenient way to quantify the effect of these approximations is to combine outputs from several models, independently developed, initialised and operated.\nTo this effect, the C3S provides a multi-system seasonal forecast service, where data produced by state-of-the-art seasonal forecast systems developed, implemented and operated at forecast centres in several European countries is collected, processed and combined to enable user-relevant applications. The composition of the C3S seasonal multi-system and the full content of the database underpinning the service are described in the documentation. The data is grouped in several catalogue entries (CDS datasets), currently defined by the type of variable (single-level or multi-level, on pressure surfaces) and the level of post-processing applied (data at original time resolution, processing on temporal aggregation and post-processing related to bias adjustment).\nThe variables available in this data set are listed in the table below. The data includes forecasts created in real-time since 2017.\n\nVariables in the dataset/application are:\n10m u-component of wind anomaly, 10m v-component of wind anomaly, 10m wind gust anomaly, 10m wind speed anomaly, 2m dewpoint temperature anomaly, 2m temperature anomaly, East-west surface stress anomalous rate of accumulation, Evaporation anomalous rate of accumulation, Maximum 2m temperature in the last 24 hours anomaly, Mean sea level pressure anomaly, Mean sub-surface runoff rate anomaly, Mean surface runoff rate anomaly, Minimum 2m temperature in the last 24 hours anomaly, North-south surface stress anomalous rate of accumulation, Runoff anomalous rate of accumulation, Sea surface temperature anomaly, Sea-ice cover anomaly, Snow density anomaly, Snow depth anomaly, Snowfall anomalous rate of accumulation, Soil temperature anomaly level 1, Solar insolation anomalous rate of accumulation, Surface latent heat flux anomalous rate of accumulation, Surface sensible heat flux anomalous rate of accumulation, Surface solar radiation anomalous rate of accumulation, Surface solar radiation downwards anomalous rate of accumulation, Surface thermal radiation anomalous rate of accumulation, Surface thermal radiation downwards anomalous rate of accumulation, Top solar radiation anomalous rate of accumulation, Top thermal radiation anomalous rate of accumulation, Total cloud cover anomaly, Total precipitation anomalous rate of accumulation ",,,,,"ECMWF,CDS,C3S,seasonal,forecast,anomalies,single,levels",ATMOSPHERIC,proprietary,Seasonal forecast anomalies on single levels,2017-09-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -SIS_HYDRO_MET_PROJ,"This dataset provides precipitation and near surface air temperature for Europe as Essential Climate Variables (ECVs) and as a set of Climate Impact Indicators (CIIs) based on the ECVs. \nECV datasets provide the empirical evidence needed to understand the current climate and predict future changes. \nCIIs contain condensed climate information which facilitate relatively quick and efficient subsequent analysis. Therefore, CIIs make climate information accessible to application focussed users within a sector.\nThe ECVs and CIIs provided here were derived within the water management sectoral information service to address questions specific to the water sector. However, the products are provided in a generic form and are relevant for a range of sectors, for example agriculture and energy.\nThe data represent the current state-of-the-art in Europe for regional climate modelling and indicator production. Data from eight model simulations included in the Coordinated Regional Climate Downscaling Experiment (CORDEX) were used to calculate a total of two ECVs and five CIIs at a spatial resolution of 0.11° x 0.11° and 5km x 5km.\nThe ECV data meet the technical specification set by the Global Climate Observing System (GCOS), as such they are provided on a daily time step. They are bias adjusted using the EFAS gridded observations as a reference dataset. Note these are model output data, not observation data as is the general case for ECVs.\nThe CIIs are provided as mean values over a 30-year time period. For the reference period (1971-2000) data is provided as absolute values, for the future periods the data is provided as absolute values and as the relative or absolute change from the reference period. The future periods cover 3 fixed time periods (2011-2040, 2041-2070 and 2071-2100) and 3 \""degree scenario\"" periods defined by when global warming exceeds a given threshold (1.5 °C, 2.0 °C or 3.0 °C). The global warming is calculated from the global climate model (GCM) used, therefore the actual time period of the degree scenarios will be different for each GCM.\nThis dataset is produced and quality assured by the Swedish Meteorological and Hydrological Institute on behalf of the Copernicus Climate Change Service. \n\nVariables in the dataset/application are:\n2m air temperature, Highest 5-day precipitation amount, Longest dry spells, Number of dry spells, Precipitation ",,,,,"ECMWF,CDS,C3S,hydrology,meterology,water,precipitation,temperature",ATMOSPHERIC,proprietary,Temperature and precipitation climate impact indicators from 1970 to 2100 derived from European climate projections,1970-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -SPOT5_SPIRIT,SPOT 5 stereoscopic survey of Polar Ice. ,,SPOT5,SPOT5,L1A,"SPOT,SPOT5,L1A",OPTICAL,proprietary,Spot 5 SPIRIT,2002-05-04T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, -SPOT_SWH,The Spot World Heritage (SWH) programme objective is the free availability for non-commercial use of orthorectified products derived from multispectral images of more than 5 years old from the Spot 1-5 satellites family. More informations on https://www.theia-land.fr/en/product/spot-world-heritage/ ,,SPOT1-5,SPOT1-5,L1C,"SPOT,SPOT1,SPOT2,SPOT3,SPOT4,SPOT5,L1C",OPTICAL,proprietary,Spot World Heritage,1986-02-22T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, -SPOT_SWH_OLD,Spot world heritage Old format. ,,SPOT1-5,SPOT1-5,L1C,"SPOT,SPOT1,SPOT2,SPOT3,SPOT4,SPOT5,L1C",OPTICAL,proprietary,Spot World Heritage,1986-02-22T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, -TIGGE_CF_SFC,TIGGE (THORPEX Interactive Grand Global Ensemble) Surface Control forecast from ECMWF ,,TIGGE,TIGGE,,"THORPEX,TIGGE,CF,SFC,ECMWF",ATMOSPHERIC,proprietary,TIGGE ECMWF Surface Control forecast,2003-01-01T00:00:00Z,,,,,,,,,,,available,,,,,,,,,, -UERRA_EUROPE_SL,"This UERRA dataset contains analyses of surface and near-surface essential climate variables from UERRA-HARMONIE and MESCAN-SURFEX systems. Forecasts up to 30 hours initialised from the analyses at 00 and 12 UTC are available only through the CDS-API (see Documentation). UERRA-HARMONIE is a 3-dimensional variational data assimilation system, while MESCAN-SURFEX is a complementary surface analysis system. Using the Optimal Interpolation method, MESCAN provides the best estimate of daily accumulated precipitation and six-hourly air temperature and relative humidit at 2 meters above the model topography. The land surface platform SURFEX is forced with downscaled forecast fields from UERRA-HARMONIE as well as MESCAN analyses. It is run offline, i.e. without feedback to the atmospheric analysis performed in MESCAN or the UERRA-HARMONIE data assimilation cycles. Using SURFEX offline allows to take full benefit of precipitation analysis and to use the more advanced physics options to better represent surface variables such as surface temperature and surface fluxes, and soil processes related to water and heat transfer in the soil and snow. In general, the assimilation systems are able to estimate biases between observations and to sift good-quality data from poor data. The laws of physics allow for estimates at locations where data coverage is low. The provision of estimates at each grid point in Europe for each regular output time, over a long period, always using the same format, makes reanalysis a very convenient and popular dataset to work with. The observing system has changed drastically over time, and although the assimilation system can resolve data holes, the much sparser observational networks, e.g. in 1960s, will have an impact on the quality of analyses leading to less accurate estimates. The improvement over global reanalysis products comes with the higher horizontal resolution that allows incorporating more regional details (e.g. topography). Moreover, it enables the system even to use more observations at places with dense observation networks. Variables in the dataset/application are: 10m wind direction, 10m wind speed, 2m relative humidity, 2m temperature, Albedo, High cloud cover, Land sea mask, Low cloud cover, Mean sea level pressure, Medium cloud cover, Orography, Skin temperature, Snow density, Snow depth water equivalent, Surface pressure, Surface roughness, Total cloud cover, Total column integrated water vapour, Total precipitation ",,SURFEX,SURFEX,,"Climate,ECMWF,Reanalysis,Regional,Europe,UERRA,UERRA-HARMONIE,SURFEX,MESCAN-SURFEX,CDS,Atmospheric,single,levels",ATMOSPHERIC,proprietary,UERRA regional reanalysis for Europe on single levels from 1961 to 2019,1961-01-01T00:00:00Z,,,,available,,,,,,,,,,,,,,,,,available -VENUS_L1C,A light description of Venus L1 data is available at http://www.cesbio.ups-tlse.fr/multitemp/?page_id=12984 ,,VENUS,VENUS,L1C,"VENUS,L1,L1C",OPTICAL,proprietary,Venus Level1-C,2017-08-02T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, -VENUS_L2A_MAJA,"Level2 products provide surface reflectances after atmospheric correction, along with masks of clouds and their shadows. Data is processed by MAJA (before called MACCS) for THEIA land data center. ",,VENUS,VENUS,L2A,"VENUS,L2,L2A",OPTICAL,proprietary,Venus Level2-A,2017-08-02T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, -VENUS_L3A_MAJA,,,VENUS,VENUS,L3A,"VENUS,L3,L3A",OPTICAL,proprietary,Venus Level3-A,2017-08-02T00:00:00Z,,,,,,,,,,,,,,,,,,available,,, +product type,abstract,platform,instrument,platformSerialIdentifier,processingLevel,keywords,sensorType,license,title,missionStartDate,_id,astraea_eod,aws_eos,cop_ads,cop_cds,cop_dataspace,cop_marine,creodias,creodias_s3,dedl,dedt_lumi,earth_search,earth_search_cog,earth_search_gcs,ecmwf,eumetsat_ds,hydroweb_next,meteoblue,onda,peps,planetary_computer,sara,theia,usgs,usgs_satapi_aws,wekeo,wekeo_cmems +AG_ERA5,"This dataset provides daily surface meteorological data for the period from 1979 to present as input for agriculture and agro-ecological studies. This dataset is based on the hourly ECMWF ERA5 data at surface level and is referred to as AgERA5. Acquisition and pre-processing of the original ERA5 data is a complex and specialized job. By providing the AgERA5 dataset, users are freed from this work and can directly start with meaningful input for their analyses and modelling. To this end, the variables provided in this dataset match the input needs of most agriculture and agro-ecological models. Data were aggregated to daily time steps at the local time zone and corrected towards a finer topography at a 0.1° spatial resolution. The correction to the 0.1° grid was realized by applying grid and variable-specific regression equations to the ERA5 dataset interpolated at 0.1° grid. The equations were trained on ECMWF's operational high-resolution atmospheric model (HRES) at a 0.1° resolution. This way the data is tuned to the finer topography, finer land use pattern and finer land-sea delineation of the ECMWF HRES model. The data was produced on behalf of the Copernicus Climate Change Service. ",ERA5,,ERA5,,"ECMWF,Reanalysis,ERA5,CDS,Atmospheric,climate,land,agriculture,AgERA5,surface",ATMOSPHERIC,proprietary,Agrometeorological indicators from 1979 to present derived from reanalysis,1979-01-01T00:00:00Z,AG_ERA5,,,,available,,,,,,,,,,,,,,,,,,,,,available, +CAMS_EAC4,"EAC4 (ECMWF Atmospheric Composition Reanalysis 4) is the fourth generation ECMWF global reanalysis of atmospheric composition. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using a model of the atmosphere based on the laws of physics and chemistry. This principle, called data assimilation, is based on the method used by numerical weather prediction centres and air quality forecasting centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued. Reanalysis works in the same way to allow for the provision of a dataset spanning back more than a decade. Reanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product. The assimilation system is able to estimate biases between observations and to sift good-quality data from poor data. The atmosphere model allows for estimates at locations where data coverage is low or for atmospheric pollutants for which no direct observations are available. The provision of estimates at each grid point around the globe for each regular output time, over a long period, always using the same format, makes reanalysis a very convenient and popular dataset to work with. The observing system has changed drastically over time, and although the assimilation system can resolve data holes, the initially much sparser networks will lead to less accurate estimates. For this reason, EAC4 is only available from 2003 onwards. Although the analysis procedure considers chunks of data in a window of 12 hours in one go, EAC4 provides estimates every 3 hours, worldwide. This is made possible by the 4D-Var assimilation method, which takes account of the exact timing of the observations and model evolution within the assimilation window. ",CAMS,,CAMS,,"Copernicus,ADS,CAMS,Atmosphere,Atmospheric,EWMCF,EAC4",ATMOSPHERIC,proprietary,CAMS global reanalysis (EAC4),2003-01-01T00:00:00Z,CAMS_EAC4,,,available,,,,,,available,,,,,,,,,,,,,,,,available, +CAMS_EAC4_MONTHLY,"EAC4 (ECMWF Atmospheric Composition Reanalysis 4) is the fourth generation ECMWF global reanalysis of atmospheric composition. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using a model of the atmosphere based on the laws of physics and chemistry. This principle, called data assimilation, is based on the method used by numerical weather prediction centres and air quality forecasting centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued. Reanalysis works in the same way to allow for the provision of a dataset spanning back more than a decade. Reanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product. The assimilation system is able to estimate biases between observations and to sift good-quality data from poor data. The atmosphere model allows for estimates at locations where data coverage is low or for atmospheric pollutants for which no direct observations are available. The provision of estimates at each grid point around the globe for each regular output time, over a long period, always using the same format, makes reanalysis a very convenient and popular dataset to work with. The observing system has changed drastically over time, and although the assimilation system can resolve data holes, the initially much sparser networks will lead to less accurate estimates. For this reason, EAC4 is only available from 2003 onwards. Although the analysis procedure considers chunks of data in a window of 12 hours in one go, EAC4 provides estimates every 3 hours, worldwide. This is made possible by the 4D-Var assimilation method, which takes account of the exact timing of the observations and model evolution within the assimilation window. ",CAMS,,CAMS,,"Copernicus,ADS,CAMS,Atmosphere,Atmospheric,EWMCF,EAC4",ATMOSPHERIC,proprietary,CAMS global reanalysis (EAC4) monthly averaged fields,2003-01-01T00:00:00Z,CAMS_EAC4_MONTHLY,,,available,,,,,,available,,,,,,,,,,,,,,,,available, +CAMS_EU_AIR_QUALITY_FORECAST,"This dataset provides daily air quality analyses and forecasts for Europe. CAMS produces specific daily air quality analyses and forecasts for the European domain at significantly higher spatial resolution (0.1 degrees, approx. 10km) than is available from the global analyses and forecasts. The production is based on an ensemble of eleven air quality forecasting systems across Europe. A median ensemble is calculated from individual outputs, since ensemble products yield on average better performance than the individual model products. The spread between the eleven models are used to provide an estimate of the forecast uncertainty. The analysis combines model data with observations provided by the European Environment Agency (EEA) into a complete and consistent dataset using various data assimilation techniques depending upon the air-quality forecasting system used. In parallel, air quality forecasts are produced once a day for the next four days. Both the analysis and the forecast are available at hourly time steps at seven height levels. Note that only nitrogen monoxide, nitrogen dioxide, sulphur dioxide, ozone, PM2.5, PM10 and dust are regularly validated against in situ observations, and therefore forecasts of all other variables are unvalidated and should be considered experimental. ",CAMS,,CAMS,,"Copernicus,ADS,CAMS,Atmosphere,Atmospheric,Air,Forecast,EEA",ATMOSPHERIC,proprietary,CAMS European air quality forecasts,2020-08-26T00:00:00Z,CAMS_EU_AIR_QUALITY_FORECAST,,,available,,,,,,available,,,,,,,,,,,,,,,,available, +CAMS_EU_AIR_QUALITY_RE,"This dataset provides annual air quality reanalyses for Europe based on both unvalidated (interim) and validated observations. CAMS produces annual air quality (interim) reanalyses for the European domain at significantly higher spatial resolution (0.1 degrees, approx. 10km) than is available from the global reanalyses. The production is currently based on an ensemble of nine air quality data assimilation systems across Europe. A median ensemble is calculated from individual outputs, since ensemble products yield on average better performance than the individual model products. The spread between the nine models can be used to provide an estimate of the analysis uncertainty. The reanalysis combines model data with observations provided by the European Environment Agency (EEA) into a complete and consistent dataset using various data assimilation techniques depending upon the air-quality forecasting system used. Additional sources of observations can complement the in-situ data assimilation, like satellite data. An interim reanalysis is provided each year for the year before based on the unvalidated near-real-time observation data stream that has not undergone full quality control by the data providers yet. Once the fully quality-controlled observations are available from the data provider, typically with an additional delay of about 1 year, a final validated annual reanalysis is provided. Both reanalyses are available at hourly time steps at height levels. ",CAMS,,CAMS,,"Copernicus,ADS,CAMS,Atmosphere,Atmospheric,Air,EEA",ATMOSPHERIC,proprietary,CAMS European air quality reanalyses,2013-01-01T00:00:00Z,CAMS_EU_AIR_QUALITY_RE,,,available,,,,,,available,,,,,,,,,,,,,,,,available, +CAMS_GAC_FORECAST,"CAMS produces global forecasts for atmospheric composition twice a day. The forecasts consist of more than 50 chemical species (e.g. ozone, nitrogen dioxide, carbon monoxide) and seven different types of aerosol (desert dust, sea salt, organic matter, black carbon, sulphate, nitrate and ammonium aerosol). In addition, several meteorological variables are available as well. The initial conditions of each forecast are obtained by combining a previous forecast with current satellite observations through a process called data assimilation. This best estimate of the state of the atmosphere at the initial forecast time step, called the analysis, provides a globally complete and consistent dataset allowing for estimates at locations where observation data coverage is low or for atmospheric pollutants for which no direct observations are available. The forecast itself uses a model of the atmosphere based on the laws of physics and chemistry to determine the evolution of the concentrations of all species over time for the next five days. Apart from the required initial state, it also uses inventory-based or observation-based emission estimates as a boundary condition at the surface. The CAMS global forecasting system is upgraded about once a year resulting in technical and scientific changes. The horizontal or vertical resolution can change, new species can be added, and more generally the accuracy of the forecasts can be improved. Details of these system changes can be found in the documentation. Users looking for a more consistent long-term data set should consider using the CAMS Global Reanalysis instead, which is available through the ADS and spans the period from 2003 onwards. Finally, because some meteorological fields in the forecast do not fall within the general CAMS data licence, they are only available with a delay of 5 days. ",CAMS,,CAMS,,"Copernicus,ADS,CAMS,Atmosphere,Atmospheric,Forecast,GAC",ATMOSPHERIC,proprietary,CAMS global atmospheric composition forecasts,2015-01-02T00:00:00Z,CAMS_GAC_FORECAST,,,available,,,,,,available,,,,,,,,,,,,,,,,available, +CAMS_GFE_GFAS,"Emissions of atmospheric pollutants from biomass burning and vegetation fires are key drivers of the evolution of atmospheric composition, with a high degree of spatial and temporal variability, and an accurate representation of them in models is essential. The CAMS Global Fire Assimilation System (GFAS) utilises satellite observations of fire radiative power (FRP) to provide near-real-time information on the location, relative intensity and estimated emissions from biomass burning and vegetation fires. Emissions are estimated by (i) conversion of FRP observations to the dry matter (DM) consumed by the fire, and (ii) application of emission factors to DM for different biomes, based on field and laboratory studies in the scientific literature, to estimate the emissions. Emissions estimates for 40 pyrogenic species are available from GFAS, including aerosols, reactive gases and greenhouse gases, on a regular grid with a spatial resolution of 0.1 degrees longitude by 0.1 degrees latitude. This version of GFAS (v1.2) provides daily averaged data based on a combination of FRP observations from two Moderate Resolution Imaging Spectroradiometer (MODIS) instruments, one on the NASA EOS-Terra satellite and the other on the NASA EOS-Aqua satellite from 1 January 2003 to present. GFAS also provides daily estimates of smoke plume injection heights derived from FRP observations and meteorological information from the operational weather forecasts from ECMWF. GFAS data have been used to provide surface boundary conditions for the CAMS global atmospheric composition and European regional air quality forecasts, and the wider atmospheric chemistry modelling community. ",CAMS,,CAMS,,"Copernicus,ADS,CAMS,Atmosphere,Atmospheric,Fire,FRP,DM,MODIS,NASA,EOS,ECMWF,GFAS",ATMOSPHERIC,proprietary,CAMS global biomass burning emissions based on fire radiative power (GFAS),2003-01-01T00:00:00Z,CAMS_GFE_GFAS,,,available,,,,,,available,,,,,,,,,,,,,,,,, +CAMS_GLOBAL_EMISSIONS,"This data set contains gridded distributions of global anthropogenic and natural emissions. Natural and anthropogenic emissions of atmospheric pollutants and greenhouse gases are key drivers of the evolution of the composition of the atmosphere, so an accurate representation of them in forecast models of atmospheric composition is essential. CAMS compiles inventories of emission data that serve as input to its own forecast models, but which can also be used by other atmospheric chemical transport models. These inventories are based on a combination of existing data sets and new information, describing anthropogenic emissions from fossil fuel use on land, shipping, and aviation, and natural emissions from vegetation, soil, the ocean and termites. The anthropogenic emissions on land are further separated in specific activity sectors (e.g., power generation, road traffic, industry). The CAMS emission data sets provide good consistency between the emissions of greenhouse gases, reactive gases, and aerosol particles and their precursors. Because most inventory-based data sets are only available with a delay of several years, the CAMS emission inventories also extend these existing data sets forward in time by using the trends from the most recent available years, producing timely input data for real-time forecast models. Most of the data sets are updated once or twice per year adding the most recent year to the data record, while re-processing the original data record for consistency, when needed. This is reflected by the different version numbers. ",CAMS,,CAMS,,"Copernicus,ADS,CAMS,Atmosphere,Atmospheric,Emissions,Pollutants,GHG",ATMOSPHERIC,proprietary,CAMS global emission inventories,2000-01-01T00:00:00Z,CAMS_GLOBAL_EMISSIONS,,,available,,,,,,available,,,,,,,,,,,,,,,,available, +CAMS_GREENHOUSE_EGG4,"This dataset is part of the ECMWF Atmospheric Composition Reanalysis focusing on long-lived greenhouse gases: carbon dioxide (CO2) and methane (CH4). The emissions and natural fluxes at the surface are crucial for the evolution of the long-lived greenhouse gases in the atmosphere. In this dataset the CO2 fluxes from terrestrial vegetation are modelled in order to simulate the variability across a wide range of scales from diurnal to inter-annual. The CH4 chemical loss is represented by a climatological loss rate and the emissions at the surface are taken from a range of datasets. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using a model of the atmosphere based on the laws of physics and chemistry. This principle, called data assimilation, is based on the method used by numerical weather prediction centres and air quality forecasting centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued. Reanalysis works in the same way to allow for the provision of a dataset spanning back more than a decade. Reanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product. The assimilation system is able to estimate biases between observations and to sift good-quality data from poor data. The atmosphere model allows for estimates at locations where data coverage is low or for atmospheric pollutants for which no direct observations are available. The provision of estimates at each grid point around the globe for each regular output time, over a long period, always using the same format, makes reanalysis a very convenient and popular dataset to work with. The observing system has changed drastically over time, and although the assimilation system can resolve data holes, the initially much sparser networks will lead to less accurate estimates. For this reason, EAC4 is only available from 2003 onwards. The analysis procedure assimilates data in a window of 12 hours using the 4D-Var assimilation method, which takes account of the exact timing of the observations and model evolution within the assimilation window. ",CAMS,,CAMS,,"Copernicus,ADS,CAMS,Atmospheric,Atmosphere,CO2,CH4,GHG,ECMWF,EGG4",ATMOSPHERIC,proprietary,CAMS global greenhouse gas reanalysis (EGG4),2003-01-01T00:00:00Z,CAMS_GREENHOUSE_EGG4,,,available,,,,,,available,,,,,,,,,,,,,,,,available, +CAMS_GREENHOUSE_EGG4_MONTHLY,"This dataset is part of the ECMWF Atmospheric Composition Reanalysis focusing on long-lived greenhouse gases: carbon dioxide (CO2) and methane (CH4). The emissions and natural fluxes at the surface are crucial for the evolution of the long-lived greenhouse gases in the atmosphere. In this dataset the CO2 fluxes from terrestrial vegetation are modelled in order to simulate the variability across a wide range of scales from diurnal to inter-annual. The CH4 chemical loss is represented by a climatological loss rate and the emissions at the surface are taken from a range of datasets. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using a model of the atmosphere based on the laws of physics and chemistry. This principle, called data assimilation, is based on the method used by numerical weather prediction centres and air quality forecasting centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued. Reanalysis works in the same way to allow for the provision of a dataset spanning back more than a decade. Reanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product. The assimilation system is able to estimate biases between observations and to sift good-quality data from poor data. The atmosphere model allows for estimates at locations where data coverage is low or for atmospheric pollutants for which no direct observations are available. The provision of estimates at each grid point around the globe for each regular output time, over a long period, always using the same format, makes reanalysis a very convenient and popular dataset to work with. The observing system has changed drastically over time, and although the assimilation system can resolve data holes, the initially much sparser networks will lead to less accurate estimates. For this reason, EAC4 is only available from 2003 onwards. The analysis procedure assimilates data in a window of 12 hours using the 4D-Var assimilation method, which takes account of the exact timing of the observations and model evolution within the assimilation window. ",CAMS,,CAMS,,"Copernicus,ADS,CAMS,Atmospheric,Atmosphere,CO2,CH4,Greenhouse,ECMWF,EGG4",ATMOSPHERIC,proprietary,CAMS global greenhouse gas reanalysis (EGG4) monthly averaged fields,2003-01-01T00:00:00Z,CAMS_GREENHOUSE_EGG4_MONTHLY,,,available,,,,,,available,,,,,,,,,,,,,,,,available, +CAMS_GREENHOUSE_INVERSION,"This data set contains net fluxes at the surface, atmospheric mixing ratios at model levels, and column-mean atmospheric mixing ratios for carbon dioxide (CO2), methane (CH4) and nitrous oxide (N20). Natural and anthropogenic surface fluxes of greenhouse gases are key drivers of the evolution of Earth's climate, so their monitoring is essential. Such information has been used in particular as part of the Assessment Reports of the Intergovernmental Panel on Climate Change (IPCC). Ground-based and satellite remote-sensing observations provide a means to quantifying the net fluxes between the land and ocean on the one hand and the atmosphere on the other hand. This is done through a process called atmospheric inversion, which uses transport models of the atmosphere to link the observed concentrations of CO2, CH4 and N2O to the net fluxes at the Earth's surface. By correctly modelling the winds, vertical diffusion, and convection in the global atmosphere, the observed concentrations of the greenhouse gases are used to infer the surface fluxes for the last few decades. For CH4 and N2O, the flux inversions account also for the chemical loss of these greenhouse gases. The net fluxes include contributions from the natural biosphere (e.g., vegetation, wetlands) as well anthropogenic contributions (e.g., fossil fuel emissions, rice fields). The data sets for the three species are updated once or twice per year adding the most recent year to the data record, while re-processing the original data record for consistency. This is reflected by the different version numbers. In addition, fluxes for methane are available based on surface air samples only or based on a combination of surface air samples and satellite observations (reflected by an 's' in the version number). ",CAMS,,CAMS,,"Copernicus,ADS,CAMS,Atmosphere,Atmospheric,IPCC,CO2,CH4,N2O",ATMOSPHERIC,proprietary,CAMS global inversion-optimised greenhouse gas fluxes and concentrations,1979-01-01T00:00:00Z,CAMS_GREENHOUSE_INVERSION,,,available,,,,,,available,,,,,,,,,,,,,,,,available, +CAMS_GRF,"This dataset provides geographical distributions of the radiative forcing (RF) by key atmospheric constituents. The radiative forcing estimates are based on the CAMS reanalysis and additional model simulations and are provided separately for CO2 CH4, O3 (tropospheric and stratospheric), interactions between anthropogenic aerosols and radiation and interactions between anthropogenic aerosols and clouds. Radiative forcing measures the imbalance in the Earth's energy budget caused by a perturbation of the climate system, such as changes in atmospheric composition caused by human activities. RF is a useful predictor of globally-averaged temperature change, especially when rapid adjustments of atmospheric temperature and moisture profiles are taken into account. RF has therefore become a quantitative metric to compare the potential climate response to different perturbations. Increases in greenhouse gas concentrations over the industrial era exerted a positive RF, causing a gain of energy in the climate system. In contrast, concurrent changes in atmospheric aerosol concentrations are thought to exert a negative RF leading to a loss of energy. Products are quantified both in ""all-sky"" conditions, meaning that the radiative effects of clouds are included in the radiative transfer calculations, and in ""clear-sky"" conditions, which are computed by excluding clouds in the radiative transfer calculations. The upgrade from version 1.5 to 2 consists of an extension of the period by 2017-2018, the addition of an ""effective radiative forcing"" product and new ways to calculate the pre-industrial reference state for aerosols and cloud condensation nuclei. More details are given in the documentation section. New versions may be released in future as scientific methods develop, and existing versions may be extended with later years if data for the period is available from the CAMS reanalysis. Newer versions supercede old versions so it is always recommended to use the latest one. CAMS also produces distributions of aerosol optical depths, distinguishing natural from anthropogenic aerosols, which are a separate dataset. See ""Related Data"". ",CAMS,,CAMS,,"Copernicus,ADS,CAMS,Atmospheric,Atmosphere,RF,CO2,CH4,O3,Aerosol",ATMOSPHERIC,proprietary,CAMS global radiative forcings,2003-01-01T00:00:00Z,CAMS_GRF,,,available,,,,,,available,,,,,,,,,,,,,,,,available, +CAMS_GRF_AUX,"This dataset provides aerosol optical depths and aerosol-radiation radiative effects for four different aerosol origins: anthropogenic, mineral dust, marine, and land-based fine-mode natural aerosol. The latter mostly consists of biogenic aerosols. The data are a necessary complement to the ""CAMS global radiative forcings"" dataset (see ""Related Data""). The calculation of aerosol radiative forcing requires a discrimination between aerosol of anthropogenic and natural origin. However, the CAMS reanalysis, which is used to provide the aerosol concentrations, does not make this distinction. The anthropogenic fraction was therefore derived by a method which uses aerosol size as a proxy for aerosol origin. ",CAMS,,CAMS,,"Copernicus,ADS,CAMS,Atmospheric,Atmosphere,RF,CO2,CH4,O3,Aerosol",ATMOSPHERIC,proprietary,CAMS global radiative forcing - auxilliary variables,2003-01-01T00:00:00Z,CAMS_GRF_AUX,,,available,,,,,,available,,,,,,,,,,,,,,,,available, +CAMS_SOLAR_RADIATION,"The CAMS solar radiation services provide historical values (2004 to present) of global (GHI), direct (BHI) and diffuse (DHI) solar irradiation, as well as direct normal irradiation (BNI). The aim is to fulfil the needs of European and national policy development and the requirements of both commercial and public downstream services, e.g. for planning, monitoring, efficiency improvements and the integration of solar energy systems into energy supply grids. For clear-sky conditions, an irradiation time series is provided for any location in the world using information on aerosol, ozone and water vapour from the CAMS global forecasting system. Other properties, such as ground albedo and ground elevation, are also taken into account. Similar time series are available for cloudy (or ""all sky"") conditions but, since the high-resolution cloud information is directly inferred from satellite observations, these are currently only available inside the field-of-view of the Meteosat Second Generation (MSG) satellite, which is roughly Europe, Africa, the Atlantic Ocean and the Middle East. Data is offered in both ASCII and netCDF format. Additionally, an ASCII ""expert mode"" format can be selected which contains in addition to the irradiation, all the input data used in their calculation (aerosol optical properties, water vapour concentration, etc). This additional information is only meaningful in the time frame at which the calculation is performed and so is only available at 1-minute time steps in universal time (UT). ",CAMS,,CAMS,,"Copernicus,ADS,CAMS,Solar,Radiation",ATMOSPHERIC,proprietary,CAMS solar radiation time-series,2004-01-02T00:00:00Z,CAMS_SOLAR_RADIATION,,,available,,,,,,available,,,,,,,,,,,,,,,,available, +CBERS4_AWFI_L2,"China-Brazil Earth Resources Satellite, CBERS-4 AWFI camera Level-2 product. System corrected images, expect some translation error. ",CBERS,AWFI,CBERS-4,L2,"AWFI,CBERS,CBERS-4,L2",OPTICAL,proprietary,CBERS-4 AWFI Level-2,2014-12-07T00:00:00Z,CBERS4_AWFI_L2,,available,,,,,,,,,,,,,,,,,,,,,,,, +CBERS4_AWFI_L4,"China-Brazil Earth Resources Satellite, CBERS-4 AWFI camera Level-4 product. Orthorectified with ground control points. ",CBERS,AWFI,CBERS-4,L4,"AWFI,CBERS,CBERS-4,L4",OPTICAL,proprietary,CBERS-4 AWFI Level-4,2014-12-07T00:00:00Z,CBERS4_AWFI_L4,,available,,,,,,,,,,,,,,,,,,,,,,,, +CBERS4_MUX_L2,"China-Brazil Earth Resources Satellite, CBERS-4 MUX camera Level-2 product. System corrected images, expect some translation error. ",CBERS,MUX,CBERS-4,L2,"MUX,CBERS,CBERS-4,L2",OPTICAL,proprietary,CBERS-4 MUX Level-2,2014-12-07T00:00:00Z,CBERS4_MUX_L2,,available,,,,,,,,,,,,,,,,,,,,,,,, +CBERS4_MUX_L4,"China-Brazil Earth Resources Satellite, CBERS-4 MUX camera Level-4 product. Orthorectified with ground control points. ",CBERS,MUX,CBERS-4,L4,"MUX,CBERS,CBERS-4,L4",OPTICAL,proprietary,CBERS-4 MUX Level-4,2014-12-07T00:00:00Z,CBERS4_MUX_L4,,available,,,,,,,,,,,,,,,,,,,,,,,, +CBERS4_PAN10M_L2,"China-Brazil Earth Resources Satellite, CBERS-4 PAN10M camera Level-2 product. System corrected images, expect some translation error. ",CBERS,PAN10M,CBERS-4,L2,"PAN10M,CBERS,CBERS-4,L2",OPTICAL,proprietary,CBERS-4 PAN10M Level-2,2014-12-07T00:00:00Z,CBERS4_PAN10M_L2,,available,,,,,,,,,,,,,,,,,,,,,,,, +CBERS4_PAN10M_L4,"China-Brazil Earth Resources Satellite, CBERS-4 PAN10M camera Level-4 product. Orthorectified with ground control points. ",CBERS,PAN10M,CBERS-4,L4,"PAN10M,CBERS,CBERS-4,L4",OPTICAL,proprietary,CBERS-4 PAN10M Level-4,2014-12-07T00:00:00Z,CBERS4_PAN10M_L4,,available,,,,,,,,,,,,,,,,,,,,,,,, +CBERS4_PAN5M_L2,"China-Brazil Earth Resources Satellite, CBERS-4 PAN5M camera Level-2 product. System corrected images, expect some translation error. ",CBERS,PAN5M,CBERS-4,L2,"PAN5M,CBERS,CBERS-4,L2",OPTICAL,proprietary,CBERS-4 PAN5M Level-2,2014-12-07T00:00:00Z,CBERS4_PAN5M_L2,,available,,,,,,,,,,,,,,,,,,,,,,,, +CBERS4_PAN5M_L4,"China-Brazil Earth Resources Satellite, CBERS-4 PAN5M camera Level-4 product. Orthorectified with ground control points. ",CBERS,PAN5M,CBERS-4,L4,"PAN5M,CBERS,CBERS-4,L4",OPTICAL,proprietary,CBERS-4 PAN5M Level-4,2014-12-07T00:00:00Z,CBERS4_PAN5M_L4,,available,,,,,,,,,,,,,,,,,,,,,,,, +CLMS_CORINE,"The CORINE Land Cover (CLC) inventory was initiated in 1985 (reference year 1990). Updates have been produced in 2000, 2006, 2012, and 2018. It consists of an inventory of land cover in 44 classes. CLC uses a Minimum Mapping Unit (MMU) of 25 hectares (ha) for areal phenomena and a minimum width of 100 m for linear phenomena. The time series are complemented by change layers, which highlight changes in land cover with an MMU of 5 ha. Different MMUs mean that the change layer has higher resolution than the status layer. Due to differences in MMUs the difference between two status layers will not equal to the corresponding CLC-Changes layer. If you are interested in CLC-Changes between two neighbour surveys always use the CLC-Change layer. ","Sentinel-2, LANDSAT, SPOT-4/5, IRS P6 LISS III",,"S2, L5, L7, L8, SPOT4, SPOT5",,"Land-cover,LCL,CORINE,CLMS",,proprietary,CORINE Land Cover,1986-01-01T00:00:00Z,CLMS_CORINE,,,,,,,,,available,,,,,,,,,,,,,,,,available, +CLMS_GLO_DMP_333M,"Dry matter Productivity (DMP) is an indication of the overall growth rate or dry biomass increase of the vegetation and is directly related to ecosystem Net Primary Productivity (NPP), however its units (kilograms of gross dry matter per hectare per day) are customized for agro-statistical purposes. Compared to the Gross DMP (GDMP), or its equivalent Gross Primary Productivity, the main difference lies in the inclusion of the autotrophic respiration. Like the FAPAR products that are used as input for the GDMP estimation, these GDMP products are provided in Near Real Time, with consolidations in the next periods, or as offline product. ",Sentinel-3,"OLCI,PROBA-V",,,"Land,Dry-matter-productivity,DMP,OLCI,PROBA-V,Sentinel-3",,proprietary,10-daily Dry Matter Productivity 333M,2014-01-10T00:00:00Z,CLMS_GLO_DMP_333M,,,,,,,,,available,,,,,,,,,,,,,,,,available, +CLMS_GLO_FAPAR_333M,"The FAPAR quantifies the fraction of the solar radiation absorbed by plants for photosynthesis. It refers only to the green and living elements of the canopy. The FAPAR depends on the canopy structure, vegetation element optical properties, atmospheric conditions and angular configuration. To overcome this latter dependency, a daily integrated FAPAR value is assessed. FAPAR is very useful as input to a number of primary productivity models and is recognized as an Essential Climate Variable (ECV) by the Global Climate Observing System (GCOS). The product at 333m resolution is provided in Near Real Time and consolidated in the next six periods. ",Sentinel-3,"OLCI,PROBA-V",,,"Land,Fraction-of-absorbed-PAR,FAPAR,OLCI,PROBA-V,Sentinel-3",,proprietary,Global 10-daily Fraction of Absorbed PAR 333m,2014-01-10T00:00:00Z,CLMS_GLO_FAPAR_333M,,,,,,,,,available,,,,,,,,,,,,,,,,available, +CLMS_GLO_FCOVER_333M,"The Fraction of Vegetation Cover (FCover) corresponds to the fraction of ground covered by green vegetation. Practically, it quantifies the spatial extent of the vegetation. Because it is independent from the illumination direction and it is sensitive to the vegetation amount, FCover is a very good candidate for the replacement of classical vegetation indices for the monitoring of ecosystems. The product at 333m resolution is provided in Near Real Time and consolidated in the next six periods. ",Sentinel-3,"OLCI,PROBA-V",,,"Land,Fraction-of-vegetation-cover,OLCI,PROBA-V,Sentinel-3",,proprietary,Global 10-daily Fraction of Vegetation Cover 333m,2014-01-10T00:00:00Z,CLMS_GLO_FCOVER_333M,,,,,,,,,available,,,,,,,,,,,,,,,,available, +CLMS_GLO_GDMP_333M,"Gross dry matter Productivity (GDMP) is an indication of the overall growth rate or dry biomass increase of the vegetation and is directly related to ecosystem Gross Primary Productivity (GPP), that reflects the ecosystem's overall production of organic compounds from atmospheric carbon dioxide, however its units (kilograms of gross dry matter per hectare per day) are customized for agro-statistical purposes. Like the FAPAR products that are used as input for the GDMP estimation, these GDMP products are provided in Near Real Time, with consolidations in the next periods, or as offline product. ",Sentinel-3,"OLCI,PROBA-V",,,"Land,Gross-dry-matter-productivity,GDMP,GPP,OLCI,PROBA-V,Sentinel-3",,proprietary,10-daily Gross Dry Matter Productivity 333M,2014-01-10T00:00:00Z,CLMS_GLO_GDMP_333M,,,,,,,,,available,,,,,,,,,,,,,,,,available, +CLMS_GLO_LAI_333M,"LAI was defined by CEOS as half the developed area of the convex hull wrapping the green canopy elements per unit horizontal ground. This definition allows accounting for elements which are not flat such as needles or stems. LAI is strongly non linearly related to reflectance. Therefore, its estimation from remote sensing observations will be scale dependant over heterogeneous landscapes. When observing a canopy made of different layers of vegetation, it is therefore mandatory to consider all the green layers. This is particularly important for forest canopies where the understory may represent a very significant contribution to the total canopy LAI. The derived LAI corresponds therefore to the total green LAI, including the contribution of the green elements of the understory. The product at 333m resolution is provided in Near Real Time and consolidated in the next six periods. ",Sentinel-3,"OLCI,PROBA-V",,,"Land,Leaf-area-index,LAI,OLCI,PROBA-V,Sentinel-3",,proprietary,Global 10-daily Leaf Area Index 333m,2014-01-10T00:00:00Z,CLMS_GLO_LAI_333M,,,,,,,,,available,,,,,,,,,,,,,,,,available, +CLMS_GLO_NDVI_1KM_LTS,"The Normalized Difference Vegetation Index (NDVI) is a proxy to quantify the vegetation amount. It is defined as NDVI=(NIR-Red)/(NIR+Red) where NIR corresponds to the reflectance in the near infrared band, and Red to the reflectance in the red band. The time series of dekadal (10-daily) NDVI 1km version 2 observations over the period 1999-2017 is used to calculate Long Term Statistics (LTS) for each of the 36 10-daily periods (dekads) of the year. The calculated LTS include the minimum, median, maximum, average, standard deviation and the number of observations in the covered time series period. These LTS can be used as a reference for actual NDVI observations, which allows evaluating whether vegetation conditions deviate from a 'normal' situation. ",SPOT,"VEGETATION,PROBA-V",,,"Land,NDVI,LTS,SPOT,VEGETATION,PROBA-V",,proprietary,"Normalized Difference Vegetation Index: global Long Term Statistics (raster 1km) - version 2, Apr 2019",1999-01-01T00:00:00Z,CLMS_GLO_NDVI_1KM_LTS,,,,,,,,,available,,,,,,,,,,,,,,,,available, +CLMS_GLO_NDVI_333M,"The Normalized Difference Vegetation Index (NDVI) is a proxy to quantify the vegetation amount. It is defined as NDVI=(NIR-Red)/(NIR+Red) where NIR corresponds to the reflectance in the near infrared band, and Red to the reflectance in the red band. It is closely related to FAPAR and is little scale dependant. ",,PROBA-V,,,"Land,NDVI,PROBA-V",,proprietary,Global 10-daily Normalized Difference Vegetation Index 333M,2014-01-01T00:00:00Z,CLMS_GLO_NDVI_333M,,,,,,,,,available,,,,,,,,,,,,,,,,available, +COP_DEM_GLO30_DGED,"Defence Gridded Elevation Data (DGED, 32 Bit floating point) formatted Copernicus DEM GLO-30 data. The Copernicus Digital Elevation Model is a Digital Surface Model (DSM) that represents the surface of the Earth including buildings, infrastructure and vegetation. The Copernicus DEM is provided in 3 different instances: EEA-10, GLO-30 and GLO-90. GLO-30 provides worldwide coverage at 30 meters.Data were acquired through the TanDEM-X mission between 2011 and 2015. The datasets were made available for use in 2019 and will be maintained until 2026. ",TerraSAR,,,,"TerraSAR,TanDEM-X,DEM,surface,GLO-30,DSM,GDGED",ALTIMETRIC,proprietary,Copernicus DEM GLO-30 DGED,2010-06-21T00:00:00Z,COP_DEM_GLO30_DGED,,,,,,,available,available,available,,available,,,,,,,,,,,,,,available, +COP_DEM_GLO30_DTED,"Digital Terrain Elevation Data (DTED, 16 Bit signed integer) formatted Copernicus DEM GLO-30 data. The Copernicus Digital Elevation Model is a Digital Surface Model (DSM) that represents the surface of the Earth including buildings, infrastructure and vegetation. The Copernicus DEM is provided in 3 different instances: EEA-10, GLO-30 and GLO-90. GLO-30 provides worldwide coverage at 30 meters.Data were acquired through the TanDEM-X mission between 2011 and 2015. The datasets were made available for use in 2019 and will be maintained until 2026. ",TerraSAR,,,,"TerraSAR,TanDEM-X,DEM,surface,GLO-30,DSM,DTED",ALTIMETRIC,proprietary,Copernicus DEM GLO-30 DTED,2010-06-21T00:00:00Z,COP_DEM_GLO30_DTED,,,,,,,available,available,available,,,,,,,,,,,,,,,,available, +COP_DEM_GLO90_DGED,"Defence Gridded Elevation Data (DGED, 32 Bit floating point) formatted Copernicus DEM GLO-90 data. The Copernicus Digital Elevation Model is a Digital Surface Model (DSM) that represents the surface of the Earth including buildings, infrastructure and vegetation. The Copernicus DEM is provided in 3 different instances: EEA-10, GLO-30 and GLO-90. GLO-90 provides worldwide coverage at 90 meters.Data were acquired through the TanDEM-X mission between 2011 and 2015. The datasets were made available for use in 2019 and will be maintained until 2026. ",TerraSAR,,,,"TerraSAR,TanDEM-X,DEM,surface,GLO-90,DSM,GDGED",ALTIMETRIC,proprietary,Copernicus DEM GLO-90 DGED,2010-06-21T00:00:00Z,COP_DEM_GLO90_DGED,,,,,,,available,available,available,,available,,,,,,,,,,,,,,available, +COP_DEM_GLO90_DTED,"Digital Terrain Elevation Data (DTED, 16 Bit signed integer) formatted Copernicus DEM GLO-90 data. The Copernicus Digital Elevation Model is a Digital Surface Model (DSM) that represents the surface of the Earth including buildings, infrastructure and vegetation. The Copernicus DEM is provided in 3 different instances: EEA-10, GLO-30 and GLO-90. GLO-90 provides worldwide coverage at 90 meters.Data were acquired through the TanDEM-X mission between 2011 and 2015. The datasets were made available for use in 2019 and will be maintained until 2026. ",TerraSAR,,,,"TerraSAR,TanDEM-X,DEM,surface,GLO-90,DSM,DTED",ALTIMETRIC,proprietary,Copernicus DEM GLO-90 DTED,2010-06-21T00:00:00Z,COP_DEM_GLO90_DTED,,,,,,,available,available,available,,,,,,,,,,,,,,,,available, +DT_CLIMATE_ADAPTATION,"The Digital Twin on Climate Change Adaptation support the analysis and testing of scenarios. This in turn will support sustainable development and climate adaptation and mitigation policy-making at multi-decadal timescales, at regional and national levels. ",Digital Twin,,DT,,"DT,DE,LUMI,Destination-Earth,Digital-Twin,Climate,Change,Adaptation",ATMOSPHERIC,proprietary,Climate Change Adaptation Digital Twin (DT),2020-01-01T00:00:00Z,DT_CLIMATE_ADAPTATION,,,,,,,,,available,available,,,,,,,,,,,,,,,, +DT_EXTREMES,The Digital Twin on Weather-Induced and Geophysical Extremes provides capabilities for the assessment and prediction of environmental extremes in support of risk assessment and management. ,Digital Twin,,DT,,"DT,DE,LUMI,Destination-Earth,Digital-Twin,Weather,Geophysical,Extremes",ATMOSPHERIC,proprietary,Weather and Geophysical Extremes Digital Twin (DT),2020-01-01T00:00:00Z,DT_EXTREMES,,,,,,,,,available,available,,,,,,,,,,,,,,,, +EEA_DAILY_VI,"Vegetation Indices (VI) comprises four daily vegetation indices (PPI, NDVI, LAI and FAPAR) and quality information, that are part of the Copernicus Land Monitoring Service (CLMS) HR-VPP product suite. The 10m resolution, daily updated Plant Phenology Index (PPI), Normalized Difference Vegetation Index (NDVI), Leaf Area Index (LAI) and Fraction of Absorbed Photosynthetically Active Radiation (fAPAR) are derived from Copernicus Sentinel-2 satellite observations. They are provided together with a related quality indicator (QFLAG2) that flags clouds, shadows, snow, open water and other areas where the VI retrieval is less reliable. These Vegetation Indices are made available as a set of raster files with 10 x 10m resolution, in UTM/WGS84 projection corresponding to the Sentinel-2 tiling grid, for those tiles that cover the EEA38 countries and the United Kingdom and for the period from 2017 until today, with daily updates. The Vegetation Indices are part of the pan-European High Resolution Vegetation Phenology and Productivity (HR-VPP) component of the Copernicus Land Monitoring Service (CLMS). ",Sentinel-2,,"S2A, S2B",,"Land,Plant-phenology-index,Phenology,Vegetation,Sentinel-2,S2A,S2B",RADAR,proprietary,"Vegetation Indices, daily, UTM projection",,EEA_DAILY_VI,,,,,,,,,available,,,,,,,,,,,,,,,,available, +EFAS_FORECAST,"This dataset provides gridded modelled hydrological time series forced with medium-range meteorological forecasts. The data is a consistent representation of the most important hydrological variables across the European Flood Awareness System (EFAS) domain. The temporal resolution is sub-daily high-resolution and ensemble forecasts of:\n\nRiver discharge\nSoil moisture for three soil layers\nSnow water equivalent\n\nIt also provides static data on soil depth for the three soil layers. Soil moisture and river discharge data are accompanied by ancillary files for interpretation (see related variables and links in the documentation).\nThis data set was produced by forcing the LISFLOOD hydrological model at a 5x5km resolution with meteorological forecasts. The forecasts are initialised twice daily at 00 and 12 UTC with time steps of 6 or 24 hours and lead times between 5 and 15 days depending on the forcing numerical weather prediction model. The forcing meteorological data are high-resolution and ensemble forecasts from the European Centre of Medium-range Weather Forecasts (ECMWF) with 51 ensemble members, high-resolution forecasts from the Deutsches Wetter Dienst (DWD) and the ensemble forecasts from the COSMO Local Ensemble Prediction System (COSMO-LEPS) with 20 ensemble members. The hydrological forecasts are available from 2018-10-10 up until present with a 30-day delay. The real-time data is only available to EFAS partners.\nCompanion datasets, also available through the CDS, are historical simulations which can be used to derive the hydrological climatology and for verification; reforecasts for research, local skill assessment and post-processing; and seasonal forecasts and reforecasts for users looking for longer leadtime forecasts. For users looking for global hydrological data, we refer to the Global Flood Awareness System (GloFAS) forecasts and historical simulations. All these datasets are part of the operational flood forecasting within the Copernicus Emergency Management Service (CEMS).\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours, River discharge in the last 6 hours, Snow depth water equivalent, Soil depth, Volumetric soil moisture\n\nVariables in the dataset/application are:\nOrography, Upstream area ",CEMS,,CEMS,,"ECMWF,CEMS,EFAS,forecast,river,discharge",ATMOSPHERIC,proprietary,River discharge and related forecasted data by the European Flood Awareness System,2018-10-11T00:00:00Z,EFAS_FORECAST,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +EFAS_HISTORICAL,"This dataset provides gridded modelled daily hydrological time series forced with meteorological observations. The data set is a consistent representation of the most important hydrological variables across the European Flood Awareness System (EFAS) domain. The temporal resolution is up to 30 years modelled time series of:\n\nRiver discharge\nSoil moisture for three soil layers\nSnow water equivalent\n\nIt also provides static data on soil depth for the three soil layers. Soil moisture and river discharge data are accompanied by ancillary files for interpretation (see related variables and links in the documentation).\nThis dataset was produced by forcing the LISFLOOD hydrological model with gridded observational data of precipitation and temperature at a 5x5 km resolution across the EFAS domain. The most recent version\nuses a 6-hourly time step, whereas older versions uses a 24-hour time step. It is available from 1991-01-01 up until near-real time, with a delay of 6 days. The real-time data is only available to EFAS partners.\nCompanion datasets, also available through the CDS, are forecasts for users who are looking medium-range forecasts, reforecasts for research, local skill assessment and post-processing, and seasonal forecasts and reforecasts for users looking for long-term forecasts. For users looking for global hydrological data, we refer to the Global Flood Awareness System (GloFAS) forecasts and historical simulations. All these datasets are part of the operational flood forecasting within the Copernicus Emergency Management Service (CEMS).\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours, River discharge in the last 6 hours, Snow depth water equivalent, Soil depth, Volumetric soil moisture\n\nVariables in the dataset/application are:\nOrography, Upstream area ",CEMS,,CEMS,,"ECMWF,CEMS,EFAS,historical,river,discharge",ATMOSPHERIC,proprietary,River discharge and related historical data from the European Flood Awareness System,1992-01-02T00:00:00Z,EFAS_HISTORICAL,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +EFAS_REFORECAST,"This dataset provides gridded modelled hydrological time series forced with medium- to sub-seasonal range meteorological reforecasts. The data is a consistent representation of the most important hydrological variables across the European Flood Awareness System (EFAS) domain. The temporal resolution is 20 years of sub-daily reforecasts initialised twice weekly (Mondays and Thursdays) of:\n\nRiver discharge\nSoil moisture for three soil layers\nSnow water equivalent\n\nIt also provides static data on soil depth for the three soil layers. Soil moisture and river discharge data are accompanied by ancillary files for interpretation (see related variables and links in the documentation).\nThis dataset was produced by forcing the LISFLOOD hydrological model at a 5x5km resolution with ensemble meteorological reforecasts from the European Centre of Medium-range Weather Forecasts (ECMWF). Reforecasts are forecasts run over past dates and are typically used to assess the skill of a forecast system or to develop tools for statistical error correction of the forecasts. The reforecasts are initialised twice weekly with lead times up to 46 days, at 6-hourly time steps for 20 years. For more specific information on the how the reforecast dataset is produced we refer to the documentation.\nCompanion datasets, also available through the Climate Data Store (CDS), are the operational forecasts, historical simulations which can be used to derive the hydrological climatology, and seasonal forecasts and reforecasts for users looking for long term forecasts. For users looking for global hydrological data, we refer to the Global Flood Awareness System (GloFAS) forecasts an historical simulations. All these datasets are part of the operational flood forecasting within the Copernicus Emergency Management Service (CEMS).\n\nVariables in the dataset/application are:\nRiver discharge, Snow depth water equivalent, Soil depth, Volumetric soil moisture\n\nVariables in the dataset/application are:\nOrography, Upstream area ",CEMS,,CEMS,,"ECMWF,CEMS,EFAS,reforecast,river,discharge",ATMOSPHERIC,proprietary,Reforecasts of river discharge and related data by the European Flood Awareness System,2003-03-27T00:00:00Z,EFAS_REFORECAST,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +EFAS_SEASONAL,"This dataset provides gridded modelled daily hydrological time series forced with seasonal meteorological forecasts. The dataset is a consistent representation of the most important hydrological variables across the European Flood Awareness (EFAS) domain. The temporal resolution is daily forecasts initialised once a month consisting of:\n\nRiver discharge\nSoil moisture for three soil layers\nSnow water equivalent\n\nIt also provides static data on soil depth for the three soil layers. Soil moisture and river discharge data are accompanied by ancillary files for interpretation (see related variables and links in the documentation).\nThis dataset was produced by forcing the LISFLOOD hydrological model at a 5x5km resolution with seasonal meteorological ensemble forecasts. The forecasts are initialised on the first of each month with a lead time of 215 days at 24-hour time steps. The meteorological data are seasonal forecasts (SEAS5) from the European Centre of Medium-range Weather Forecasts (ECMWF) with 51 ensemble members. The forecasts are available from November 2020.\nCompanion datasets, also available through the Climate Data Store (CDS), are seasonal reforecasts for research, local skill assessment and post-processing of the seasonal forecasts. There are also medium-range forecasts for users who want to look at shorter time ranges. These are accompanied by historical simulations which can be used to derive the hydrological climatology, and medium-range reforecasts. For users looking for global hydrological data, we refer to the Global Flood Awareness System (GloFAS) forecasts and historical simulations. All these datasets are part of the operational flood forecasting within the Copernicus Emergency Management Service (CEMS).\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours, Snow depth water equivalent, Soil depth, Volumetric soil moisture\n\nVariables in the dataset/application are:\nOrography, Upstream area ",CEMS,,CEMS,,"ECMWF,CEMS,EFAS,seasonal,forecast,river,discharge",ATMOSPHERIC,proprietary,Seasonal forecasts of river discharge and related data by the European Flood Awareness System,2020-11-01T00:00:00Z,EFAS_SEASONAL,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +EFAS_SEASONAL_REFORECAST,"This dataset provides modelled daily hydrological time series forced with seasonal meteorological reforecasts. The dataset is a consistent representation of the most important hydrological variables across the European Flood Awareness (EFAS) domain. The temporal resolution is daily forecasts initialised once a month over the reforecast period 1991-2020 of:\n\nRiver discharge\nSoil moisture for three soil layers\nSnow water equivalent\n\nIt also provides static data on soil depth for the three soil layers. Soil moisture and river discharge data are accompanied by ancillary files for interpretation (see related variables and links in the documentation).\nThis dataset was produced by forcing the LISFLOOD hydrological model at a 5x5km gridded resolution with seasonal meteorological ensemble reforecasts. Reforecasts are forecasts run over past dates and are typically used to assess the skill of a forecast system or to develop tools for statistical error correction of the forecasts. The reforecasts are initialised on the first of each month with a lead time of 215 days at 24-hour time steps. The forcing meteorological data are seasonal reforecasts from the European Centre of Medium-range Weather Forecasts (ECMWF), consisting of 25 ensemble members up until December 2016, and after that 51 members. Hydrometeorological reforecasts are available from 1991-01-01 up until 2020-10-01. \nCompanion datasets, also available through the Climate Data Store (CDS), are seasonal forecasts, for which the seasonal reforecasts can be useful for local skill assessment and post-processing of the seasonal forecasts. For users looking for shorter time ranges there are medium-range forecasts and reforecasts, as well as historical simulations which can be used to derive the hydrological climatology. For users looking for global hydrological data, we refer to the Global Flood Awareness System (GloFAS) forecasts and historical simulations. All these datasets are part of the operational flood forecasting within the Copernicus Emergency Management Service (CEMS).\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours, Snow depth water equivalent, Soil depth, Volumetric soil moisture\n\nVariables in the dataset/application are:\nOrography, Upstream area"" ",CEMS,,CEMS,,"ECMWF,CEMS,EFAS,seasonal,reforecast,river,discharge",ATMOSPHERIC,proprietary,Seasonal reforecasts of river discharge and related data by the European Flood Awareness System,1991-01-01T00:00:00Z,EFAS_SEASONAL_REFORECAST,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +ERA5_LAND,"ERA5-Land is a reanalysis dataset providing a consistent view of the evolution of land variables over several decades at an enhanced resolution compared to ERA5. ERA5-Land has been produced by replaying the land component of the ECMWF ERA5 climate reanalysis. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using the laws of physics. Reanalysis produces data that goes several decades back in time, providing an accurate description of the climate of the past. ERA5-Land uses as input to control the simulated land fields ERA5 atmospheric variables, such as air temperature and air humidity. This is called the atmospheric forcing. Without the constraint of the atmospheric forcing, the model-based estimates can rapidly deviate from reality. Therefore, while observations are not directly used in the production of ERA5-Land, they have an indirect influence through the atmospheric forcing used to run the simulation. In addition, the input air temperature, air humidity and pressure used to run ERA5-Land are corrected to account for the altitude difference between the grid of the forcing and the higher resolution grid of ERA5-Land. This correction is called 'lapse rate correction'. The ERA5-Land dataset, as any other simulation, provides estimates which have some degree of uncertainty. Numerical models can only provide a more or less accurate representation of the real physical processes governing different components of the Earth System. In general, the uncertainty of model estimates grows as we go back in time, because the number of observations available to create a good quality atmospheric forcing is lower. ERA5-land parameter fields can currently be used in combination with the uncertainty of the equivalent ERA5 fields. The temporal and spatial resolutions of ERA5-Land makes this dataset very useful for all kind of land surface applications such as flood or drought forecasting. The temporal and spatial resolution of this dataset, the period covered in time, as well as the fixed grid used for the data distribution at any period enables decisions makers, businesses and individuals to access and use more accurate information on land states. Variables in the dataset/application are: 10m u-component of wind, 10m v-component of wind, 2m dewpoint temperature, 2m temperature, Evaporation from bare soil, Evaporation from open water surfaces excluding oceans, Evaporation from the top of canopy, Evaporation from vegetation transpiration, Forecast albedo, Lake bottom temperature, Lake ice depth, Lake ice temperature, Lake mix-layer depth, Lake mix-layer temperature, Lake shape factor, Lake total layer temperature, Leaf area index, high vegetation, Leaf area index, low vegetation, Potential evaporation, Runoff, Skin reservoir content, Skin temperature, Snow albedo, Snow cover, Snow density, Snow depth, Snow depth water equivalent, Snow evaporation, Snowfall, Snowmelt, Soil temperature level 1, Soil temperature level 2, Soil temperature level 3, Soil temperature level 4, Sub-surface runoff, Surface latent heat flux, Surface net solar radiation, Surface net thermal radiation, Surface pressure, Surface runoff, Surface sensible heat flux, Surface solar radiation downwards, Surface thermal radiation downwards, Temperature of snow layer, Total evaporation, Total precipitation, Volumetric soil water layer 1, Volumetric soil water layer 2, Volumetric soil water layer 3, Volumetric soil water layer 4 ",ERA5,,ERA5,,"ECMWF,Reanalysis,ERA5,CDS,Atmospheric,land,hourly,evolution",ATMOSPHERIC,proprietary,ERA5-Land hourly data from 1950 to present,1950-01-01T00:00:00Z,ERA5_LAND,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +ERA5_LAND_MONTHLY,"ERA5-Land is a reanalysis dataset providing a consistent view of the evolution of land variables over several decades at an enhanced resolution compared to ERA5. ERA5-Land has been produced by replaying the land component of the ECMWF ERA5 climate reanalysis. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using the laws of physics. Reanalysis produces data that goes several decades back in time, providing an accurate description of the climate of the past. ERA5-Land provides a consistent view of the water and energy cycles at surface level during several decades. It contains a detailed record from 1950 onwards, with a temporal resolution of 1 hour. The native spatial resolution of the ERA5-Land reanalysis dataset is 9km on a reduced Gaussian grid (TCo1279). The data in the CDS has been regridded to a regular lat-lon grid of 0.1x0.1 degrees. The data presented here is a post-processed subset of the full ERA5-Land dataset. Monthly-mean averages have been pre-calculated to facilitate many applications requiring easy and fast access to the data, when sub-monthly fields are not required. Hourly fields can be found in the ERA5-Land hourly fields CDS page. Documentation can be found in the online ERA5-Land documentation. Variables in the dataset/application are: | 10m u-component of wind, 10m v-component of wind, 2m dewpoint temperature, 2m temperature, Evaporation from bare soil, Evaporation from open water surfaces excluding oceans, Evaporation from the top of canopy, Evaporation from vegetation transpiration, Forecast albedo, Lake bottom temperature, Lake ice depth, Lake ice temperature, Lake mix-layer depth, Lake mix-layer temperature, Lake shape factor, Lake total layer temperature, Leaf area index, high vegetation, Leaf area index, low vegetation, Potential evaporation, Runoff, Skin reservoir content, Skin temperature, Snow albedo, Snow cover, Snow density, Snow depth, Snow depth water equivalent, Snow evaporation, Snowfall, Snowmelt, Soil temperature level 1, Soil temperature level 2, Soil temperature level 3, Soil temperature level 4, Sub-surface runoff, Surface latent heat flux, Surface net solar radiation, Surface net thermal radiation, Surface pressure, Surface runoff, Surface sensible heat flux, Surface solar radiation downwards, Surface thermal radiation downwards, Temperature of snow layer, Total evaporation, Total precipitation, Volumetric soil water layer 1, Volumetric soil water layer 2, Volumetric soil water layer 3, Volumetric soil water layer 4 ",ERA5,,ERA5,,"ECMWF,Reanalysis,ERA5,CDS,Atmospheric,land,monthly,evolution",ATMOSPHERIC,proprietary,ERA5-Land monthly averaged data from 1950 to present,1950-01-01T00:00:00Z,ERA5_LAND_MONTHLY,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +ERA5_PL,"ERA5 is the fifth generation ECMWF reanalysis for the global climate and weather for the past 4 to 7 decades. Currently data is available from 1950, split into Climate Data Store entries for 1950-1978 (preliminary back extension) and from 1979 onwards (final release plus timely updates, this page). ERA5 replaces the ERA-Interim reanalysis. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using the laws of physics. This principle, called data assimilation, is based on the method used by numerical weather prediction centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued. Reanalysis works in the same way, but at reduced resolution to allow for the provision of a dataset spanning back several decades. Reanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product. ERA5 provides hourly estimates for a large number of atmospheric, ocean-wave and land-surface quantities. An uncertainty estimate is sampled by an underlying 10-member ensemble at three-hourly intervals. Ensemble mean and spread have been pre-computed for convenience. Such uncertainty estimates are closely related to the information content of the available observing system which has evolved considerably over time. They also indicate flow-dependent sensitive areas. To facilitate many climate applications, monthly-mean averages have been pre-calculated too, though monthly means are not available for the ensemble mean and spread. ERA5 is updated daily with a latency of about 5 days. In case that serious flaws are detected in this early release (called ERA5T), this data could be different from the final release 2 to 3 months later. So far this has not been the case and when this does occur users will be notified. The data set presented here is a regridded subset of the full ERA5 data set on native resolution. It is online on spinning disk, which should ensure fast and easy access. It should satisfy the requirements for most common applications. An overview of all ERA5 datasets can be found in this article. Information on access to ERA5 data on native resolution is provided in these guidelines. Data has been regridded to a regular lat-lon grid of 0.25 degrees for the reanalysis and 0.5 degrees for the uncertainty estimate (0.5 and 1 degree respectively for ocean waves). There are four main sub sets: hourly and monthly products, both on pressure levels (upper air fields) and single levels (atmospheric, ocean-wave and land surface quantities). The present entry is ""ERA5 hourly data on pressure levels from 1979 to present"". Variables in the dataset/application are: Divergence, Fraction of cloud cover, Geopotential, Ozone mass mixing ratio, Potential vorticity, Relative humidity, Specific cloud ice water content, Specific cloud liquid water content, Specific humidity, Specific rain water content, Specific snow water content, Temperature, U-component of wind, V-component of wind, Vertical velocity, Vorticity (relative) ",ERA5,,ERA5,,"ECMWF,Reanalysis,ERA5,CDS,Atmospheric,land,sea,hourly,pressure,levels",ATMOSPHERIC,proprietary,ERA5 hourly data on pressure levels from 1940 to present,1940-01-01T00:00:00Z,ERA5_PL,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +ERA5_PL_MONTHLY,"ERA5 is the fifth generation ECMWF reanalysis for the global climate and weather for the past 8 decades. Data is available from 1940 onwards. ERA5 replaces the ERA-Interim reanalysis. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using the laws of physics. This principle, called data assimilation, is based on the method used by numerical weather prediction centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued. Reanalysis works in the same way, but at reduced resolution to allow for the provision of a dataset spanning back several decades. Reanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product. ERA5 provides hourly estimates for a large number of atmospheric, ocean-wave and land-surface quantities. An uncertainty estimate is sampled by an underlying 10-member ensemble at three-hourly intervals. Ensemble mean and spread have been pre-computed for convenience. Such uncertainty estimates are closely related to the information content of the available observing system which has evolved considerably over time. They also indicate flow-dependent sensitive areas. To facilitate many climate applications, monthly-mean averages have been pre-calculated too, though monthly means are not available for the ensemble mean and spread. ERA5 is updated daily with a latency of about 5 days (monthly means are available around the 6th of each month). In case that serious flaws are detected in this early release (called ERA5T), this data could be different from the final release 2 to 3 months later. So far this has only been the case for the month September 2021, while it will also be the case for October, November and December 2021. For months prior to September 2021 the final release has always been equal to ERA5T, and the goal is to align the two again after December 2021. ERA5 is updated daily with a latency of about 5 days (monthly means are available around the 6th of each month). In case that serious flaws are detected in this early release (called ERA5T), this data could be different from the final release 2 to 3 months later. In case that this occurs users are notified. The data set presented here is a regridded subset of the full ERA5 data set on native resolution. It is online on spinning disk, which should ensure fast and easy access. It should satisfy the requirements for most common applications. Data has been regridded to a regular lat-lon grid of 0.25 degrees for the reanalysis and 0.5 degrees for the uncertainty estimate (0.5 and 1 degree respectively for ocean waves). There are four main sub sets: hourly and monthly products, both on pressure levels (upper air fields) and single levels (atmospheric, ocean-wave and land surface quantities). ",ERA5,,ERA5,,"Climate,ECMWF,Reanalysis,ERA5,CDS,Atmospheric,land,sea,monthly,pressure,levels",ATMOSPHERIC,proprietary,ERA5 monthly averaged data on pressure levels from 1940 to present,1940-01-01T00:00:00Z,ERA5_PL_MONTHLY,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +ERA5_SL,"ERA5 is the fifth generation ECMWF reanalysis for the global climate and weather for the past 8 decades. Data is available from 1940 onwards. ERA5 replaces the ERA-Interim reanalysis. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using the laws of physics. This principle, called data assimilation, is based on the method used by numerical weather prediction centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued. Reanalysis works in the same way, but at reduced resolution to allow for the provision of a dataset spanning back several decades. Reanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product. ERA5 provides hourly estimates for a large number of atmospheric, ocean-wave and land-surface quantities. An uncertainty estimate is sampled by an underlying 10-member ensemble at three-hourly intervals. Ensemble mean and spread have been pre-computed for convenience. Such uncertainty estimates are closely related to the information content of the available observing system which has evolved considerably over time. They also indicate flow-dependent sensitive areas. To facilitate many climate applications, monthly-mean averages have been pre-calculated too, though monthly means are not available for the ensemble mean and spread. ERA5 is updated daily with a latency of about 5 days. In case that serious flaws are detected in this early release (called ERA5T), this data could be different from the final release 2 to 3 months later. In case that this occurs users are notified. The data set presented here is a regridded subset of the full ERA5 data set on native resolution. It is online on spinning disk, which should ensure fast and easy access. It should satisfy the requirements for most common applications. Data has been regridded to a regular lat-lon grid of 0.25 degrees for the reanalysis and 0.5 degrees for the uncertainty estimate (0.5 and 1 degree respectively for ocean waves). There are four main sub sets: hourly and monthly products, both on pressure levels (upper air fields) and single levels (atmospheric,ocean-wave and land surface quantities). ",ERA5,,ERA5,,"ECMWF,Reanalysis,ERA5,CDS,Atmospheric,land,sea,hourly,single,levels",ATMOSPHERIC,proprietary,ERA5 hourly data on single levels from 1940 to present,1940-01-01T00:00:00Z,ERA5_SL,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +ERA5_SL_MONTHLY,"ERA5 is the fifth generation ECMWF reanalysis for the global climate and weather for the past 8 decades. Data is available from 1940 onwards. ERA5 replaces the ERA-Interim reanalysis. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using the laws of physics. This principle, called data assimilation, is based on the method used by numerical weather prediction centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued. Reanalysis works in the same way, but at reduced resolution to allow for the provision of a dataset spanning back several decades. Reanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product. ERA5 provides hourly estimates for a large number of atmospheric, ocean-wave and land-surface quantities. An uncertainty estimate is sampled by an underlying 10-member ensemble at three-hourly intervals. Ensemble mean and spread have been pre-computed for convenience. Such uncertainty estimates are closely related to the information content of the available observing system which has evolved considerably over time. They also indicate flow-dependent sensitive areas. To facilitate many climate applications, monthly-mean averages have been pre-calculated too, though monthly means are not available for the ensemble mean and spread. ERA5 is updated daily with a latency of about 5 days (monthly means are available around the 6th of each month). In case that serious flaws are detected in this early release (called ERA5T), this data could be different from the final release 2 to 3 months later. In case that this occurs users are notified. The data set presented here is a regridded subset of the full ERA5 data set on native resolution. It is online on spinning disk, which should ensure fast and easy access. It should satisfy the requirements for most common applications. Data has been regridded to a regular lat-lon grid of 0.25 degrees for the reanalysis and 0.5 degrees for the uncertainty estimate (0.5 and 1 degree respectively for ocean waves). There are four main sub sets: hourly and monthly products, both on pressure levels (upper air fields) and single levels (atmospheric, ocean-wave and land surface quantities). ",ERA5,,ERA5,,"Climate,ECMWF,Reanalysis,ERA5,CDS,Atmospheric,land,sea,monthly,single,levels",ATMOSPHERIC,proprietary,ERA5 monthly averaged data on single levels from 1940 to present,1940-01-01T00:00:00Z,ERA5_SL_MONTHLY,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +FIRE_HISTORICAL,"This data set provides complete historical reconstruction of meteorological conditions favourable to the start, spread and sustainability of fires. The fire danger metrics provided are part of a vast dataset produced by the Copernicus Emergency Management Service for the European Forest Fire Information System (EFFIS). The European Forest Fire Information System incorporates the fire danger indices for three different models developed in Canada, United States and Australia. In this dataset the fire danger indices are calculated using weather forecast from historical simulations provided by ECMWF ERA5 reanalysis. ERA5 by combining model data and a vast set of quality controlled observations provides a globally complete and consistent data-set and is regarded as a good proxy for observed atmospheric conditions. The selected data records in this data set are regularly extended with time as ERA5 forcing data become available. This dataset is produced by ECMWF in its role of the computational centre for fire danger forecast of the CEMS, on behalf of the Joint Research Centre which is the managing entity of the service. Variables in the dataset/application are: Build-up index, Burning index, Danger rating, Drought code, Duff moisture code, Energy release component, Fine fuel moisture code, Fire daily severity index, Fire danger index, Fire weather index, Ignition component, Initial spread index, Keetch-Byram drought index, Spread component ",CEMS,,CEMS,,"ECMWF,EFFIS,fire,historical,ERA5,european,sustainability,CEMS,system",ATMOSPHERIC,proprietary,Fire danger indices historical data from the Copernicus Emergency Management Service,1940-01-03T00:00:00Z,FIRE_HISTORICAL,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +GLACIERS_DIST_RANDOLPH,"A glacier is defined as a perennial mass of ice, and possibly firn and snow, originating on the land surface from the recrystallization of snow or other forms of solid precipitation and showing evidence of past or present flow. There are several types of glaciers such as glacierets, mountain glaciers, valley glaciers and ice fields, as well as ice caps. Some glacier tongues reach into lakes or the sea, and can develop floating ice tongues or ice shelves. Glacier changes are recognized as independent and high-confidence natural indicators of climate change. Past, current and future glacier changes affect global sea level, the regional water cycle and local hazards.\nThis dataset is a snapshot of global glacier outlines compiled from\nmaps, aerial photographs and satellite images mostly acquired in the period 2000-2010. ",,,INSITU,,"ECMWF,WGMS,INSITU,CDS,C3S,glacier,randolph,distribution,inventory",ATMOSPHERIC,proprietary,Glaciers distribution data from the Randolph Glacier Inventory for year 2000,2000-01-01T00:00:00Z,GLACIERS_DIST_RANDOLPH,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +GLOFAS_FORECAST,"This dataset contains global modelled daily data of river discharge forced with meteorological forecasts. The data was produced by the Global Flood Awareness System (GloFAS), which is part of the Copernicus Emergency Management Service (CEMS). River discharge, or river flow as it is also known, is defined as the amount of water that flows through a river section at a given time. \nThis dataset is simulated by forcing a hydrological modelling chain with input from ECMWF ensemble forecast combined with the ECMWF extended-range ensemble forecast up to 30 days. Data availability for the GloFAS forecast is from 2019-11-05 up to near real time.\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours\n\nVariables in the dataset/application are:\nUpstream area ",CEMS,,CEMS,,"ECMWF,CEMS,GloFAS,forecast,river,discharge",ATMOSPHERIC,proprietary,River discharge and related forecasted data by the Global Flood Awareness System,2019-11-05T00:00:00Z,GLOFAS_FORECAST,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +GLOFAS_HISTORICAL,"This dataset contains global modelled daily data of river discharge from the Global Flood Awareness System (GloFAS), which is part of the Copernicus Emergency Management Service (CEMS). River discharge, or river flow as it is also known, is defined as the amount of water that flows through a river section at a given time. \nThis dataset is simulated by forcing a hydrological modelling chain with inputs from a global reanalysis. Data availability for the historical simulation is from 1979-01-01 up to near real time.\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours\n\nVariables in the dataset/application are:\nUpstream area ",CEMS,,CEMS,,"ECMWF,CEMS,GloFAS,historical,river,discharge",ATMOSPHERIC,proprietary,River discharge and related historical data from the Global Flood Awareness System,1979-01-01T00:00:00Z,GLOFAS_HISTORICAL,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +GLOFAS_REFORECAST,"This dataset provides a gridded modelled time series of river discharge, forced with medium- to sub-seasonal range meteorological reforecasts. The data is a consistent representation of a key hydrological variable across the global domain, and is a product of the Global Flood Awareness System (GloFAS). It is accompanied by an ancillary file for interpretation that provides the upstream area (see the related variables table and associated link in the documentation).\nThis dataset was produced by forcing a hydrological modelling chain with input from the European Centre for Medium-range Weather Forecasts (ECMWF) 11-member ensemble ECMWF-ENS reforecasts. Reforecasts are forecasts run over past dates, and those presented here are used for providing a suitably long time period against which the skill of the 30-day real-time operational forecast can be assessed. The reforecasts are initialised twice weekly with lead times up to 46 days, at 24-hour steps for 20 years in the recent history. For more specific information on the how the reforecast dataset is produced we refer to the documentation.\nCompanion datasets, also available through the Climate Data Store (CDS), are the operational forecasts, historical simulations that can be used to derive the hydrological climatology, and seasonal forecasts and reforecasts for users looking for long term forecasts. For users looking specifically for European hydrological data, we refer to the European Flood Awareness System (EFAS) forecasts and historical simulations. All these datasets are part of the operational flood forecasting within the Copernicus Emergency Management Service (CEMS).\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours\n\nVariables in the dataset/application are:\nUpstream area ",CEMS,,CEMS,,"ECMWF,CEMS,GloFAS,reforecast,river,discharge",ATMOSPHERIC,proprietary,Reforecasts of river discharge and related data by the Global Flood Awareness System,2003-03-27T00:00:00Z,GLOFAS_REFORECAST,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +GLOFAS_SEASONAL,"This dataset provides a gridded modelled time series of river discharge, forced with seasonal range meteorological forecasts. The data is a consistent representation of a key hydrological variable across the global domain, and is a product of the Global Flood Awareness System (GloFAS). It is accompanied by an ancillary file for interpretation that provides the upstream area (see the related variables table and associated link in the documentation).\nThis dataset was produced by forcing the LISFLOOD hydrological model at a 0.1° (~11 km at the equator) resolution with downscaled runoff forecasts from the European Centre for Medium-range Weather Forecasts (ECMWF) 51-member ensemble seasonal forecasting system, SEAS5. The forecasts are initialised on the first of each month with a 24-hourly time step, and cover 123 days.\nCompanion datasets, also available through the Climate Data Store (CDS), are the operational forecasts, historical simulations that can be used to derive the hydrological climatology, and medium-range and seasonal reforecasts. The latter dataset enables research, local skill assessment and post-processing of the seasonal forecasts. In addition, the seasonal reforecasts are also used to derive a specific range dependent climatology for the seasonal system. For users looking specifically for European hydrological data, we refer to the European Flood Awareness System (EFAS) forecasts and historical simulations. All these datasets are part of the operational flood forecasting within the Copernicus Emergency Management Service (CEMS).\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours\n\nVariables in the dataset/application are:\nUpstream area ",CEMS,,CEMS,,"ECMWF,CEMS,GloFAS,seasonal,forecast,river,discharge",ATMOSPHERIC,proprietary,Seasonal forecasts of river discharge and related data by the Global Flood Awareness System,2021-06-01T00:00:00Z,GLOFAS_SEASONAL,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +GLOFAS_SEASONAL_REFORECAST,"This dataset provides a gridded modelled time series of river discharge forced with seasonal range meteorological reforecasts. The data is a consistent representation of a key hydrological variable across the global domain, and is a product of the Global Flood Awareness System (GloFAS). It is accompanied by an ancillary file for interpretation that provides the upstream area (see the related variables table and associated link in the documentation).\nThis dataset was produced by forcing a hydrological modelling chain with input from the European Centre for Medium-range Weather Forecasts (ECMWF) ensemble seasonal forecasting system, SEAS5. For the period of 1981 to 2016 the number of ensemble members is 25, whilst reforecasts produced for 2017 onwards use a 51-member ensemble. Reforecasts are forecasts run over past dates, with those presented here used for producing the seasonal river discharge thresholds. In addition, they provide a suitably long time period against which the skill of the seasonal forecast can be assessed. The reforecasts are initialised monthly and run for 123 days, with a 24-hourly time step. For more specific information on the how the seasonal reforecast dataset is produced we refer to the documentation.\nCompanion datasets, also available through the Climate Data Store (CDS), include the seasonal forecasts, for which the dataset provided here can be useful for local skill assessment and post-processing. For users looking for shorter term forecasts there are also medium-range forecasts and reforecasts available, as well as historical simulations that can be used to derive the hydrological climatology. For users looking specifically for European hydrological data, we refer to the European Flood Awareness System (EFAS) forecasts and historical simulations. All these datasets are part of the operational flood forecasting within the Copernicus Emergency Management Service (CEMS).\n\nVariables in the dataset/application are:\nRiver discharge in the last 24 hours\n\nVariables in the dataset/application are:\nUpstream area"" ",CEMS,,CEMS,,"ECMWF,CEMS,GloFAS,seasonal,forecast,river,discharge",ATMOSPHERIC,proprietary,Seasonal reforecasts of river discharge and related data from the Global Flood Awareness System,1981-01-01T00:00:00Z,GLOFAS_SEASONAL_REFORECAST,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +GRIDDED_GLACIERS_MASS_CHANGE,"The dataset provides annual glacier mass changes distributed on a global regular grid at 0.5° resolution (latitude, longitude). Glaciers play a fundamental role in the Earth's water cycles. They are one of the most important freshwater resources for societies and ecosystems and the recent increase in ice melt contributes directly to the rise of ocean levels. Due to this they have been declared as an Essential Climate Variable (ECV) by GCOS, the Global Climate Observing System. Within the Copernicus Services, the global gridded annual glacier mass change dataset provides information on changing glacier resources by combining glacier change observations from the Fluctuations of Glaciers (FoG) database that is brokered from World Glacier Monitoring Service (WGMS). Previous glacier products were provided to the Copernicus Climate Change Service (C3S) Climate Data Store (CDS) as a homogenized state-of-the-art glacier dataset with separated elevation and mass change time series collected by scientists and the national correspondents of each country as provided to the WGMS (see Related data). The new approach combines glacier mass balances from in-situ observations with glacier elevation changes from remote sensing to generate a new gridded product of annual glacier mass changes and related uncertainties for every hydrological year since 1975/76 provided in a 0.5°x0.5° global regular grid. The dataset bridges the gap on spatio-temporal coverage of glacier change observations, providing for the first time in the CDS an annually resolved glacier mass change product using the glacier elevation change sample as calibration. This goal has become feasible at the global scale thanks to a new globally near-complete (96 percent of the world glaciers) dataset of glacier elevation change observations recently ingested by the FoG database. To develop the distributed glacier change product the glacier outlines were used from the Randolph Glacier Inventory 6.0 (see Related data). A glacier is considered to belong to a grid-point when its geometric centroid lies within the grid point. The centroid is obtained from the glacier outlines from the Randolph Glacier Inventory 6.0. The glacier mass changes in the unit Gigatonnes (1 Gt = 1x10^9 tonnes) correspond to the total mass of water lost/gained over the glacier surface during a given year. Note that to propagate to mm/cm/m of water column on the grid cell, the grid cell area needs to be considered. Also note that the data is provided for hydrological years, which vary between the Northern Hemisphere (01 October to 30 September next year) and the Southern Hemisphere (01 April to 31 March next year). This dataset has been produced by researchers at the WGMS on behalf of Copernicus Climate Change Service. Variables in the dataset/application are: Glacier mass change Variables in the dataset/application are: Uncertainty ",,,,,"ECMWF,WGMS,INSITU,CDS,C3S,glacier,randolph,mass,gridded",ATMOSPHERIC,proprietary,Glacier mass change gridded data from 1976 to present derived from the Fluctuations of Glaciers Database,1975-01-01T00:00:00Z,GRIDDED_GLACIERS_MASS_CHANGE,,,,,,,,,available,,,,,,,,,,,,,,,,available, +L57_REFLECTANCE,"Landsat 5,7,8 L2A data (old format) distributed by Theia (2014 to 2017-03-20) using MUSCATE prototype, Lamber 93 projection. ",LANDSAT,"OLI,TIRS","L5,L7,L8",L2A,"OLI,TIRS,LANDSAT,L5,L7,L8,L2,L2A,MUSCATE",OPTICAL,proprietary,"Landsat 5,7,8 Level-2A",2014-01-01T00:00:00Z,L57_REFLECTANCE,,,,,,,,,,,,,,,,,,,,,,available,,,, +L8_OLI_TIRS_C1L1,Landsat 8 Operational Land Imager and Thermal Infrared Sensor Collection 1 Level-1 products. Details at https://landsat.usgs.gov/sites/default/files/documents/LSDS-1656_Landsat_Level-1_Product_Collection_Definition.pdf ,LANDSAT8,"OLI,TIRS",L8,L1,"OLI,TIRS,LANDSAT,LANDSAT8,L8,L1,C1,COLLECTION1",OPTICAL,proprietary,Landsat 8 Level-1,2013-02-11T00:00:00Z,L8_OLI_TIRS_C1L1,,available,,,,,,,,,,,available,,,,,available,,,,,,,, +L8_REFLECTANCE,"Landsat 8 L2A data distributed by Theia since 2017-03-20 using operational version of MUSCATE, UTM projection, and tiled using Sentinel-2 tiles. ",LANDSAT8,"OLI,TIRS",L8,L2A,"OLI,TIRS,LANDSAT,LANDSAT8,L8,L2,L2A,MUSCATE",OPTICAL,proprietary,Landsat 8 Level-2A,2013-02-11T00:00:00Z,L8_REFLECTANCE,,,,,,,,,,,,,,,,,,,,,,available,,,, +LANDSAT_C2L1,The Landsat Level-1 product is a top of atmosphere product distributed as scaled and calibrated digital numbers. ,LANDSAT,"OLI,TIRS","L1,L2,L3,L4,L5,L6,L7,L8",L1,"OLI,TIRS,LANDSAT,L1,L2,L3,L4,L5,L6,L7,L8,C2,COLLECTION2",OPTICAL,proprietary,Landsat Collection 2 Level-1 Product,1972-07-25T00:00:00Z,LANDSAT_C2L1,available,,,,,,,,available,,,,,,,,,,,available,,,available,available,, +LANDSAT_C2L2,Collection 2 Landsat OLI/TIRS Level-2 Science Products (L2SP) include Surface Reflectance and Surface Temperature scene-based products. ,LANDSAT,"OLI,TIRS","L8,L9",L1,"OLI,TIRS,LANDSAT,L8,L9,L2,C2,COLLECTION2",OPTICAL,proprietary,Landsat OLI and TIRS Collection 2 Level-2 Science Products 30-meter multispectral data.,2013-02-11T00:00:00Z,LANDSAT_C2L2,,,,,,,,,available,,available,,,,,,,,,available,,,available,,, +LANDSAT_C2L2ALB_BT,"The Landsat Top of Atmosphere Brightness Temperature (BT) product is a top of atmosphere product with radiance calculated 'at-sensor', not atmospherically corrected, and expressed in units of Kelvin. ",LANDSAT,"OLI,TIRS","L4,L5,L7,L8",L2,"OLI,TIRS,LANDSAT,L4,L5,L7,L8,L2,BT,Brightness,Temperature,C2,COLLECTION2",OPTICAL,proprietary,Landsat Collection 2 Level-2 Albers Top of Atmosphere Brightness Temperature (BT) Product,1982-08-22T00:00:00Z,LANDSAT_C2L2ALB_BT,,,,,,,,,,,,,,,,,,,,,,,,available,, +LANDSAT_C2L2ALB_SR,The Landsat Surface Reflectance (SR) product measures the fraction of incoming solar radiation that is reflected from Earth's surface to the Landsat sensor. ,LANDSAT,"OLI,TIRS","L4,L5,L7,L8",L2,"OLI,TIRS,LANDSAT,L4,L5,L7,L8,L2,L2ALB,SR,Surface,Reflectance,C2,COLLECTION2",OPTICAL,proprietary,Landsat Collection 2 Level-2 Albers Surface Reflectance (SR) Product,1982-08-22T00:00:00Z,LANDSAT_C2L2ALB_SR,,,,,,,,,,,,,,,,,,,,,,,,available,, +LANDSAT_C2L2ALB_ST,The Landsat Surface Temperature (ST) product represents the temperature of the Earth's surface in Kelvin (K). ,LANDSAT,"OLI,TIRS","L4,L5,L7,L8",L2,"OLI,TIRS,LANDSAT,L4,L5,L7,L8,L2,L2ALB,Surface,Temperature,ST,C2,COLLECTION2",OPTICAL,proprietary,Landsat Collection 2 Level-2 Albers Surface Temperature (ST) Product,1982-08-22T00:00:00Z,LANDSAT_C2L2ALB_ST,,,,,,,,,,,,,,,,,,,,,,,,available,, +LANDSAT_C2L2ALB_TA,The Landsat Top of Atmosphere (TA) Reflectance product applies per pixel angle band corrections to the Level-1 radiance product. ,LANDSAT,"OLI,TIRS","L4,L5,L7,L8",L2,"OLI,TIRS,LANDSAT,L4,L5,L7,L8,L2,L2ALB,TA,Top,Atmosphere,Reflectance,C2,COLLECTION2",OPTICAL,proprietary,Landsat Collection 2 Level-2 Albers Top of Atmosphere (TA) Reflectance Product,1982-08-22T00:00:00Z,LANDSAT_C2L2ALB_TA,,,,,,,,,,,,,,,,,,,,,,,,available,, +LANDSAT_C2L2_SR,The Landsat Surface Reflectance (SR) product measures the fraction of incoming solar radiation that is reflected from Earth's surface to the Landsat sensor. ,LANDSAT,"OLI,TIRS","L4,L5,L7,L8",L2,"OLI,TIRS,LANDSAT,L4,L5,L7,L8,L2,SR,surface,reflectance,C2,COLLECTION2",OPTICAL,proprietary,Landsat Collection 2 Level-2 UTM Surface Reflectance (SR) Product,1982-08-22T00:00:00Z,LANDSAT_C2L2_SR,,,,,,,,,,,,,,,,,,,,,,,,available,, +LANDSAT_C2L2_ST,The Landsat Surface Temperature (ST) product represents the temperature of the Earth's surface in Kelvin (K). ,LANDSAT,"OLI,TIRS","L4,L5,L7,L8",L2,"OLI,TIRS,LANDSAT,L4,L5,L7,L8,L2,ST,surface,temperature,C2,COLLECTION2",OPTICAL,proprietary,Landsat Collection 2 Level-2 UTM Surface Temperature (ST) Product,1982-08-22T00:00:00Z,LANDSAT_C2L2_ST,,,,,,,,,,,,,,,,,,,,,,,,available,, +METOP_AMSU_L1,"The Advanced Microwave Sounding Unit-A (AMSU-A) is a 15-channel microwave radiometer that is used for measuring global atmospheric temperature profiles and will provide information on atmospheric water in all of its phases (with the exception of small ice particles, which are transparent at microwave frequencies). AMSU-A will provide information even in cloudy conditions. AMSU-A measures Earth radiance at frequencies (in GHz) as listed under the instrument channel information. ",METOP,AMSU-A,METOP,L1,"METOP,AMSU-A,SOUNDER,L1,L1B,WATER,ATHMOSPHERE,TEMPERATURE,AMSxxx1B,AMSUL1",SOUNDER,proprietary,AMSU-A Level 1B - Metop - Global,2008-03-01T00:00:00Z,METOP_AMSU_L1,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_ASCSZF1B,"The prime objective of the Advanced SCATterometer (ASCAT) is to measure wind speed and direction over the oceans, and the main operational application is the assimilation of ocean winds in NWP models. Other operational applications, based on the use of measurements of the backscattering coefficient, are sea ice edge detection and monitoring, monitoring sea ice, snow cover, soil moisture and surface parameters. This product consists of geo-located radar backscatter values along the six ASCAT beams. The different beam measurements are not collocated into a regular swath grid and the individual measurements are not spatially averaged. The resolution of each of the 255 backscatter values per each beam varies slightly along the beam, but it is approximately 10km (in the along beam direction) x 25 km (across the beam). This product is usually referred to as 'ASCAT Level 1B Full resolution product'. Note that some of the data are reprocessed. Please refer to the associated product validation reports or product release notes for further information. ",METOP,ASCAT,METOP,L1,"METOP,ASCAT,SCATTEROMETER,L1,OCEAN,RADAR-BACKSCATTER-NRCS,ASCSZF1B",SCATTEROMETER,proprietary,ASCAT Level 1 Sigma0 Full Resolution - Metop - Global,2007-05-31T00:00:00Z,METOP_ASCSZF1B,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_ASCSZFR02,"Reprocessed L1B data from the Advanced Scatterometer (ASCAT) on METOP-A, resampled at full resolution (SZF). Normalized radar cross section (NRCS) of the Earth surface together with measurement time, location (latitude and longitude) and geometrical information (incidence and azimuth angles). The prime objective of the Advanced SCATterometer (ASCAT) is to measure wind speed and direction over the oceans, and the main operational application is the assimilation of ocean winds in NWP models. Other operational applications, based on the use of measurements of the backscattering coefficient, are sea ice edge detection and monitoring, monitoring sea ice, snow cover, soil moisture and surface parameters. This product is also available at 12.5 and 25 km Swath Grids. This is a Fundamental Climate Data Record (FCDR). ",METOP,ASCAT,METOP,L1,"METOP,ASCAT,SCATTEROMETER,L1,CLIMATE,FUNDAMENTAL-CLIMATE-DATA-RECORD,ASCSZF1B0200,ASCSZFR02",SCATTEROMETER,proprietary,ASCAT Level 1 SZF Climate Data Record Release 2 - Metop,2007-01-01T00:00:00Z,METOP_ASCSZFR02,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_ASCSZO1B,"The prime objective of the Advanced SCATterometer (ASCAT) is to measure wind speed and direction over the oceans, and the main operational application is the assimilation of ocean winds in NWP models. Other operational applications, based on the use of measurements of the backscattering coefficient, are sea ice edge detection and monitoring, monitoring sea ice, snow cover, soil moisture and surface parameters. The product is available from the archive in 2 different spatial resolutions; 25 km and 12.5 km. Note that some of the data are reprocessed. Please refer to the associated product validation reports or product release notes for further information. Near real-time distribution discontinued on 29/09/2015 but the product contents are now available in the corresponding Level 2 product 'ASCAT Soil Moisture at 25 km Swath Grid'. ",METOP,ASCAT,METOP,L1,"METOP,ASCAT,SCATTEROMETER,L1,LAND,OCEAN,RADAR-BACKSCATTER-NRCS,ASCSZO1B",SCATTEROMETER,proprietary,ASCAT Level 1 Sigma0 resampled at 25 km Swath Grid - Metop - Global,2007-03-01T00:00:00Z,METOP_ASCSZO1B,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_ASCSZOR02,"Reprocessed L1B data from the Advanced Scatterometer (ASCAT) on METOP-A, resampled at 25 km Swath Grid (SZO). Normalized radar cross section (NRCS) triplets of the Earth surface together with measurement time, location (latitude and longitude) and geometrical information (incidence and azimuth angles). The prime objective of the Advanced SCATterometer (ASCAT) is to measure wind speed and direction over the oceans, and the main operational application is the assimilation of ocean winds in NWP models. Other operational applications, based on the use of measurements of the backscattering coefficient, are sea ice edge detection and monitoring, monitoring sea ice, snow cover, soil moisture and surface parameters. This product is also available at full resolution and at 12.5 km Swath Grid. This is a Fundamental Climate Data Record (FCDR). ",METOP,ASCAT,METOP,L1,"METOP,ASCAT,SCATTEROMETER,L1,CLIMATE,FUNDAMENTAL-CLIMATE-DATA-RECORD,ASCSZOR02,ASCSZO1B0200",SCATTEROMETER,proprietary,ASCAT Level 1 SZO Climate Data Record Release 2 - Metop,2007-01-01T00:00:00Z,METOP_ASCSZOR02,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_ASCSZR1B,"The prime objective of the Advanced SCATterometer (ASCAT) is to measure wind speed and direction over the oceans, and the main operational application is the assimilation of ocean winds in NWP models. Other operational applications, based on the use of measurements of the backscattering coefficient, are sea ice edge detection and monitoring, monitoring sea ice, snow cover, soil moisture and surface parameters. The product is available from the archive in 2 different spatial resolutions; 25 km and 12.5 km. Note that some of the data are reprocessed. Please refer to the associated product validation reports or product release notes for further information. Near real-time distribution discontinued on 29/09/2015 but the product contents are now available in the corresponding Level 2 product 'ASCAT Soil Moisture at 12.5 km Swath Grid'. ",METOP,ASCAT,METOP,L1,"METOP,ASCAT,SCATTEROMETER,L1,LAND,OCEAN,RADAR-BACKSCATTER-NRCS,ASCSZR1B",SCATTEROMETER,proprietary,ASCAT Level 1 Sigma0 resampled at 12.5 km Swath Grid - Metop - Global,2007-03-01T00:00:00Z,METOP_ASCSZR1B,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_ASCSZRR02,"Reprocessed L1B data from the Advanced Scatterometer (ASCAT) on METOP-A, resampled at 12.5 km Swath Grid (SZR). Normalized radar cross section (NRCS) triplets of the Earth surface together with measurement time, location (latitude and longitude) and geometrical information (incidence and azimuth angles). The prime objective of the Advanced SCATterometer (ASCAT) is to measure wind speed and direction over the oceans, and the main operational application is the assimilation of ocean winds in NWP models. Other operational applications, based on the use of measurements of the backscattering coefficient, are sea ice edge detection and monitoring, monitoring sea ice, snow cover, soil moisture and surface parameters. This product is also available at full resolution and at 25 km Swath Grid. This is a Fundamental Climate Data Record (FCDR). ",METOP,ASCAT,METOP,L1,"METOP,ASCAT,SCATTEROMETER,L1,CLIMATE,FUNDAMENTAL-CLIMATE-DATA-RECORD,ASCSZR1B0200,ASCSZRR02",SCATTEROMETER,proprietary,ASCAT Level 1 SZR Climate Data Record Release 2 - Metop,2007-01-01T00:00:00Z,METOP_ASCSZRR02,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_AVHRRGACR02,"This is the second release of the reprocessed polar Atmospheric Motion Vectors (AMV) Thematic Climate Data Record (TCDR) from the Advanced Very High Resolution Radiometer (AVHRR) in Global Area Coverage (GAC), from TIROS-N, NOAA-06, 07, 08, 09, 10, 11, 12, 14, 15, 16, 17, 18 and 19 and Metop-A and -B. It contains AMVs at all heights below the tropopause, derived from images in the Infrared channel at 10.8 microns. Vectors are retrieved by tracking the motion of clouds in two consecutive images. The height assignment of the AMVs is calculated using the Cross-Correlation Contribution (CCC) function to determine the height using the pixels that contribute the most to the vectors. A quality indicator is derived for each vector to assess the reliability of the retrieval. Products are stored in netCDF4 format and cover the period from January 1979 to September 2019. This is a Thematic Climate Data Record (TCDR). ","METOP,TIROS,NOAA",AVHRR,"METOP,TIROS,NOAA",L2,"METOP,AVHRR,RADIOMETER,L2,WIND,CLIMATE,ATMOSPHERE,THEMATIC-CLIMATE-DATA-RECORD,AVHGAC020200",RADIOMETER,proprietary,AVHRR GAC Atmospheric Motion Vectors Climate Data Record Release 2 - Multimission - Polar,1979-01-01T00:00:00Z,METOP_AVHRRGACR02,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_AVHRRL1,"The Advanced Very High Resolution Radiometer (AVHRR) operates at 5 different channels simultaneously in the visible and infrared bands, with wavelengths specified in the instrument channels description. Channel 3 switches between 3a and 3b for daytime and nighttime. As a high-resolution imager (about 1.1 km near nadir) its main purpose is to provide cloud and surface information such as cloud coverage, cloud top temperature, surface temperature over land and sea, and vegetation or snow/ice. In addition, AVHRR products serve as input for the level 2 processing of IASI and ATOVS. ",METOP,AVHRR,METOP,L1,"METOP,AVHRR,RADIOMETER,L1,ATMOSPHERE,OCEAN,AVHXXX1B,AVHRRL1",RADIOMETER,proprietary,AVHRR Level 1B - Metop - Global,2008-03-01T00:00:00Z,METOP_AVHRRL1,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_GLB_SST_NC,Global Metop/AVHRR sub-skin Sea Surface Temperature (GBL SST) is a 12 hourly synthesis on a 0.05° global grid. The product format is compliant with the Data Specification (GDS) version 2 from the Group for High Resolution Sea Surface Temperatures (GHRSST). ,METOP,AVHRR,METOP,L3,"METOP,AVHRR,RADIOMETER,L3,OCEAN,SEA-SURFACE-TEMPERATURE,OSSTGLBN,OSI-201-B,GLB-SST,OSSTGLB",RADIOMETER,proprietary,Global L3C AVHRR Sea Surface Temperature (GHRSST) - Metop,2016-07-12T00:00:00Z,METOP_GLB_SST_NC,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_GOMEL1,"The Global Ozone Monitoring Experiment-2 (GOME-2) spectrometer measures profiles and total columns of ozone and of other atmospheric constituents that are related to the depletion of ozone in the stratosphere and its production in the troposphere, as well as to natural and anthropogenic sources of pollution. ",METOP,GOME-2,METOP,L1,"METOP,GOME-2,SPECTROMETER,L1,ATMOSPHERE,GOMEL1,GOMXXX1B",SPECTROMETER,proprietary,GOME-2 Level 1B - Metop - Global,2007-01-01T00:00:00Z,METOP_GOMEL1,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_GOMEL1R03,This is release 3 of the Global Ozone Monitoring Experiment 2 (GOME-2) Level 1B Fundamental Data Record from Metop-A and -B. GOME-2 is an optical spectrometer. GOME-2 senses the Earth's backscattered radiance and extra-terrestrial solar irradiance in the ultraviolet and visible part of the spectrum (240 nm - 790 nm) at a high spectral resolution between 0.26 nm and 0.51 nm. There are 4096 spectral points from four detector channels transferred for each individual GOME-2 measurement. This is a Fundamental Data Record (FDR). Disclaimer: GOME2-A channel 3 should be careful to use for the period: April 2007 until March 2009 when doing DOAS retrievals. ,METOP,GOME-2,METOP,L1,"METOP,GOME-2,SPECTROMETER,L1,CLIMATE,FUNDAMENTAL-DATA-RECORD,FDR,CLOUDS,ATMOSPHERE,RADIATION,GOMXXX1B0300",SPECTROMETER,proprietary,GOME-2 Level 1B Fundamental Data Record Release 3 - Metop-A and -B,2007-04-01T00:00:00Z,METOP_GOMEL1R03,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_HIRSL1,"The High Resolution Infrared Sounder (HIRS) operates at 20 channels (19 channels in the infrared and one in the visible). Its main purpose is to provide input for the vertical temperature and humidity profile retrievals. In addition, the HIRS pixel resolution serves as the standard grid resolution for all ATOVS level 2 products. ",METOP,HIRS,METOP,L1,"METOP,HIRS,SOUNDER,L1,L1B,ATMOSPHERE,HIRxxx1B,HIRSL1",SOUNDER,proprietary,HIRS Level 1B - Metop - Global,2009-03-23T00:00:00Z,METOP_HIRSL1,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_IASIL1C_ALL,"This product covers all spectral samples. The main objective of the Infrared Atmospheric Sounding Interferometer (IASI) is to provide high resolution atmospheric emission spectra to derive temperature and humidity profiles with high spectral and vertical resolution and accuracy. Additionally it is used for the determination of trace gases such as ozone, nitrous oxide, carbon dioxide and methane, as well as land and sea surface temperature, emissivity and cloud properties. The IASI L1c product contains infra-red radiance spectra at 0.5cm-1 resolution. The EUMETCast product has for each sounder pixel 8461 spectral samples covering the range between 645.0 cm-1 and 2760 cm-1. ",METOP,IASI,METOP,L1,"METOP,IASI,INTERFEROMETER,L1,L1C,ATMOSPHERE,IASIL1C-ALL,IASxxx1C",INTERFEROMETER,proprietary,IASI Level 1C - All Spectral Samples - Metop - Global,2009-03-23T00:00:00Z,METOP_IASIL1C_ALL,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_IASSND02,"The main objective of the Infrared Atmospheric Sounding Interferometer (IASI) is to provide high resolution atmospheric emission spectra to derive temperature and humidity profiles with high spectral and vertical resolution and accuracy. Additionally, it is used for the determination of trace gases such as ozone, as well as land and sea surface temperature, emissivity and cloud properties. This combined product (IASI Atmospheric Temperature Water Vapour and Surface Skin Temperature; IASI Cloud Parameters; IASI Ozone and IASI Trace Gases contains temperature Profiles, Humidity Profiles, Surface Temperature, Surface Emissivity, Fractional Cloud Cover, Cloud Top Temperature, Cloud Top Pressure, Cloud Phase, Total Column Ozone, Columnar ozone amounts in thick layers, Total column N2O, CO, CH4, CO2 - all combined in one product. ",METOP,IASI,METOP,L2,"METOP,IASI,INTERFEROMETER,L2,CLIMATE,TEMPERATURE,ATMOSPHERE,HUMIDITY,IASSND02",INTERFEROMETER,proprietary,IASI Combined Sounding Products - Metop,2008-02-13T00:00:00Z,METOP_IASSND02,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_IASTHR011,"This is the release 1.1 of the climate data record of ""all-sky"" temperature and humidity profiles and their associated quality parameters. The CDR was processed using the latest operational EUMETSAT algorithms available (V6.5.4, 12/2019). It consists of the outputs of the statistical retrieval module Piece Wise Linear Regression only. This provides a homogeneous CDR throughout the time period. On the 8 August 2023, year 2022 was added to the CDR. This is a Thematic Climate Data Record (TCDR). ",METOP,IASI,METOP,L2,"METOP,IASI,INTERFEROMETER,L2,CLIMATE,TEMPERATURE,ATMOSPHERE,HUMIDITY,LAND-SURFACE-TEMPERATURE,THEMATIC-CLIMATE-DATA-RECORD,SEA-SURFACE-TEMPERATURE,IASTHPW30101",INTERFEROMETER,proprietary,IASI All Sky Temperature and Humidity Profiles - Climate Data Record Release 1.1 - Metop-A and -B,2007-07-10T00:00:00Z,METOP_IASTHR011,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_LSA_002,"The EDLST (EPS Daily Land Surface Temperature) provides a composite of day-time and nigh-time retrievals of LST based on clear-sky measurements from the Advanced Very High Resolution Radiometer (AVHRR) on-board EUMETSAT polar system satellites, the Metop series. ",METOP,AVHRR,METOP,L3,"METOP,AVHRR,RADIOMETER,L3,LAND-SURFACE-TEMPERATURE,SURFACE-RADIATION-BUDGET,LAND,EDLST,LSA-002",RADIOMETER,proprietary,Daily Land Surface Temperature - Metop,2015-01-01T00:00:00Z,METOP_LSA_002,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_MHSL1,"The Microwave Humidity Sounder (MHS) is a 5 channel instrument used to provide input to the retrieval of surface temperatures, emissivities, and atmospheric humidity. In combination with AMSU-A information it can also be used to process precipitation rates and related cloud properties, as well as to detect sea ice and snow coverage. ",METOP,MHS,METOP,L1,"METOP,MHS,SOUNDER,L1,L1B,ATMOSPHERE,MHSxxx1B,MHSL1",SOUNDER,proprietary,MHS Level 1B - Metop - Global,2009-03-23T00:00:00Z,METOP_MHSL1,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_OSI_104,"Equivalent neutral 10m winds over the global oceans, with specific sampling to provide as many observations as possible near the coasts. Better than using this archived NRT product, please use the reprocessed ASCAT winds data records (METOP_OSI_150A, METOP_OSI_150B). For Metop-A, t is recommended that the reprocessed ASCAT winds data records (10.15770/EUM_SAF_OSI_0007) are used instead of this archived NRT product for the period before 1 April 2014. ",METOP,ASCAT,METOP,L2,"METOP,ASCAT,SCATTEROMETER,L2,WEATHER,OCEAN-SURFACE-WIND,OCEAN,RADAR-BACKSCATTER-NRCS,OSI-104,ASCAT12+,OSI-104-C,OSI-104-B,OASWC12",SCATTEROMETER,proprietary,ASCAT Coastal Winds at 12.5 km Swath Grid - Metop,2013-04-16T00:00:00Z,METOP_OSI_104,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_OSI_150A,The ASCAT Wind Product contains stress equivalent 10m winds (speed and direction) over the global oceans. The winds are obtained through the processing of reprocessed scatterometer backscatter data originating from the ASCAT instrument on EUMETSAT's Metop satellite. ,METOP,ASCAT,METOP,L2,"METOP,ASCAT,SCATTEROMETER,L2,WEATHER,OCEAN-SURFACE-WIND,OCEAN,RADAR-BACKSCATTER-NRCS,OSI-150-A,OR1ASW025,REPASC25",SCATTEROMETER,proprietary,ASCAT L2 25 km Winds Data Record Release 1 - Metop,2007-01-01T00:00:00Z,METOP_OSI_150A,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_OSI_150B,The ASCAT Wind Product contains stress equivalent 10m winds (speed and direction) over the global oceans. The winds are obtained through the processing of reprocessed scatterometer backscatter data originating from the ASCAT instrument on EUMETSAT's Metop satellite. ,METOP,ASCAT,METOP,L2,"METOP,ASCAT,SCATTEROMETER,L2,WEATHER,OCEAN-SURFACE-WIND,OCEAN,RADAR-BACKSCATTER-NRCS,OSI-150-B,OR1ASWC12,REPASC12+",SCATTEROMETER,proprietary,ASCAT L2 12.5 km Winds Data Record Release 1 - Metop,2007-01-01T00:00:00Z,METOP_OSI_150B,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_SOMO12,"The Soil Moisture (SM) product is derived from the Advanced SCATterometer (ASCAT) backscatter observations and given in swath orbit geometry (12.5 km sampling). This SM product provides an estimate of the water content of the 0-5 cm topsoil layer, expressed in degree of saturation between 0 and 100 [%]. The algorithm used to derive this parameter is based on a linear relationship of SM and scatterometer backscatter and uses change detection techniques to eliminate the contributions of vegetation, land cover and surface topography, considered invariant from year to year. Seasonal vegetation effects are modelled by exploiting the multi-angle viewing capabilities of ASCAT. The SM processor has been developed by Vienna University of Technology (TU Wien). Note that some of the data are reprocessed. Please refer to the associated product validation reports or product release notes for further information. ",METOP,ASCAT,METOP,L2,"METOP,ASCAT,SCATTEROMETER,L2,LAND,SOIL-MOISTURE,SOMO12,ASCSMR02,SSM-ASCAT-C-NRT-O12.5,H101,H16,H104",SCATTEROMETER,proprietary,ASCAT Soil Moisture at 12.5 km Swath Grid in NRT - Metop,2007-06-01T00:00:00Z,METOP_SOMO12,,,,,,,,,,,,,,,available,,,,,,,,,,, +METOP_SOMO25,"The Soil Moisture (SM) product is derived from the Advanced SCATterometer (ASCAT) backscatter observations and given in swath orbit geometry (25 km sampling). This SM product provides an estimate of the water content of the 0-5 cm topsoil layer, expressed in degree of saturation between 0 and 100 [%]. The algorithm used to derive this parameter is based on a linear relationship of SM and scatterometer backscatter and uses change detection techniques to eliminate the contributions of vegetation, land cover and surface topography, considered invariant from year to year. Seasonal vegetation effects are modelled by exploiting the multi-angle viewing capabilities of ASCAT. The SM processor has been developed by Vienna University of Technology (TU Wien). Note that some of the data are reprocessed. Please refer to the associated product validation reports or product release notes for further information. ",METOP,ASCAT,METOP,L2,"METOP,ASCAT,SCATTEROMETER,L2,LAND,SOIL-MOISTURE,ASCSMO02,H102,H103,SOMO25,H105,SSM-ASCAT-C-NRT-O25",SCATTEROMETER,proprietary,ASCAT Soil Moisture at 25 km Swath Grid in NRT - Metop,2007-06-01T00:00:00Z,METOP_SOMO25,,,,,,,,,,,,,,,available,,,,,,,,,,, +MODIS_MCD43A4,"The MODerate-resolution Imaging Spectroradiometer (MODIS) Reflectance product MCD43A4 provides 500 meter reflectance data adjusted using a bidirectional reflectance distribution function (BRDF) to model the values as if they were taken from nadir view. The MCD43A4 product contains 16 days of data provided in a level-3 gridded data set in Sinusoidal projection. Both Terra and Aqua data are used in the generation of this product, providing the highest probability for quality assurance input data. It is designated with a shortname beginning with MCD, which is used to refer to 'combined' products, those comprised of data using both Terra and Aqua. ",Terra+Aqua,MODIS,EOS AM-1+PM-1,L3,"MODIS,Terra,Aqua,EOS,AM-1+PM-1,L3,MCD43A4",OPTICAL,proprietary,MODIS MCD43A4,2000-03-05T00:00:00Z,MODIS_MCD43A4,available,available,,,,,,,,,,,,,,,,,,available,,,,,, +MO_GLOBAL_ANALYSISFORECAST_BGC_001_028,"The Operational Mercator Ocean biogeochemical global ocean analysis and forecast system at 1/4 degree is providing 10 days of 3D global ocean forecasts updated weekly. The time series is aggregated in time, in order to reach a two full year's time series sliding window. This product includes daily and monthly mean files of biogeochemical parameters (chlorophyll, nitrate, phosphate, silicate, dissolved oxygen, dissolved iron, primary production, phytoplankton, PH, and surface partial pressure of carbon dioxyde) over the global ocean. The global ocean output files are displayed with a 1/4 degree horizontal resolution with regular longitude/latitude equirectangular projection. 50 vertical levels are ranging from 0 to 5700 meters. + NEMO version (v3.6_STABLE) + Forcings: GLOBAL_ANALYSIS_FORECAST_PHYS_001_024 at daily frequency. + Outputs mean fields are interpolated on a standard regular grid in NetCDF format. + Initial conditions: World Ocean Atlas 2013 for nitrate, phosphate, silicate and dissolved oxygen, GLODAPv2 for DIC and Alkalinity, and climatological model outputs for Iron and DOC + Quality/Accuracy/Calibration information: See the related QuID[http://catalogue.marine.copernicus.eu/documents/QUID/CMEMS-GLO-QUID-001-028.pdf] DOI (product): https://doi.org/10.48670/moi-00015 ",,,,L4,"CMEMS,Mercator,ocean,global,analysis,forecast,marine,biogeochemical,biogeochemistry",,proprietary,Global Ocean Biogeochemistry Analysis and Forecast,2021-10-01T00:00:00Z,MO_GLOBAL_ANALYSISFORECAST_BGC_001_028,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_GLOBAL_ANALYSISFORECAST_PHY_001_024,"The Operational Mercator global ocean analysis and forecast system at 1/12 degree is providing 10 days of 3D global ocean forecasts updated daily. The time series is aggregated in time in order to reach a two full year's time series sliding window. This product includes daily and monthly mean files of temperature, salinity, currents, sea level, mixed layer depth and ice parameters from the top to the bottom over the global ocean. It also includes hourly mean surface fields for sea level height, temperature and currents. The global ocean output files are displayed with a 1/12 degree horizontal resolution with regular longitude/latitude equirectangular projection. 50 vertical levels are ranging from 0 to 5500 meters. This product also delivers a special dataset for surface current which also includes wave and tidal drift called SMOC (Surface merged Ocean Current). DOI (product) : https://doi.org/10.48670/moi-00016 ",,,,L4,"CMEMS,Mercator,ocean,global,analysis,forecast,marine,physics",,proprietary,Global Ocean Physics Analysis and Forecast,2019-01-01T00:00:00Z,MO_GLOBAL_ANALYSISFORECAST_PHY_001_024,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_GLOBAL_ANALYSISFORECAST_WAV_001_027,"The operational global ocean analysis and forecast system of Météo-France with a resolution of 1/12 degree is providing daily analyses and 10 days forecasts for the global ocean sea surface waves. This product includes 3-hourly instantaneous fields of integrated wave parameters from the total spectrum (significant height, period, direction, Stokes drift,...etc), as well as the following partitions: the wind wave, the primary and secondary swell waves. The global wave system of Météo-France is based on the wave model MFWAM which is a third generation wave model. MFWAM uses the computing code ECWAM-IFS-38R2 with a dissipation terms developed by Ardhuin et al. (2010). The model MFWAM was upgraded on november 2014 thanks to improvements obtained from the european research project « my wave » (Janssen et al. 2014). The model mean bathymetry is generated by using 2-minute gridded global topography data ETOPO2/NOAA. Native model grid is irregular with decreasing distance in the latitudinal direction close to the poles. At the equator the distance in the latitudinal direction is more or less fixed with grid size 1/10°. The operational model MFWAM is driven by 6-hourly analysis and 3-hourly forecasted winds from the IFS-ECMWF atmospheric system. The wave spectrum is discretized in 24 directions and 30 frequencies starting from 0.035 Hz to 0.58 Hz. The model MFWAM uses the assimilation of altimeters with a time step of 6 hours. The global wave system provides analysis 4 times a day, and a forecast of 10 days at 0:00 UTC. The wave model MFWAM uses the partitioning to split the swell spectrum in primary and secondary swells. DOI (product) : https://doi.org/10.48670/moi-00017 ",,,,L4,"CMEMS,Mercator,ocean,global,analysis,forecast,marine,waves,surface",,proprietary,Global Ocean Waves Analysis and Forecast,2021-01-01T00:00:00Z,MO_GLOBAL_ANALYSISFORECAST_WAV_001_027,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_GLOBAL_MULTIYEAR_BGC_001_033,"The Low and Mid-Trophic Levels (LMTL) reanalysis for global ocean is produced at [https://www.cls.fr CLS] on behalf of Global Ocean Marine Forecasting Center. It provides 2D fields of biomass content of zooplankton and six functional groups of micronekton. It uses the LMTL component of SEAPODYM dynamical population model (http://www.seapodym.eu). No data assimilation has been done. This product also contains forcing data: net primary production, euphotic depth, depth of each pelagic layers zooplankton and micronekton inhabit, average temperature and currents over pelagic layers. Forcings sources: + Ocean currents and temperature (CMEMS multiyear product) + Net Primary Production computed from chlorophyll a, Sea Surface Temperature and Photosynthetically Active Radiation observations (chlorophyll from CMEMS multiyear product, SST from NOAA NCEI AVHRR-only Reynolds, PAR from INTERIM) and relaxed by model outputs at high latitudes (CMEMS biogeochemistry multiyear product) Vertical coverage: + Epipelagic layer + Upper mesopelagic layer + Lower mesopelagic layer (max. 1000m) DOI (product) : https://doi.org/10.48670/moi-00020 ",,,,L4,"CMEMS,Mercator,ocean,global,hindcast,marine,biomass,LMTL",,proprietary,Global ocean low and mid trophic levels biomass content hindcast,1998-01-01T00:00:00Z,MO_GLOBAL_MULTIYEAR_BGC_001_033,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_GLOBAL_MULTIYEAR_PHY_ENS_001_031,"You can find here the CMEMS Global Ocean Ensemble Reanalysis product at ¼ degree resolution: monthly means of Temperature, Salinity, Currents and Ice variables for 75 vertical levels, starting from 1993 onward.\n \nGlobal ocean reanalyses are homogeneous 3D gridded descriptions of the physical state of the ocean covering several decades, produced with a numerical ocean model constrained with data assimilation of satellite and in situ observations. These reanalyses are built to be as close as possible to the observations (i.e. realistic) and in agreement with the model physics The multi-model ensemble approach allows uncertainties or error bars in the ocean state to be estimated.\n\nThe ensemble mean may even provide for certain regions and/or periods a more reliable estimate than any individual reanalysis product.\n\nThe four reanalyses, used to create the ensemble, covering “altimetric era” period (starting from 1st of January 1993) during which altimeter altimetry data observations are available:\n GLORYS2V4 from Mercator Ocean (Fr); \n ORAS5 from ECMWF;\n GloSea5 from Met Office (UK);\n and C-GLORSv7 from CMCC (It);\n \nThese four products provided four different time series of global ocean simulations 3D monthly estimates. All numerical products available for users are monthly or daily mean averages describing the ocean. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00024 ",,,,L4,"CMEMS,Mercator,ocean,global,ensemble,multiyear,reanalysis,temperature,currents,salinity,ice,physics",,proprietary,Global Ocean Ensemble Physics Reanalysis,1993-01-01T00:00:00Z,MO_GLOBAL_MULTIYEAR_PHY_ENS_001_031,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_GLOBAL_MULTIYEAR_WAV_001_032,"GLOBAL_REANALYSIS_WAV_001_032 for the global wave reanalysis describing past sea states since years 1993. This product also bears the name of WAVERYS within the GLO-HR MFC. for correspondence to other global multi-year products like GLORYS. BIORYS. etc. The core of WAVERYS is based on the MFWAM model. a third generation wave model that calculates the wave spectrum. i.e. the distribution of sea state energy in frequency and direction on a 1/5° irregular grid. Average wave quantities derived from this wave spectrum, such as the SWH (significant wave height) or the average wave period, are delivered on a regular 1/5° grid with a 3h time step. The wave spectrum is discretized into 30 frequencies obtained from a geometric sequence of first member 0.035 Hz and a reason 7.5. WAVERYS takes into account oceanic currents from the GLORYS12 physical ocean reanalysis and assimilates significant wave height observed from historical altimetry missions and directional wave spectra from Sentinel 1 SAR from 2017 onwards. DOI (product): https://doi.org/10.48670/moi-00022 ",,,,L4,"CMEMS,Mercator,ocean,reanalysis,forecast,marine,waves,WAVERYS",,proprietary,Global Ocean Waves Reanalysis,1993-01-01T00:00:00Z,MO_GLOBAL_MULTIYEAR_WAV_001_032,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_INSITU_GLO_PHY_TS_OA_MY_013_052,"Global Ocean- Gridded objective analysis fields of temperature and salinity using profiles from the reprocessed in-situ global product CORA (INSITU_GLO_TS_REP_OBSERVATIONS_013_001_b) using the ISAS software. Objective analysis is based on a statistical estimation method that allows presenting a synthesis and a validation of the dataset, providing a validation source for operational models, observing seasonal cycle and inter-annual variability.\n\n**DOI (product):** \nhttps://doi.org/10.17882/46219 ",,,,L4,"CMEMS,Mercator,ocean,insitu,delayed,gridded,global,L4,analysis,temperature,salinity,CORA",,proprietary,Global Ocean- Delayed Mode gridded CORA- In-situ Observations objective analysis in Delayed Mode,1960-01-01T00:00:00Z,MO_INSITU_GLO_PHY_TS_OA_MY_013_052,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_INSITU_GLO_PHY_TS_OA_NRT_013_002,"For the Global Ocean- Gridded objective analysis fields of temperature and salinity using profiles from the in-situ near real time database are produced monthly. Objective analysis is based on a statistical estimation method that allows presenting a synthesis and a validation of the dataset, providing a support for localized experience (cruises), providing a validation source for operational models, observing seasonal cycle and inter-annual variability. \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00037 ",,,,L4,"CMEMS,Mercator,ocean,insitu,NRT,gridded,monthly,global,L4,analysis",,proprietary,Global Ocean- Real time in-situ observations objective analysis,2015-01-01T00:00:00Z,MO_INSITU_GLO_PHY_TS_OA_NRT_013_002,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_INSITU_GLO_PHY_UV_DISCRETE_NRT_013_048,"This product is entirely dedicated to ocean current data observed in near-real time. Current data from 3 different types of instruments are distributed:\n The near-surface zonal and meridional velocities calculated along the trajectories of the drifting buoys which are part of the DBCP's Global Drifter Program. These data are delivered together with wind stress components and surface temperature. \n The near-surface zonal and meridional total velocities, and near-surface radial velocities, measured by High Frequency radars that are part of the European High Frequency radar Network. These data are delivered together with standard deviation of near-surface zonal and meridional raw velocities, Geometrical Dilution of Precision (GDOP), quality flags and metadata.\n The zonal and meridional velocities, at parking depth and in surface, calculated along the trajectories of the floats which are part of the Argo Program.\n\nDOI (product):\nhttps://doi.org/10.48670/moi-00041 ",,,,Level 2,"CMEMS,Mercator,ocean,insitu,NRT,currents,global,L2",,proprietary,Global Ocean- in-situ Near real time observations of ocean currents,1997-01-01T00:00:00Z,MO_INSITU_GLO_PHY_UV_DISCRETE_NRT_013_048,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_MULTIOBS_GLO_BGC_NUTRIENTS_CARBON_PROFILES_MYNRT_015_009,"This product consists of vertical profiles of the concentration of nutrients (nitrates, phosphates, and silicates) and carbonate system variables (total alkalinity, dissolved inorganic carbon, pH, and partial pressure of carbon dioxide), computed for each Argo float equipped with an oxygen sensor.\nThe method called CANYON (Carbonate system and Nutrients concentration from hYdrological properties and Oxygen using a Neural-network) is based on a neural network trained using high-quality nutrient data collected over the last 30 years (GLODAPv2 database, https://www.glodap.info/). The method is applied to each Argo float equipped with an oxygen sensor using as input the properties measured by the float (pressure, temperature, salinity, oxygen), and its date and position.\n\nProduct Citation: Please refer to our Technical FAQ for citing products: http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169.\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00048\n\nReferences:\n\n Sauzede R., H. C. Bittig, H. Claustre, O. Pasqueron de Fommervault, J.-P. Gattuso, L. Legendre and K. S. Johnson, 2017: Estimates of Water-Column Nutrient Concentrations and Carbonate System Parameters in the Global Ocean: A novel Approach Based on Neural Networks. Front. Mar. Sci. 4:128. doi: 10.3389/fmars.2017.00128.\n Bittig H. C., T. Steinhoff, H. Claustre, B. Fiedler, N. L. Williams, R. Sauzède, A. Körtzinger and J.-P. Gattuso,2018: An Alternative to Static Climatologies: Robust Estimation of Open Ocean CO2 Variables and Nutrient Concentrations From T, S, and O2 Data Using Bayesian Neural Networks. Front. Mar. Sci. 5:328. doi: 10.3389/fmars.2018.00328.\n ",,,,Level 3,"CMEMS,Mercator,ocean,global,vertical,nutrients,carbon,carbonate,L3",,proprietary,Nutrient and carbon profiles vertical distribution,2002-09-01T00:00:00Z,MO_MULTIOBS_GLO_BGC_NUTRIENTS_CARBON_PROFILES_MYNRT_015_009,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_MULTIOBS_GLO_BIO_BGC_3D_REP_015_010,"This product consists of 3D fields of Particulate Organic Carbon (POC), Particulate Backscattering coefficient (bbp) and Chlorophyll-a concentration (Chla) at depth. The reprocessed product is provided at 0.25°x0.25° horizontal resolution, over 36 levels from the surface to 1000 m depth. A neural network method estimates both the vertical distribution of Chla concentration and of particulate backscattering coefficient (bbp), a bio-optical proxy for POC, from merged surface ocean color satellite measurements with hydrological properties and additional relevant drivers. DOI (product): https://doi.org/10.48670/moi-00046 Product Citation: Please refer to our Technical FAQ for citing products: http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169. ",,,,L4,"CMEMS,Mercator,ocean,global,marine,POC,organic,carbon,particulate,chlorophyll,backscattering,bbp,Chla",,proprietary,"Global Ocean 3D Chlorophyll-a concentration, Particulate Backscattering coefficient and Particulate Organic Carbon",1998-01-07T00:00:00Z,MO_MULTIOBS_GLO_BIO_BGC_3D_REP_015_010,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_MULTIOBS_GLO_BIO_CARBON_SURFACE_REP_015_008,"This product corresponds to a REP L4 time series of monthly global reconstructed surface ocean pCO2, air-sea fluxes of CO2, pH, total alkalinity, dissolved inorganic carbon, saturation state with respect to calcite and aragonite, and associated uncertainties on a 0.25° x 0.25° regular grid. The product is obtained from an ensemble-based forward feed neural network approach mapping situ data for surface ocean fugacity (SOCAT data base, Bakker et al. 2016, https://www.socat.info/) and sea surface salinity, temperature, sea surface height, chlorophyll a, mixed layer depth and atmospheric CO2 mole fraction. Sea-air flux fields are computed from the air-sea gradient of pCO2 and the dependence on wind speed of Wanninkhof (2014). Surface ocean pH on total scale, dissolved inorganic carbon, and saturation states are then computed from surface ocean pCO2 and reconstructed surface ocean alkalinity using the CO2sys speciation software.\n\nProduct Citation: Please refer to our Technical FAQ for citing products: http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169. \n\nDOI (product):\nhttps://doi.org/10.48670/moi-00047\n\nReferences:\n\n Chau, T. T. T., Gehlen, M., and Chevallier, F.: A seamless ensemble-based reconstruction of surface ocean pCO2 and air-sea CO2 fluxes over the global coastal and open oceans, Biogeosciences, 19, 1087-1109, https://doi.org/10.5194/bg-19-1087-2022, 2022.\n ",,,,L4,"CMEMS,Mercator,ocean,global,surface,carbon,L4,REP",,proprietary,Global Ocean Surface Carbon,1985-01-01T00:00:00Z,MO_MULTIOBS_GLO_BIO_CARBON_SURFACE_REP_015_008,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_MULTIOBS_GLO_PHY_MYNRT_015_003,"This product is a L4 REP and NRT global total velocity field at 0m and 15m together wiht its individual components (geostrophy and Ekman) and related uncertainties. It consists of the zonal and meridional velocity at a 1h frequency and at 1/4 degree regular grid. The total velocity fields are obtained by combining CMEMS satellite Geostrophic surface currents and modelled Ekman currents at the surface and 15m depth (using ERA5 wind stress in REP and ERA5 in NRT). 1 hourly product, daily and monthly means are available. This product has been initiated in the frame of CNES/CLS projects. Then it has been consolidated during the Globcurrent project (funded by the ESA User Element Program). \n\nProduct Citation:\nPlease refer to our Technical FAQ for citing products: http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169. \n\nDOI (product): \nhttps://doi.org/10.48670/mds-00327\n\nReferences:\n\n Rio, M.-H., S. Mulet, and N. Picot: Beyond GOCE for the ocean circulation estimate: Synergetic use of altimetry, gravimetry, and in situ data provides new insight into geostrophic and Ekman currents, Geophys. Res. Lett., 41, doi:10.1002/2014GL061773, 2014.\n ",,,,L4,"CMEMS,Mercator,ocean,global,REP,NRT,geostrophic,currents,GLOBCURRENT,L4",,proprietary,"Global Total (COPERNICUS-GLOBCURRENT), Ekman and Geostrophic currents at the Surface and 15m",1993-01-01T00:00:00Z,MO_MULTIOBS_GLO_PHY_MYNRT_015_003,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_MULTIOBS_GLO_PHY_S_SURFACE_MYNRT_015_013,"This product consits of daily global gap-free Level-4 (L4) analyses of the Sea Surface Salinity (SSS) and Sea Surface Density (SSD) at 1/8° of resolution, obtained through a multivariate optimal interpolation algorithm that combines sea surface salinity images from multiple satellite sources as NASA's Soil Moisture Active Passive (SMAP) and ESA's Soil Moisture Ocean Salinity (SMOS) satellites with in situ salinity measurements and satellite SST information. The product was developed by the Consiglio Nazionale delle Ricerche (CNR) and includes 4 datasets:\n cmems_obs-mob_glo_phy-sss_nrt_multi_P1D, which provides near-real-time (NRT) daily data \n cmems_obs-mob_glo_phy-sss_nrt_multi_P1M, which provides near-real-time (NRT) monthly data\n cmems_obs-mob_glo_phy-sss_my_multi_P1D, which provides multi-year reprocessed (REP) daily data \n cmems_obs-mob_glo_phy-sss_my_multi_P1M, which provides multi-year reprocessed (REP) monthly data \n\nProduct citation: \nPlease refer to our Technical FAQ for citing products: http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169.\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00051\n\nReferences:\n\n Droghei, R., B. Buongiorno Nardelli, and R. Santoleri, 2016: Combining in-situ and satellite observations to retrieve salinity and density at the ocean surface. J. Atmos. Oceanic Technol. doi:10.1175/JTECH-D-15-0194.1.\n Buongiorno Nardelli, B., R. Droghei, and R. Santoleri, 2016: Multi-dimensional interpolation of SMOS sea surface salinity with surface temperature and in situ salinity data. Rem. Sens. Environ., doi:10.1016/j.rse.2015.12.052.\n Droghei, R., B. Buongiorno Nardelli, and R. Santoleri, 2018: A New Global Sea Surface Salinity and Density Dataset From Multivariate Observations (1993-2016), Front. Mar. Sci., 5(March), 1-13, doi:10.3389/fmars.2018.00084.\n Sammartino, Michela, Salvatore Aronica, Rosalia Santoleri, and Bruno Buongiorno Nardelli. (2022). Retrieving Mediterranean Sea Surface Salinity Distribution and Interannual Trends from Multi-Sensor Satellite and In Situ Data, Remote Sensing 14, 2502: https://doi.org/10.3390/rs14102502.\n ",,,,L4,"CMEMS,Mercator,ocean,global,surface,salinity,density,NRT,daily,REP,L4",,proprietary,Multi Observation Global Ocean Sea Surface Salinity and Sea Surface Density,1993-01-01T00:00:00Z,MO_MULTIOBS_GLO_PHY_S_SURFACE_MYNRT_015_013,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012,"You can find here the Multi Observation Global Ocean ARMOR3D L4 analysis and multi-year reprocessing. It consists of 3D Temperature, Salinity, Heights, Geostrophic Currents and Mixed Layer Depth, available on a 1/4 degree regular grid and on 50 depth levels from the surface down to the bottom. The product includes 4 datasets: \n dataset-armor-3d-nrt-weekly, which delivers near-real-time (NRT) weekly data\n dataset-armor-3d-nrt-monthly, which delivers near-real-time (NRT) monthly data\n dataset-armor-3d-rep-weekly, which delivers multi-year reprocessed (REP) weekly data \n dataset-armor-3d-rep-monthly, which delivers multi-year reprocessed (REP) monthly data\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00052\n\n\nProduct Citation: \nPlease refer to our Technical FAQ for citing products: http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169. \n\nReferences:\n\n Guinehut S., A.-L. Dhomps, G. Larnicol and P.-Y. Le Traon, 2012: High resolution 3D temperature and salinity fields derived from in situ and satellite observations. Ocean Sci., 8(5):845-857.\n Mulet, S., M.-H. Rio, A. Mignot, S. Guinehut and R. Morrow, 2012: A new estimate of the global 3D geostrophic ocean circulation based on satellite data and in-situ measurements. Deep Sea Research Part II : Topical Studies in Oceanography, 77-80(0):70-81.\n ",,,,L4,"CMEMS,Mercator,ocean,global,REP,NRT,ARMOR3D,temperature,salinity,heights,Geostrophic,currents,L4",,proprietary,Multi Observation Global Ocean 3D Temperature Salinity Height Geostrophic Current and MLD,1993-01-01T00:00:00Z,MO_MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_MULTIOBS_GLO_PHY_W_3D_REP_015_007,"You can find here the OMEGA3D observation-based quasi-geostrophic vertical and horizontal ocean currents developed by the Consiglio Nazionale delle RIcerche. The data are provided weekly over a regular grid at 1/4° horizontal resolution, from the surface to 1500 m depth (representative of each Wednesday). The velocities are obtained by solving a diabatic formulation of the Omega equation, starting from ARMOR3D data (MULTIOBS_GLO_PHY_REP_015_002 which corresponds to former version of MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012) and ERA-Interim surface fluxes. \n\nDOI (product): \nhttps://commons.datacite.org/doi.org/10.25423/cmcc/multiobs_glo_phy_w_rep_015_007\n\n \nProduct citation: \nPlease refer to our Technical FAQ for citing products.http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169 \n\nReferences:\n\n DOI (Product): https://doi.org/10.25423/cmcc/multiobs_glo_phy_w_rep_015_007 \n Buongiorno Nardelli, B. (2020). CNR global observation-based OMEGA3D quasi-geostrophic vertical and horizontal ocean currents (1993-2018) (Version 1) [Data set]. Copernicus Monitoring Environment Marine Service (CMEMS). https://doi.org/10.25423/CMCC/MULTIOBS_GLO_PHY_W_REP_015_007\n Buongiorno Nardelli, B. A Multi-Year Timeseries of Observation-Based 3D Horizontal and Vertical Quasi-Geostrophic Global Ocean Currents. Earth Syst. Sci. Data 2020, No. 12, 1711-1723. https://doi.org/10.5194/essd-12-1711-2020.\n ",,,,L4,"CMEMS,Mercator,ocean,global,ARMOR3D,weekly,ERA-Interim,quasi-geostrophic,currents,L4,OMEGA3D",,proprietary,Global Observed Ocean Physics 3D Quasi-Geostrophic Currents (OMEGA3D),1993-01-06T00:00:00Z,MO_MULTIOBS_GLO_PHY_W_3D_REP_015_007,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_OCEANCOLOUR_GLO_BGC_L3_MY_009_103,"For the **Global** Ocean **Satellite Observations**, ACRI-ST company (Sophia Antipolis, France) is providing **Bio-Geo-Chemical (BGC)** products based on the **Copernicus-GlobColour** processor.\n Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **""multi""** products, and S3A & S3B only for the **""olci""** products.\n* Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional types and sizes (**PFT**), Suspended Matter (**SPM**), Secchi Transparency Depth (**ZSD**), Diffuse Attenuation (**KD490**), Particulate Backscattering (**BBP**), Absorption Coef. (**CDM**) and Reflectance (**RRS**).\n\n Temporal resolutions: **daily**.\n Spatial resolutions: **4 km** and a finer resolution based on olci **300 meters** inputs.\n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\nTo find the **Copernicus-GlobColour** products in the catalogue, use the search keyword **""GlobColour""**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00280 ",,,,Level 3,"CMEMS,Mercator,ocean,global,colour,L3,bio-geo-chemical,BGC,Copernicus-GlobColour,MY,multi-years",,proprietary,"Global Ocean Colour (Copernicus-GlobColour), Bio-Geo-Chemical, L3 (daily) from Satellite Observations (1997-ongoing)",1997-09-04T00:00:00Z,MO_OCEANCOLOUR_GLO_BGC_L3_MY_009_103,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_OCEANCOLOUR_GLO_BGC_L3_MY_009_107,"For the **Global** Ocean **Satellite Observations**, Brockmann Consult (BC) is providing **Bio-Geo_Chemical (BGC)** products based on the ESA-CCI inputs.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP, OLCI-S3A & OLCI-S3B for the **""""multi""""** products.\n Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional types and sizes (**PFT**) and Reflectance (**RRS**).\n\n Temporal resolutions: **daily**, **monthly**.\n* Spatial resolutions: **4 km** (multi).\n Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**). \n\nTo find these products in the catalogue, use the search keyword **""""ESA-CCI""""**. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00282 ",,,,Level 3,"CMEMS,Mercator,ocean,global,L3,bio-geo-chemical,BGC,chlorophyll,phytoplankton,reflectance",,proprietary,Global Ocean Colour Plankton and Reflectances MY L3 daily observations,1997-09-04T00:00:00Z,MO_OCEANCOLOUR_GLO_BGC_L3_MY_009_107,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_OCEANCOLOUR_GLO_BGC_L3_NRT_009_101,"For the **Global** Ocean **Satellite Observations**, ACRI-ST company (Sophia Antipolis, France) is providing **Bio-Geo-Chemical (BGC)** products based on the **Copernicus-GlobColour** processor.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **""multi""** products, and S3A & S3B only for the **""olci""** products.\n* Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional types and sizes (**PFT**), Suspended Matter (**SPM**), Secchi Transparency Depth (**ZSD**), Diffuse Attenuation (**KD490**), Particulate Backscattering (**BBP**), Absorption Coef. (**CDM**) and Reflectance (**RRS**).\n\n* Temporal resolutions: **daily** \n* Spatial resolutions: **4 km** and a finer resolution based on olci **300 meters** inputs.\n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n \nTo find the **Copernicus-GlobColour** products in the catalogue, use the search keyword **""GlobColour""**. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00278 ",,,,Level 3,"CMEMS,Mercator,ocean,global,colour,L3,bio-geo-chemical,BGC,Copernicus-GlobColour,NRT",,proprietary,"Global Ocean Colour (Copernicus-GlobColour), Bio-Geo-Chemical, L3 (daily) from Satellite Observations (Near Real Time)",2023-04-25T00:00:00Z,MO_OCEANCOLOUR_GLO_BGC_L3_NRT_009_101,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_OCEANCOLOUR_GLO_BGC_L4_MY_009_104,"For the **Global** Ocean **Satellite Observations**, ACRI-ST company (Sophia Antipolis, France) is providing **Bio-Geo-Chemical (BGC)** products based on the **Copernicus-GlobColour** processor.\n Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **""""multi""""** products, and S3A & S3B only for the **""""olci""""** products.\n Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional types and sizes (**PFT**), Primary Production (**PP**), Suspended Matter (**SPM**), Secchi Transparency Depth (**ZSD**), Diffuse Attenuation (**KD490**), Particulate Backscattering (**BBP**), Absorption Coef. (**CDM**) and Reflectance (**RRS**).\n\n Temporal resolutions: **monthly** plus, for some variables, **daily gap-free** based on a space-time interpolation to provide a """"cloud free"""" product.\n Spatial resolutions: **4 km** and a finer resolution based on olci **300 meters** inputs.\n Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**). \n\nTo find the **Copernicus-GlobColour** products in the catalogue, use the search keyword **""""GlobColour""""**."" \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00281 ",,,,L4,"CMEMS,Mercator,ocean,global,colour,L4,bio-geo-chemical,BGC,Copernicus-GlobColour,MY,multi-years,monthly,interpolated",,proprietary,"Global Ocean Colour (Copernicus-GlobColour), Bio-Geo-Chemical, L4 (monthly and interpolated) from Satellite Observations (1997-ongoing)",1997-09-01T00:00:00Z,MO_OCEANCOLOUR_GLO_BGC_L4_MY_009_104,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_OCEANCOLOUR_GLO_BGC_L4_MY_009_108,"For the **Global** Ocean **Satellite Observations**, Brockmann Consult (BC) is providing **Bio-Geo_Chemical (BGC)** products based on the ESA-CCI inputs.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP, OLCI-S3A & OLCI-S3B for the **""""multi""""** products. \n Variables: Chlorophyll-a (**CHL**).\n\n* Temporal resolutions: **monthly**.\n* Spatial resolutions: **4 km** (multi). \n Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\nTo find these products in the catalogue, use the search keyword **""""ESA-CCI""""**. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00283 ",,,,L4,"CMEMS,Mercator,ocean,global,colour,L4,bio-geo-chemical,BGC,chlorophyll,MY,multi-years,monthly",,proprietary,Global Ocean Colour Plankton MY L4 monthly observations,1997-09-01T00:00:00Z,MO_OCEANCOLOUR_GLO_BGC_L4_MY_009_108,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_OCEANCOLOUR_GLO_BGC_L4_NRT_009_102,"For the **Global** Ocean **Satellite Observations**, ACRI-ST company (Sophia Antipolis, France) is providing **Bio-Geo-Chemical (BGC)** products based on the **Copernicus-GlobColour** processor.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **""multi""** products, and S3A & S3B only for the **""olci""** products.\n* Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional types and sizes (**PFT**), Primary Production (**PP**), Suspended Matter (**SPM**), Secchi Transparency Depth (**ZSD**), Diffuse Attenuation (**KD490**), Particulate Backscattering (**BBP**), Absorption Coef. (**CDM**) and Reflectance (**RRS**).\n \n* Temporal resolutions: **monthly** plus, for some variables, **daily gap-free** based on a space-time interpolation to provide a ""cloud free"" product.\n* Spatial resolutions: **4 km** and a finer resolution based on olci **300 meters** inputs. \n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\nTo find the **Copernicus-GlobColour** products in the catalogue, use the search keyword **""GlobColour""**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00279 ",,,,L4,"CMEMS,Mercator,ocean,global,colour,L4,bio-geo-chemical,BGC,Copernicus-GlobColour,NRT,monthly,interpolated",,proprietary,"Global Ocean Colour (Copernicus-GlobColour), Bio-Geo-Chemical, L4 (monthly and interpolated) from Satellite Observations (Near Real Time)",2023-04-01T00:00:00Z,MO_OCEANCOLOUR_GLO_BGC_L4_NRT_009_102,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_001,"For the Global - Arctic and Antarctic - Ocean. The OSI SAF delivers three global sea ice products in operational mode: sea ice concentration, sea ice edge, sea ice type (OSI-401 OSI-402 and OSI-403). These products are delivered daily at 10km resolution in a polar stereographic projection covering the Northern Hemisphere and the Southern Hemisphere. It is the Sea Ice operational nominal product for the Global Ocean. In addition, a sea ice drift product is delivered at 60km resolution in a polar stereographic projection covering the Northern and Southern Hemispheres. The sea ice motion vectors have a time-span of 2 days.\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00134 ",,,,L4,"CMEMS,Mercator,ocean,global,ice,arctic,antarctic,concentration,edge,type,L4",,proprietary,"Global Ocean - Arctic and Antarctic - Sea Ice Concentration, Edge, Type and Drift (OSI-SAF)",2019-05-04T00:00:00Z,MO_SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_001,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_006,"DTU Space produces polar covering Near Real Time gridded ice displacement fields obtained by MCC processing of Sentinel-1 SAR, Envisat ASAR WSM swath data or RADARSAT ScanSAR Wide mode data . The nominal temporal span between processed swaths is 24hours, the nominal product grid resolution is a 10km.\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00135 ",,,,L4,"CMEMS,Mercator,ocean,global,NRT,gridded,MCC,DTU,displacement,L4",,proprietary,Global Ocean - High Resolution SAR Sea Ice Drift,2019-05-04T00:00:00Z,MO_SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_006,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_SEAICE_GLO_SEAICE_L4_REP_OBSERVATIONS_011_009,"The CDR and ICDR sea ice concentration dataset of the EUMETSAT OSI SAF (OSI-450-a and OSI-430-a), covering the period from October 1978 to present, with 16 days delay. It used passive microwave data from SMMR, SSM/I and SSMIS. Sea ice concentration is computed from atmospherically corrected PMW brightness temperatures, using a combination of state-of-the-art algorithms and dynamic tie points. It includes error bars for each grid cell (uncertainties). This version 3.0 of the CDR (OSI-450-a, 1978-2020) and ICDR (OSI-430-a, 2021-present with 16 days latency) was released in November 2022 \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00136\n \nReferences:\n\n [http://osisaf.met.no/docs/osisaf_cdop2_ss2_pum_sea-ice-conc-reproc_v2p2.pdf]\n ",,,,L4,"CMEMS,Mercator,ocean,global,ice,concentration,CDR,ICDR,REP,reprocessed,L4",,proprietary,Global Ocean Sea Ice Concentration Time Series REPROCESSED (OSI-SAF),1978-10-25T00:00:00Z,MO_SEAICE_GLO_SEAICE_L4_REP_OBSERVATIONS_011_009,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_SEALEVEL_GLO_PHY_L4_NRT_008_046,"Altimeter satellite gridded Sea Level Anomalies (SLA) computed with respect to a twenty-year [1993, 2012] mean. The SLA is estimated by Optimal Interpolation, merging the L3 along-track measurement from the different altimeter missions available. Part of the processing is fitted to the Global Ocean. (see QUID document or http://duacs.cls.fr [](http://duacs.cls.fr) pages for processing details). The product gives additional variables (i.e. Absolute Dynamic Topography and geostrophic currents (absolute and anomalies)). It serves in near-real time applications.\nThis product is processed by the DUACS multimission altimeter data processing system. \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00149 ",,,,L4,"CMEMS,Mercator,ocean,global,gridded,surface,heights,SLA,NRT,L4",,proprietary,GLOBAL OCEAN GRIDDED L4 SEA SURFACE HEIGHTS AND DERIVED VARIABLES NRT,2022-01-01T00:00:00Z,MO_SEALEVEL_GLO_PHY_L4_NRT_008_046,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_SEALEVEL_GLO_PHY_MDT_008_063,"Mean Dynamic Topography that combines the global CNES-CLS-2022 MDT, the Black Sea CMEMS2020 MDT and the Med Sea CMEMS2020 MDT. It is an estimate of the mean over the 1993-2012 period of the sea surface height above geoid. This is consistent with the reference time period also used in the DUACS products\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00150 ",,,,L4,"CMEMS,Mercator,ocean,global,sealevel,topography,surface,height,L4",,proprietary,GLOBAL OCEAN MEAN DYNAMIC TOPOGRAPHY,1993-01-06T00:00:00Z,MO_SEALEVEL_GLO_PHY_MDT_008_063,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_SST_GLO_SST_L3S_NRT_OBSERVATIONS_010_010,"For the Global Ocean- Sea Surface Temperature L3 Observations . This product provides daily foundation sea surface temperature from multiple satellite sources. The data are intercalibrated. This product consists in a fusion of sea surface temperature observations from multiple satellite sensors, daily, over a 0.1° resolution global grid. It includes observations by polar orbiting (NOAA-18 & NOAAA-19/AVHRR, METOP-A/AVHRR, ENVISAT/AATSR, AQUA/AMSRE, TRMM/TMI) and geostationary (MSG/SEVIRI, GOES-11) satellites . The observations of each sensor are intercalibrated prior to merging using a bias correction based on a multi-sensor median reference correcting the large-scale cross-sensor biases.3 more datasets are available that only contain ""per sensor type"" data: Polar InfraRed (PIR), Polar MicroWave (PMW), Geostationary InfraRed (GIR)\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00164 ",,,,Level 3,"CMEMS,Mercator,ocean,global,surface,temperature,L3,PIR,PMW,GIR",,proprietary,ODYSSEA Global Ocean - Sea Surface Temperature Multi-sensor L3 Observations,2020-12-31T00:00:00Z,MO_SST_GLO_SST_L3S_NRT_OBSERVATIONS_010_010,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_SST_GLO_SST_L4_NRT_OBSERVATIONS_010_001,"For the Global Ocean- the OSTIA global foundation Sea Surface Temperature product provides daily gap-free maps of: Foundation Sea Surface Temperature at 0.05° x 0.05° horizontal grid resolution, using in-situ and satellite data from both infrared and microwave radiometers. \n\nThe Operational Sea Surface Temperature and Ice Analysis (OSTIA) system is run by the UK's Met Office and delivered by IFREMER PU. OSTIA uses satellite data provided by the GHRSST project together with in-situ observations to determine the sea surface temperature.\nA high resolution (1/20° - approx. 6 km) daily analysis of sea surface temperature (SST) is produced for the global ocean and some lakes.\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00165\n\nReferences: \n\n Good, S.; Fiedler, E.; Mao, C.; Martin, M.J.; Maycock, A.; Reid, R.; Roberts-Jones, J.; Searle, T.; Waters, J.; While, J.; Worsfold, M. The Current Configuration of the OSTIA System for Operational Production of Foundation Sea Surface Temperature and Ice Concentration Analyses. Remote Sens. 2020, 12, 720. doi: 10.3390/rs12040720\n Donlon, C.J., Martin, M., Stark, J., Roberts-Jones, J., Fiedler, E., and Wimmer, W., 2012, The Operational Sea Surface Temperature and Sea Ice Analysis (OSTIA) system. Remote Sensing of the Environment. doi: 10.1016/j.rse.2010.10.017 2011.\n John D. Stark, Craig J. Donlon, Matthew J. Martin and Michael E. McCulloch, 2007, OSTIA : An operational, high resolution, real time, global sea surface temperature analysis system., Oceans 07 IEEE Aberdeen, conference proceedings. Marine challenges: coastline to deep sea. Aberdeen, Scotland.IEEE.\n ",,,,L4,"CMEMS,Mercator,ocean,global,surface,temperature,L4,OSTIA",,proprietary,Global Ocean OSTIA Sea Surface Temperature and Sea Ice Analysis,2007-01-01T00:00:00Z,MO_SST_GLO_SST_L4_NRT_OBSERVATIONS_010_001,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_SST_GLO_SST_L4_REP_OBSERVATIONS_010_011,"The OSTIA (Good et al., 2020) global sea surface temperature reprocessed product provides daily gap-free maps of foundation sea surface temperature and ice concentration (referred to as an L4 product) at 0.05deg.x 0.05deg. horizontal grid resolution, using in-situ and satellite data. This product provides the foundation Sea Surface Temperature, which is the temperature free of diurnal variability.\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00168\n \nReferences:\n\n Good, S.; Fiedler, E.; Mao, C.; Martin, M.J.; Maycock, A.; Reid, R.; Roberts-Jones, J.; Searle, T.; Waters, J.; While, J.; Worsfold, M. The Current Configuration of the OSTIA System for Operational Production of Foundation Sea Surface Temperature and Ice Concentration Analyses. Remote Sens. 2020, 12, 720, doi:10.3390/rs12040720\n ",,,,L4,"CMEMS,Mercator,ocean,global,surface,temperature,concentration,L4,OSTIA,reprocessed,REP",,proprietary,Global Ocean OSTIA Sea Surface Temperature and Sea Ice Reprocessed,1981-10-01T00:00:00Z,MO_SST_GLO_SST_L4_REP_OBSERVATIONS_010_011,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_SST_GLO_SST_L4_REP_OBSERVATIONS_010_024,"The ESA SST CCI and C3S global Sea Surface Temperature Reprocessed product provides gap-free maps of daily average SST at 20 cm depth at 0.05deg. x 0.05deg. horizontal grid resolution, using satellite data from the (A)ATSRs, SLSTR and the AVHRR series of sensors (Merchant et al., 2019). The ESA SST CCI and C3S level 4 analyses were produced by running the Operational Sea Surface Temperature and Sea Ice Analysis (OSTIA) system (Good et al., 2020) to provide a high resolution (1/20deg. - approx. 5km grid resolution) daily analysis of the daily average sea surface temperature (SST) at 20 cm depth for the global ocean. Only (A)ATSR, SLSTR and AVHRR satellite data processed by the ESA SST CCI and C3S projects were used, giving a stable product. It also uses reprocessed sea-ice concentration data from the EUMETSAT OSI-SAF (OSI-450 and OSI-430; Lavergne et al., 2019). \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00169\n\nReferences:\n\n Good, S., Fiedler, E., Mao, C., Martin, M.J., Maycock, A., Reid, R., Roberts-Jones, J., Searle, T., Waters, J., While, J., Worsfold, M. The Current Configuration of the OSTIA System for Operational Production of Foundation Sea Surface Temperature and Ice Concentration Analyses. Remote Sens. 2020, 12, 720, doi:10.3390/rs12040720.\n Lavergne, T., Sørensen, A. M., Kern, S., Tonboe, R., Notz, D., Aaboe, S., Bell, L., Dybkjær, G., Eastwood, S., Gabarro, C., Heygster, G., Killie, M. A., Brandt Kreiner, M., Lavelle, J., Saldo, R., Sandven, S., and Pedersen, L. T.: Version 2 of the EUMETSAT OSI SAF and ESA CCI sea-ice concentration climate data records, The Cryosphere, 13, 49-78, doi:10.5194/tc-13-49-2019, 2019.\n Merchant, C.J., Embury, O., Bulgin, C.E. et al. Satellite-based time-series of sea-surface temperature since 1981 for climate applications. Sci Data 6, 223 (2019) doi:10.1038/s41597-019-0236-x.\n ",,,,L4,"CMEMS,Mercator,ocean,global,surface,temperature,ESA,SST,CCI,C3S,L4,reprocessed,REP",,proprietary,ESA SST CCI and C3S reprocessed sea surface temperature analyses,1981-09-01T00:00:00Z,MO_SST_GLO_SST_L4_REP_OBSERVATIONS_010_024,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_WAVE_GLO_PHY_SWH_L3_NRT_014_001,"Near-Real-Time mono-mission satellite-based along-track significant wave height. Only valid data are included, based on a rigorous editing combining various criteria such as quality flags (surface flag, presence of ice) and thresholds on parameter values. Such thresholds are applied on parameters linked to significant wave height determination from retracking (e.g. SWH, sigma0, range, off nadir angle…). All the missions are homogenized with respect to a reference mission (Jason-3 until April 2022, Sentinel-6A afterwards) and calibrated on in-situ buoy measurements. Finally, an along-track filter is applied to reduce the measurement noise.\n\nAs a support of information to the significant wave height, wind speed measured by the altimeters is also processed and included in the files. Wind speed values are provided by upstream products (L2) for each mission and are based on different algorithms. Only valid data are included and all the missions are homogenized with respect to the reference mission. \n\nThis product is processed by the WAVE-TAC multi-mission altimeter data processing system. It serves in near-real time the main operational oceanography and climate forecasting centers in Europe and worldwide. It processes operational data (OGDR and NRT, produced in near-real-time) from the following altimeter missions: Sentinel-6A, Jason-3, Sentinel-3A, Sentinel-3B, Cryosat-2, SARAL/AltiKa, CFOSAT ; and interim data (IGDR, 1 to 2 days delay) from Hai Yang-2B mission.\n\nOne file containing valid SWH is produced for each mission and for a 3-hour time window. It contains the filtered SWH (VAVH), the unfiltered SWH (VAVH_UNFILTERED) and the wind speed (wind_speed).\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00179 ",,,,Level 3,"CMEMS,Mercator,ocean,global,NRT,wave,height,L3,wind,speed,WAVE-TAC,mono-mission",,proprietary,GLOBAL OCEAN L3 SIGNIFICANT WAVE HEIGHT FROM NRT SATELLITE MEASUREMENTS,2021-01-01T00:00:00Z,MO_WAVE_GLO_PHY_SWH_L3_NRT_014_001,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_WAVE_GLO_PHY_SWH_L4_NRT_014_003,"Near-Real-Time gridded multi-mission merged satellite significant wave height. Only valid data are included. This product is processed in Near-Real-Time by the WAVE-TAC multi-mission altimeter data processing system and is based on CMEMS level-3 SWH datasets (see the product WAVE_GLO_WAV_L3_SWH_NRT_OBSERVATIONS_014_001).\nIt merges along-track SWH data from the following missions: Jason-3, Sentinel-3A, Sentinel-3B, SARAL/AltiKa, Cryosat-2, CFOSAT and HaiYang-2B. The resulting gridded product has a 2° horizontal resolution and is produced daily. Different SWH fields are produced: VAVH_DAILY fields are daily statistics computed from all available level 3 along-track measurements from 00 UTC until 23:59 UTC ; VAVH_INST field provides an estimate of the instantaneous wave field at 12:00UTC (noon), using all available Level 3 along-track measurements and accounting for their spatial and temporal proximity.\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00180 ",,,,L4,"CMEMS,Mercator,ocean,global,NRT,wave,height,L4,gridded,WAVE-TAC,multi-mission",,proprietary,GLOBAL OCEAN L4 SIGNIFICANT WAVE HEIGHT FROM NRT SATELLITE MEASUREMENTS,2020-01-01T00:00:00Z,MO_WAVE_GLO_PHY_SWH_L4_NRT_014_003,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_WAVE_GLO_WAV_L3_SPC_NRT_OBSERVATIONS_014_002,"Near-Real-Time mono-mission satellite-based integral parameters derived from the directional wave spectra. Using linear propagation wave model, only wave observations that can be back-propagated to wave converging regions are considered. The dataset parameters includes partition significant wave height, partition peak period and partition peak or principal direction given along swell propagation path in space and time at a 3-hour timestep, from source to land. Validity flags are also included for each parameter and indicates the valid time steps along propagation (eg. no propagation for significant wave height close to the storm source or any integral parameter when reaching the land). The integral parameters at observation point are also available together with a quality flag based on the consistency between each propagated observation and the overall swell field.This product is processed by the WAVE-TAC multi-mission SAR data processing system. It serves in near-real time the main operational oceanography and climate forecasting centers in Europe and worldwide. It processes near-real-time data from the following SAR missions: Sentinel-1A and Sentinel-1B.One file is produced for each mission and is available in two formats: one gathering in one netcdf file all observations related to the same swell field, and for another all observations available in a 3-hour time range, and for both formats, propagated information from source to land. \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00178 ",,,,Level 3,"CMEMS,Mercator,ocean,global,NRT,wave,L3,WAVE-TAC,SAR,spectral,mono-mission",,proprietary,GLOBAL OCEAN L3 SPECTRAL PARAMETERS FROM NRT SATELLITE MEASUREMENTS,2018-05-28T00:00:00Z,MO_WAVE_GLO_WAV_L3_SPC_NRT_OBSERVATIONS_014_002,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_WIND_GLO_PHY_CLIMATE_L4_MY_012_003,"For the Global Ocean - The product contains monthly Level-4 sea surface wind and stress fields at 0.25 degrees horizontal spatial resolution. The monthly averaged wind and stress fields are based on monthly average ECMWF ERA5 reanalysis fields, corrected for persistent biases using all available Level-3 scatterometer observations from the Metop-A, Metop-B and Metop-C ASCAT, QuikSCAT SeaWinds, ERS-1 and ERS-2 SCAT satellite instruments. The product provides monthly mean stress-equivalent wind and stress variables as well as their standard deviation. The number of observations used to calculate the monthly averages are included in the product.\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00181 ",,,,L4,"CMEMS,Mercator,ocean,global,L4,surface,wind,stress,monthly,Scatterometer",,proprietary,Global Ocean Monthly Mean Sea Surface Wind and Stress from Scatterometer and Model,1999-08-01T00:00:00Z,MO_WIND_GLO_PHY_CLIMATE_L4_MY_012_003,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_WIND_GLO_PHY_L3_MY_012_005,"For the Global Ocean - The product contains daily L3 gridded sea surface wind observations from available scatterometers with resolutions corresponding to the L2 swath products:\n0.5 degrees grid for the 50 km scatterometer L2 inputs, \n0.25 degrees grid based on 25 km scatterometer swath observations,\nand 0.125 degrees based on 12.5 km scatterometer swath observations, i.e., from the coastal products. Data from ascending and descending passes are gridded separately. \n\nThe product provides stress-equivalent wind and stress variables as well as their divergence and curl. The MY L3 products follow the availability of the reprocessed EUMETSAT OSI SAF L2 products and are available for: The ASCAT scatterometer on MetOp-A and Metop-B at 0.125 and 0.25 degrees; The Seawinds scatterometer on QuikSCAT at 0.25 and 0.5 degrees; The AMI scatterometer on ERS-1 and ERS-2 at 0.25 degrees; The OSCAT scatterometer on Oceansat-2 at 0.25 and 0.5 degrees; \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00183 ",,,,Level 3,"CMEMS,Mercator,ocean,global,L3,surface,wind,daily,gridded,reprocessed,REP,Scatterometer",,proprietary,Global Ocean Daily Gridded Reprocessed L3 Sea Surface Winds from Scatterometer,1991-08-01T00:00:00Z,MO_WIND_GLO_PHY_L3_MY_012_005,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_WIND_GLO_PHY_L3_NRT_012_002,"For the Global Ocean - The product contains daily L3 gridded sea surface wind observations from available scatterometers with resolutions corresponding to the L2 swath products:\n\n0.5 degrees grid for the 50 km scatterometer L2 inputs, \n0.25 degrees grid based on 25 km scatterometer swath observations,\nand 0.125 degrees based on 12.5 km scatterometer swath observations, i.e., from the coastal products.\n\nData from ascending and descending passes are gridded separately. \nThe product provides stress-equivalent wind and stress variables as well as their divergence and curl. The NRT L3 products follow the NRT availability of the EUMETSAT OSI SAF L2 products and are available for:\nThe ASCAT scatterometers on Metop-A (discontinued on 15/11/2021), Metop-B and Metop-C at 0.125 and 0.25 degrees;\nThe OSCAT scatterometer on Scatsat-1 at 0.25 and 0.5 degrees (discontinued on 28/2/2021); \nThe HSCAT scatterometer on HY-2B, HY-2C and HY-2D at 0.25 and 0.5 degrees \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00182 ",,,,Level 3,"CMEMS,Mercator,ocean,global,L3,surface,wind,daily,gridded,NRT,Scatterometer",,proprietary,Global Ocean Daily Gridded Sea Surface Winds from Scatterometer,2016-01-01T00:00:00Z,MO_WIND_GLO_PHY_L3_NRT_012_002,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_WIND_GLO_PHY_L4_MY_012_006,"For the Global Ocean - The product contains hourly Level-4 sea surface wind and stress fields at 0.125 and 0.25 degrees horizontal spatial resolution. Scatterometer observations and their collocated European Centre for Medium-Range Weather Forecasts (ECMWF) ERA5 reanalysis model variables are used to calculate temporally-averaged difference fields. These fields are used to correct for persistent biases in hourly ECMWF ERA5 model fields. Bias corrections are based on scatterometer observations from Metop-A, Metop-B, Metop-C ASCAT (0.125 degrees), QuikSCAT SeaWinds, ERS-1 and ERS-2 SCAT (0.25 degrees). The product provides stress-equivalent wind and stress variables as well as their divergence and curl. The applied bias corrections, the standard deviation of the differences (for wind and stress fields) and difference of variances (for divergence and curl fields) are included in the product. \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00185 ",,,,L4,"CMEMS,Mercator,ocean,global,L4,surface,wind,stress,hourly,REP,reprocessed,Scatterometer,Metop,QuikSCAT,ERS",,proprietary,Global Ocean Hourly Reprocessed Sea Surface Wind and Stress from Scatterometer and Model,1994-06-01T00:00:00Z,MO_WIND_GLO_PHY_L4_MY_012_006,,,,,,available,,,,,,,,,,,,,,,,,,,, +MO_WIND_GLO_PHY_L4_NRT_012_004,"For the Global Ocean - The product contains hourly Level-4 sea surface wind and stress fields at 0.125 degrees horizontal spatial resolution. Scatterometer observations for Metop-B and Metop-C ASCAT and their collocated European Centre for Medium-Range Weather Forecasts (ECMWF) operational model variables are used to calculate temporally-averaged difference fields. These fields are used to correct for persistent biases in hourly ECMWF operational model fields. The product provides stress-equivalent wind and stress variables as well as their divergence and curl. The applied bias corrections, the standard deviation of the differences (for wind and stress fields) and difference of variances (for divergence and curl fields) are included in the product. \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00305 ",,,,L4,"CMEMS,Mercator,ocean,global,L4,surface,wind,stress,hourly,NRT,Scatterometer,Metop",,proprietary,Global Ocean Hourly Sea Surface Wind and Stress from Scatterometer and Model,2020-07-01T00:00:00Z,MO_WIND_GLO_PHY_L4_NRT_012_004,,,,,,available,,,,,,,,,,,,,,,,,,,, +NAIP,"The National Agriculture Imagery Program (NAIP) acquires aerial imagery during the agricultural growing seasons in the continental U.S. This ""leaf-on"" imagery and typically ranges from 60 centimeters to 100 centimeters in resolution and is available from the naip-analytic Amazon S3 bucket as 4-band (RGB + NIR) imagery in MRF format. NAIP data is delivered at the state level; every year, a number of states receive updates, with an overall update cycle of two or three years. The tiling format of NAIP imagery is based on a 3.75' x 3.75' quarter quadrangle with a 300 meter buffer on all four sides. NAIP imagery is formatted to the UTM coordinate system using NAD83. NAIP imagery may contain as much as 10% cloud cover per tile. ",National Agriculture Imagery Program,film and digital cameras,NAIP,N/A,"film,digital,cameras,Agriculture,NAIP",OPTICAL,proprietary,National Agriculture Imagery Program,2003-01-01T00:00:00Z,NAIP,available,available,,,,,,,,,available,,,,,,,,,available,,,,,, +NEMSAUTO_TCDC,Total cloud cover from NOAAmodel Environment Monitoring System (NEMS) automatic domain switch. NEMSAUTO is the automatic delivery of the highest resolution meteoblue model available for any requested period of time and location. The NEMS model family are improved NMM successors (operational since 2013). NEMS is a multi-scale model (used from global down to local domains) and significantly improves cloud-development and precipitation forecast. Note that Automatic domain switching is only supported for multi point queries. Support for polygons may follow later. ,NEMSAUTO,,NEMSAUTO,,"meteoblue,NEMS,NEMSAUTO,CLOUD,COVER,TOTAL,TCDC,DAILY,MEAN",ATMOSPHERIC,proprietary,NEMSAUTO Total Cloud Cover daily mean,1984-01-01T00:00:00Z,NEMSAUTO_TCDC,,,,,,,,,,,,,,,,,available,,,,,,,,, +NEMSGLOBAL_TCDC,Total cloud cover from NOAAmodel Environment Monitoring System (NEMS) global model. NEMSGLOBAL has 30km spatial and 1h temporal resolutions and produces seamless datasets from 1984 to 7 days ahead. ,NEMSGLOBAL,,NEMSGLOBAL,,"meteoblue,NEMS,NEMSGLOBAL,CLOUD,COVER,TOTAL,TCDC,DAILY,MEAN",ATMOSPHERIC,proprietary,NEMSGLOBAL Total Cloud Cover daily mean,1984-01-01T00:00:00Z,NEMSGLOBAL_TCDC,,,,,,,,,,,,,,,,,available,,,,,,,,, +OSO,An overview of OSO Land Cover data is given on https://www.theia-land.fr/en/ceslist/land-cover-sec/ and the specific description of OSO products is available on https://www.theia-land.fr/product/carte-doccupation-des-sols-de-la-france-metropolitaine/ ,,,,L3B,"L3B,OSO,land,cover",,proprietary,OSO Land Cover,2016-01-01T00:00:00Z,OSO,,,,,,,,,,,,,,,,,,,,,,available,,,, +PLD_BUNDLE,"Pleiades Bundle (Pan, XS)",PLEIADES,PHR,"P1A,P1B",PRIMARY,"PHR,PLEIADES,P1A,P1B,PRIMARY,PLD,BUNDLE,Pan,Xs",OPTICAL,proprietary,Pleiades Bundle,2011-12-17T00:00:00Z,PLD_BUNDLE,,,,,,,,,,,,,,,,,,,,,,available,,,, +PLD_PAN,Pleiades Panchromatic (Pan),PLEIADES,PHR,"P1A,P1B",PRIMARY,"PHR,PLEIADES,P1A,P1B,PRIMARY,PLD,PAN,Panchromatic",OPTICAL,proprietary,Pleiades Panchromatic,2011-12-17T00:00:00Z,PLD_PAN,,,,,,,,,,,,,,,,,,,,,,available,,,, +PLD_PANSHARPENED,Pleiades Pansharpened (Pan+XS),PLEIADES,PHR,"P1A,P1B",PRIMARY,"PHR,PLEIADES,P1A,P1B,PRIMARY,PLD,PANSHARPENED,Pan,Xs",OPTICAL,proprietary,Pleiades Pansharpened,2011-12-17T00:00:00Z,PLD_PANSHARPENED,,,,,,,,,,,,,,,,,,,,,,available,,,, +PLD_XS,Pleiades Multispectral (XS),PLEIADES,PHR,"P1A,P1B",PRIMARY,"PHR,PLEIADES,P1A,P1B,PRIMARY,PLD,XS,Multispectral",OPTICAL,proprietary,Pleiades Multispectral,2011-12-17T00:00:00Z,PLD_XS,,,,,,,,,,,,,,,,,,,,,,available,,,, +S1_SAR_GRD,"Level-1 Ground Range Detected (GRD) products consist of focused SAR data that has been detected, multi-looked and projected to ground range using an Earth ellipsoid model. Phase information is lost. The resulting product has approximately square spatial resolution pixels and square pixel spacing with reduced speckle at the cost of worse spatial resolution. GRD products can be in one of three resolutions: | Full Resolution (FR), High Resolution (HR), Medium Resolution (MR). The resolution is dependent upon the amount of multi-looking performed. Level-1 GRD products are available in MR and HR for IW and EW modes, MR for WV mode and MR, HR and FR for SM mode. SAFE formatted product, see https://sentinel.esa.int/web/sentinel/user-guides/sentinel-1-sar/data-formats/safe-specification ",SENTINEL1,SAR,"S1A,S1B",L1,"SAR,SENTINEL,SENTINEL1,S1,S1A,S1B,L1,GRD,SAFE",RADAR,proprietary,SENTINEL1 Level-1 Ground Range Detected,2014-04-03T00:00:00Z,S1_SAR_GRD,available,available,,,available,,available,available,available,,available,,,,,,,available,available,available,available,,,,available, +S1_SAR_OCN,"Level-2 OCN products include components for Ocean Swell spectra (OSW) providing continuity with ERS and ASAR WV and two new components: Ocean Wind Fields (OWI) and Surface Radial Velocities (RVL). The OSW is a two-dimensional ocean surface swell spectrum and includes an estimate of the wind speed and direction per swell spectrum. The OSW is generated from Stripmap and Wave modes only. For Stripmap mode, there are multiple spectra derived from internally generated Level-1 SLC images. For Wave mode, there is one spectrum per vignette. The OWI is a ground range gridded estimate of the surface wind speed and direction at 10 m above the surface derived from internally generated Level-1 GRD images of SM, IW or EW modes. The RVL is a ground range gridded difference between the measured Level-2 Doppler grid and the Level-1 calculated geometrical Doppler. SAFE formatted product, see https://sentinel.esa.int/web/sentinel/user-guides/sentinel-1-sar/data-formats/safe-specification ",SENTINEL1,SAR,"S1A,S1B",L2,"SAR,SENTINEL,SENTINEL1,S1,S1A,S1B,L2,OCN,SAFE",RADAR,proprietary,SENTINEL1 Level-2 OCN,2014-04-03T00:00:00Z,S1_SAR_OCN,,,,,available,,available,available,,,,,,,,,,available,available,,available,,,,available, +S1_SAR_RAW,"The SAR Level-0 products consist of the sequence of Flexible Dynamic Block Adaptive Quantization (FDBAQ) compressed unfocused SAR raw data. For the data to be usable, it will need to be decompressed and processed using a SAR processor. SAFE formatted product, see https://sentinel.esa.int/web/sentinel/user-guides/sentinel-1-sar/data-formats/safe-specification ",SENTINEL1,SAR,"S1A,S1B",L0,"SAR,SENTINEL,SENTINEL1,S1,S1A,S1B,L0,RAW,SAFE",RADAR,proprietary,SENTINEL1 SAR Level-0,2014-04-03T00:00:00Z,S1_SAR_RAW,,,,,available,,available,available,,,,,,,,,,available,,,,,,,available, +S1_SAR_SLC,"Level-1 Single Look Complex (SLC) products consist of focused SAR data geo-referenced using orbit and attitude data from the satellite and provided in zero-Doppler slant-range geometry. The products include a single look in each dimension using the full transmit signal bandwidth and consist of complex samples preserving the phase information. SAFE formatted product, see https://sentinel.esa.int/web/sentinel/user-guides/sentinel-1-sar/data-formats/safe-specification ",SENTINEL1,SAR,"S1A,S1B",L1,"SAR,SENTINEL,SENTINEL1,S1,S1A,S1B,L1,SLC,SAFE",RADAR,proprietary,SENTINEL1 Level-1 Single Look Complex,2014-04-03T00:00:00Z,S1_SAR_SLC,,,,,available,,available,available,available,,,,,,,,,available,available,,available,,,,available, +S2_MSI_L1C,"The Level-1C product is composed of 100x100 km2 tiles (ortho-images in UTM/WGS84 projection). It results from using a Digital Elevation Model (DEM) to project the image in cartographic geometry. Per-pixel radiometric measurements are provided in Top Of Atmosphere (TOA) reflectances along with the parameters to transform them into radiances. Level-1C products are resampled with a constant Ground Sampling Distance (GSD) of 10, 20 and 60 meters depending on the native resolution of the different spectral bands. In Level-1C products, pixel coordinates refer to the upper left corner of the pixel. Level-1C products will additionally include Cloud Masks and ECMWF data (total column of ozone, total column of water vapour and mean sea level pressure). SAFE formatted product, see https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi/data-formats ",SENTINEL2,MSI,"S2A,S2B",L1,"MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L1,L1C,SAFE",OPTICAL,proprietary,SENTINEL2 Level-1C,2015-06-23T00:00:00Z,S2_MSI_L1C,available,available,,,available,,available,available,available,,available,,available,,,,,available,available,,available,,available,,available, +S2_MSI_L2A,"The Level-2A product provides Bottom Of Atmosphere (BOA) reflectance images derived from the associated Level-1C products. Each Level-2A product is composed of 100x100 km2 tiles in cartographic geometry (UTM/WGS84 projection). SAFE formatted product, see https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi/data-formats ",SENTINEL2,MSI,"S2A,S2B",L2,"MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L2,L2A,SAFE",OPTICAL,proprietary,SENTINEL2 Level-2A,2018-03-26T00:00:00Z,S2_MSI_L2A,available,available,,,available,,available,available,available,,,,,,,,,available,,available,available,,,,available, +S2_MSI_L2AP,"The Level-2A product provides Bottom Of Atmosphere (BOA) reflectance images derived from the associated Level-1C products. Each Level-2A product is composed of 100x100 km2 tiles in cartographic geometry (UTM/WGS84 projection). SAFE formatted product, see https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi/data-formats. Level-2AP are the pilot products of Level-2A product generated by ESA until March 2018. After March, they are operational products ",SENTINEL2,MSI,"S2A,S2B",L2,"MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L2,L2A,SAFE, pilot",OPTICAL,proprietary,SENTINEL2 Level-2A pilot,2017-05-23T00:00:00Z,S2_MSI_L2AP,,,,,,,,,,,,,,,,,,,,,,,,,available, +S2_MSI_L2A_COG,"The Level-2A product provides Bottom Of Atmosphere (BOA) reflectance images derived from the associated Level-1C products. Each Level-2A product is composed of 100x100 km2 tiles in cartographic geometry (UTM/WGS84 projection). Product containing Cloud Optimized GeoTIFF images, without SAFE formatting. ",SENTINEL2,MSI,"S2A,S2B",L2,"MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L2,L2A,COG",OPTICAL,proprietary,SENTINEL2 Level-2A,2015-06-23T00:00:00Z,S2_MSI_L2A_COG,,,,,,,,,,,,available,,,,,,,,,,,,,, +S2_MSI_L2A_MAJA,"The level 2A products correct the data for atmospheric effects and detect the clouds and their shadows using MAJA. MAJA uses MUSCATE processing center at CNES, in the framework of THEIA land data center. Sentinel-2 level 1C data are downloaded from PEPS. The full description of the product format is available at https://theia.cnes.fr/atdistrib/documents/PSC-NT-411-0362-CNES_01_00_SENTINEL-2A_L2A_Products_Description.pdf ",SENTINEL2,MSI,"S2A,S2B",L2,"MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L2,L2A,MAJA",OPTICAL,proprietary,SENTINEL2 Level-2A,2015-06-23T00:00:00Z,S2_MSI_L2A_MAJA,,,,,,,,,,,,,,,,,,,,,,available,,,, +S2_MSI_L2B_MAJA_SNOW,The Theia snow product is derived from Sentinel-2 L2A images generated by Theia. It indicates the snow presence or absence on the land surface every fifth day if there is no cloud. The product is distributed by Theia as a raster file (8 bits GeoTIFF) of 20 m resolution and a vector file (Shapefile polygons). More details about the snow products description are available at http://www.cesbio.ups-tlse.fr/multitemp/?page_id=10748#en ,SENTINEL2,MSI,"S2A,S2B",L2,"MSI,MAJA,SENTINEL,sentinel2,S2,S2A,S2B,L2,L2B,SNOW",OPTICAL,proprietary,SENTINEL2 snow product,2015-06-23T00:00:00Z,S2_MSI_L2B_MAJA_SNOW,,,,,,,,,,,,,,,,,,,,,,available,,,, +S2_MSI_L2B_MAJA_WATER,A description of the Land Water Quality data distributed by Theia is available at https://theia.cnes.fr/atdistrib/documents/THEIA-ST-411-0477-CNES_01-03_Format_Specification_of_OBS2CO_WaterColor_Products.pdf ,SENTINEL2,MSI,"S2A,S2B",L2,"MSI,MAJA,SENTINEL,sentinel2,S2,S2A,S2B,L2,L2B,WATER",OPTICAL,proprietary,SENTINEL2 L2B-WATER,2015-06-23T00:00:00Z,S2_MSI_L2B_MAJA_WATER,,,,,,,,,,,,,,,,,,,,,,available,,,, +S2_MSI_L3A_WASP,"The Level-3A product provides a monthly synthesis of surface reflectances from Theia's L2A products. The synthesis is based on a weighted arithmetic mean of clear observations. The data processing is produced by WASP (Weighted Average Synthesis Processor), by MUSCATE data center at CNES, in the framework of THEIA data center. The full description of the product format is available at https://theia.cnes.fr/atdistrib/documents/THEIA-ST-411-0419-CNES_01-04_Format_Specification_of_MUSCATE_Level-3A_Products-signed.pdf ",SENTINEL2,MSI,"S2A,S2B",L3,"MSI,SENTINEL,sentinel2,S2,S2A,S2B,L3,L3A,WASP",OPTICAL,proprietary,SENTINEL2 Level-3A,2015-06-23T00:00:00Z,S2_MSI_L3A_WASP,,,,,,,,,,,,,,,,,,,,,,available,,,, +S3_EFR,"OLCI (Ocean and Land Colour Instrument) Full resolution: 300m at nadir. Level 1 products are calibrated Top Of Atmosphere radiance values at OLCI 21 spectral bands. Radiances are computed from the instrument digital counts by applying geo-referencing, radiometric processing (non-linearity correction, smear correction, dark offset correction, absolute gain calibration adjusted for gain evolution with time), and stray-light correction for straylight effects in OLCI camera's spectrometer and ground imager. Additionally, spatial resampling of OLCI pixels to the 'ideal' instrument grid, initial pixel classification, and annotation at tie points with auxiliary meteorological data and acquisition geometry are provided. The radiance products are accompanied by error estimate products, however the error values are currently not available. - All Sentinel-3 NRT products are available at pick-up point in less than 3h. - All Sentinel-3 Non Time Critical (NTC) products are available at pick-up point in less than 30 days. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. ",SENTINEL3,OLCI,"S3A,S3B",L1,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,EFR",OPTICAL,proprietary,SENTINEL3 EFR,2016-02-16T00:00:00Z,S3_EFR,,,,,available,,available,available,available,,,,,,available,,,available,,,available,,,,available, +S3_EFR_BC002,"OLCI (Ocean and Land Colour Instrument) Full resolution: 300m at nadir. Level 1 products are calibrated Top Of Atmosphere radiance values at OLCI 21 spectral bands. Radiances are computed from the instrument digital counts by applying geo-referencing, radiometric processing (non-linearity correction, smear correction, dark offset correction, absolute gain calibration adjusted for gain evolution with time), and stray-light correction for straylight effects in OLCI camera's spectrometer and ground imager. Additionally, spatial resampling of OLCI pixels to the 'ideal' instrument grid, initial pixel classification, and annotation at tie points with auxiliary meteorological data and acquisition geometry are provided. The radiance products are accompanied by error estimate products, however the error values are currently not available. - All Sentinel-3 NRT products are available at pick-up point in less than 3h. - All Sentinel-3 Non Time Critical (NTC) products are available at pick-up point in less than 30 days. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. ",SENTINEL3,OLCI,"S3A,S3B",L1,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,EFR,BC002",OPTICAL,proprietary,OLCI Level 1B Full Resolution (version BC002) - Sentinel-3 - Reprocessed,2016-04-25T00:00:00Z,S3_EFR_BC002,,,,,,,,,,,,,,,available,,,,,,,,,,, +S3_ERR,"OLCI (Ocean and Land Colour Instrument) Reduced resolution: 1200m at nadir. All Sentinel-3 NRT products are available at pick-up point in less than 3h. Level 1 products are calibrated Top Of Atmosphere radiance values at OLCI 21 spectral bands. Radiances are computed from the instrument digital counts by applying geo-referencing, radiometric processing (non-linearity correction, smear correction, dark offset correction, absolute gain calibration adjusted for gain evolution with time), and stray-light correction for straylight effects in OLCI camera's spectrometer and ground imager. Additionally, spatial resampling of OLCI pixels to the 'ideal' instrument grid, initial pixel classification, and annotation at tie points with auxiliary meteorological data and acquisition geometry are provided. The radiance products are accompanied by error estimate products, however the error values are currently not available. - All Sentinel-3 NRT products are available at pick-up point in less than 3h - All Sentinel-3 Non Time Critical (NTC) products are available at pick-up point in less than 30 days Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. ",SENTINEL3,OLCI,"S3A,S3B",L1,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,ERR",OPTICAL,proprietary,SENTINEL3 ERR,2016-02-16T00:00:00Z,S3_ERR,,,,,available,,available,available,available,,,,,,available,,,available,,,available,,,,available, +S3_ERR_BC002,"OLCI (Ocean and Land Colour Instrument) Reduced resolution: 1200m at nadir. Level 1 products are calibrated Top Of Atmosphere radiance values at OLCI 21 spectral bands. Radiances are computed from the instrument digital counts by applying geo-referencing, radiometric processing (non-linearity correction, smear correction, dark offset correction, absolute gain calibration adjusted for gain evolution with time), and stray-light correction for straylight effects in OLCI camera's spectrometer and ground imager. Additionally, spatial resampling of OLCI pixels to the 'ideal' instrument grid, initial pixel classification, and annotation at tie points with auxiliary meteorological data and acquisition geometry are provided. The radiance products are accompanied by error estimate products, however the error values are currently not available. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This collection contains reprocessed data from baseline collection 002. Operational data can be found in the corresponding collection. ",SENTINEL3,OLCI,"S3A,S3B",L1,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,ERR,BC002",OPTICAL,proprietary,OLCI Level 1B Reduced Resolution (version BC002) - Sentinel-3 - Reprocessed,2016-04-25T00:00:00Z,S3_ERR_BC002,,,,,,,,,,,,,,,available,,,,,,,,,,, +S3_LAN,LAN or SR_2_LAN___ (peps),SENTINEL3,SRAL,"S3A,S3B",L2,"SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,LAN",RADAR,proprietary,SENTINEL3 SRAL Level-2 LAN,2016-02-16T00:00:00Z,S3_LAN,,,,,available,,available,available,available,,,,,,,,,available,,,available,,,,, +S3_LAN_HY,"Sentinel-3 STM payload includes two main instruments: the Sentinel-3 Radar ALtimeter (SRAL) and a MicroWave Radiometer (MWR). SRAL is providing continuous topography measurements of the Earth's surface. It is the first radar altimeter operating exclusively with delay-Doppler capabilities, which provides a significant improvement of the along-track resolution compared to conventional Low Resolution Mode (LRM) altimeters. This enhancement is highly valuable over continental and sea ice surfaces, considering their heterogeneous characteristics. ESA and the Sentinel-3 Mission Performance Cluster (MPC) have developed in 2021-2022 dedicated delay-Doppler and Level-2 processing chains for the generation of new Sentinel-3 STM LAND level-2 products over inland waters, sea-ice, and land ice areas. The main objective of these so-called “Thematic Products” is to address the specific needs of the user communities related to the three different Thematic surfaces. For Hydrology Thematic Products, the coverage includes all the continental surfaces, except the Antarctica ice sheet, and Greenland ice sheet interior. Over coastal zones the 50 km common area between Land and Marine products remains. Therefore, the Hydrology products cover up to 25 km over surfaces considered as Marine. ",SENTINEL3,SRAL,"S3A,S3B",L2,"SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,LAN,HYDROLOGY",RADAR,proprietary,SENTINEL3 SRAL Level-2 LAN HYDRO,2016-02-16T00:00:00Z,S3_LAN_HY,,,,,,,,,,,,,,,,,,,,,,,,,available, +S3_LAN_LI,"Sentinel-3 STM payload includes two main instruments: the Sentinel-3 Radar ALtimeter (SRAL) and a MicroWave Radiometer (MWR). SRAL is providing continuous topography measurements of the Earth's surface. It is the first radar altimeter operating exclusively with delay-Doppler capabilities, which provides a significant improvement of the along-track resolution compared to conventional Low Resolution Mode (LRM) altimeters. This enhancement is highly valuable over continental and sea ice surfaces, considering their heterogeneous characteristics. ESA and the Sentinel-3 Mission Performance Cluster (MPC) have developed in 2021-2022 dedicated delay-Doppler and Level-2 processing chains for the generation of new Sentinel-3 STM LAND level-2 products over inland waters, sea-ice, and land ice areas. The main objective of these so-called “Thematic Products” is to address the specific needs of the user communities related to the three different Thematic surfaces. Each Sentinel-3 STM Land Thematic Product has a dedicated geographical coverage, defined in a Thematic Mask. For Land Ice Thematic Products, the mask includes the Antarctica and Greenland ice sheets, along with glacier areas as defined in the Randolph Glacier Inventory (RGI) database. ",SENTINEL3,SRAL,"S3A,S3B",L2,"SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,LAN,LAND,ICE",RADAR,proprietary,SENTINEL3 SRAL Level-2 LAN LAND ICE,2016-02-16T00:00:00Z,S3_LAN_LI,,,,,,,,,,,,,,,,,,,,,,,,,available, +S3_LAN_SI,"Sentinel-3 STM payload includes two main instruments: the Sentinel-3 Radar ALtimeter (SRAL) and a MicroWave Radiometer (MWR). SRAL is providing continuous topography measurements of the Earth's surface. It is the first radar altimeter operating exclusively with delay-Doppler capabilities, which provides a significant improvement of the along-track resolution compared to conventional Low Resolution Mode (LRM) altimeters. This enhancement is highly valuable over continental and sea ice surfaces, considering their heterogeneous characteristics. ESA and the Sentinel-3 Mission Performance Cluster (MPC) have developed in 2021-2022 dedicated delay-Doppler and Level-2 processing chains for the generation of new Sentinel-3 STM LAND level-2 products over inland waters, sea-ice, and land ice areas. The main objective of these so-called “Thematic Products” is to address the specific needs of the user communities related to the three different Thematic surfaces. Each Sentinel-3 STM Land Thematic Product has a dedicated geographical coverage, defined in a Thematic Mask. For Sea Ice Thematic Products, the mask remains static, and the coverage was calculated by the Expert Support Laboratories (ESL) of the Sentinel-3 MPC, based on the maximum of sea ice extent given a NSIDC sea ice climatology. ",SENTINEL3,SRAL,"S3A,S3B",L2,"SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,LAN,SEA,ICE",RADAR,proprietary,SENTINEL3 SRAL Level-2 LAN SEA ICE,2016-02-16T00:00:00Z,S3_LAN_SI,,,,,,,,,,,,,,,,,,,,,,,,,available, +S3_OLCI_L2LFR,"The OLCI Level-2 Land Full Resolution (OL_2_LFR) products contain land and atmospheric geophysical products at Full resolution with a spatial sampling of approximately 300 m. The products are assumed to be computed in Near Real Time (NRT) (i.e. delivered to users less than 3 hours after acquisition), in Non-Time Critical (NTC) (i.e. within 1 month after acquisition) or in re-processed NTC. Details at https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-olci/product-types/level-2-land ",SENTINEL3,OLCI,"S3A,S3B",L2,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2LFR,LFR",OPTICAL,proprietary,SENTINEL3 OLCI Level-2 Land Full Resolution,2016-02-16T00:00:00Z,S3_OLCI_L2LFR,,,,,available,,available,available,available,,,,,,,,,available,,,available,,,,available, +S3_OLCI_L2LRR,"The OLCI Level-2 Land Reduced Resolution (OL_2_LRR) products contain land and atmospheric geophysical products at Reduced resolution with a spatial sampling of approximately 1.2 km. The products are assumed to be computed in Near Real Time (NRT) (i.e. delivered to users less than 3 hours after acquisition), in Non-Time Critical (NTC) (i.e. within 1 month after acquisition) or in re-processed NTC. Details at https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-olci/product-types/level-2-land ",SENTINEL3,OLCI,"S3A,S3B",L2,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2LRR,LRR",OPTICAL,proprietary,SENTINEL3 OLCI Level-2 Land Reduced Resolution,2016-02-16T00:00:00Z,S3_OLCI_L2LRR,,,,,available,,available,available,available,,,,,,,,,available,,,available,,,,available, +S3_OLCI_L2WFR,"The OLCI Level-2 Water Full Resolution (OL_2_WFR) products contain water and atmospheric geophysical products at Full resolution with a spatial sampling of approximately 300 m. The products are assumed to be computed in Near Real Time (NRT) (i.e. delivered to users less than 3 hours after acquisition), in Non-Time Critical (NTC) (i.e. within 1 month after acquisition) or in re-processed NTC. Details at https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-olci/product-types/level-2-water ",SENTINEL3,OLCI,"S3A,S3B",L2,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2WFR,WFR",OPTICAL,proprietary,SENTINEL3 OLCI Level-2 Water Full Resolution,2016-02-16T00:00:00Z,S3_OLCI_L2WFR,,,,,available,,available,available,available,,,,,,available,,,available,,,available,,,,available, +S3_OLCI_L2WFR_BC003,"OLCI Level 2 Marine products provide spectral information on the colour of the oceans (water reflectances). These radiometric products are used to estimate geophysical parameters e.g. estimates of phytoplankton biomass through determining the Chlorophyll-a (Chl) concentration. In coastal areas, they also allow monitoring of the sediment load via the Total Suspended Matter (TSM) product. Full resolution products are at a nominal 300m resolution. This collection contains reprocessed data from baseline collection 003. Operational data can be found in the corresponding collection. Details at https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-olci/product-types/level-2-water ",SENTINEL3,OLCI,"S3A,S3B",L2,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2WFR,WFR,REPROCESSED,BC003",OPTICAL,proprietary,SENTINEL3 OLCI Level-2 Water Full Resolution Reprocessed from BC003,2016-02-16T00:00:00Z,S3_OLCI_L2WFR_BC003,,,,,,,,,,,,,,,available,,,,,,,,,,, +S3_OLCI_L2WRR,"The OLCI Level-2 Water Reduced Resolution (OL_2_WRR) products contain water and atmospheric geophysical products at Reduced resolution with a spatial sampling of approximately 1.2 km. The products are assumed to be computed in Near Real Time (NRT) (i.e. delivered to users less than 3 hours after acquisition), in Non-Time Critical (NTC) (i.e. within 1 month after acquisition) or in re-processed NTC. Details at https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-olci/product-types/level-2-water ",SENTINEL3,OLCI,"S3A,S3B",L2,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2WRR,WRR",OPTICAL,proprietary,SENTINEL3 OLCI Level-2 Water Reduced Resolution,2016-02-16T00:00:00Z,S3_OLCI_L2WRR,,,,,available,,available,available,available,,,,,,available,,,available,,,available,,,,available, +S3_OLCI_L2WRR_BC003,"OLCI Level 2 Marine products provide spectral information on the colour of the oceans (water reflectances). These radiometric products are used to estimate geophysical parameters e.g. estimates of phytoplankton biomass through determining the Chlorophyll-a (Chl) concentration. In coastal areas, they also allow monitoring of the sediment load via the Total Suspended Matter (TSM) product. Reduced resolution products are at a nominal 1km resolution. This collection contains reprocessed data from baseline collection 003. Operational data can be found in the corresponding collection. ",SENTINEL3,OLCI,"S3A,S3B",L2,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2WRR,WRR,REPROCESSED,BC003",OPTICAL,proprietary,SENTINEL3 OLCI Level-2 Water Reduced Resolution Reprocessed from BC003,2016-02-16T00:00:00Z,S3_OLCI_L2WRR_BC003,,,,,,,,,,,,,,,available,,,,,,,,,,, +S3_RAC,Sentinel 3 OLCI products output during Radiometric Calibration mode ,SENTINEL3,OLCI,"S3A,S3B",L1,"OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L2,RAC",OPTICAL,proprietary,SENTINEL3 RAC,2016-02-16T00:00:00Z,S3_RAC,,,,,,,,,,,,,,,,,,,,,available,,,,, +S3_SLSTR_L1RBT,"SLSTR Level-1 observation mode products consisting of full resolution, geolocated, co-located nadir and along track view, Top of Atmosphere (TOA) brightness temperatures (in the case of thermal IR channels) or radiances (in the case of visible, NIR and SWIR channels) from all SLSTR channels, and quality flags, pixel classification information and meteorological annotations ",SENTINEL3,SLSTR,"S3A,S3B",L1,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1RBT,RBT",ATMOSPHERIC,proprietary,SENTINEL3 SLSTR Level-1,2016-02-16T00:00:00Z,S3_SLSTR_L1RBT,,,,,available,,available,available,available,,,,,,available,,,available,,,available,,,,available, +S3_SLSTR_L1RBT_BC003,"The SLSTR level 1 products contain: the radiances of the 6 visible (VIS), Near Infra-Red (NIR) and Short Wave Infra-Red (SWIR) bands (on the A and B stripe grids); the Brightness Temperature (BT) for the 3 Thermal Infra-Red (TIR) bands; the BT for the 2 Fire (FIR) bands. Resolution: 1km at nadir (TIR), 500m (VIS). All are provided for both the oblique and nadir view. These measurements are accompanied with grid and time information, quality flags, error estimates and meteorological auxiliary data. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This collection contains reprocessed data from baseline collection 003. Operational data can be found in the corresponding collection. ",SENTINEL3,SLSTR,"S3A,S3B",L1,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1RBT,RBT,VIS,NIR,SWIR,BT,TIR,FIR,Reprocessed,BC003",ATMOSPHERIC,proprietary,SLSTR Level 1B Radiances and Brightness Temperatures (version BC003) - Sentinel-3 - Reprocessed,2016-04-19T00:00:00Z,S3_SLSTR_L1RBT_BC003,,,,,,,,,,,,,,,available,,,,,,,,,,, +S3_SLSTR_L1RBT_BC004,"SLSTR Level 1B Radiances and Brightness Temperatures (version BC004) - Sentinel 3 - Reprocessed The SLSTR level 1 products contain: the radiances of the 6 visible (VIS), Near Infra-Red (NIR) and Short Wave Infra-Red (SWIR) bands (on the A and B stripe grids); the Brightness Temperature (BT) for the 3 Thermal Infra-Red (TIR) bands; the BT for the 2 Fire (FIR) bands. Resolution: 1km at nadir (TIR), 500m (VIS). All are provided for both the oblique and nadir view. These measurements are accompanied with grid and time information, quality flags, error estimates and meteorological auxiliary data. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This collection contains reprocessed data from baseline collection 004. Operational data can be found in the corresponding collection. ",SENTINEL3,SLSTR,"S3A,S3B",L1,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1RBT,RBT,VIS,NIR,SWIR,BT,TIR,FIR,Reprocessed,BC004",ATMOSPHERIC,proprietary,SENTINEL3 SLSTR Level-1 RBT - Reprocessed from BC004,2018-05-09T00:00:00Z,S3_SLSTR_L1RBT_BC004,,,,,,,,,,,,,,,available,,,,,,,,,,, +S3_SLSTR_L2,"The SLSTR Level-2 products are generated in five different types: 1. SL_2_WCT, including the Sea Surface Temperature for single and dual view, for 2 or 3 channels (internal product only), 2. SL_2_WST, including the Level-2P Sea surface temperature (provided to the users), 3. SL_2_LST, including the Land Surface Temperature parameters (provided to the users), 4. SL_2_FRP, including the Fire Radiative Power parameters (provided to the users), 5.SL_2_AOD, including the Aerosol Optical Depth parameters (provided to the users). The Level-2 product are organized in packages composed of one manifest file and several measurement and annotation data files (between 2 and 21 files depending on the package). The manifest file is in XML format and gathers general information concerning product and processing. The measurement and annotation data files are in netCDF 4 format, and include dimensions, variables and associated attributes. Regarding the measurement files: one measurement file, providing the land surface temperature, associated uncertainties and other supporting fields, is included in the SL_2_LST packet. The annotation data files are generated from the annotation files included in the SL_1RBT package and their format is identical to the files in the Level-1 packet.The SL_2_LST packet contains 10 annotation files, providing the same parameters as in SL_2_WCT and, in addition, some vegetation parameters. ",SENTINEL3,SLSTR,"S3A,S3B",L2,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2FRP,FRP,L2WCT,WCT,L2WST,WST,L2AOD,AOD",ATMOSPHERIC,proprietary,SENTINEL3 SLSTR Level-2,2017-07-05T00:00:00Z,S3_SLSTR_L2,,,,,,,,,,,,,,,,,,,,,,,,,available, +S3_SLSTR_L2AOD,"The Copernicus NRT S3 AOD processor quantifies the abundance of aerosol particles and monitors their global distribution and long-range transport, at the scale of 9.5 x 9.5 km2. All observations are made available in less than three hours from the SLSTR observation sensing time. It is only applicable during daytime. NOTE: The SLSTR L2 AOD product is generated by EUMETSAT in NRT only. An offline (NTC) AOD product is generated from SYN data by ESA, exploiting the synergy between the SLSTR and OLCI instruments. ",SENTINEL3,SLSTR,"S3A,S3B",L2,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2AOD,AOD",ATMOSPHERIC,proprietary,SENTINEL3 SLSTR Level-2 AOD,2016-02-16T00:00:00Z,S3_SLSTR_L2AOD,,,,,available,,available,available,available,,,,,,available,,,,,,available,,,,, +S3_SLSTR_L2FRP,"The SLSTR Level-2 FRP product is providing one measurement data file, FRP_in.nc, with Fire Radiative Power (FRP) values and associated parameters generated for each fire detected over land and projected on the SLSTR 1 km grid. The fire detection is based on a mixed thermal band, combining S7 radiometric measurements and, for pixels associated with a saturated value of S7 (i.e. above 311 K), F1 radiometric measurements. ",SENTINEL3,SLSTR,"S3A,S3B",L2,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2FRP,FRP",ATMOSPHERIC,proprietary,SENTINEL3 SLSTR Level-2 FRP,2016-02-16T00:00:00Z,S3_SLSTR_L2FRP,,,,,available,,available,available,available,,,,,,available,,,available,,,available,,,,, +S3_SLSTR_L2LST,The SLSTR Level-2 LST product provides land surface parameters generated on the wide 1 km measurement grid. It contains measurement file with Land Surface Temperature (LST) values with associated parameters (LST parameters are computed and provided for each pixel (re-gridded or orphan) included in the 1 km measurement grid) ,SENTINEL3,SLSTR,"S3A,S3B",L2,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2LST,LST",ATMOSPHERIC,proprietary,SENTINEL3 SLSTR Level-2 LST,2016-02-16T00:00:00Z,S3_SLSTR_L2LST,,,,,available,,available,available,available,,,,,,,,,available,,,available,,,,, +S3_SLSTR_L2WST,The SLSTR Level-2 WST product provides water surface parameters generated on the wide 1 km measurement grid. It contains measurement file with Water Surface Temperature (WST) values with associated parameters (WST parameters are computed and provided for each pixel (re-gridded or orphan) included in the 1 km measurement grid) ,SENTINEL3,SLSTR,"S3A,S3B",L2,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2WST,WST",ATMOSPHERIC,proprietary,SENTINEL3 SLSTR Level-2 WST,2016-02-16T00:00:00Z,S3_SLSTR_L2WST,,,,,available,,available,available,available,,,,,,available,,,available,,,available,,,,, +S3_SLSTR_L2WST_BC003,"The SLSTR SST has a spatial resolution of 1km at nadir. Skin Sea Surface Temperature following the GHRSST L2P GDS2 format specification, see https://www.ghrsst.org/ . Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This collection contains reprocessed data from baseline collection 003. Operational data can be found in the corresponding collection. ",SENTINEL3,SLSTR,"S3A,S3B",L2,"SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,L2WST,WST,REPROCESSED,BC003",ATMOSPHERIC,proprietary,SENTINEL3 SLSTR Level-2 WST Reprocessed from BC003,2016-04-18T00:00:00Z,S3_SLSTR_L2WST_BC003,,,,,,,,,,,,,,,available,,,,,,,,,,, +S3_SRA,"SRAL Level 1B: Complex echoes (In-phase (I) and Quadrature (Q)) for the Low Resolution Mode (LRM) and/or Synthetic Aperture Radar (SAR) mode both for C Band and Ku band. When the altimeter is in SAR mode, this product also contains the so-called Pseudo LRM (PLRM) echoes. - All Sentinel-3 Near Real Time (NRT) products are available at pick-up point in less than 3h. - All Sentinel-3 Non Time Critical (NTC) products are available at pick-up point in less than 30 days. - All Sentinel-3 Short Time Critical (STC) products are available at pick-up point in less than 48 hours. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. ",SENTINEL3,SRAL,"S3A,S3B",L1,"SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1",RADAR,proprietary,SENTINEL3 SRAL Level-1,2016-02-16T00:00:00Z,S3_SRA,,,,,available,,available,available,available,,,,,,available,,,available,,,available,,,,available, +S3_SRA_1A_BC004,"SRAL Level 1A Unpacked L0 Complex Echoes (version BC004) - Sentinel-3 - Reprocessed Fundamental science and engineering product development supporting operational users. This product is most relevant to SAR processing specialists allowing fundamental studies on SAR processing such as Doppler beam formation and for calibration studies using ground-based Transponders. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This collection contains reprocessed data from baseline collection 004. Operational data can be found in the corresponding collection. ",SENTINEL3,SRAL,"S3A,S3B",L1A,"SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1A,REPROCESSED,BC004",RADAR,proprietary,SENTINEL3 SRAL Level-1A Unpacked - Reprocessed from BC004,2016-03-01T00:00:00Z,S3_SRA_1A_BC004,,,,,,,,,,,,,,,available,,,,,,,,,,, +S3_SRA_1A_BC005,"Fundamental science and engineering product development supporting operational users. This product is most relevant to SAR processing specialists allowing fundamental studies on SAR processing such as Doppler beam formation and for calibration studies using ground-based Transponders. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This dataset contains reprocessed data from Baseline Collection 005, and is continued by the operational NTC data stream from 10/Mar/2023 onwards. ",SENTINEL3,SRAL,"S3A,S3B",L1A,"SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1A,REPROCESSED,BC005",RADAR,proprietary,SRAL Level 1A Unpacked L0 Complex Echoes (version BC005) - Sentinel-3 - Reprocessed,2016-05-05T00:00:00Z,S3_SRA_1A_BC005,,,,,,,,,,,,,,,available,,,,,,,,,,, +S3_SRA_1B_BC004,"SRAL Level 1B (version BC004) - Sentinel-3 - Reprocessed SRAL Level 1B: Complex echoes (In-phase (I) and Quadrature (Q)) for the Low Resolution Mode (LRM) and/or Synthetic Aperture Radar (SAR) mode both for C Band and Ku band. When the altimeter is in SAR mode, this product also contains the so-called Pseudo LRM (PLRM) echoes. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This collection contains reprocessed data from baseline collection 004. Operational data can be found in the corresponding collection. ",SENTINEL3,SRAL,"S3A,S3B",L1B,"SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1B,REPROCESSED,BC004",RADAR,proprietary,SENTINEL3 SRAL Level-1B - Reprocessed from BC004,2016-03-01T00:00:00Z,S3_SRA_1B_BC004,,,,,,,,,,,,,,,available,,,,,,,,,,, +S3_SRA_1B_BC005,"SRAL Level 1B: Complex echoes (In-phase (I) and Quadrature (Q)) for the Low Resolution Mode (LRM) and/or Synthetic Aperture Radar (SAR) mode both for C Band and Ku band. When the altimeter is in SAR mode, this product also contains the so-called Pseudo LRM (PLRM) echoes. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This dataset contains reprocessed data from Baseline Collection 005, and is continued by the operational NTC data stream from 10/Mar/2023 onwards. ",SENTINEL3,SRAL,"S3A,S3B",L1B,"SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1B,REPROCESSED,BC005",RADAR,proprietary,SRAL Level 1B (version BC005) - Sentinel-3 - Reprocessed,2016-05-05T00:00:00Z,S3_SRA_1B_BC005,,,,,,,,,,,,,,,available,,,,,,,,,,, +S3_SRA_A,"A Level 1A SRAL product contains one ""measurement data file"" containing the L1A measurements parameters: ECHO_SAR_Ku: L1A Tracking measurements (sorted and calibrated) in SAR mode - Ku-band (80-Hz) ECHO_PLRM: L1A Tracking measurements (sorted and calibrated) in pseudo-LRM mode - Ku and C bands (80-Hz) ",SENTINEL3,SRAL,"S3A,S3B",L1,"SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1",RADAR,proprietary,SENTINEL3 SRAL Level-1 SRA_A,2016-02-16T00:00:00Z,S3_SRA_A,,,,,available,,available,available,available,,,,,,available,,,available,,,available,,,,available, +S3_SRA_BS,"A Level 1B-S SRAL product contains one ""measurement data file"" containing the L1b measurements parameters: ECHO_SAR_Ku : L1b Tracking measurements in SAR mode - Ku band (20-Hz) as defined in the L1b MEAS product completed with SAR expert information ECHO_PLRM : L1b Tracking measurements in pseudo-LRM mode - Ku and C bands (20-Hz) as defined in the L1b MEAS product ",SENTINEL3,SRAL,"S3A,S3B",L1,"SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1",RADAR,proprietary,SENTINEL3 SRAL Level-1 SRA_BS,2016-02-16T00:00:00Z,S3_SRA_BS,,,,,available,,available,available,available,,,,,,available,,,available,,,available,,,,available, +S3_SRA_BS_BC004,"SRAL Level 1B Stack Echoes (version BC004) - Sentinel-3 - Reprocessed SRAL Level 1B: Complex echoes (In-phase (I) and Quadrature (Q)) for the Low Resolution Mode (LRM) and/or Synthetic Aperture Radar (SAR) mode both for C Band and Ku band. When the altimeter is in SAR mode, this product also contains the so-called Pseudo LRM (PLRM) echoes. Complex (In-phase and Quadrature) echoes (I's and Q;s) after slant/Doppler range correction. This product is most relevant to geophysical retrieval algorithm developers (over ocean, land and ice surfaces), surface characterisations studies (e.g. impact of sea state bias, wave directional effects etc) and Quality Control systems. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This collection contains reprocessed data from baseline collection 004. Operational data can be found in the corresponding collection. ",SENTINEL3,SRAL,"S3A,S3B",L1B,"SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1B,REPROCESSED,STACK,ECHOES,BC004",RADAR,proprietary,SENTINEL3 SRAL Level-1B Stack Echoes - Reprocessed from BC004,2016-03-01T00:00:00Z,S3_SRA_BS_BC004,,,,,,,,,,,,,,,available,,,,,,,,,,, +S3_SRA_BS_BC005,"SRAL Level 1B: Complex echoes (In-phase (I) and Quadrature (Q)) for the Low Resolution Mode (LRM) and/or Synthetic Aperture Radar (SAR) mode both for C Band and Ku band. When the altimeter is in SAR mode, this product also contains the so-called Pseudo LRM (PLRM) echoes. Complex (In-phase and Quadrature) echoes (I's and Q;s) after slant/Doppler range correction. This product is most relevant to geophysical retrieval algorithm developers (over ocean, land and ice surfaces), surface characterisations studies (e.g. impact of sea state bias, wave directional effects etc) and Quality Control systems. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This dataset contains reprocessed data from Baseline Collection 005, and is continued by the operational NTC data stream from 10/Mar/2023 onwards. ",SENTINEL3,SRAL,"S3A,S3B",L1B,"SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1B,REPROCESSED,STACK,ECHOES,BC005",RADAR,proprietary,SRAL Level 1B Stack Echoes (version BC005) - Sentinel-3 - Reprocessed,2016-05-05T00:00:00Z,S3_SRA_BS_BC005,,,,,,,,,,,,,,,available,,,,,,,,,,, +S3_SY_AOD,"The Level-2 SYN AOD product (SY_2_AOD) is produced by a dedicated processor including the whole SYN L1 processing module and a global synergy level 2 processing module retrieving, over land and sea, aerosol optical thickness. The resolution of this product is wider than classic S3 products, as the dataset are provided on a 4.5 km² resolution ",SENTINEL3,SYNERGY,"S3A,S3B",L2,"SYNERGY,SY,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,AOD","OPTICAL,RADAR",proprietary,SENTINEL3 SYNERGY Level-2 AOD,2016-02-16T00:00:00Z,S3_SY_AOD,,,,,available,,available,available,,,,,,,,,,available,,,available,,,,, +S3_SY_SYN,"The Level-2 SYN product (SY_2_SYN) is produced by the Synergy Level-1/2 SDR software and contains surface reflectance and aerosol parameters over land. All measurement datasets are provided on the OLCI image grid, similar to the one included in the OLCI L1b product. Some sub-sampled annotations and atmospheric datasets are provided on the OLCI tie-points grid. Several associated variables are also provided in annotation data files. ",SENTINEL3,SYNERGY,"S3A,S3B",L2,"SYNERGY,SY,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,SYN","OPTICAL,RADAR",proprietary,SENTINEL3 SYNERGY Level-2 SYN,2016-02-16T00:00:00Z,S3_SY_SYN,,,,,available,,available,available,,,,,,,,,,available,,,available,,,,, +S3_SY_V10,"The Level-2 VG1 and V10 SYN products (SY_2_VG1 and SY_2_V10 respectively) are produced by the SYNERGY Level-2 processor and contain 1 km VEGETATION-like product, 1 and 10 days synthesis surface reflectances and NDVI. The product grid and the four spectral bands are similar to the SYN Level-2 VGP product. ",SENTINEL3,SYNERGY,"S3A,S3B",LEVEL-2W,"SYNERGY,SY,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,V10","OPTICAL,RADAR",proprietary,SENTINEL3 SYNERGY Level-2 V10,2016-02-16T00:00:00Z,S3_SY_V10,,,,,available,,available,available,,,,,,,,,,available,,,available,,,,, +S3_SY_VG1,"The Level-2 VG1 and V10 SYN products (SY_2_VG1 and SY_2_V10 respectively) are produced by the SYNERGY Level-2 processor and contain 1 km VEGETATION-like product, 1 and 10 days synthesis surface reflectances and NDVI. The product grid and the four spectral bands are similar to the SYN Level-2 VGP product. ",SENTINEL3,SYNERGY,"S3A,S3B",LEVEL-2,"SYNERGY,SY,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,VG1","OPTICAL,RADAR",proprietary,SENTINEL3 SYNERGY Level-2 VG1,2016-02-16T00:00:00Z,S3_SY_VG1,,,,,available,,available,available,,,,,,,,,,available,,,available,,,,, +S3_SY_VGP,"The Level-2 VGP SYN product (SY_2_VGP) is produced by the Global Synergy Level-1/2 software and contains 1 km VEGETATION-like product TOA reflectances. The ""1 km VEGETATION-like product"" label means that measurements are provided on a regular latitude-longitude grid, with an equatorial sampling distance of approximately 1 km. This product is restricted in longitude, including only filled ones. ",SENTINEL3,SYNERGY,"S3A,S3B",LEVEL-2,"SYNERGY,SY,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,VGP","OPTICAL,RADAR",proprietary,SENTINEL3 SYNERGY Level-2 VGP,2016-02-16T00:00:00Z,S3_SY_VGP,,,,,available,,available,available,,,,,,,,,,available,,,available,,,,, +S3_WAT,"The products contain the typical altimetry measurements, like the altimeter range, the sea surface height, the wind speed, significant wave height and all required geophysical corrections and related flags. Also the sea Ice freeboard measurement is included. The measurements in the standard data file provide the measurements in low (1 Hz = approx. 7km) and high resolution (20 Hz = approx. 300 m), in LRM mode or in SAR mode, for both C-band and Ku band. The SAR mode is the default mode. The reduced measurement data file contains 1 Hz measurements only. The enhanced measurement data file contains also the waveforms and associated parameters and the pseudo LRM measurements when in SAR mode. This product contains the following datasets: Sea Level Global(NRT) (PDS_MG3_CORE_14_GLONRT), Sea Level Global Reduced(NRT)(PDS_MG3_CORE_14_GLONRT_RD), Sea Level Global Standard(NRT) (PDS_MG3_CORE_14_GLONRT_SD), Sea Level Global Enhanced(NRT) (PDS_MG3_CORE_14_GLONRT_EN) - All Sentinel-3 NRT products are available at pick-up point in less than 3h. - All Sentinel-3 Non Time Critical (NTC) products are available at pick-up point in less than 30 days - All Sentinel-3 Short Time Critical (STC) products are available at pick-up point in less than 48 hours Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. ",SENTINEL3,SRAL,"S3A,S3B",L2,"SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,WAT",RADAR,proprietary,SENTINEL3 SRAL Level-2 WAT,2016-02-16T00:00:00Z,S3_WAT,,,,,available,,available,available,available,,,,,,available,,,available,,,available,,,,available, +S3_WAT_BC004,"The products contain the typical altimetry measurements, like the altimeter range, the sea surface height, the wind speed, significant wave height and all required geophysical corrections and related flags. Also the sea Ice freeboard measurement is included. The measurements in the standard data file provide the measurements in low (1 Hz = approx. 7km) and high resolution (20 Hz = approx. 300 m), in LRM mode or in SAR mode, for both C-band and Ku band. The SAR mode is the default mode. The reduced measurement data file contains 1 Hz measurements only. The enhanced measurement data file contains also the waveforms and associated parameters and the pseudo LRM measurements when in SAR mode. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This collection contains reprocessed data from baseline collection 004. Operational data can be found in the corresponding collection. ",SENTINEL3,SRAL,"S3A,S3B",L2,"SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,WAT,REPROCESSED,BC004",RADAR,proprietary,SRAL Level 2 Altimetry Global - Reprocessed from BC004,2016-03-01T00:00:00Z,S3_WAT_BC004,,,,,,,,,,,,,,,available,,,,,,,,,,, +S3_WAT_BC005,"The products contain the typical altimetry measurements, like the altimeter range, the sea surface height, the wind speed, significant wave height and all required geophysical corrections and related flags. Also the sea Ice freeboard measurement is included. The measurements in the standard data file provide the measurements in low (1 Hz = approx. 7km) and high resolution (20 Hz = approx. 300 m), in LRM mode or in SAR mode, for both C-band and Ku band. The SAR mode is the default mode. The reduced measurement data file contains 1 Hz measurements only. The enhanced measurement data file contains also the waveforms and associated parameters and the pseudo LRM measurements when in SAR mode. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This collection contains reprocessed data from baseline collection 004. Operational data can be found in the corresponding collection. ",SENTINEL3,SRAL,"S3A,S3B",L2,"SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,WAT,REPROCESSED,BC005",RADAR,proprietary,SRAL Level 2 Altimetry Global (version BC005) - Sentinel-3 - Reprocessed,2016-05-05T00:00:00Z,S3_WAT_BC005,,,,,,,,,,,,,,,available,,,,,,,,,,, +S5P_L1B_IR_ALL,"Solar irradiance spectra for all bands (UV1-6 and SWIR) The TROPOMI instrument is a space-borne, nadir-viewing, imaging spectrometer covering wavelength bands between the ultraviolet and the shortwave infrared. The instrument, the single payload of the Sentinel-5P spacecraft, uses passive remote sensing techniques to attain its objective by measuring, at the Top Of Atmosphere (TOA), the solar radiation reflected by and radiated from the earth. The instrument operates in a push-broom configuration (non-scanning), with a swath width of ~2600 km on the Earth's surface. The typical pixel size (near nadir) will be 7x3.5 km2 for all spectral bands, with the exception of the UV1 band (7x28 km2) and SWIR bands (7x7 km2). ",SENTINEL5P,TROPOMI,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,IR,SIR,SWIR,Irradiances,UVN",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Irradiances for the SWIR and UNV bands,2017-10-13T00:00:00Z,S5P_L1B_IR_ALL,,,,,,,,,available,,,,,,,,,,,,,,,,available, +S5P_L1B_IR_SIR,"Solar irradiance spectra for the SWIR bands (band 7 and band 8). TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",SENTINEL5P,TROPOMI,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,IR,SIR,SWIR,Irradiances",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Irradiances for the SWIR bands,2017-10-13T00:00:00Z,S5P_L1B_IR_SIR,,,,,available,,available,available,,,,,,,,,,,,,,,,,, +S5P_L1B_IR_UVN,"Solar irradiance spectra for the UVN bands (band 1 through band 6). TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",SENTINEL5P,TROPOMI,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,IR,UVN,Irradiances",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Irradiances for the UVN bands,2017-10-13T00:00:00Z,S5P_L1B_IR_UVN,,,,,available,,available,available,,,,,,,,,,,,,,,,,, +S5P_L1B_RA_BD1,"Sentinel-5 Precursor Level 1B Radiances for spectral band 1. TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",SENTINEL5P,TROPOMI,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,RA,Radiances,BD1,BAND1,B01",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Radiances for spectral band 1,2017-10-13T00:00:00Z,S5P_L1B_RA_BD1,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L1B_RA_BD2,"Sentinel-5 Precursor Level 1B Radiances for spectral band 2. TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",SENTINEL5P,TROPOMI,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,RA,Radiances,BD2,BAND2,B02",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Radiances for spectral band 2,2017-10-13T00:00:00Z,S5P_L1B_RA_BD2,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L1B_RA_BD3,"Sentinel-5 Precursor Level 1B Radiances for spectral band 3. TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",SENTINEL5P,TROPOMI,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,RA,Radiances,BD3,BAND3,B03",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Radiances for spectral band 3,2017-10-13T00:00:00Z,S5P_L1B_RA_BD3,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L1B_RA_BD4,"Sentinel-5 Precursor Level 1B Radiances for spectral band 4. TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",SENTINEL5P,TROPOMI,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,RA,Radiances,BD4,BAND4,B04",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Radiances for spectral band 4,2017-10-13T00:00:00Z,S5P_L1B_RA_BD4,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L1B_RA_BD5,"Sentinel-5 Precursor Level 1B Radiances for spectral band 5. TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",SENTINEL5P,TROPOMI,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,RA,Radiances,BD5,BAND5,B05",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Radiances for spectral band 5,2017-10-13T00:00:00Z,S5P_L1B_RA_BD5,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L1B_RA_BD6,"Sentinel-5 Precursor Level 1B Radiances for spectral band 6. TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",SENTINEL5P,TROPOMI,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,RA,Radiances,BD6,BAND6,B06",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Radiances for spectral band 6,2017-10-13T00:00:00Z,S5P_L1B_RA_BD6,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L1B_RA_BD7,"Sentinel-5 Precursor Level 1B Radiances for spectral band 7. TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",SENTINEL5P,TROPOMI,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,RA,Radiances,BD7,BAND7,B07",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Radiances for spectral band 7,2017-10-13T00:00:00Z,S5P_L1B_RA_BD7,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L1B_RA_BD8,"Sentinel-5 Precursor Level 1B Radiances for spectral band 8. TROPOMI utilises a single telescope to form an image of the target area onto a rectangular slit that acts as the entrance slit of the spectrometer system. There are four different spectrometers, each with its own optics and detector: mediumwave ultraviolet (UV), longwave ultraviolet combined with visible (UVIS), near infrared (NIR), and shortwave infrared (SWIR). The spectrometers for UV, UVIS and NIR are jointly referred to as UVN. Radiation for the SWIR spectrometer is transferred by an optical relay part in the UVN system from the telescope to an interface position (the pupil stop) for the SWIR spectrometer. This is done because of the more stringent thermal requirements on the SWIR part of the instrument. Each of the detectors is divided in two halves, which yields a total of eight spectral bands. ",SENTINEL5P,TROPOMI,S5P,L1B,"SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,RA,Radiances,BD8,BAND8,B08",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 1B Radiances for spectral band 8,2017-10-13T00:00:00Z,S5P_L1B_RA_BD8,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L2_AER_AI,"TROPOMI aerosol index is referred to as the Ultraviolet Aerosol Index (UVAI). The relatively simple calculation of the Aerosol Index is based on wavelength dependent changes in Rayleigh scattering in the UV spectral range where ozone absorption is very small. UVAI can also be calculated in the presence of clouds so that daily, global coverage is possible. This is ideal for tracking the evolution of episodic aerosol plumes from dust outbreaks, volcanic ash, and biomass burning. ",SENTINEL5P,TROPOMI,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,AER,AI,Ultraviolet,Aerosol,Index",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Ultraviolet Aerosol Index,2017-10-13T00:00:00Z,S5P_L2_AER_AI,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L2_AER_LH,"The TROPOMI Aerosol Layer Height product focuses on retrieval of vertically localised aerosol layers in the free troposphere, such as desert dust, biomass burning aerosol, or volcanic ash plumes. The height of such layers is retrieved for cloud-free conditions. Height information for aerosols in the free troposphere is particularly important for aviation safety. Scientific applications include radiative forcing studies, long-range transport modelling and studies of cloud formation processes. Aerosol height information also helps to interpret the UV Aerosol Index (UVAI) in terms of aerosol absorption as the index is strongly height-dependent. ",SENTINEL5P,TROPOMI,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,AER,LH,Aerosol,Layer,Height",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Aerosol Layer Height,2017-10-13T00:00:00Z,S5P_L2_AER_LH,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L2_CH4,"Methane (CH4) is, after carbon dioxide (CO2), the most important contributor to the anthropogenically enhanced greenhouse effect. Roughly three-quarters of methane emissions are anthropogenic and as such it is important to continue the record of satellite-based measurements. TROPOMI aims at providing CH4 column concentrations with high sensitivity to the Earth's surface, good spatio/temporal coverage, and sufficient accuracy to facilitate inverse modelling of sources and sinks. The output product consists of the retrieved methane column and a row vector referred to as the column averaging kernel A. The column averaging kernel describes how the retrieved column relates to the true profile and should be used in validation exercises (when possible) or use of the product in source/sink inverse modelling. The output product also contains altitude levels of the layer interfaces to which the column averaging kernel corresponds. Additional output for Level-2 data products: viewing geometry, precision of retrieved methane, residuals of the fit, quality flags (cloudiness, terrain roughness etc.) and retrieved albedo and aerosol properties. The latter properties are required for a posteriori filtering and for estimation of total retrieval error. The Sentinel-5 Precursor mission flies in loose formation (about 3.5 - 5 minutes behind) with the S-NPP (SUOMI-National Polar-orbiting Partnership) mission to use VIIRS (Visible Infrared Imaging Radiometer Suite) cloud information to select cloud free TROPOMI pixels for high quality methane retrieval. ",SENTINEL5P,TROPOMI,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,CH4,Methane",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Methane,2017-10-13T00:00:00Z,S5P_L2_CH4,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L2_CLOUD,"The TROPOMI instrument, single payload onboard Sentinel-5 Precursor, retrieves operationally the most important quantities for cloud correction of satellite trace gas retrievals: cloud fraction, cloud optical thickness (albedo), and cloud-top pressure (height). Cloud parameters from TROPOMI are not only used for enhancing the accuracy of trace gas retrievals, but also to extend the satellite data record of cloud information derived from oxygen A-band measurements initiated with GOME. ",SENTINEL5P,TROPOMI,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,CLOUD",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Cloud,2017-10-13T00:00:00Z,S5P_L2_CLOUD,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L2_CO,"The TROPOMI instrument, single payload onboard Sentinel-5 Precursor, retrieves the CO global abundance exploiting clear-sky and cloudy-sky Earth radiance measurements in the 2.3 µm spectral range of the shortwave infrared (SWIR) part of the solar spectrum. TROPOMI clear sky observations provide CO total columns with sensitivity to the tropospheric boundary layer. For cloudy atmospheres, the column sensitivity changes according to the light path. The TROPOMI CO retrieval uses the same method employed by SCIAMACHY. ",SENTINEL5P,TROPOMI,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,CO,Carbon,Monoxide",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Carbon Monoxide,2017-10-13T00:00:00Z,S5P_L2_CO,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L2_HCHO,"Formaldehyde is an intermediate gas in almost all oxidation chains of Non-Methane Volatile Organic Compounds (NMVOC), leading eventually to CO2. NMVOCs are, together with NOx, CO and CH4, among the most important precursors of tropospheric O3. The major HCHO source in the remote atmosphere is CH4 oxidation. Over the continents, the oxidation of higher NMVOCs emitted from vegetation, fires, traffic and industrial sources results in important and localised enhancements of the HCHO levels. In addition to the main product results, such as HCHO slant column, vertical column and air mass factor, the level 2 data files contain several additional parameters and diagnostic information. ",SENTINEL5P,TROPOMI,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,HCHO,Formaldehyde",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Formaldehyde,2017-10-13T00:00:00Z,S5P_L2_HCHO,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L2_IR_ALL,"The TROPOMI instrument is a space-borne, nadir-viewing, imaging spectrometer covering wavelength bands between the ultraviolet and the shortwave infrared. The instrument, the single payload of the Sentinel-5P spacecraft, uses passive remote sensing techniques to attain its objective by measuring, at the Top Of Atmosphere (TOA), the solar radiation reflected by and radiated from the earth. The instrument operates in a push-broom configuration (non-scanning), with a swath width of ~2600 km on the Earth's surface. The typical pixel size (near nadir) will be 7x3.5 km2 for all spectral bands, with the exception of the UV1 band (7x28 km2) and SWIR bands (7x7 km2). Level 2 data provides total columns of ozone, sulfur dioxide, nitrogen dioxide, carbon monoxide, formaldehyde, tropospheric columns of ozone, vertical profiles of ozone and cloud & aerosol information. ",SENTINEL5P,TROPOMI,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Data,2018-04-01T00:00:00Z,S5P_L2_IR_ALL,,,,,,,,,available,,,,,,,,,,,,,,,,available, +S5P_L2_NO2,"The TROPOMI instrument, single payload onboard Sentinel-5 Precursor, retrieves operationally tropospheric and stratospheric NO2 column products. The TROPOMI NO2 data products pose an improvement over previous NO2 data sets, particularly in their unprecedented spatial resolution, but also in the separation of the stratospheric and tropospheric contributions of the retrieved slant columns, and in the calculation of the air-mass factors used to convert slant to total columns. ",SENTINEL5P,TROPOMI,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,NO2,Nitrogen,Dioxide",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Nitrogen Dioxide,2017-10-13T00:00:00Z,S5P_L2_NO2,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L2_NP_BD3,"S5P-NPP Cloud for spectral band 3. The S5P level 2 methane product is dependent on having information on cloud occurrence at spatial resolution finer than that achievable from TROPOMI itself. This information is also useful for other purposes, including assessing the influence of cloud on other L2 products and issues related to spatial co-registration. A level 2 auxiliary product was therefore developed to describe cloud in the TROPOMI field of view (FOV), using co-located observations of VIIRS (Visible Infra-red Imaging Radiometer Suite) on the U.S. S-NPP (Suomi - National Polar-orbiting Partnership). S5P flies in a so-called loose formation with the S-NPP with a temporal separation between them of less than 5 minutes. The main information contained in the S5P-NPP product is: 1. A statistical summary for each S5P FOV of the NPP-VIIRS L2 Cloud Mask (VCM). 2. The mean and standard deviation of the sun-normalised radiance in a number of VIIRS moderate resolution bands. This information is provided for three S5P spectral bands (to account for differences in spatial sampling). ",SENTINEL5P,TROPOMI,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,NP,NPP,Cloud,BD3,B03,BAND3",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 NPP Cloud for band 3,2017-10-13T00:00:00Z,S5P_L2_NP_BD3,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L2_NP_BD6,"S5P-NPP Cloud for spectral band 6. The S5P level 2 methane product is dependent on having information on cloud occurrence at spatial resolution finer than that achievable from TROPOMI itself. This information is also useful for other purposes, including assessing the influence of cloud on other L2 products and issues related to spatial co-registration. A level 2 auxiliary product was therefore developed to describe cloud in the TROPOMI field of view (FOV), using co-located observations of VIIRS (Visible Infra-red Imaging Radiometer Suite) on the U.S. S-NPP (Suomi - National Polar-orbiting Partnership). S5P flies in a so-called loose formation with the S-NPP with a temporal separation between them of less than 5 minutes. The main information contained in the S5P-NPP product is: 1. A statistical summary for each S5P FOV of the NPP-VIIRS L2 Cloud Mask (VCM). 2. The mean and standard deviation of the sun-normalised radiance in a number of VIIRS moderate resolution bands. This information is provided for three S5P spectral bands (to account for differences in spatial sampling). ",SENTINEL5P,TROPOMI,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,NP,NPP,Cloud,BD6,B06,BAND6",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 NPP Cloud for band 6,2017-10-13T00:00:00Z,S5P_L2_NP_BD6,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L2_NP_BD7,"S5P-NPP Cloud for spectral band 7. The S5P level 2 methane product is dependent on having information on cloud occurrence at spatial resolution finer than that achievable from TROPOMI itself. This information is also useful for other purposes, including assessing the influence of cloud on other L2 products and issues related to spatial co-registration. A level 2 auxiliary product was therefore developed to describe cloud in the TROPOMI field of view (FOV), using co-located observations of VIIRS (Visible Infra-red Imaging Radiometer Suite) on the U.S. S-NPP (Suomi - National Polar-orbiting Partnership). S5P flies in a so-called loose formation with the S-NPP with a temporal separation between them of less than 5 minutes. The main information contained in the S5P-NPP product is: 1. A statistical summary for each S5P FOV of the NPP-VIIRS L2 Cloud Mask (VCM). 2. The mean and standard deviation of the sun-normalised radiance in a number of VIIRS moderate resolution bands. This information is provided for three S5P spectral bands (to account for differences in spatial sampling). ",SENTINEL5P,TROPOMI,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,NP,NPP,Cloud,BD7,B07,BAND7",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 NPP Cloud for band 7,2017-10-13T00:00:00Z,S5P_L2_NP_BD7,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L2_O3,"Ozone (O3) is of crucial importance for the equilibrium of the Earth's atmosphere. In the stratosphere, the ozone layer shields the biosphere from dangerous solar ultraviolet radiation. In the troposphere, it acts as an efficient cleansing agent, but at high concentration it also becomes harmful to the health of humans, animals, and vegetation. Ozone is also an important greenhouse-gas contributor to ongoing climate change. These products are provided in NetCDF-CF format and contain total ozone, ozone temperature, and error information including averaging kernels. ",SENTINEL5P,TROPOMI,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,O3,Ozone",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Ozone,2017-10-13T00:00:00Z,S5P_L2_O3,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L2_O3_PR,"Retrieved ozone profiles are used to monitor the evolution of stratospheric and tropospheric ozone. Such monitoring is important as the ozone layer protects life on Earth against harmful UV radiation. The ozone layer is recovering from depletion due to manmade Chlorofluorocarbons (CFCs). Tropospheric ozone is toxic and it plays an important role in tropospheric chemistry. Also, ozone is a greenhouse gas and is therefore also relevant for climate change. The main parameters in the file are the retrieved ozone profile at 33 levels and the retrieved sub-columns of ozone in 6 layers. In addition, the total ozone column and tropospheric ozone columns are provided. For the ozone profile, the precision and smoothing errors, the a-priori profile and the averaging kernel are also provided. ",SENTINEL5P,TROPOMI,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,O3,PR,Ozone,Profile",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Ozone Profile,2017-10-13T00:00:00Z,S5P_L2_O3_PR,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +S5P_L2_O3_TCL,"Ozone in the tropical troposphere plays various important roles. The intense UV radiation and high humidity in the tropics stimulate the formation of the hydroxyl radical (OH) by the photolysis of ozone. OH is the most important oxidant in the troposphere because it reacts with virtually all trace gases, such as CO, CH4 and other hydrocarbons. The tropics are also characterized by large emissions of nitrogen oxides (NOx), carbon monoxide (CO) and hydrocarbons, both from natural and anthropogenic sources. Ozone that is formed over regions where large amounts of these ozone precursors are emitted, can be transported over great distances and affects areas far from the source. The TROPOMI tropospheric ozone product is a level-2c product that represents three day averaged tropospheric ozone columns on a 0.5° by 1° latitude-longitude grid for the tropical region between 20°N and 20°S. The TROPOMI tropospheric ozone column product uses the TROPOMI Level-2 total OZONE and CLOUD products as input. ",SENTINEL5P,TROPOMI,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,O3,TCL,Tropospheric,Ozone",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Tropospheric Ozone,2017-10-13T00:00:00Z,S5P_L2_O3_TCL,,,,,available,,available,available,,,,,,,,,,,,,,,,,, +S5P_L2_SO2,"Sulphur dioxide (SO2) enters the Earth's atmosphere through both natural (~30%) and anthropogenic processes (~70%). It plays a role in chemistry on a local and global scale and its impact ranges from short term pollution to effects on climate. Beside the total column of SO2, enhanced levels of SO2 are flagged within the products. The recognition of enhanced SO2 values is essential in order to detect and monitor volcanic eruptions and anthropogenic pollution sources. Volcanic SO2 emissions may also pose a threat to aviation, along with volcanic ash. ",SENTINEL5P,TROPOMI,S5P,L2,"SENTINEL,SENTINEL5P,S5P,L2,TROPOMI,SO2,Sulphur,Dioxide",ATMOSPHERIC,proprietary,Sentinel-5 Precursor Level 2 Sulphur Dioxide,2017-10-13T00:00:00Z,S5P_L2_SO2,,,,,available,,available,available,,,,,,,,,,available,,,,,,,, +SATELLITE_CARBON_DIOXIDE,"This dataset provides observations of atmospheric carbon dioxide (CO2)\namounts obtained from observations collected by several current and historical \nsatellite instruments. Carbon dioxide is a naturally occurring Greenhouse Gas (GHG), but one whose abundance has been increased substantially above its pre-industrial value of some 280 ppm by human activities, primarily because of emissions from combustion of fossil fuels, deforestation and other land-use change. The annual cycle (especially in the northern hemisphere) is primarily due to seasonal uptake and release of atmospheric CO2 by terrestrial vegetation.\nAtmospheric carbon dioxide abundance is indirectly observed by various satellite instruments. These instruments measure spectrally resolved near-infrared and/or infrared radiation reflected or emitted by the Earth and its atmosphere. In the measured signal, molecular absorption signatures from carbon dioxide and other constituent gasses can be identified. It is through analysis of those absorption lines in these radiance observations that the averaged carbon dioxide abundance in the sampled atmospheric column can be determined.\nThe software used to analyse the absorption lines and determine the carbon dioxide concentration in the sampled atmospheric column is referred to as the retrieval algorithm. For this dataset, carbon dioxide abundances have been determined by applying several algorithms to different satellite \ninstruments. Typically, different algorithms have different strengths and weaknesses and therefore, which product to use for a given application typically depends on the application.\nThe data set consists of 2 types of products: (i) column-averaged mixing ratios of CO2, denoted XCO2 and (ii) mid-tropospheric CO2 columns. The XCO2 products have been retrieved from SCIAMACHY/ENVISAT, TANSO-FTS/GOSAT and OCO-2. The mid-tropospheric CO2 product has been retrieved from the IASI instruments on-board the Metop satellite series and from AIRS. \nThe XCO2 products are available as Level 2 (L2) products (satellite orbit tracks) and as Level 3 (L3) product (gridded). The L2 products are available as individual sensor products (SCIAMACHY: BESD and WFMD algorithms; GOSAT: OCFP and SRFP algorithms) and as a multi-sensor merged product (EMMA algorithm). The L3 XCO2 product is provided in OBS4MIPS format. \nThe IASI and AIRS products are available as L2 products generated with the NLIS algorithm.\nThis data set is updated on a yearly basis, with each update cycle adding (if required) a new data version for the entire period, up to one year behind real time.\nThis dataset is produced on behalf of C3S with the exception of the SCIAMACHY and AIRS L2 products that were generated in the framework of the GHG-CCI project of the European Space Agency (ESA) Climate Change Initiative (CCI).\n\nVariables in the dataset/application are:\nColumn-average dry-air mole fraction of atmospheric carbon dioxide (XCO2), Mid-tropospheric columns of atmospheric carbon dioxide (CO2) ",,,,,"ECMWF,CDS,C3S,carbon-dioxide",ATMOSPHERIC,proprietary,Carbon dioxide data from 2002 to present derived from satellite observations,2002-10-01T00:00:00Z,SATELLITE_CARBON_DIOXIDE,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +SATELLITE_FIRE_BURNED_AREA,"The Burned Area products provide global information of total burned area (BA) at pixel and grid scale. The BA is identified with the date of first detection of the burned signal in the case of the pixel product, and with the total BA per grid cell in the case of the grid product. The products were obtained through the analysis of reflectance changes from medium resolution sensors (Terra MODIS, Sentinel-3 OLCI), supported by the use of MODIS thermal information. The burned area products also include information related to the land cover that has been burned, which has been extracted from the Copernicus Climate Change Service (C3S) land cover dataset, thus assuring consistency between the datasets. The algorithms for BA retrieval were developed by the University of Alcala (Spain), and processed by Brockmann Consult GmbH (Germany). Different product versions are available. FireCCI v5.0cds and FireCCI v5.1cds were developed as part of the Fire ECV Climate Change Initiative Project (Fire CCI) and brokered to C3S, offering the first global burned area time series at 250m spatial resolution. FireCCI v5.1cds used a more mature algorithm than the previous version. This algorithm was adapted to Sentinel-3 OLCI data to create the C3S v1.0 burned area product, extending the BA database to the present. During July 2020, an error in some files in the version v5.1cds were identified, affecting the files of the grid product of January 2018, and the pixel and grid products of October, November and December 2019. These errors were fixed, and a new version, v5.1.1cds, was created for the whole time series, to replace version v5.1cds. The latter product has been deprecated, but it is temporally kept in the database for transparency and traceability reasons. Only version v5.1.1cds should be used. The BA products are useful for researchers studying climate change, as they provide crucial information on burned biomass, which can be translated to greenhouse gases emissions amongst other contaminants. Burned area is also useful for land cover change studies, fire management and risk analysis. ",,,,,"ECMWF,CDS,C3S,burned",ATMOSPHERIC,proprietary,Fire burned area from 2001 to present derived from satellite observations,2001-01-01T00:00:00Z,SATELLITE_FIRE_BURNED_AREA,,,,available,,,,,,,,,,,,,,,,,,,,,available, +SATELLITE_METHANE,"This dataset provides observations of atmospheric methane (CH4)\namounts obtained from observations collected by several current and historical \nsatellite instruments. Methane is a naturally occurring Greenhouse Gas (GHG), but one whose abundance has been increased substantially above its pre-industrial value of some 720 ppb by human activities, primarily because of agricultural emissions (e.g., rice production, ruminants) and fossil fuel production and use. A clear annual cycle is largely due to seasonal wetland emissions.\nAtmospheric methane abundance is indirectly observed by various satellite instruments. These instruments measure spectrally resolved near-infrared and infrared radiation reflected or emitted by the Earth and its atmosphere. In the measured signal, molecular absorption signatures from methane and constituent gasses can be identified. It is through analysis of those absorption lines in these radiance observations that the averaged methane abundance in the sampled atmospheric column can be determined.\nThe software used to analyse the absorption lines and determine the methane concentration in the sampled atmospheric column is referred to as the retrieval algorithm. For this dataset, methane abundances have been determined by applying several algorithms to different satellite instruments.\nThe data set consists of 2 types of products: (i) column-averaged mixing ratios of CH4, denoted XCH4 and (ii) mid-tropospheric CH4 columns. \nThe XCH4 products have been retrieved from SCIAMACHY/ENVISAT and TANSO-FTS/GOSAT. The mid-tropospheric CH4 product has been retrieved from the IASI instruments onboard the Metop satellite series. The XCH4 products are available as Level 2 (L2) products (satellite orbit tracks) and as Level 3 (L3) product (gridded). The L2 products are available as individual sensor products (SCIAMACHY: WFMD and IMAP algorithms; GOSAT: OCFP, OCPR, SRFP and SRPR algorithms) and as a multi-sensor merged product (EMMA algorithm). The L3 XCH4 product is provided in OBS4MIPS format. The IASI products are available as L2 products generated with the NLIS algorithm.\nThis data set is updated on a yearly basis, with each update cycle adding (if required) a new data version for the entire period, up to one year behind real time.\nThis dataset is produced on behalf of C3S with the exception of the SCIAMACHY L2 products that were generated in the framework of the GHG-CCI project of the European Space Agency (ESA) Climate Change Initiative (CCI).\n\nVariables in the dataset/application are:\nColumn-average dry-air mole fraction of atmospheric methane (XCH4), Mid-tropospheric columns of atmospheric methane (CH4) ",,,,,"ECMWF,CDS,C3S,methane",ATMOSPHERIC,proprietary,Methane data from 2002 to present derived from satellite observations,2002-10-01T00:00:00Z,SATELLITE_METHANE,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +SATELLITE_SEA_ICE_CONCENTRATION,"This dataset provides daily gridded data of sea ice concentration for both hemispheres derived from satellite passive microwave brightness temperatures. Sea ice is an important component of our climate system and a sensitive indicator of climate change. Its presence or its retreat has a strong impact on air-sea interactions, the Earth's energy budget as well as marine ecosystems. It is listed as an Essential Climate Variable by the Global Climate Observing System. Sea ice concentration is defined as the fraction of the ocean surface in a pixel or grid cell that is covered with sea ice. It is one of the parameters commonly used to characterise the sea-ice cover. Other sea ice parameters include sea ice thickness, sea ice edge, and sea ice type, also available in the Climate Data Store. The dataset consists of two products produced by the European Organisation for the Exploitation of Meteorological Satellites (EUMETSAT) Ocean and Sea Ice Satellite Application Facility (OSI SAF) with research & development from European Space Agency Climate Change Initiative projects (ESA CCI): The Global Sea Ice Concentration Climate Data Record based on measurements from the following sensors: Scanning Multichannel Microwave Radiometer (SMMR; 1978-1987), Special Sensor Microwave/Imager (SSM/I; 1987-2006), and Special Sensor Microwave Imager/Sounder (SSMIS; 2005 onward). This product spans the period from October 1978 to present and is updated daily by an Interim Climate Data Record. In the following, it is referred to as the SSMIS product. The Global Sea Ice Concentration Climate Data Record based on measurements from the Advanced Microwave Scanning Radiometer - Earth Observing System (AMSR-E) sensor (2002-2011) and its successor, AMSR2 (2012-2020). This product spans the 2002-2020 period and is not updated. In the following, it is referred to as the AMSR product. Note, that this product was first produced by the European Space Agency Climate Change Initiative Phase 2 project (ESA CCI) and has been transferred to EUMETSAT OSI SAF since version 3.0. Both products are provided on the same polar projection with a grid resolution of 25 km. However, the AMSR product has a true spatial resolution (as resolved by the sensor) of about 15-25 km versus 30-60 km for the SSMIS product. Therefore, the AMSR product provides a much more detailed view of the sea ice cover than the SSMIS product, especially in the marginal ice zone, the transitional zone between open water and the dense sea ice pack. On the other hand, the clear strength of the SSMIS product is its more than 40-year long and consistent record with daily updates. The two products share the same algorithm baseline, which is both a continuation of the EUMETSAT OSI SAF approach and a series of innovations contributed by ESA CCI activities. For both products, the underlying algorithm makes use of a combination of the same three temperature channels near 19 GHz and 37 GHz. The data also share a common data format, that allows expert users to revert some of the filtering steps and access the raw output of the SIC algorithms. Both are level-4 products in the sense that gaps are filled by temporal and spatial interpolation. However, gap filling is not applied to fill in days when no input satellite data are available. Further details about each product can be found below as well as in the Documentation section. ",,,,,"ECMWF,CDS,C3S,sea,ice",ATMOSPHERIC,proprietary,Sea ice concentration daily gridded data from 1978 to present derived from satellite observations,1978-10-25T00:00:00Z,SATELLITE_SEA_ICE_CONCENTRATION,,,,available,,,,,,,,,,,,,,,,,,,,,available, +SATELLITE_SEA_ICE_EDGE_TYPE,"This dataset provides daily gridded data of sea ice edge and sea ice type derived from brightness temperatures measured by satellite passive microwave radiometers. Sea ice is an important component of our climate system and a sensitive indicator of climate change. Its presence or its retreat has a strong impact on air-sea interactions, the Earth's energy budget as well as marine ecosystems. It is recognized by the Global Climate Observing System as an Essential Climate Variable. Sea ice edge and type are some of the parameters used to characterise sea ice. Other parameters include sea ice concentration and sea ice thickness, also available in the Climate Data Store. Sea ice edge and type are defined as follows: Sea ice edge classifies the sea surface into open water, open ice, and closed ice depending on the amount of sea ice present in each grid cell. This variable is provided for both the Northern and Southern Hemispheres. Note that a sea ice concentration threshold of 30% is used to distinguish between open water and open ice, which differs from the 15% threshold commonly used for other sea ice products such as sea ice extent. Sea ice type classifies ice-covered areas into two categories based on the age of the sea ice: multiyear ice versus seasonal first-year ice. This variable is currently only available for the Northern Hemisphere and limited to the extended boreal winter months (mid-October through April). Sea ice type classification during summer is difficult due to the effect of melting at the ice surface which disturbs the passive microwave signature. Both sea ice products are based on measurements from the series of Scanning Multichannel Microwave Radiometer (SMMR), Special Sensor Microwave/Imager (SSM/I), and Special Sensor Microwave Imager/Sounder (SSMIS) sensors and share the same algorithm baseline. However, sea ice edge makes use of two lower frequencies near 19 GHz and 37 GHz and a higher frequency near 90 GHz whereas sea ice type only uses the two lower frequencies. This dataset combines Climate Data Records (CDRs), which are intended to have sufficient length, consistency, and continuity to assess climate variability and change, and Interim Climate Data Records (ICDRs), which provide regular temporal extensions to the CDRs and where consistency with the CDRs is expected but not extensively checked. For this dataset, both the CDR and ICDR parts of each product were generated using the same software and algorithms. The CDRs of sea ice edge and type currently extend from 25 October 1978 to 31 December 2020 whereas the corresponding ICDRs extend from January 2021 to present (with a 16-day latency behind real time). All data from the current release of the datasets (version 2.0) are Level-4 products, in which data gaps are filled by temporal and spatial interpolation. For product limitations and known issues, please consult the Product User Guide. This dataset is produced on behalf of Copernicus Climate Change Service (C3S), with heritage from the operational products generated by EUMETSAT Ocean and Sea Ice Satellite Application Facility (OSI SAF). Variables in the dataset/application are: Sea ice edge, Sea ice type Variables in the dataset/application are: Status flag, Uncertainty platform: ",,,,,"ECMWF,CDS,C3S,sea,ice",ATMOSPHERIC,proprietary,Sea ice edge and type daily gridded data from 1978 to present derived from satellite observations,1978-10-25T00:00:00Z,SATELLITE_SEA_ICE_EDGE_TYPE,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +SATELLITE_SEA_ICE_THICKNESS,"This dataset provides monthly gridded data of sea ice thickness for the Arctic region based on satellite radar altimetry observations. Sea ice is an important component of our climate system and a sensitive indicator of climate change. Its presence or its retreat has a strong impact on air-sea interactions, the Earth's energy budget as well as marine ecosystems. It is recognized by the Global Climate Observing System as an Essential Climate Variable. Sea ice thickness is one of the parameters commonly used to characterise sea ice, alongside sea ice concentration, sea ice edge, and sea ice type, also available in the Climate Data Store. Satellite radar altimeters provide measurements of the sea ice freeboard, which is the difference between the height of the surface of sea ice and the surface of water in open leads (areas of open water within the sea ice). Because of the buoyancy of ice in water, typically about 90% of the ice thickness remains under water and thus the total ice thickness is about 10 times the freeboard. However, snow on top of sea ice changes this ratio and complicates the estimation of the ice thickness, requiring the use of auxiliary information about snow depth and density. The retrieval of ice thickness uses the narrow radar swath at the nadir of the satellite at full resolution of approximately 1-10 km and a point spacing of 300 meters. This Level-2 sea-ice thickness products (not provided here) is then gridded for a period of a month to obtain full coverage of a north polar grid at a resolution of 25 km. The algorithm used was developed as part of the European Space Agency Climate Change Initiative (ESA CCI) on Sea Ice. The data provided here are Level-3 Collated (L3C) products: they contain monthly gridded values from orbit data from a single platform (Envisat or CryoSat-2) without interpolation or any other form of gap filling. The files also contain estimates of the algorithm uncertainty as well as a quality status flag indicating potential issues with the retrieval not captured in the algorithm uncertainty. Sources of uncertainty in the algorithm are related to the auxiliary data and to the use of different radar altimeter concepts in Envisat (pulse-limited) and CryoSat-2 (synthetic aperture radar). This dataset combines a Climate Data Record (CDR), which has sufficient length, consistency, and continuity to be used to assess climate variability and change, and an Interim Climate Data Record (ICDR), which provides regular temporal extensions to the CDR and where consistency with the CDR is expected but not extensively checked. Here, the CDR is based on measurements from the RA-2 altimeter on Envisat (October 2002 to October 2010) and the SIRAL altimeter on CryoSat-2 (November 2010 to April 2020). The ICDR is based on observations from CryoSat-2 only (from April 2015 onward) and is updated monthly with a one-month delay behind real time. Users should note that the quality and accuracy of the data record are higher during the CryoSat-2 period than during the Envisat period. As a result, care should be taken when combining the two missions to assess long-term changes and trends. More information can be found in the Product User Guide and Product Quality Assessment Report. This dataset is currently limited spatially to the Arctic region and temporally to the winter months of October through April due to unresolved bias originating from melting snow or open melt ponds in the remaining five months. For a similar reason, no sea-ice thickness data with sufficient quality exist for the Southern Hemisphere. The extension of the CDR/ICDR to other periods, regions, and radar altimeter missions is under development in the extension of the ESA CCI Sea Ice project (ESA CCI+). This dataset is produced on behalf of the Copernicus Climate Change Service (C3S). ",,,,,"ECMWF,CDS,C3S,sea,ice",ATMOSPHERIC,proprietary,Sea ice thickness monthly gridded data for the Arctic from 2002 to present derived from satellite observations,2002-10-01T00:00:00Z,SATELLITE_SEA_ICE_THICKNESS,,,,available,,,,,,,,,,,,,,,,,,,,,available, +SATELLITE_SEA_LEVEL_BLACK_SEA,"Sea level anomaly is the height of water over the mean sea surface in a given time and region. Up-to-date altimeter standards are used to estimate the sea level anomalies with a mapping algorithm dedicated to the Black sea region. Anomalies are computed with respect to a twenty-year mean reference period (1993-2012). The steady number of reference satellite used in the production of this dataset contributes to the long-term stability of the sea level record. Improvements of the accuracy, sampling of meso-scale processes and of the high-latitude coverage were achieved by using a few additional satellite missions. New data are provided with a delay of about 4-5 months relatively to near-real time or interim sea level products. This delay is mainly due to the timeliness of the input data, the centred processing temporal window and the validation process. However, this processing and validation adds stability and accuracy to the sea level variables and make them adapted to climate applications. This dataset includes uncertainties for each grid cell. More details about the sea level retrieval, additional filters, optimisation procedures, and the error estimation are given in the Documentation section. Variables in the dataset/application are: Absolute dynamic topography, Absolute geostrophic velocity meridian component, Absolute geostrophic velocity zonal component, Geostrophic velocity anomalies meridian component, Geostrophic velocity anomalies zonal component, Sea level anomaly ",,,,,"Climate,ECMWF,CDS,C3S,sea,level,Black Sea",HYDROLOGICAL,proprietary,Sea level daily gridded data from satellite observations for the Black Sea from 1993 to 2020,1993-01-01T00:00:00Z,SATELLITE_SEA_LEVEL_BLACK_SEA,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +SATELLITE_SEA_LEVEL_GLOBAL,"This data set provides gridded daily global estimates of sea level anomaly based on satellite altimetry measurements. The rise in global mean sea level in recent decades has been one of the most important and well-known consequences of climate warming, putting a large fraction of the world population and economic infrastructure at greater risk of flooding. However, changes in the global average sea level mask regional variations that can be one order of magnitude larger. Therefore, it is essential to measure changes in sea level over the world's oceans as accurately as possible. Sea level anomaly is defined as the height of water over the mean sea surface in a given time and region. In this dataset sea level anomalies are computed with respect to a twenty-year mean reference period (1993-2012) using up-to-date altimeter standards. In the past, the altimeter sea level datasets were distributed on the CNES AVISO altimetry portal until their production was taken over by the Copernicus Marine Environment Monitoring Service (CMEMS) and the Copernicus Climate Change Service (C3S) in 2015 and 2016 respectively. The sea level data set provided here by C3S is climate-oriented, that is, dedicated to the monitoring of the long-term evolution of sea level and the analysis of the ocean/climate indicators, both requiring a homogeneous and stable sea level record. To achieve this, a steady two-satellite merged constellation is used at all time steps in the production system: one satellite serves as reference and ensures the long-term stability of the data record; the other satellite (which varies across the record) is used to improve accuracy, sample mesoscale processes and provide coverage at high latitudes. The C3S sea level data set is used to produce Ocean Monitoring Indicators (e.g. global and regional mean sea level evolution), available in the CMEMS catalogue. The CMEMS sea level dataset has a more operational focus as it is dedicated to the retrieval of mesoscale signals in the context of ocean modeling and analysis of the ocean circulation on a global or regional scale. Such applications require the most accurate sea level estimates at each time step with the best spatial sampling of the ocean with all satellites available, with less emphasis on long-term stability and homogeneity. This data set is updated three times a year with a delay of about 6 months relative to present time. This delay is mainly due to the timeliness of the input data, the centred processing temporal window and the validation process. However, these processing and validation steps are essential to enhance the stability and accuracy of the sea level products and make them suitable for climate applications. This dataset includes estimates of sea level anomaly and absolute dynamic topography together with the corresponding geostrophic velocities. More details about the sea level retrieval algorithms, additional filters, optimisation procedures, and the error estimation are given in the Documentation tab. Variables in the dataset/application are: Absolute dynamic topography, Absolute geostrophic velocity meridian component, Absolute geostrophic velocity zonal component, Geostrophic velocity anomalies meridian component, Geostrophic velocity anomalies zonal component, Sea level anomaly ",,,,,"Climate,ECMWF,CDS,C3S,sea,level,global",HYDROLOGICAL,proprietary,Sea level gridded data from satellite observations for the global ocean,1993-01-01T00:00:00Z,SATELLITE_SEA_LEVEL_GLOBAL,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +SATELLITE_SEA_LEVEL_MEDITERRANEAN,"Sea level anomaly is the height of water over the mean sea surface in a given time and region. In this dataset sea level anomalies are computed with respect to a twenty-year mean reference period (1993-2012). Up-to-date altimeter standards are used to estimate the sea level anomalies with a mapping algorithm specifically dedicated to the Mediterranean Sea. The steady number of reference satellite used in the production of this dataset contributes to the long-term stability of the sea level record. Improvements of the accuracy, sampling of meso-scale processes and of the high-latitude coverage were achieved by using a few additional satellite missions. New data are provided with a delay of about 4-5 months relatively to near-real time or interim sea level products. This delay is mainly due to the timeliness of the input data, the centred processing temporal window and the validation process. However, this processing and validation adds stability and accuracy to the sea level variables and make them adapted to climate applications. This dataset includes uncertainties for each grid cell. More details about the sea level retrieval, additional filters, optimisation procedures, and the error estimation are given in the Documentation section. Variables in the dataset/application are: Absolute dynamic topography, Absolute geostrophic velocity meridian component, Absolute geostrophic velocity zonal component, Geostrophic velocity anomalies meridian component, Geostrophic velocity anomalies zonal component, Sea level anomaly ",,,,,"Climate,ECMWF,CDS,C3S,sea,level,mediterranean",HYDROLOGICAL,proprietary,Sea level daily gridded data from satellite observations for the Mediterranean Sea,1993-01-01T00:00:00Z,SATELLITE_SEA_LEVEL_MEDITERRANEAN,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +SEASONAL_MONTHLY_PL,"This entry covers pressure-level data aggregated on a monthly time resolution. \nSeasonal forecasts provide a long-range outlook of changes in the Earth system over periods of a few weeks or months, as a result of predictable changes in some of the slow-varying components of the system. For example, ocean temperatures typically vary slowly, on timescales of weeks or months; as the ocean has an impact on the overlaying atmosphere, the variability of its properties (e.g. temperature) can modify both local and remote atmospheric conditions. Such modifications of the 'usual' atmospheric conditions are the essence of all long-range (e.g. seasonal) forecasts. This is different from a weather forecast, which gives a lot more precise detail - both in time and space - of the evolution of the state of the atmosphere over a few days into the future. Beyond a few days, the chaotic nature of the atmosphere limits the possibility to predict precise changes at local scales. This is one of the reasons long-range forecasts of atmospheric conditions have large uncertainties. To quantify such uncertainties, long-range forecasts use ensembles, and meaningful forecast products reflect a distributions of outcomes.\nGiven the complex, non-linear interactions between the individual components of the Earth system, the best tools for long-range forecasting are climate models which include as many of the key components of the system and possible; typically, such models include representations of the atmosphere, ocean and land surface. These models are initialised with data describing the state of the system at the starting point of the forecast, and used to predict the evolution of this state in time.\nWhile uncertainties coming from imperfect knowledge of the initial conditions of the components of the Earth system can be described with the use of ensembles, uncertainty arising from approximations made in the models are very much dependent on the choice of model. A convenient way to quantify the effect of these approximations is to combine outputs from several models, independently developed, initialised and operated.\nTo this effect, the C3S provides a multi-system seasonal forecast service, where data produced by state-of-the-art seasonal forecast systems developed, implemented and operated at forecast centres in several European countries is collected, processed and combined to enable user-relevant applications. The composition of the C3S seasonal multi-system and the full content of the database underpinning the service are described in the documentation. The data is grouped in several catalogue entries (CDS datasets), currently defined by the type of variable (single-level or multi-level, on pressure surfaces) and the level of post-processing applied (data at original time resolution, processing on temporal aggregation and post-processing related to bias adjustment).\nThe variables available in this data set are listed in the table below. The data includes forecasts created in real-time (since 2017) and retrospective forecasts (hindcasts) initialised at equivalent intervals during the period 1993-2016.\n\nVariables in the dataset/application are:\nGeopotential, Specific humidity, Temperature, U-component of wind, V-component of wind ",,,,,"ECMWF,CDS,C3S,seasonal,forecast,monthly,pressure,levels",ATMOSPHERIC,proprietary,Seasonal forecast monthly statistics on pressure levels,1981-01-01T00:00:00Z,SEASONAL_MONTHLY_PL,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +SEASONAL_MONTHLY_SL,"This entry covers single-level data aggregated on a monthly time resolution. \nSeasonal forecasts provide a long-range outlook of changes in the Earth system over periods of a few weeks or months, as a result of predictable changes in some of the slow-varying components of the system. For example, ocean temperatures typically vary slowly, on timescales of weeks or months; as the ocean has an impact on the overlaying atmosphere, the variability of its properties (e.g. temperature) can modify both local and remote atmospheric conditions. Such modifications of the 'usual' atmospheric conditions are the essence of all long-range (e.g. seasonal) forecasts. This is different from a weather forecast, which gives a lot more precise detail - both in time and space - of the evolution of the state of the atmosphere over a few days into the future. Beyond a few days, the chaotic nature of the atmosphere limits the possibility to predict precise changes at local scales. This is one of the reasons long-range forecasts of atmospheric conditions have large uncertainties. To quantify such uncertainties, long-range forecasts use ensembles, and meaningful forecast products reflect a distributions of outcomes.\nGiven the complex, non-linear interactions between the individual components of the Earth system, the best tools for long-range forecasting are climate models which include as many of the key components of the system and possible; typically, such models include representations of the atmosphere, ocean and land surface. These models are initialised with data describing the state of the system at the starting point of the forecast, and used to predict the evolution of this state in time.\nWhile uncertainties coming from imperfect knowledge of the initial conditions of the components of the Earth system can be described with the use of ensembles, uncertainty arising from approximations made in the models are very much dependent on the choice of model. A convenient way to quantify the effect of these approximations is to combine outputs from several models, independently developed, initialised and operated.\nTo this effect, the C3S provides a multi-system seasonal forecast service, where data produced by state-of-the-art seasonal forecast systems developed, implemented and operated at forecast centres in several European countries is collected, processed and combined to enable user-relevant applications. The composition of the C3S seasonal multi-system and the full content of the database underpinning the service are described in the documentation. The data is grouped in several catalogue entries (CDS datasets), currently defined by the type of variable (single-level or multi-level, on pressure surfaces) and the level of post-processing applied (data at original time resolution, processing on temporal aggregation and post-processing related to bias adjustment).\nThe variables available in this data set are listed in the table below. The data includes forecasts created in real-time (since 2017) and retrospective forecasts (hindcasts) initialised at equivalent intervals during the period 1993-2016.\n\nVariables in the dataset/application are:\n10m u-component of wind, 10m v-component of wind, 10m wind gust since previous post-processing, 10m wind speed, 2m dewpoint temperature, 2m temperature, East-west surface stress rate of accumulation, Evaporation, Maximum 2m temperature in the last 24 hours, Mean sea level pressure, Mean sub-surface runoff rate, Mean surface runoff rate, Minimum 2m temperature in the last 24 hours, North-south surface stress rate of accumulation, Runoff, Sea surface temperature, Sea-ice cover, Snow density, Snow depth, Snowfall, Soil temperature level 1, Solar insolation rate of accumulation, Surface latent heat flux, Surface sensible heat flux, Surface solar radiation, Surface solar radiation downwards, Surface thermal radiation, Surface thermal radiation downwards, Top solar radiation, Top thermal radiation, Total cloud cover, Total precipitation ",,,,,"ECMWF,CDS,C3S,seasonal,forecast,monthly,single,levels",ATMOSPHERIC,proprietary,Seasonal forecast monthly statistics on single levels,1981-01-01T00:00:00Z,SEASONAL_MONTHLY_SL,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +SEASONAL_ORIGINAL_PL,"his entry covers pressure-level data at the original time resolution (once every 12 hours). \nSeasonal forecasts provide a long-range outlook of changes in the Earth system over periods of a few weeks or months, as a result of predictable changes in some of the slow-varying components of the system. For example, ocean temperatures typically vary slowly, on timescales of weeks or months; as the ocean has an impact on the overlaying atmosphere, the variability of its properties (e.g. temperature) can modify both local and remote atmospheric conditions. Such modifications of the 'usual' atmospheric conditions are the essence of all long-range (e.g. seasonal) forecasts. This is different from a weather forecast, which gives a lot more precise detail - both in time and space - of the evolution of the state of the atmosphere over a few days into the future. Beyond a few days, the chaotic nature of the atmosphere limits the possibility to predict precise changes at local scales. This is one of the reasons long-range forecasts of atmospheric conditions have large uncertainties. To quantify such uncertainties, long-range forecasts use ensembles, and meaningful forecast products reflect a distributions of outcomes.\nGiven the complex, non-linear interactions between the individual components of the Earth system, the best tools for long-range forecasting are climate models which include as many of the key components of the system and possible; typically, such models include representations of the atmosphere, ocean and land surface. These models are initialised with data describing the state of the system at the starting point of the forecast, and used to predict the evolution of this state in time.\nWhile uncertainties coming from imperfect knowledge of the initial conditions of the components of the Earth system can be described with the use of ensembles, uncertainty arising from approximations made in the models are very much dependent on the choice of model. A convenient way to quantify the effect of these approximations is to combine outputs from several models, independently developed, initialised and operated.\nTo this effect, the C3S provides a multi-system seasonal forecast service, where data produced by state-of-the-art seasonal forecast systems developed, implemented and operated at forecast centres in several European countries is collected, processed and combined to enable user-relevant applications. The composition of the C3S seasonal multi-system and the full content of the database underpinning the service are described in the documentation. The data is grouped in several catalogue entries (CDS datasets), currently defined by the type of variable (single-level or multi-level, on pressure surfaces) and the level of post-processing applied (data at original time resolution, processing on temporal aggregation and post-processing related to bias adjustment).\nThe variables available in this data set are listed in the table below. The data includes forecasts created in real-time (since 2017) and retrospective forecasts (hindcasts) initialised at equivalent intervals during the period 1993-2016.\n\nVariables in the dataset/application are:\nGeopotential, Specific humidity, Temperature, U-component of wind, V-component of wind ",,,,,"ECMWF,CDS,C3S,seasonal,forecast,subdaily,pressure,levels",ATMOSPHERIC,proprietary,Seasonal forecast subdaily data on pressure levels,1981-01-01T00:00:00Z,SEASONAL_ORIGINAL_PL,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +SEASONAL_ORIGINAL_SL,"This entry covers single-level data at the original time resolution (once a day, or once every 6 hours, depending on the variable). \nSeasonal forecasts provide a long-range outlook of changes in the Earth system over periods of a few weeks or months, as a result of predictable changes in some of the slow-varying components of the system. For example, ocean temperatures typically vary slowly, on timescales of weeks or months; as the ocean has an impact on the overlaying atmosphere, the variability of its properties (e.g. temperature) can modify both local and remote atmospheric conditions. Such modifications of the 'usual' atmospheric conditions are the essence of all long-range (e.g. seasonal) forecasts. This is different from a weather forecast, which gives a lot more precise detail - both in time and space - of the evolution of the state of the atmosphere over a few days into the future. Beyond a few days, the chaotic nature of the atmosphere limits the possibility to predict precise changes at local scales. This is one of the reasons long-range forecasts of atmospheric conditions have large uncertainties. To quantify such uncertainties, long-range forecasts use ensembles, and meaningful forecast products reflect a distributions of outcomes.\nGiven the complex, non-linear interactions between the individual components of the Earth system, the best tools for long-range forecasting are climate models which include as many of the key components of the system and possible; typically, such models include representations of the atmosphere, ocean and land surface. These models are initialised with data describing the state of the system at the starting point of the forecast, and used to predict the evolution of this state in time.\nWhile uncertainties coming from imperfect knowledge of the initial conditions of the components of the Earth system can be described with the use of ensembles, uncertainty arising from approximations made in the models are very much dependent on the choice of model. A convenient way to quantify the effect of these approximations is to combine outputs from several models, independently developed, initialised and operated.\nTo this effect, the C3S provides a multi-system seasonal forecast service, where data produced by state-of-the-art seasonal forecast systems developed, implemented and operated at forecast centres in several European countries is collected, processed and combined to enable user-relevant applications. The composition of the C3S seasonal multi-system and the full content of the database underpinning the service are described in the documentation. The data is grouped in several catalogue entries (CDS datasets), currently defined by the type of variable (single-level or multi-level, on pressure surfaces) and the level of post-processing applied (data at original time resolution, processing on temporal aggregation and post-processing related to bias adjustment).\nThe variables available in this data set are listed in the table below. The data includes forecasts created in real-time (since 2017) and retrospective forecasts (hindcasts) initialised at equivalent intervals during the period 1993-2016.\n\nVariables in the dataset/application are:\n10m u-component of wind, 10m v-component of wind, 10m wind gust since previous post-processing, 2m dewpoint temperature, 2m temperature, Eastward turbulent surface stress, Evaporation, Land-sea mask, Maximum 2m temperature in the last 24 hours, Mean sea level pressure, Minimum 2m temperature in the last 24 hours, Northward turbulent surface stress, Orography, Runoff, Sea surface temperature, Sea-ice cover, Snow density, Snow depth, Snowfall, Soil temperature level 1, Sub-surface runoff, Surface latent heat flux, Surface net solar radiation, Surface net thermal radiation, Surface runoff, Surface sensible heat flux, Surface solar radiation downwards, Surface thermal radiation downwards, TOA incident solar radiation, Top net solar radiation, Top net thermal radiation, Total cloud cover, Total precipitation ",,,,,"ECMWF,CDS,C3S,seasonal,forecast,daily,single,levels",ATMOSPHERIC,proprietary,Seasonal forecast daily and subdaily data on single levels,1981-01-01T00:00:00Z,SEASONAL_ORIGINAL_SL,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +SEASONAL_POSTPROCESSED_PL,"This entry covers pressure-level data post-processed for bias adjustment on a monthly time resolution. \nSeasonal forecasts provide a long-range outlook of changes in the Earth system over periods of a few weeks or months, as a result of predictable changes in some of the slow-varying components of the system. For example, ocean temperatures typically vary slowly, on timescales of weeks or months; as the ocean has an impact on the overlaying atmosphere, the variability of its properties (e.g. temperature) can modify both local and remote atmospheric conditions. Such modifications of the 'usual' atmospheric conditions are the essence of all long-range (e.g. seasonal) forecasts. This is different from a weather forecast, which gives a lot more precise detail - both in time and space - of the evolution of the state of the atmosphere over a few days into the future. Beyond a few days, the chaotic nature of the atmosphere limits the possibility to predict precise changes at local scales. This is one of the reasons long-range forecasts of atmospheric conditions have large uncertainties. To quantify such uncertainties, long-range forecasts use ensembles, and meaningful forecast products reflect a distributions of outcomes.\nGiven the complex, non-linear interactions between the individual components of the Earth system, the best tools for long-range forecasting are climate models which include as many of the key components of the system and possible; typically, such models include representations of the atmosphere, ocean and land surface. These models are initialised with data describing the state of the system at the starting point of the forecast, and used to predict the evolution of this state in time.\nWhile uncertainties coming from imperfect knowledge of the initial conditions of the components of the Earth system can be described with the use of ensembles, uncertainty arising from approximations made in the models are very much dependent on the choice of model. A convenient way to quantify the effect of these approximations is to combine outputs from several models, independently developed, initialised and operated.\nTo this effect, the C3S provides a multi-system seasonal forecast service, where data produced by state-of-the-art seasonal forecast systems developed, implemented and operated at forecast centres in several European countries is collected, processed and combined to enable user-relevant applications. The composition of the C3S seasonal multi-system and the full content of the database underpinning the service are described in the documentation. The data is grouped in several catalogue entries (CDS datasets), currently defined by the type of variable (single-level or multi-level, on pressure surfaces) and the level of post-processing applied (data at original time resolution, processing on temporal aggregation and post-processing related to bias adjustment).\nThe variables available in this data set are listed in the table below. The data includes forecasts created in real-time since 2017.\n\nVariables in the dataset/application are:\nGeopotential anomaly, Specific humidity anomaly, Temperature anomaly, U-component of wind anomaly, V-component of wind anomaly ",,,,,"ECMWF,CDS,C3S,seasonal,forecast,anomalies,pressure,levels",ATMOSPHERIC,proprietary,Seasonal forecast anomalies on pressure levels,2017-09-01T00:00:00Z,SEASONAL_POSTPROCESSED_PL,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +SEASONAL_POSTPROCESSED_SL,"This entry covers single-level data post-processed for bias adjustment on a monthly time resolution. \nSeasonal forecasts provide a long-range outlook of changes in the Earth system over periods of a few weeks or months, as a result of predictable changes in some of the slow-varying components of the system. For example, ocean temperatures typically vary slowly, on timescales of weeks or months; as the ocean has an impact on the overlaying atmosphere, the variability of its properties (e.g. temperature) can modify both local and remote atmospheric conditions. Such modifications of the 'usual' atmospheric conditions are the essence of all long-range (e.g. seasonal) forecasts. This is different from a weather forecast, which gives a lot more precise detail - both in time and space - of the evolution of the state of the atmosphere over a few days into the future. Beyond a few days, the chaotic nature of the atmosphere limits the possibility to predict precise changes at local scales. This is one of the reasons long-range forecasts of atmospheric conditions have large uncertainties. To quantify such uncertainties, long-range forecasts use ensembles, and meaningful forecast products reflect a distributions of outcomes.\nGiven the complex, non-linear interactions between the individual components of the Earth system, the best tools for long-range forecasting are climate models which include as many of the key components of the system and possible; typically, such models include representations of the atmosphere, ocean and land surface. These models are initialised with data describing the state of the system at the starting point of the forecast, and used to predict the evolution of this state in time.\nWhile uncertainties coming from imperfect knowledge of the initial conditions of the components of the Earth system can be described with the use of ensembles, uncertainty arising from approximations made in the models are very much dependent on the choice of model. A convenient way to quantify the effect of these approximations is to combine outputs from several models, independently developed, initialised and operated.\nTo this effect, the C3S provides a multi-system seasonal forecast service, where data produced by state-of-the-art seasonal forecast systems developed, implemented and operated at forecast centres in several European countries is collected, processed and combined to enable user-relevant applications. The composition of the C3S seasonal multi-system and the full content of the database underpinning the service are described in the documentation. The data is grouped in several catalogue entries (CDS datasets), currently defined by the type of variable (single-level or multi-level, on pressure surfaces) and the level of post-processing applied (data at original time resolution, processing on temporal aggregation and post-processing related to bias adjustment).\nThe variables available in this data set are listed in the table below. The data includes forecasts created in real-time since 2017.\n\nVariables in the dataset/application are:\n10m u-component of wind anomaly, 10m v-component of wind anomaly, 10m wind gust anomaly, 10m wind speed anomaly, 2m dewpoint temperature anomaly, 2m temperature anomaly, East-west surface stress anomalous rate of accumulation, Evaporation anomalous rate of accumulation, Maximum 2m temperature in the last 24 hours anomaly, Mean sea level pressure anomaly, Mean sub-surface runoff rate anomaly, Mean surface runoff rate anomaly, Minimum 2m temperature in the last 24 hours anomaly, North-south surface stress anomalous rate of accumulation, Runoff anomalous rate of accumulation, Sea surface temperature anomaly, Sea-ice cover anomaly, Snow density anomaly, Snow depth anomaly, Snowfall anomalous rate of accumulation, Soil temperature anomaly level 1, Solar insolation anomalous rate of accumulation, Surface latent heat flux anomalous rate of accumulation, Surface sensible heat flux anomalous rate of accumulation, Surface solar radiation anomalous rate of accumulation, Surface solar radiation downwards anomalous rate of accumulation, Surface thermal radiation anomalous rate of accumulation, Surface thermal radiation downwards anomalous rate of accumulation, Top solar radiation anomalous rate of accumulation, Top thermal radiation anomalous rate of accumulation, Total cloud cover anomaly, Total precipitation anomalous rate of accumulation ",,,,,"ECMWF,CDS,C3S,seasonal,forecast,anomalies,single,levels",ATMOSPHERIC,proprietary,Seasonal forecast anomalies on single levels,2017-09-01T00:00:00Z,SEASONAL_POSTPROCESSED_SL,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +SIS_HYDRO_MET_PROJ,"This dataset provides precipitation and near surface air temperature for Europe as Essential Climate Variables (ECVs) and as a set of Climate Impact Indicators (CIIs) based on the ECVs. \nECV datasets provide the empirical evidence needed to understand the current climate and predict future changes. \nCIIs contain condensed climate information which facilitate relatively quick and efficient subsequent analysis. Therefore, CIIs make climate information accessible to application focussed users within a sector.\nThe ECVs and CIIs provided here were derived within the water management sectoral information service to address questions specific to the water sector. However, the products are provided in a generic form and are relevant for a range of sectors, for example agriculture and energy.\nThe data represent the current state-of-the-art in Europe for regional climate modelling and indicator production. Data from eight model simulations included in the Coordinated Regional Climate Downscaling Experiment (CORDEX) were used to calculate a total of two ECVs and five CIIs at a spatial resolution of 0.11° x 0.11° and 5km x 5km.\nThe ECV data meet the technical specification set by the Global Climate Observing System (GCOS), as such they are provided on a daily time step. They are bias adjusted using the EFAS gridded observations as a reference dataset. Note these are model output data, not observation data as is the general case for ECVs.\nThe CIIs are provided as mean values over a 30-year time period. For the reference period (1971-2000) data is provided as absolute values, for the future periods the data is provided as absolute values and as the relative or absolute change from the reference period. The future periods cover 3 fixed time periods (2011-2040, 2041-2070 and 2071-2100) and 3 \""degree scenario\"" periods defined by when global warming exceeds a given threshold (1.5 °C, 2.0 °C or 3.0 °C). The global warming is calculated from the global climate model (GCM) used, therefore the actual time period of the degree scenarios will be different for each GCM.\nThis dataset is produced and quality assured by the Swedish Meteorological and Hydrological Institute on behalf of the Copernicus Climate Change Service. \n\nVariables in the dataset/application are:\n2m air temperature, Highest 5-day precipitation amount, Longest dry spells, Number of dry spells, Precipitation ",,,,,"ECMWF,CDS,C3S,hydrology,meterology,water,precipitation,temperature",ATMOSPHERIC,proprietary,Temperature and precipitation climate impact indicators from 1970 to 2100 derived from European climate projections,1970-01-01T00:00:00Z,SIS_HYDRO_MET_PROJ,,,,available,,,,,available,,,,,,,,,,,,,,,,, +SPOT5_SPIRIT,SPOT 5 stereoscopic survey of Polar Ice. ,SPOT5,,SPOT5,L1A,"SPOT,SPOT5,L1A",OPTICAL,proprietary,Spot 5 SPIRIT,2002-05-04T00:00:00Z,SPOT5_SPIRIT,,,,,,,,,,,,,,,,,,,,,,available,,,, +SPOT_SWH,The Spot World Heritage (SWH) programme objective is the free availability for non-commercial use of orthorectified products derived from multispectral images of more than 5 years old from the Spot 1-5 satellites family. More informations on https://www.theia-land.fr/en/product/spot-world-heritage/ ,SPOT1-5,,SPOT1-5,L1C,"SPOT,SPOT1,SPOT2,SPOT3,SPOT4,SPOT5,L1C",OPTICAL,proprietary,Spot World Heritage,1986-02-22T00:00:00Z,SPOT_SWH,,,,,,,,,,,,,,,,,,,,,,available,,,, +SPOT_SWH_OLD,Spot world heritage Old format. ,SPOT1-5,,SPOT1-5,L1C,"SPOT,SPOT1,SPOT2,SPOT3,SPOT4,SPOT5,L1C",OPTICAL,proprietary,Spot World Heritage,1986-02-22T00:00:00Z,SPOT_SWH_OLD,,,,,,,,,,,,,,,,,,,,,,available,,,, +TIGGE_CF_SFC,TIGGE (THORPEX Interactive Grand Global Ensemble) Surface Control forecast from ECMWF ,TIGGE,,TIGGE,,"THORPEX,TIGGE,CF,SFC,ECMWF",ATMOSPHERIC,proprietary,TIGGE ECMWF Surface Control forecast,2006-10-01T00:00:00Z,TIGGE_CF_SFC,,,,,,,,,,,,,,available,,,,,,,,,,,, +UERRA_EUROPE_SL,"This UERRA dataset contains analyses of surface and near-surface essential climate variables from UERRA-HARMONIE and MESCAN-SURFEX systems. Forecasts up to 30 hours initialised from the analyses at 00 and 12 UTC are available only through the CDS-API (see Documentation). UERRA-HARMONIE is a 3-dimensional variational data assimilation system, while MESCAN-SURFEX is a complementary surface analysis system. Using the Optimal Interpolation method, MESCAN provides the best estimate of daily accumulated precipitation and six-hourly air temperature and relative humidit at 2 meters above the model topography. The land surface platform SURFEX is forced with downscaled forecast fields from UERRA-HARMONIE as well as MESCAN analyses. It is run offline, i.e. without feedback to the atmospheric analysis performed in MESCAN or the UERRA-HARMONIE data assimilation cycles. Using SURFEX offline allows to take full benefit of precipitation analysis and to use the more advanced physics options to better represent surface variables such as surface temperature and surface fluxes, and soil processes related to water and heat transfer in the soil and snow. In general, the assimilation systems are able to estimate biases between observations and to sift good-quality data from poor data. The laws of physics allow for estimates at locations where data coverage is low. The provision of estimates at each grid point in Europe for each regular output time, over a long period, always using the same format, makes reanalysis a very convenient and popular dataset to work with. The observing system has changed drastically over time, and although the assimilation system can resolve data holes, the much sparser observational networks, e.g. in 1960s, will have an impact on the quality of analyses leading to less accurate estimates. The improvement over global reanalysis products comes with the higher horizontal resolution that allows incorporating more regional details (e.g. topography). Moreover, it enables the system even to use more observations at places with dense observation networks. Variables in the dataset/application are: 10m wind direction, 10m wind speed, 2m relative humidity, 2m temperature, Albedo, High cloud cover, Land sea mask, Low cloud cover, Mean sea level pressure, Medium cloud cover, Orography, Skin temperature, Snow density, Snow depth water equivalent, Surface pressure, Surface roughness, Total cloud cover, Total column integrated water vapour, Total precipitation ",SURFEX,,SURFEX,,"Climate,ECMWF,Reanalysis,Regional,Europe,UERRA,UERRA-HARMONIE,SURFEX,MESCAN-SURFEX,CDS,Atmospheric,single,levels",ATMOSPHERIC,proprietary,UERRA regional reanalysis for Europe on single levels from 1961 to 2019,1961-01-01T00:00:00Z,UERRA_EUROPE_SL,,,,available,,,,,available,,,,,,,,,,,,,,,,available, +VENUS_L1C,A light description of Venus L1 data is available at http://www.cesbio.ups-tlse.fr/multitemp/?page_id=12984 ,VENUS,,VENUS,L1C,"VENUS,L1,L1C",OPTICAL,proprietary,Venus Level1-C,2017-08-02T00:00:00Z,VENUS_L1C,,,,,,,,,,,,,,,,,,,,,,available,,,, +VENUS_L2A_MAJA,"Level2 products provide surface reflectances after atmospheric correction, along with masks of clouds and their shadows. Data is processed by MAJA (before called MACCS) for THEIA land data center. ",VENUS,,VENUS,L2A,"VENUS,L2,L2A",OPTICAL,proprietary,Venus Level2-A,2017-08-02T00:00:00Z,VENUS_L2A_MAJA,,,,,,,,,,,,,,,,,,,,,,available,,,, +VENUS_L3A_MAJA,,VENUS,,VENUS,L3A,"VENUS,L3,L3A",OPTICAL,proprietary,Venus Level3-A,2017-08-02T00:00:00Z,VENUS_L3A_MAJA,,,,,,,,,,,,,,,,,,,,,,available,,,, diff --git a/docs/add_provider.rst b/docs/add_provider.rst index 9714290a4..ce6696c20 100644 --- a/docs/add_provider.rst +++ b/docs/add_provider.rst @@ -31,8 +31,6 @@ the `STAC client page `_, shows productType: '{productType}' download: type: AwsDownload - base_uri: https://tamn.snapplanet.io - flatten_top_dirs: True auth: type: AwsAuth credentials: diff --git a/docs/api_reference/core.rst b/docs/api_reference/core.rst index 106fe39dd..64946d647 100644 --- a/docs/api_reference/core.rst +++ b/docs/api_reference/core.rst @@ -81,9 +81,10 @@ Misc EODataAccessGateway.group_by_extent EODataAccessGateway.guess_product_type EODataAccessGateway.list_queryables + EODataAccessGateway.available_sortables .. autoclass:: eodag.api.core.EODataAccessGateway :members: set_preferred_provider, get_preferred_provider, update_providers_config, list_product_types, available_providers, search, search_all, search_iter_page, crunch, download, download_all, serialize, deserialize, deserialize_and_register, load_stac_items, group_by_extent, guess_product_type, get_cruncher, - update_product_types_list, fetch_product_types_list, discover_product_types, list_queryables + update_product_types_list, fetch_product_types_list, discover_product_types, list_queryables, available_sortables diff --git a/docs/conf.py b/docs/conf.py index bf5ca4a4d..45f3227cc 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -17,6 +17,7 @@ # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # +from datetime import datetime from importlib.metadata import metadata from typing import Dict @@ -39,7 +40,6 @@ "sphinx.ext.viewcode", "nbsphinx", "sphinx_copybutton", - "sphinxcontrib.jquery", ] # Notebook integration parameters @@ -80,7 +80,7 @@ # General information about the project. project = metadata("eodag")["Name"] author = metadata("eodag")["Author"] -copyright = "2018-2022, CS GROUP - France, https://www.csgroup.eu" +copyright = f"2018-{datetime.now().year}, CS GROUP - France, https://www.csgroup.eu" # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the @@ -124,19 +124,6 @@ # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. -# -# html_theme_options = { -# "logo": "eodag_logo.png", -# "logo_name": False, -# "fixed_sidebar": True, -# "show_powered_by": False, -# "github_user": "CS-SI", -# "github_repo": "eodag", -# "github_type": "star", -# "github_banner": True, -# "page_width": "1140px", -# "pre_bg": "#eeffcc", -# } html_theme_options = { "repository_url": "https://github.com/CS-SI/eodag", @@ -146,10 +133,14 @@ "repository_branch": "develop", "path_to_docs": "docs", "use_download_button": True, - "extra_navbar": "", + "logo": { + "image_light": "_static/eodag_logo_160.png", + "image_dark": "_static/eodag_logo_160r.png", + }, + "show_toc_level": 2, } -html_logo = "_static/eodag_logo.png" +html_logo = "_static/eodag_logo_160.png" html_title = "" html_favicon = "_static/favicon-32x32.png" @@ -163,13 +154,9 @@ # or fully qualified paths (eg. https://...) html_css_files = [ "custom.css", - "https://cdn.datatables.net/1.10.23/css/jquery.dataTables.min.css", ] -html_js_files = [ - "https://cdn.datatables.net/1.10.23/js/jquery.dataTables.min.js", - "product_types.js", -] +html_js_files = [] # Custom sidebar templates, must be a dictionary that maps document names # to template names. @@ -208,7 +195,7 @@ master_doc, "eodag.tex", "eodag Documentation", - "CS GROUP - France (CSSI)", + "CS GROUP - France", "manual", ) ] diff --git a/docs/getting_started_guide/configure.rst b/docs/getting_started_guide/configure.rst index 7b98933c5..ae94b91bb 100644 --- a/docs/getting_started_guide/configure.rst +++ b/docs/getting_started_guide/configure.rst @@ -255,7 +255,7 @@ This file can be used to download products with the API: from eodag import EODataAccessGateway dag = EODataAccessGateway() - products, total_count = dag.search( + products = dag.search( productType="S2_MSI_L1C", start="2018-01-01", end="2018-01-31", diff --git a/docs/getting_started_guide/install.rst b/docs/getting_started_guide/install.rst index e751e8d88..7d859f2f1 100644 --- a/docs/getting_started_guide/install.rst +++ b/docs/getting_started_guide/install.rst @@ -20,6 +20,19 @@ Or with ``conda`` from the *conda-forge* channel: conda install -c conda-forge eodag +Optional dependencies +^^^^^^^^^^^^^^^^^^^^^ + +Since ``v3.0``, EODAG comes with a minimal set of dependencies. If you want more features, please install using one of +the following extras: + +* ``eodag[all]``, includes everything that would be needed to run EODAG and associated tutorials with all features +* ``eodag[all-providers]``, includes dependencies required to have all providers available +* ``eodag[csw]``, includes dependencies for plugins using CSW +* ``eodag[ecmwf]``, includes dependencies for :class:`~eodag.plugins.apis.ecmwf.EcmwfApi` (`ecmwf` provider) +* ``eodag[usgs]``, includes dependencies for :class:`~eodag.plugins.apis.usgs.UsgsApi` (`usgs` provider) +* ``eodag[server]``, includes dependencies for server-mode + .. _install_notebooks: Run the notebooks locally @@ -30,7 +43,7 @@ that can be run locally: 1. Install the extras dependencies it requires by executing this command (preferably in a virtual environment):: - python -m pip install eodag[tutorials] + python -m pip install "eodag[tutorials]" 2. Clone ``eodag`` 's repository with git:: diff --git a/docs/getting_started_guide/providers.rst b/docs/getting_started_guide/providers.rst index 377917eb1..4498b6b5a 100644 --- a/docs/getting_started_guide/providers.rst +++ b/docs/getting_started_guide/providers.rst @@ -22,12 +22,17 @@ Products from the following providers are made avaiable through ``eodag``: * `ecmwf `_: European Centre for Medium-Range Weather Forecasts * `cop_ads `_: Copernicus Atmosphere Data Store * `cop_cds `_: Copernicus Climate Data Store +* `cop_marine `_: Copernicus Marine Service * `sara `_: Sentinel Australasia Regional Access * `meteoblue `_: Meteoblue forecast * `cop_dataspace `_: Copernicus Data Space * `planetary_computer `_: Microsoft Planetary Computer * `hydroweb_next `_: hydroweb.next thematic hub for hydrology data access * `wekeo `_: WEkEO Copernicus and Sentinel data +* `wekeo_cmems `_: Copernicus Marine (CMEMS) data from WEkEO +* `dedt_lumi `_: DestinE Digital Twin output on Lumi +* `dedl `_: Destination Earth Data Lake (DEDL) +* `eumetsat_ds `_: EUMETSAT Data Store (European Organisation for the Exploitation of Meteorological Satellites) Providers available through an external plugin: diff --git a/docs/getting_started_guide/register.rst b/docs/getting_started_guide/register.rst index ab9540628..0022f0519 100644 --- a/docs/getting_started_guide/register.rst +++ b/docs/getting_started_guide/register.rst @@ -40,6 +40,8 @@ to each provider supported by ``eodag``: Then go to your profile and use from the section named "API key" use *UID* as *username* and *API Key* as *password* in eodag credentials. EODAG can be used to request for public datasets, you can browse them `here `__. +* ``cop_marine``: no account is required + * ``sara``: create an account `here `__, then use your email as `username` in eodag credentials. * ``meteoblue``: eodag uses `dataset API `_ @@ -111,7 +113,7 @@ to each provider supported by ``eodag``: * Add your WEkEO credentials (*username*, *password*) to the user configuration file. - * You will then need to accept Copernicus terms and conditions (for once). To do this, follow the + * Depending on which data you want to retrieve, you will then need to accept terms and conditions (for once). To do this, follow the `tutorial guidelines `__ or run the following commands in your terminal. @@ -119,16 +121,42 @@ to each provider supported by ``eodag``: .. code-block:: bash - curl -X GET --header "Authorization: Basic $(echo USERNAME:PASSWORD | base64)" "https://wekeo-broker.prod.wekeo2.eu/databroker/gettoken" + curl -X POST --data '{"username": "USERNAME", "password": "PASSWORD"}' -H "Content-Type: application/json" "https://gateway.prod.wekeo2.eu/hda-broker/gettoken" The WEkEO API will respond with a token: .. code-block:: bash - { "access_token": "xxxxxxxx-yyyy-zzzz-xxxx-yyyyyyyyyyyy" } + { "access_token": "xxxxxxxx-yyyy-zzzz-xxxx-yyyyyyyyyyyy", + "refresh_token": "xxxxxxxx-yyyy-zzzz-xxxx-yyyyyyyyyyyy", + "scope":"openid", + "id_token":"token", + "token_type":"Bearer", + "expires_in":3600 + } - * Accept terms and conditions by running this command and replacing : + * Accept terms and conditions by running this command and replacing and : .. code-block:: bash - curl --request PUT --header 'accept: application/json' --header 'authorization: ' --data 'accepted=true' https://wekeo-broker.prod.wekeo2.eu/databroker/termsaccepted/Copernicus_General_License + curl --request PUT --header 'accept: application/json' --header 'Authorization: Bearer ' https://gateway.prod.wekeo2.eu/hda-broker/api/v1/termsaccepted/ + + The licence name depends on which data you want to retrieve. To use all datasets available in wekeo, the following licences have to be accepted: + + * EUMETSAT_Copernicus_Data_Licence + * Copernicus_Land_Monitoring_Service_Data_Policy + * Copernicus_Sentinel_License + * Copernicus_ECMWF_License + * Copernicus_DEM_Instance_COP-DEM-GLO-30-F_Global_30m + * Copernicus_DEM_Instance_COP-DEM-GLO-90-F_Global_90m + +* ``wekeo_cmems``: The registration procedure is the same as for ``wekeo``. The licence that has to be accepted to access the Copernicus Marine data is ``Copernicus_Marine_Service_Product_License``. + +* ``dedt_lumi``: Create an account on `DestinE `__, then use your `username`, `password` in eodag credentials. + +* ``dedl``: You need a `DESP OpenID` account in order to authenticate. To create one go + `here `__, then click on `Sign In`, select the identity provider + `DESP OpenID` and then click `Authenticate`. Finally click on `Register` to create a new account. + +* ``eumetsat_ds``: create an account `here `__. + Then use the consumer key as `username` and the consumer secret as `password` from `here `__ in eodag credentials. diff --git a/docs/index.rst b/docs/index.rst index 51e24aa19..5d3f77281 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -34,12 +34,16 @@ types (Sentinel 1, Sentinel 2, Sentinel 3, Landsat, etc.) that can be searched a `creodias `_, `creodias_s3 `_, `onda `_, `ecmwf `_, `cop_ads `_, `cop_cds `_, - `sara `_, + `cop_marine `_, `sara `_, `meteoblue `_, `cop_dataspace `_, `planetary_computer `_, `hydroweb_next `_, - `wekeo `_ + `wekeo `_, + `wekeo_cmems `_, + `dedt_lumi `_, + `dedl `_, + `eumetsat_ds `_ EODAG has the following primary features: @@ -67,7 +71,7 @@ downloading *Sentinel 2 Level-1C* products from any provider's catalog is as sim dag = EODataAccessGateway() - search_results, total_count = dag.search( + search_results = dag.search( productType="S2_MSI_L1C", start="2021-03-01", end="2021-03-31", diff --git a/docs/notebooks/api_user_guide/1_overview.ipynb b/docs/notebooks/api_user_guide/1_overview.ipynb index 31b1444ff..bda11a2dd 100644 --- a/docs/notebooks/api_user_guide/1_overview.ipynb +++ b/docs/notebooks/api_user_guide/1_overview.ipynb @@ -17,7 +17,7 @@ "\n", "1. [Configure](#Configure): `eodag` is configured to use the provider *PEPS* (registering to *PEPS* is required to download the products, see [how to register to a provider](../../getting_started_guide/register.rst))\n", "2. [Search](#Search): *Sentinel 2 Level-1C* products (i.e. images) are searched for over an area in France in March 2021.\n", - "3. [Crunch](#Crunch): A decicated filter - that we call *cruncher* - provided by `eodag` is used to select products with a cloud cover less than 10%.\n", + "3. [Crunch](#Crunch): Two dedicated filters - that we call *crunchers* - provided by `eodag` are used to select products with a cloud cover less than 30% and covering the city of Toulouse (France).\n", "4. [Serialize](#Serialize): Save the filtered products as a GeoJSON file.\n", "4. [Download](#Download): The products are downloaded.\n", "5. [Post-process](#Post-process): [eodag-cube](https://github.com/CS-SI/eodag-cube) is an external package that is used to access a product's data, it is going to be used to calculate the NDVI of a product." @@ -63,7 +63,7 @@ " priority: # Lower value means lower priority (Default: 1)\n", " search: # Search parameters configuration\n", " download:\n", - " extract: # whether to extract the downloaded products (true or false).\n", + " extract: # whether to extract the downloaded products (true or false, Default: true).\n", " outputs_prefix: # where to store downloaded products.\n", " dl_url_params: # additional parameters to pass over to the download url as an url parameter\n", " delete_archive: # whether to delete the downloaded archives (true or false, Default: true).\n", @@ -82,8 +82,8 @@ "metadata": {}, "outputs": [], "source": [ - "os.environ[\"EODAG__PEPS__AUTH__CREDENTIALS__USERNAME\"] = \"PLEASE_CHANGE_ME\"\n", - "os.environ[\"EODAG__PEPS__AUTH__CREDENTIALS__PASSWORD\"] = \"PLEASE_CHANGE_ME\"\n", + "# os.environ[\"EODAG__PEPS__AUTH__CREDENTIALS__USERNAME\"] = \"PLEASE_CHANGE_ME\"\n", + "# os.environ[\"EODAG__PEPS__AUTH__CREDENTIALS__PASSWORD\"] = \"PLEASE_CHANGE_ME\"\n", "os.environ[\"EODAG__PEPS__DOWNLOAD__OUTPUTS_PREFIX\"] = os.path.abspath(workspace)" ] }, @@ -120,8 +120,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "2023-10-16 17:36:28,855 eodag.config [INFO ] Loading user configuration from: /home/sylvain/.config/eodag/eodag.yml\n", - "2023-10-16 17:36:29,052 eodag.core [INFO ] Locations configuration loaded from /home/sylvain/.config/eodag/locations.yml\n" + "2023-10-17 16:51:54,405 eodag.config [INFO ] Loading user configuration from: /home/anesson/.config/eodag/eodag.yml\n", + "2023-10-17 16:51:54,592 eodag.core [INFO ] Locations configuration loaded from /home/anesson/.config/eodag/locations.yml\n" ] } ], @@ -223,10 +223,7 @@ "source": [ "The [EODataAccessGateway](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway) class provides three search methods which have a similar signature but behave in different ways:\n", "\n", - "[search()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.search) returns a tuple with:\n", - "\n", - "* a [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) that stores the products obtained from a given **page** (default: `page=1`) and a given maximum **number of items per page** (default: `items_per_page=20`)\n", - "* an integer that is the **estimated** total number of products matching the search criteria\n", + "[search()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.search) returns a [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) that stores the products obtained from a given **page** (default: `page=1`) and a given maximum **number of items per page** (default: `items_per_page=20`). The attribute [SearchResult.number_matched](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) optionally stores the **estimated** total number of products matching the search criteria.\n", "\n", "
\n", "\n", @@ -248,7 +245,7 @@ "\n", "Warning\n", "\n", - "The second element returned by [search()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.search) is the **estimated** total number of products matching the search criteria, since, unfortunately, all the providers do not return the **exact** total number.\n", + "The [SearchResult.number_matched](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) property is the **estimated** total number of products matching the search criteria, since, unfortunately, all the providers do not return the **exact** total number.\n", "\n", "
" ] @@ -271,7 +268,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -279,7 +276,8 @@ " \"productType\": \"S2_MSI_L1C\",\n", " \"start\": \"2021-03-01\",\n", " \"end\": \"2021-03-31\",\n", - " \"geom\": {\"lonmin\": 1, \"latmin\": 43, \"lonmax\": 2, \"latmax\": 44}\n", + " \"geom\": {\"lonmin\": 1, \"latmin\": 43, \"lonmax\": 2, \"latmax\": 44},\n", + " \"count\": True\n", "}" ] }, @@ -291,65 +289,91 @@ "\n", "* `productType`: `eodag`'s product type\n", "* `start` and `end`: the start and end sensing datetimes (UTC)\n", - "* `geom`: the region of interest, which can be defined in different ways (`list`, `dict`, WKT string, `shapely.geometry`)." + "* `geom`: the region of interest, which can be defined in different ways (`list`, `dict`, WKT string, `shapely.geometry`).\n", + "* `count`: whether to retrieve the estimated total number of results or not (default is `False`)" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "2021-04-20 18:02:40,944-15s eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", - "2021-04-20 18:02:40,945-15s eodag.plugins.search.qssearch [INFO ] Sending count request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=1&page=1\n", - "2021-04-20 18:02:41,529-15s eodag.plugins.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=20&page=1\n", - "2021-04-20 18:02:42,499-15s eodag.core [INFO ] Found 48 result(s) on provider 'peps'\n" + "2023-10-17 16:51:55,786 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", + "2023-10-17 16:51:55,788 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=20&page=1\n", + "2023-10-17 16:51:56,737 eodag.core [INFO ] Found 68 result(s) on provider 'peps'\n" ] } ], "source": [ - "products_first_page, estimated_total_number = dag.search(**search_criteria)" + "products_first_page = dag.search(**search_criteria)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The estimated total number of products matching the search criteria is stored in the `number_matched` attribute (set to `None` if `count` is disabled or not available)." ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Got 20 products and an estimated total number of 48 products.\n" + "Got 20 products and an estimated total number of 68 products.\n" ] } ], "source": [ - "print(f\"Got {len(products_first_page)} products and an estimated total number of {estimated_total_number} products.\")" + "print(f\"Got {len(products_first_page)} products and an estimated total number of {products_first_page.number_matched} products.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "A [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) contains a number of [EOProduct](../../api_reference/eoproduct.rst#eodag.api.product._product.EOProduct). Each one of them has a `properties` attribute that is a dictionnary storing the product's metadata." + "A [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) contains a number of [EOProduct](../../api_reference/eoproduct.rst#eodag.api.product._product.EOProduct). Each one of them has a `properties` attribute that is a dictionary storing the product's metadata." ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TCJ_20210328T124650, provider=peps), EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TCH_20210328T124650, provider=peps), EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TDH_20210328T124650, provider=peps), EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TDJ_20210328T124650, provider=peps), EOProduct(id=S2A_MSIL1C_20210326T105031_N0209_R051_T31TDH_20210326T125540, provider=peps), EOProduct(id=S2A_MSIL1C_20210326T105031_N0209_R051_T31TDJ_20210326T125540, provider=peps), EOProduct(id=S2A_MSIL1C_20210326T105031_N0209_R051_T31TCJ_20210326T125540, provider=peps), EOProduct(id=S2A_MSIL1C_20210326T105031_N0209_R051_T31TCH_20210326T125540, provider=peps), EOProduct(id=S2A_MSIL1C_20210323T104021_N0209_R008_T31TCJ_20210323T141236, provider=peps), EOProduct(id=S2A_MSIL1C_20210323T104021_N0209_R008_T31TDJ_20210323T141236, provider=peps), EOProduct(id=S2A_MSIL1C_20210323T104021_N0209_R008_T31TDH_20210323T141236, provider=peps), EOProduct(id=S2A_MSIL1C_20210323T104021_N0209_R008_T31TCH_20210323T141236, provider=peps), EOProduct(id=S2B_MSIL1C_20210321T104639_N0209_R051_T31TCJ_20210321T130616, provider=peps), EOProduct(id=S2B_MSIL1C_20210321T104639_N0209_R051_T31TDJ_20210321T130616, provider=peps), EOProduct(id=S2B_MSIL1C_20210321T104639_N0209_R051_T31TCH_20210321T130616, provider=peps), EOProduct(id=S2B_MSIL1C_20210321T104639_N0209_R051_T31TDH_20210321T130616, provider=peps), EOProduct(id=S2B_MSIL1C_20210318T103649_N0209_R008_T31TDH_20210318T143809, provider=peps), EOProduct(id=S2B_MSIL1C_20210318T103649_N0209_R008_T31TCH_20210318T143809, provider=peps), EOProduct(id=S2B_MSIL1C_20210318T103649_N0209_R008_T31TCJ_20210318T143809, provider=peps), EOProduct(id=S2B_MSIL1C_20210318T103649_N0209_R008_T31TDJ_20210318T143809, provider=peps)]" + "SearchResult([EOProduct(id=S2B_MSIL1C_20210328T103629_N0500_R008_T31TDH_20230602T033834, provider=peps),\n", + " EOProduct(id=S2B_MSIL1C_20210328T103629_N0500_R008_T31TCJ_20230602T033834, provider=peps),\n", + " EOProduct(id=S2B_MSIL1C_20210328T103629_N0500_R008_T31TDJ_20230602T033834, provider=peps),\n", + " EOProduct(id=S2B_MSIL1C_20210328T103629_N0500_R008_T31TCH_20230602T033834, provider=peps),\n", + " EOProduct(id=S2A_MSIL1C_20210326T105031_N0500_R051_T31TCJ_20230515T023730, provider=peps),\n", + " EOProduct(id=S2A_MSIL1C_20210326T105031_N0500_R051_T31TDH_20230515T023730, provider=peps),\n", + " EOProduct(id=S2A_MSIL1C_20210326T105031_N0500_R051_T31TDJ_20230515T023730, provider=peps),\n", + " EOProduct(id=S2A_MSIL1C_20210326T105031_N0500_R051_T31TCH_20230515T023730, provider=peps),\n", + " EOProduct(id=S2A_MSIL1C_20210323T104021_N0500_R008_T31TCH_20230523T094723, provider=peps),\n", + " EOProduct(id=S2A_MSIL1C_20210323T104021_N0500_R008_T31TDJ_20230523T094723, provider=peps),\n", + " EOProduct(id=S2A_MSIL1C_20210323T104021_N0209_R008_T31TCJ_20210323T141236, provider=peps),\n", + " EOProduct(id=S2A_MSIL1C_20210323T104021_N0500_R008_T31TCJ_20230523T094723, provider=peps),\n", + " EOProduct(id=S2A_MSIL1C_20210323T104021_N0500_R008_T31TDH_20230523T094723, provider=peps),\n", + " EOProduct(id=S2A_MSIL1C_20210323T104021_N0209_R008_T31TDJ_20210323T141236, provider=peps),\n", + " EOProduct(id=S2A_MSIL1C_20210323T104021_N0209_R008_T31TDH_20210323T141236, provider=peps),\n", + " EOProduct(id=S2A_MSIL1C_20210323T104021_N0209_R008_T31TCH_20210323T141236, provider=peps),\n", + " EOProduct(id=S2B_MSIL1C_20210321T104639_N0500_R051_T31TDJ_20230526T002554, provider=peps),\n", + " EOProduct(id=S2B_MSIL1C_20210321T104639_N0209_R051_T31TCJ_20210321T130616, provider=peps),\n", + " EOProduct(id=S2B_MSIL1C_20210321T104639_N0209_R051_T31TDJ_20210321T130616, provider=peps),\n", + " EOProduct(id=S2B_MSIL1C_20210321T104639_N0500_R051_T31TDH_20230526T002554, provider=peps)])" ] }, - "execution_count": 12, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -360,16 +384,16 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "dict_keys(['abstract', 'instrument', 'platform', 'platformSerialIdentifier', 'processingLevel', 'sensorType', 'license', 'missionStartDate', 'title', 'bands', 'productType', 'uid', 'keyword', 'resolution', 'organisationName', 'publicationDate', 'parentIdentifier', 'orbitNumber', 'orbitDirection', 'cloudCover', 'snowCover', 'creationDate', 'modificationDate', 'sensorMode', 'startTimeFromAscendingNode', 'completionTimeFromAscendingNode', 'id', 'quicklook', 'downloadLink', 'storageStatus', 'thumbnail', 'resourceSize', 'resourceChecksum', 'visible', 'newVersion', 'isNrt', 'realtime', 'relativeOrbitNumber', 's2TakeId', 'mgrs', 'bareSoil', 'highProbaClouds', 'mediumProbaClouds', 'lowProbaClouds', 'snowIce', 'vegetation', 'water', 'services', 'links', 'storage'])" + "dict_keys(['abstract', 'instrument', 'platform', 'platformSerialIdentifier', 'processingLevel', 'keywords', 'sensorType', 'license', 'missionStartDate', 'title', 'productType', 'uid', 'keyword', 'resolution', 'organisationName', 'publicationDate', 'parentIdentifier', 'orbitNumber', 'orbitDirection', 'cloudCover', 'snowCover', 'creationDate', 'modificationDate', 'sensorMode', 'startTimeFromAscendingNode', 'completionTimeFromAscendingNode', 'id', 'quicklook', 'downloadLink', 'tileIdentifier', 'storageStatus', 'thumbnail', 'resourceSize', 'resourceChecksum', 'visible', 'newVersion', 'isNrt', 'realtime', 'relativeOrbitNumber', 'useDatalake', 'bucket', 'prefix', 's2TakeId', 'bareSoil', 'highProbaClouds', 'mediumProbaClouds', 'lowProbaClouds', 'snowIce', 'vegetation', 'water', 'isRefined', 'nrtResource', 'services', 'links', 'storage'])" ] }, - "execution_count": 13, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -388,16 +412,16 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'https://peps.cnes.fr/resto/collections/S2ST/387c7327-9a71-5a34-9163-0dfdeb024522/download'" + "'https://peps.cnes.fr/resto/collections/S2ST/2d85d4c8-34c1-55dc-b43c-0ab0fe4c2b97/download'" ] }, - "execution_count": 14, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -415,17 +439,17 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "2021-04-20 18:02:42,532-15s eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", - "2021-04-20 18:02:42,533-15s eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", - "2021-04-20 18:02:42,537-15s eodag.plugins.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=500&page=1\n", - "2021-04-20 18:02:44,422-15s eodag.core [INFO ] Found 48 result(s) on provider 'peps'\n" + "2023-10-17 16:51:57,436 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", + "2023-10-17 16:51:57,438 eodag.core [INFO ] Iterate search over multiple pages: page #1\n", + "2023-10-17 16:51:57,440 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=500&page=1\n", + "2023-10-17 16:51:58,327 eodag.core [INFO ] Found 68 result(s) on provider 'peps'\n" ] } ], @@ -435,14 +459,14 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Got a total number of 48 products.\n" + "Got a total number of 68 products.\n" ] } ], @@ -462,7 +486,48 @@ "metadata": {}, "source": [ "Crunching as defined in `eodag` is a way to filter the products contained in a [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) object. Several crunchers/filters are available (e.g. [FilterProperty](../../plugins_reference/generated/eodag.plugins.crunch.filter_property.FilterProperty.rst#eodag.plugins.crunch.filter_property.FilterProperty) to filter products products according to one of their properties). They can be called by passing the cruncher object to [SearchResult.crunch()](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult.crunch) or by running a dedicated method (e.g. [SearchResult.filter_property()](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult.filter_property)).\n", - "The following example shows how to filter products to keep only those whose cloud cover is less than 10%." + "The following example shows how to filter products to keep only those whose cloud cover is less than 30%." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-10-17 16:51:58,539 eodag.crunch.property [INFO ] Finished filtering products. 27 resulting products\n" + ] + } + ], + "source": [ + "filtered_products = all_products.filter_property(cloudCover=30, operator=\"lt\")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Got now 27 products after filtering by cloud coverage.\n" + ] + } + ], + "source": [ + "print(f\"Got now {len(filtered_products)} products after filtering by cloud coverage.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we use another cruncher to filter products containing a given geometry (Toulouse, France). We will use these products in [Post-process](#Post-process)." ] }, { @@ -474,12 +539,12 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-04-20 18:02:44,440-15s eodag.plugins.crunch.filter_property [INFO ] Finished filtering products. 10 resulting products\n" + "2023-10-17 16:51:58,940 eodag.crunch.overlap [INFO ] Finished filtering products. 3 resulting products\n" ] } ], "source": [ - "filtered_products = all_products.filter_property(cloudCover=10, operator=\"lt\")" + "filtered_products = filtered_products.filter_overlap(geometry=(1.435905, 43.586857, 1.458907, 43.603827), contains=True)" ] }, { @@ -491,12 +556,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Got now 10 products after filtering.\n" + "Got now 3 products after filtering by geometry.\n" ] } ], "source": [ - "print(f\"Got now {len(filtered_products)} products after filtering.\")" + "print(f\"Got now {len(filtered_products)} products after filtering by geometry.\")" ] }, { @@ -535,7 +600,7 @@ "metadata": {}, "outputs": [], "source": [ - "# restored_filtered_prods = dag.deserialize_and_register(filtered_prods_filepath)" + "restored_filtered_prods = dag.deserialize_and_register(filtered_prods_filepath)" ] }, { @@ -554,39 +619,18 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "bd4d4840e874426eb25b2cc888f2c843", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value=''), FloatProgress(value=0.0, layout=Layout(flex='2'), max=15629.0), HTML(value=''))…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2021-04-20 18:02:45,068-15s eodag.api.product [INFO ] Download recorded in /home/maxime/TRAVAIL/06_EODAG/01_eodag/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/quicklooks/S2B_MSIL1C_20210328T103629_N0209_R008_T31TCJ_20210328T124650\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "bf7b6ce5452a4dc1aee46058979d52c9", + "model_id": "1762f9ebb47b45d5a45c265dfca55cac", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "HBox(children=(HTML(value=''), FloatProgress(value=0.0, layout=Layout(flex='2'), max=31474.0), HTML(value=''))…" + "0.00B [00:00, ?B/s]" ] }, "metadata": {}, @@ -596,18 +640,18 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-04-20 18:02:45,335-15s eodag.api.product [INFO ] Download recorded in /home/maxime/TRAVAIL/06_EODAG/01_eodag/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/quicklooks/S2B_MSIL1C_20210328T103629_N0209_R008_T31TCH_20210328T124650\n" + "2023-10-17 16:52:00,327 eodag.product [INFO ] Download recorded in /home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/quicklooks/S2B_MSIL1C_20210321T104639_N0209_R051_T31TCJ_20210321T130616\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "d2f37125e27c45679532cabdc2a07c7a", + "model_id": "dac3fdd1f01b4f53a299cee2bd6ae0e1", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "HBox(children=(HTML(value=''), FloatProgress(value=0.0, layout=Layout(flex='2'), max=50826.0), HTML(value=''))…" + "0.00B [00:00, ?B/s]" ] }, "metadata": {}, @@ -617,27 +661,18 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-04-20 18:02:45,636-15s eodag.api.product [INFO ] Download recorded in /home/maxime/TRAVAIL/06_EODAG/01_eodag/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/quicklooks/S2B_MSIL1C_20210328T103629_N0209_R008_T31TDH_20210328T124650\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n" + "2023-10-17 16:52:00,791 eodag.product [INFO ] Download recorded in /home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/quicklooks/S2B_MSIL1C_20210321T104639_N0500_R051_T31TCJ_20230526T002554\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "93c849ef2ba94379b69633edf70f0773", + "model_id": "35d757f78f154bbe852e4198e41b01cc", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "HBox(children=(HTML(value=''), FloatProgress(value=0.0, layout=Layout(flex='2'), max=41955.0), HTML(value=''))…" + "0.00B [00:00, ?B/s]" ] }, "metadata": {}, @@ -647,189 +682,18 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-04-20 18:02:45,947-15s eodag.api.product [INFO ] Download recorded in /home/maxime/TRAVAIL/06_EODAG/01_eodag/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/quicklooks/S2B_MSIL1C_20210328T103629_N0209_R008_T31TDJ_20210328T124650\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" + "2023-10-17 16:52:01,129 eodag.product [INFO ] Download recorded in /home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/quicklooks/S2B_MSIL1C_20210301T104859_N0500_R051_T31TCJ_20230604T191601\n" ] }, { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "c8168d7fbdfb48cb872507213266684a", - "version_major": 2, - "version_minor": 0 - }, + "image/png": "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gNN9vZ599lkuXLjA61//ej74wQ/ywgsvAKd7TK+UNj628fG1po2Pp2NsbXwU2hh558bINj6ejjHdjfER7owYGX6HxvKacHBwgDHmtkEDnD17lq985SsndFSvjp2dHYBvOablazs7O5w5c+a218MwZGNjY/Wek8Zay8/8zM/wF/7CX+Ctb30rIMcdxzGj0ei29750bN9q7MvXToovfvGLXLlyhaIo6Pf7fOITn+D+++/nqaeeOrVjAvj4xz/O7//+7/O7v/u73/Taab1eDz30EB/72Md485vfzI0bN/joRz/KD/7gD/L000+f2jF9O7Tx8SZtfPzu0sbHm9zpY2vj403aGHmTOylGtvHxzh8T3J3xEe6cGHmqFuQtdy6PPPIITz/9NL/927990ofyHeHNb34zTz31FJPJhP/23/4bH/rQh3jsscdO+rBeFVevXuWnf/qn+eQnP0mapid9ON8x3ve+963+/sADD/DQQw9x77338qu/+qt0Op0TPLKWFqGNj3c+bXxsaTkZ2vh453O3xke4c2LkqSpZ39raIgiCb1K3293d5dy5cyd0VK+O5XH/SWM6d+4ce3t7t73eNA1HR0d3xLh/6qd+il//9V/nM5/5DJcuXVr9+7lz56iqivF4fNv7Xzq2bzX25WsnRRzHvPGNb+TBBx/k0Ucf5e1vfzv/7t/9u1M9pieeeIK9vT1+4Ad+gDAMCcOQxx57jH//7/89YRhy9uzZUzu2WxmNRnzf930fzz333Km+Xq+UNj7epI2P313a+HiT0zC2W/lejY/QxshbuVNiZBsfT8eYvlfiI5xcjDxVC/I4jnnwwQf51Kc+tfo3ay2f+tSnuHLlygke2bfPfffdx7lz524b03Q65fOf//xqTFeuXGE8HvPEE0+s3vPpT38aay0PPfTQa37MS5xz/NRP/RSf+MQn+PSnP81999132+sPPvggURTdNrZnnnmGF1544baxffGLX7ztYfHJT36S4XDI/fff/9oM5E+BtZayLE/1mN7znvfwxS9+kaeeemr1553vfCcf/OAHV38/rWO7lfl8zte+9jXOnz9/qq/XK6WNj218PCna+Hhnj+1WvlfjI7Qx8k6KkW18FE7LmL5X4iOcYIz8NgTpTpSPf/zjLkkS97GPfcx9+ctfdn/37/5dNxqNblO3u9OYzWbuySefdE8++aQD3L/5N//GPfnkk+6P//iPnXNiWTEajdz/+B//w/3hH/6h++t//a9/S8uKd7zjHe7zn/+8++3f/m33pje96cRtfT784Q+7tbU199nPfvY2u4Asy1bv+cmf/El3+fJl9+lPf9r93u/9nrty5Yq7cuXK6vWlXcAP//APu6eeesr97//9v9329vaJ2iD8/M//vHvsscfc888/7/7wD//Q/fzP/7xTSrn/83/+j3PudI7p5bhVJdO50zm2n/u5n3Of/exn3fPPP+9+53d+xz388MNua2vL7e3tOedO55i+Xdr42MbH7zZtfDxdY2vj4+20MfLOiJFtfDw9Y3o57ob46NydEyNP3YLcOef+w3/4D+7y5csujmP3rne9y33uc5876UP6E/nMZz7jgG/686EPfcg5J7YV//Sf/lN39uxZlySJe8973uOeeeaZ2z7j8PDQfeADH3D9ft8Nh0P3t/7W33Kz2ewERnOTbzUmwP3Kr/zK6j15nru/9/f+nltfX3fdbtf9zb/5N92NGzdu+5xvfOMb7n3ve5/rdDpua2vL/dzP/Zyr6/o1Hs1N/vbf/tvu3nvvdXEcu+3tbfee97xnFUydO51jejleGlBP49h+7Md+zJ0/f97FcewuXrzofuzHfsw999xzq9dP45heDW18bOPjd5M2Pp6usbXx8ZtpY+TJx8g2Pp6eMb0cd0N8dO7OiZHKOef+9PvpLS0tLS0tLS0tLS0tLS0t3wlOVQ95S0tLS0tLS0tLS0tLS8vdQrsgb2lpaWlpaWlpaWlpaWk5AdoFeUtLS0tLS0tLS0tLS0vLCdAuyFtaWlpaWlpaWlpaWlpaToB2Qd7S0tLS0tLS0tLS0tLScgK0C/KWlpaWlpaWlpaWlpaWlhOgXZC3tLS0tLS0tLS0tLS0tJwA7YK8paWlpaWlpaWlpaWlpeUEaBfkLS0tLS0tLS0tLS0tLS0nQLsgb2lpaWlpaWlpaWlpaWk5AdoFeUtLS0tLS0tLS0tLS0vLCdAuyFtaWlpaWlpaWlpaWlpaToD/H3FFRdmC7FLWAAAAAElFTkSuQmCC", "text/plain": [ - "HBox(children=(HTML(value=''), FloatProgress(value=0.0, layout=Layout(flex='2'), max=15709.0), HTML(value=''))…" + "
" ] }, "metadata": {}, "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2021-04-20 18:02:46,255-15s eodag.api.product [INFO ] Download recorded in /home/maxime/TRAVAIL/06_EODAG/01_eodag/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/quicklooks/S2A_MSIL1C_20210323T104021_N0209_R008_T31TCJ_20210323T141236\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "2186a2d8c8a342998e9d212e4519cafd", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value=''), FloatProgress(value=0.0, layout=Layout(flex='2'), max=42757.0), HTML(value=''))…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2021-04-20 18:02:46,530-15s eodag.api.product [INFO ] Download recorded in /home/maxime/TRAVAIL/06_EODAG/01_eodag/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/quicklooks/S2A_MSIL1C_20210323T104021_N0209_R008_T31TDJ_20210323T141236\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "f69e0cc59a2a45bcab01afc2af359ea9", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value=''), FloatProgress(value=0.0, layout=Layout(flex='2'), max=52669.0), HTML(value=''))…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2021-04-20 18:02:46,802-15s eodag.api.product [INFO ] Download recorded in /home/maxime/TRAVAIL/06_EODAG/01_eodag/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/quicklooks/S2A_MSIL1C_20210323T104021_N0209_R008_T31TDH_20210323T141236\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "95b1bad6a4784f0b8e517aa1eeb2d097", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value=''), FloatProgress(value=0.0, layout=Layout(flex='2'), max=51507.0), HTML(value=''))…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2021-04-20 18:02:47,165-15s eodag.api.product [INFO ] Download recorded in /home/maxime/TRAVAIL/06_EODAG/01_eodag/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/quicklooks/S2B_MSIL1C_20210301T104859_N0209_R051_T31TCH_20210301T115849\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "d8a8452f3fc1488c8f8009849a1b88fa", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value=''), FloatProgress(value=0.0, layout=Layout(flex='2'), max=41730.0), HTML(value=''))…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2021-04-20 18:02:47,455-15s eodag.api.product [INFO ] Download recorded in /home/maxime/TRAVAIL/06_EODAG/01_eodag/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/quicklooks/S2B_MSIL1C_20210301T104859_N0209_R051_T31TDJ_20210301T115849\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "7d7dead3656446f7b42ba1f741f48e60", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value=''), FloatProgress(value=0.0, layout=Layout(flex='2'), max=44797.0), HTML(value=''))…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2021-04-20 18:02:47,739-15s eodag.api.product [INFO ] Download recorded in /home/maxime/TRAVAIL/06_EODAG/01_eodag/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/quicklooks/S2B_MSIL1C_20210301T104859_N0209_R051_T31TCJ_20210301T115849\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" } ], "source": [ @@ -847,7 +711,7 @@ " quicklook_path = product.get_quicklook(base_dir=quicklooks_dir)\n", " \n", " img = mpimg.imread(quicklook_path)\n", - " ax = fig.add_subplot(3, 4, i)\n", + " ax = fig.add_subplot(1, 3, i)\n", " ax.set_title(i)\n", " plt.imshow(img)\n", "plt.tight_layout()" @@ -862,25 +726,18 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 23, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2021-04-20 18:02:48,884-15s eodag.plugins.download.base [INFO ] Download url: https://peps.cnes.fr/resto/collections/S2ST/f913081f-eead-5709-ab65-cbaa1884150c/download\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "1156d7fc5968435d91c3b9c6fcfd11f7", + "model_id": "193ab8f14c864f138f8d2b95c73561fd", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "HBox(children=(HTML(value='S2B_MSIL1C_20210301T104859_N0209_R051_T31TCJ_20210301T115849'), FloatProgress(value…" + "0.00B [00:00, ?B/s]" ] }, "metadata": {}, @@ -890,45 +747,25 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-04-20 18:04:11,370-15s eodag.plugins.download.base [INFO ] Extraction activated\n" + "2023-10-17 16:52:02,381 eodag.download.base [INFO ] Download url: https://peps.cnes.fr/resto/collections/S2ST/569f40e6-b634-5a63-ad5b-7ddc242a39dc/download\n" ] }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "2929c90120ad4b6f978ff3d5b3d726db", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(HTML(value='Extracting files from S2B_MSIL1C_20210301T104859_N0209_R051_T31TCJ_20210301T115849.…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stderr", "output_type": "stream", "text": [ - "2021-04-20 18:04:12,745-15s eodag.api.product [INFO ] Remote location of the product is still available through its 'remote_location' property: https://peps.cnes.fr/resto/collections/S2ST/f913081f-eead-5709-ab65-cbaa1884150c/download\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n" + "2023-10-17 16:59:38,005 eodag.download.base [INFO ] Extraction activated\n", + "2023-10-17 16:59:40,653 eodag.download.base [INFO ] Deleting archive S2B_MSIL1C_20210301T104859_N0500_R051_T31TCJ_20230604T191601.zip\n", + "2023-10-17 16:59:40,812 eodag.product [INFO ] Remote location of the product is still available through its 'remote_location' property: https://peps.cnes.fr/resto/collections/S2ST/569f40e6-b634-5a63-ad5b-7ddc242a39dc/download\n" ] }, { "data": { "text/plain": [ - "'file:///home/maxime/TRAVAIL/06_EODAG/01_eodag/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/S2B_MSIL1C_20210301T104859_N0209_R051_T31TCJ_20210301T115849/S2B_MSIL1C_20210301T104859_N0209_R051_T31TCJ_20210301T115849.SAFE'" + "'/home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/S2B_MSIL1C_20210301T104859_N0500_R051_T31TCJ_20230604T191601'" ] }, - "execution_count": 24, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -948,16 +785,16 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'file:///home/maxime/TRAVAIL/06_EODAG/01_eodag/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/S2B_MSIL1C_20210301T104859_N0209_R051_T31TCJ_20210301T115849/S2B_MSIL1C_20210301T104859_N0209_R051_T31TCJ_20210301T115849.SAFE'" + "'file:///home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_overview/S2B_MSIL1C_20210301T104859_N0500_R051_T31TCJ_20230604T191601'" ] }, - "execution_count": 25, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -999,10 +836,16 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ + "import warnings\n", + "import rasterio\n", + "\n", + "# mute rasterio warnings\n", + "warnings.filterwarnings(\"ignore\", category=rasterio.errors.NotGeoreferencedWarning)\n", + "\n", "crs = \"epsg:4326\"\n", "resolution = 0.0001\n", "sub_extent = (1.435905, 43.586857, 1.458907, 43.603827)\n", @@ -1020,29 +863,27 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 27, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAHHCAYAAABdm0mZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOy9ebgdVZU2/u5dZ7rnzjfDTYCQQEDCTAsiOKFMoeFrEPWDVh5FxIbPdkCxUWn7J6jYwXaiW0GUT7HboeVDe3BEkRZEQUEQQSYRGRLInNzh3HPPVLV/f+y11t5VdRISuAkk2W+ePOfeOjXs2rWrbq13v+tdyhhjEBAQEBAQEBCwk0E/3w0ICAgICAgICNgWCC85AQEBAQEBATslwktOQEBAQEBAwE6J8JITEBAQEBAQsFMivOQEBAQEBAQE7JQILzkBAQEBAQEBOyXCS05AQEBAQEDATonwkhMQEBAQEBCwUyK85AQEBAQEBATslAgvOQE7LS699FIopbBu3brnuymCr33ta1BK4fHHH3++m7JT4eabb4ZSCjfffPNWb8vj5PnApz71Key9996IogiHHXbY89KGgICdGeElJyBgJ0etVsMll1yCk046CSMjI1BK4Wtf+9rz3axnhauuumqHbXsWP/3pT/GBD3wAL3/5y3HttdfiH//xH7fbscfGxnDeeedhzpw56O3txWte8xrcfffd2+34AQHbC4XnuwEBAQHbFuvWrcPHPvYx7Lnnnjj00EOfFdvxQsFVV12F2bNn461vfWtq+ate9SpMT0+jVCo9Pw17Fvif//kfaK3xla98Zbu2O0kSnHLKKfj973+Piy66CLNnz8ZVV12FV7/61bjrrruw7777bre2BARsa4SXnICAnRzz58/HypUrMW/ePPz2t7/FS17ykue7STMOrTUqlcrz2oapqSn09vZu8fpr1qxBT0/Pdn8x+853voPbbrsN119/Pd7whjcAAM444wy86EUvwiWXXIJvfetb27U9AQHbEmG6KmCnx7p163DGGWdgYGAAs2bNwgUXXIBGo5Fa59prr8Wxxx6LuXPnolwu44ADDsAXv/jF3L4WLVqE//W//hd++ctf4sgjj0SlUsHee++Nf/u3f8ute//99+PYY49FT08P9thjD1x22WVIkmSbneemUC6XMW/evBnf7+c//3kceOCBqFarGB4exhFHHJH6A8lal4ceemhG+n/RokW4//77ccstt0ApBaUUXv3qVwPorsm59dZb8b//9//GnnvuiXK5jAULFuB973sfpqenn/O5v/Wtb0VfXx8effRRnHzyyejv78dZZ50FwDIlV1xxBQ488EBUKhWMjo7i/PPPx8aNG2V7pRSuvfZaTE1Nyblsr2m473znOxgdHcXrXvc6WTZnzhycccYZ+O///m80m83t0o6AgO2BwOQE7PQ444wzsGjRIixbtgy//vWv8S//8i/YuHFj6sXki1/8Ig488ECceuqpKBQK+P73v4+//du/RZIkeOc735na35/+9Ce84Q1vwLnnnouzzz4bX/3qV/HWt74Vhx9+OA488EAAwKpVq/Ca17wGnU4HH/rQh9Db24svf/nL6Onp2aI2N5tNTE5ObtG6s2fP3sKemDlcc801eM973oM3vOEN8tJy77334je/+Q3e9KY3pdadqf6/4oor8O53vxt9fX348Ic/DAAYHR3dZBuvv/561Ot1vOMd78CsWbNwxx134POf/zxWrFiB66+//jn3QafTwdKlS/GKV7wCn/70p1GtVgEA559/Pr72ta/hnHPOwXve8x489thj+MIXvoDf/e53+NWvfoVisYivf/3r+PKXv4w77rgD//f//l8AwMte9rJNHqter6Nerz9jm6IowvDw8GbX+d3vfocXv/jF0Dod4x555JH48pe/jD/+8Y84+OCDn/FYAQE7BExAwE6KSy65xAAwp556amr53/7t3xoA5ve//70sq9frue2XLl1q9t5779SyhQsXGgDmF7/4hSxbs2aNKZfL5v3vf78se+9732sAmN/85jep9QYHBw0A89hjj2227ddee60BsEX/twZ33nmnAWCuvfbardoui9NOO80ceOCBm11nW/T/gQceaI455pjcuj//+c8NAPPzn/98s/tctmyZUUqZJ554ItfOrcHZZ59tAJgPfehDqeW33nqrAWC++c1vppbfcMMNueVnn3226e3t3aLjcRuf6f/ChQufcV+9vb3mbW97W275D3/4QwPA3HDDDVvUpoCAHQGByQnY6ZFlYt797nfjqquuwo9+9CMccsghAJBiWMbHx9Fut3HMMcfgJz/5CcbHxzE4OCjfH3DAAXjlK18pv8+ZMwf77bcf/vznP8uyH/3oRzjqqKNw5JFHptY766yzcNVVVz1jm5cuXYobb7xx6092O2FoaAgrVqzAnXfe+Ywan5nu/y2Fv8+pqSlMT0/jZS97GYwx+N3vfoc999xzq/eZxTve8Y7U79dffz0GBwdxwgknpKwLDj/8cPT19eHnP/95junaErzlLW/BK17ximdcb0uYwunpaZTL5dxy1jTNxHReQMALBeElJ2CnRzZbZPHixdBap7xqfvWrX+GSSy7B7bffnpsWyP6R7fbHcXh4OKW5eOKJJ/DSl740t95+++23RW2eP38+5s+fv0XrPh/44Ac/iJ/97Gc48sgjsc8+++DEE0/Em970Jrz85S/PrTvT/b+lePLJJ/GRj3wE3/ve91LXhvf5XFEoFLDHHnuklj3yyCMYHx/H3Llzu26zZs2aZ3WsvffeG3vvvfez2jaLnp6errob1klt6ZRqQMCOgPCSE7DLIWv89uijj+K4447DkiVL8NnPfhYLFixAqVTCj370I3zuc5/LiYWjKOq6X2PMjLVxenp6i/8QbwtR8TNh//33x8MPP4wf/OAHuOGGG/Dd734XV111FT7ykY/gox/96Ga3fa79vyWI4xgnnHACNmzYgA9+8INYsmQJent78dRTT+Gtb33rjAjAy+VyTteSJAnmzp2Lb37zm123mTNnzrM6Vq1WQ61We8b1oih6xmNwtl0WvGy33XZ7Vm0MCHghIrzkBOz0eOSRR7DXXnvJ73/605+QJAkWLVoEAPj+97+PZrOJ733veymW5uc///mzPubChQvxyCOP5JY//PDDW7T9ddddh3POOWeL1p3Jl6utQW9vL84880yceeaZaLVaeN3rXodPfOITuPjii1Pp3DPZ/1vqTHzffffhj3/8I/71X/8Vb3nLW2T5tp4CXLx4MX72s5/h5S9/+YwyIp/+9Kef8eURsOPumdy0DzvsMNx6661IkiT1kvab3/wG1WoVL3rRi55rcwMCXjAILzkBOz2uvPJKnHjiifL75z//eQDAX/7lXwJwzIz/sjA+Po5rr732WR/z5JNPxhVXXIE77rhDdDlr167dZISfxQtdk7N+/XrMmjVLfi+VSjjggAPw4x//GO12O/WSM5P939vbi7GxsWdsX7d9GmPwz//8z1tyes8aZ5xxBq666ip8/OMfzzkYdzod1Go1DA0NbfV+Z1KT84Y3vAHf+c538B//8R/ik7Nu3Tpcf/31+Ku/+quuep2AgB0V4SUnYKfHY489hlNPPRUnnXQSbr/9dnzjG9/Am970Jhx66KEAgBNPPBGlUgl/9Vd/hfPPPx+1Wg3XXHMN5s6d25XW3xJ84AMfwNe//nWcdNJJuOCCCySFfOHChbj33nufcfuZ1uR84QtfwNjYGJ5++mkAlj1ZsWIFACsEZs0Lpz5fe+21OVdhHyeeeCLmzZuHl7/85RgdHcWDDz6IL3zhCzjllFPQ39+fWncm+//www/HF7/4RVx22WXYZ599MHfuXBx77LG59i1ZsgSLFy/G3/3d3+Gpp57CwMAAvvvd7+a0OTONY445Bueffz6WLVuGe+65ByeeeCKKxSIeeeQRXH/99fjnf/5nebHYGsykJucNb3gDjjrqKJxzzjl44IEHxPE4juMtYosCAnYoPI+ZXQEB2xScdvvAAw+YN7zhDaa/v98MDw+bd73rXWZ6ejq17ve+9z1zyCGHmEqlYhYtWmQ++clPmq9+9au5dO+FCxeaU045JXesY445JpfafO+995pjjjnGVCoVs/vuu5uPf/zj5itf+coWpZDPNDj1vdt/vy2f//zntyiN+Etf+pJ51ateZWbNmmXK5bJZvHixueiii8z4+Lissy36f9WqVeaUU04x/f39BoD0ebcU8gceeMAcf/zxpq+vz8yePdv8zd/8jfn973+fS6F/tinkm0v//vKXv2wOP/xw09PTY/r7+83BBx9sPvCBD5inn356i/exLbFhwwZz7rnnmlmzZplqtWqOOeYYc+eddz4vbQkI2JZQxjxPE/oBAQEvOJxxxhl4/PHHcccddzznfV166aX46Ec/irVr1z4vhoUBAQEBYboqICAAgNWs3HzzzfjGN77xfDclICAgYEYQXnICAgIA2MylZ+vjsrNgfHz8Gc3wno+U/YCAgGeH8JITEBAQQLjgggvwr//6r5tdJ8zwBwTsOAianICAgADCAw88IBlom8Lxxx+/nVoTEBDwXBFecgICAgICAgJ2SuhnXiUgICAgICAgYMdD0ORsQyRJgqeffhr9/f1bbEcfEBAQELBrwhiDyclJ7Lbbbrm6aDOFRqOBVqs1I/sqlUopd/MXIsJLzjbE008/jQULFjzfzQgICAgI2IGwfPnyXIX7mUCj0UDPrAGg3p6R/c2bNw+PPfbYC/pFJ7zkbEOwvf0T15yB6sYW0IntF5FldVSpAFXpfglMO4aZtgMxGrH1aNRQFeihujIdqqLcR98N9AEFqo5dsymwZh1Z2E83oObPtevtc4D9rtMAnnzc/lyvpw++fgzxukaqrdGcqv29WHTrcaRRiIASnUdCEq8GRQqVkmsXn3/J7kNVe2SZGZuw301OwbTtMkXH5uOYelvaY+j8TYPWrUTQvSXbhImW9KGq2GOrQiYqio1857eP98dQAxXX9iR9TNOhc40TJBNN++N66ntvN3wdofNsnuJlRWpnRQvrx2ND9RQBY4+djDVT56/KBXeOvK+CVyXdpKttq0IEE9t2m1bHLmzROpGCadhlitqTtDpIxulaJhn5nlbQffZaRsO2n/Qw1U6KADPZprZSfzVigI6d63uTQNHPquqNMT4Napf073QbKNpryv1lWnScGNA96UrxfD4oaSgaq7pacMt4HyRRTDY2pL9i+tntS9trktmHPf9eoJ/uFepfs3rM7nO6I+cv59XqwLRt/+sBure9dWQMlGn88jVOjPws55YkiDfa8cHXRc0bof1UYGpTdr2putsH7H0l90yzI8fm9qgyj006js8w0D2R1Ox2yWQL0bDdTh9IRVlnzwValJbfoE9+FnQSIHtvJsaNCx6jHXdDmQ7dT/VG+nwAoL/X7RcA2m2gRev32uuidqMq7b19wOq1dp/0qXYne4BZI8Cq1fa7jRPuvCv2GaOGBuznHvsAAMYqBQw+bgvymocfS/dTksg1VmUaLz0Vd46T9rrEq6Yw2Whjrw//IFcaZabQarXsC85b/gIoRc+8wWZ3FmPVv/0OrVYrvOTsquAHZz8UqgZQ/fSHoL9En0X5gy83RIcejLUWkkn74Il2G7L7G50NVO0+zMZxuz7fwHEbCvRHWNEDgR5OphNBbdxglz14t/1MEvciQuAHXLy2AUVtZERV+r2v6v7YUVuhtXv40h8eKH74R0ChkP6Ob+64BUzbB5Vp8GcM06QXF2q/HrLbJ41Y+kn10kN8DvVfxWtv1Z5XUmu5Pxhx+o89KgUoag8/gMyke8DzH1pd4j5MYFr0R4G6V15y2gkMydsMvRSZxMDQ9cMQvYjyH+WiBiL6mfuNX3wrkTvHyL0UJRR5JfQHWlXci5C85NAfO3mJaXagipkXBu8PlKFjm7gtbUbEL3x0bjoC6MVF2kAvebocQdO40PziUOBzjIChyO0X9JLKx6Y+l5eeatmdB7/480tLOwHoj0PSb/+AmkpR+lMP0h/VEXrQJkbuHb4G8mLajoFpepHjcyxp2Rcj4aa2YxioVJt1JYLmP/zcn4rOu9GGak2k+otf9gC4l1l+WdcKJqb2KH6RcWOVX86VzvxB0oCq8guQ/TTTbZhhWp/bx599ZYDGtJmmfhqbBADE4y0kTTqmvAAWZVv+Y8hj1bQTuZ/42oJfEgsahdn2RUPttdB+Di+AWW//8Js/rkkdG4VInmn8nFDlEsDPMkN9x6evtS1GAgBFuj9G6IWgUobqqbj1AJjpaaBWTy2T8TU8AEzX6JzsPtS8Yftd/xDQphfqjvec5Oe1opcWbV9QBmYfDFOjl6K11J4GBSSxgQHdM3zswR73XKT7r1OYhuHrva3lDaVIXvafLXaUjKXwkhMQEBAQELALQWnlAqxnC612iBed8JKzHWCacZqm5iionUAxASFTDRypx9CgLznS8aZ+FFGvpkWMzrqNMBxV8r54WqhUTLMugGVymP1gKpip6mIkUbcerKTXqTfS0yFZCMsTu0+e5qH9pxkKYq6mKOr1pqSY+eF1bL8wZU7r9BEFPTwo65hxG0mrdgwwY5CJ1BEpd02IMUBRCyugeomRmbIMUzLZcuxDkmGFipGwKP5jwzAbRtNBqpeubdHrvyyT4z14mNFKJh0jpbtM5TAk8qbtDHwGw2MHOCJnhsWfhoq86RDaLhqlPqZjRzGfj2NTZFxxn+rE6y9ia8qF1HQIAI+F0nKtEoqABe041X5eX9qzYMguO9ROxaIyAHW/rfSePGaZg3i1jbhN3WsXOrIvOW9uA43/1PXgPilqx4JF6SlojDfleieZc41mVxHNSbN6Sb0DDKbZRmlfpNJjJXv+fMyOd42ZxSMGS43SI37uCFCi61i3LIohFti0x6WtukRjVqvcdIaMk0hBEnMTOn9vDCXj9vpF623fm1IVaBKbQqxKssGyJHqo7DE5zETGQJyeNhbUG0B9On3MqpsqMePEEPnPNpkmZyaZ+kRpdy/zM43HcasOI9N6iftOnoPUhg3EkM9tAJW+9Hl4U99yb1bKrg00zpMaXatqEdsrP0WpGXjJUTvGS05IIQ8ICAgICAjYKRGYnICAgICAgF0IMzVdtSMgvORsD5Q0Cnt70yk0NZNMtqBYzNiXmZrqq0IV0rS9WbvBCesYTJ9WylDzKWtgZLb97LEZAGjUgLWr7D6Yzp1oy1QMukwFmDrtN/aoWjpOjtoFhHplOprFr6oYSbYUUnQ3HYtvFM4iqRScoLKH+kQyLdppat47rpmqO1qZ2qAi5bLBksxUgD99yCLgyE1TyX5ZPBwpKCY+o4xAFkiLZGl9zrxh+l6usbeeTPewwLnhMnC431hECzjRelY0DXjTCdqfDqQpCc5Ci5RMtSCzvj8VZjQJJQfLImx1wul8FpRc49hNcwn4HNtJKhvO7r8i58h9zW2WceJdK2ljyRt7PD5oOsaMLIAafcoeZ/WG9PGismsjZWyZxOSynvg4xj920ROuljwRudcnAJDELTlfwBfQl6EWUJYjTa9GhQjoo2cDCVzNfQ/Z014+JqJkmc70jiNt86aK+Jx4nLhplXFgiK4JJyt40668X56ujRbNdv06QeLczPQbAKg2Tbt5YzQZt88V/dgKu06rDcMJBlP0nKB7DtWKm2rmqZwk8dqYHqOmUHBT75w4wefhb5dKinDHAuDEw3HLTUnxdvwcazSdYJm/K3lTxQ26r6Zs/6okgapa0bKR6TN61vrTjgVvup32x88FU46gi9vnxUEp9dzFzTuI91uYrgoICAgICAjYKRGYnO0A3V+GGu5zKYxlEt+NNx2rQ0yAYo+YYuQiFEq3NPW2pIGmUqYBqDmzoBYeCABYV7DRxUTLRrEjw/MxyKLD1h/tvtZsQLKOopBymplIai0XyXbxRuGIS9KTOx0nYpT0ZTqPnhJUNcM+ifgugiJmRvkCQBZfZ9KfU+mg48QYTTTc9r4fC0ARFLrCJMZF4Zw2HTvvkc7TVqgqzElJOYFylI7i/fOWyDM2wnQoFgKzALdSgMqIOkUM7LfRE+5uyqtERUp+TtZOy3nz9oaF3cy0dBHSSuq5z0zxOVYiF8Fn2A40VFfvHG6z9AkFwqbpWCqJbGMXhctYy3ya2LiUa74/4FLfkxXWD0qX/mC/m78a5tHldExan68FMqnQ4FT7NDvF/WwasTsm9Y/uK+XuP/ZsSeoduYdRpxT3IUpxHyi7scYRfW8/1OB8+zPdo1i33n4+PS4JAJImDpcKn+1D03aiaunLSfalWQ2w7YSIa2nfxQh60C6L9hm1yw44AJi2An7z6JN2WWfSbc/MqLCb3rhi8fYaywDpkrPKUL307Oih6z7QBwxRynVE488kjlHJjC+lNQyzNCwgLnh9yteFt6uUnPC9hzycSmXembdt5k+hn1zgJ1Pwan4CB/2eDBBLN8d6E2GNff6aRoxssoLqrTo7EGaInlqL7YUwXRUQEBAQEBCwUyK85ATMLLS2URO/sVPaswYQs+6C0wh5Ht/XphQ8o7gkM6/O+ywVgLLdb6O5PnV4gwSq2EM/07LYOK0ERe0c/elqMTeAJZotFJz2pzpkP+tjYuonETdH8aWiY356vFR4hp9qzvDn2P3PVlvm4dn5l6GLWlgLhiq64W2yWpFWLH0h+pZGB4oicjGuoyhcaYWEI0IxJnNpx6yFcOnSkevfTPq60irFtgBOt2NiI+fLD6FotOoYhi4PliRz3qLfgGdylzVvA1Lp3qlzhqcf0hpszOZH627FTAq8zy7wsbjPywVAM9uWZph8g7ncwzP2WSHvPDLamohYGzy4UjQiok0Rd2DtzO3oM5rTA8yzOjY1a8g7b1jmkKP9AUoR7hkAIrYHIEbxMXK5fegpmClKTefz8A0Y6T7BWrqfWm2Yst2vok+MDErbY4+VzPVJm1PAqQ+nOo6BIoZYtGL1DhSxnjIexSYgduOrn9OgK4CqZdZjPVucZ3gZkXI2CsxWVitQg8TW0P7NNLHIPRXH4CjvPmFmJasfSpK007oPrYFqT2pRSsPIjDI9J6G0sMXsyi37TLxr1vbYZj+dHHDavYnVULMW0nHIdZkZ60bdaRT97fvIgJCeaTtCOvZzxZVXXolPfepTWLVqFQ499FB8/vOfx5FHHvmM233729/GG9/4Rpx22mn4r//6r606ZtDkBAQEBAQE7EJgJue5/t8aXHfddbjwwgtxySWX4O6778ahhx6KpUuXYs2aNZvd7vHHH8ff/d3f4ZWvfOWzOtfA5GwHmIkGklYMPUBv8RxtlIouQyeTbZMy+2L4kYvMR3PE04GZtHO684ZszZiOsRFCRVVgJp+w63VcbSLJVMkcRw2WhVng9om52GDTRTNcF6nRTDMx/j4bTS864vVdVgRHoy67wbNQz95EjZZjPLi/mBGpdxwTwX2IQp4BYMal7TENLbuPpNbK6W2yxnk+WO9hGv6xKUulUnB6ENa8eKxFSgcEz3yunL8ldV8pZ8zm60pEt5HJvIKnOxLTxXrbReRcPoAzXbRybeZspGrBsVnFdN/w8bsi1p4ugnZfjmQcxevY0M3LtMsY34lmCN6+/M/M+JCsLE87JBG0ME7a6Zsok07NGQF2381+z+wkZzWV1gGarkkv1YHqGQQKxOS0iR3pzz+o5Xz4utdaUJo0ZRzlF4tAg2ojdYgh1elyDXYf6UwtP+tLWIWSlvGXNWJE0TimjJpsPP0YQ4w0lz+a15F47eGel3HP/VstOh3bMDFUPT3umVegscrla5otqLUbUsdBqZDXvPDzJTFQZeq7yDMP5HZxeQlaZqYbLouIGHTRPvmQDD3WGboSMmIQ2TRQxUxWJG+3YaVoqwyPjZL3fBUGue3aVadaYsQGKc9UdFvj+Ziu+uxnP4u/+Zu/wTnnnAMAuPrqq/HDH/4QX/3qV/GhD32o6zZxHOOss87CRz/6Udx6660YGxvb+mZu9RYBAQEBAQEBOyxmksmZmJhI/W82m7njtVot3HXXXTj++ONlmdYaxx9/PG6//fZNtvNjH/sY5s6di3PPPfdZn2tgcrYD4rV1YLQvNTfPELtvpKNwVdSeF4zHAIhXB2tZKCLSCuqpPwMAoikbGUVkM24AoJaJlqqV/Js8F7XjuXtAoj9mAtS6SaCwgppsC9JhYsp57kjGDu2r1rJlJQAYpKsfW41Nmpkx7UTapVK6ENioLltoUxiN2IvaPfYm6s7EmNi4gqa8j6kO0MdlILowJ9lslrpX9JHX81mxTDaWHNtbn/clXjSVCGhzppWnV8lmQnn7cswNR5mUJVfvCLsTEWuX1CJXQoOZKKkMXsixe1Yblsno4wg1MVB1ryo4vMy2OHEspeclk+XDhB1IknxkyAyIv8y7jpLt1J8ucquKGrmsHPZhqhacF9IAaydKruwAMzPMHIxNunZRBW1TWpPWjwAwVEkapUjKd2RZrmSyBc396rObNcqejGxGGDbYbDHT7Lg+SLL3qkrrjECsG4+1Lhosk9FICRtUjNyzYILKXzRaHqvRcf0EpPxiVDKZOtdoqOj0TVR6xp4j9W/HMSwAgEbTHgtwrEhf1W2bLWBcULlMKNHRNZt5Zrjjae94X4N0POV56GSfzUninq2+nxL/yeS+53HilyJhpoj7KzaOQea2FMZdlpjv95MtGbMDYMGCBanfL7nkElx66aWpZevWrUMcxxgdHU0tHx0dxUMPPdR1v7/85S/xla98Bffcc89zal94yQkICAgICNiFMJPTVcuXL8fAwIAsLvN04nPA5OQk3vzmN+Oaa67B7Nmzn9O+wkvOdoBJjI2ofUdP+hR/jmxWkgfOFEn5ebTZz4Oid9RdpLaR5tXLXuTFEVTsZRF4EXmqvY2Ox5Bwtlck54K14+n1vcKALsvGi4y8qCqFTpfCi91uPI7wOl2yOjyNhnjIeO1il2KXZZQvnifwnZgrGW0D0D1DCcSulNNZRqnIjdknz0tH9utH4YCNxLkPPKdg5/7LjJfHaBBbE68mp2dmR9pxPrOr2EW34bv6jlSkjQzJLtEu+8qu7BgT8XviLMFi5JgcWieptTydkvPhsW3QTv9FOg/R2DRiYbX8LC7uM3ZNZkYnXjvt+l+0YbRdteD6l/URazcAy1ellsk6Wrv7hN3CfWddzvZjrZiXoZYdy6beRkLtiXqI3ZxuOH3L+jH7wwZ7f2UzCAGPdfPbyCg5RkbN6UufR6udY9uUx4qm3LsBy2JkM5u4Hyrl/L3M8D10PLYmx1B4BX+FJWatlNbiHSPsi++Fw6xLtg1aO70OZ01N1Z0LO/kEqT5ioPuHPe8y1vlwP7Td2Pa1S1mNH2i81xui41JlyiTjIsrwnyM0LqcabnzwGKp3kEznXaW3BWbyJWdgYCD1ktMNs2fPRhRFWL16dWr56tWrMW/evNz6jz76KB5//HH81V/9lSxLaAwVCgU8/PDDWLx48ZY1c4vWCggICAgICAh4FiiVSjj88MNx0003ybIkSXDTTTfh6KOPzq2/ZMkS3Hfffbjnnnvk/6mnnorXvOY1uOeee3JTZJtDYHICAgICAgJ2ISjMQO0qbN32F154Ic4++2wcccQROPLII3HFFVdgampKsq3e8pa3YPfdd8eyZctQqVRw0EEHpbYfGhoCgNzyZ0J4ydkO0D1FqP4eR/cKJa5doUEWjXoUrCrTVEY/0aaVgpt2yU4LFQq5ApWGi/NlLcuBDB3dJT2aC4eyJf0Qp4BGns05F8HryDREbvuB8ianxQD/XGmqotmRqY9sCYN0WYCMoVlsEI2kjd8A5NLwU4Uxs9NO1WKu1IFraiKiTl3JE6BOOO2JxHkKQEoXpAtvAl4qrqS9JzlbAeO3Jzv15dvp0xSNpP8XtZRkkPZNuRRyER5zmyMF0yxKXwgkhZb2q0koWdRuH3z9RcipvDRmN4Un587TrnyurRh6AdnhE32vVk3I+RiabuL7JWVYyX1QYnH1uDPDI4hQP1KIeH0uxTDZzgtD+Xr0l/KPcq2ljZ0VJLz1ClRmLRl436pSELPPZIL6croNjA5TH3DRRzdNpTZh85AtqivHYYE1lUrgaRjTbEJx4Vp+xvjTFVnhbasNM03t8KfIAPt8aWWE5oRkwzSwgQTa3UTi1fSzKBlruukqnrptJ64UTH/eUDFriMpFNlVPBZhPUx9kb6HWrIWh6yziZ/4cmuPEwbx/LmrcbndPkY7dPWnXo9/HJ6GaZJ5YZNNTnjrz2s5GlOWCfG82kNh7siVTitsaz0cK+Zlnnom1a9fiIx/5CFatWoXDDjsMN9xwg4iRn3zySeguyTnPFeElJyAgICAgIGCb413vehfe9a53df3u5ptv3uy2X/va157VMcNLznaA6cQ2ivfFc4C1Gc+WaeB0yOmWYxooitOVYtqsCkgL+nhZRjBoYpNjWlRRp8XB8KKySDtRJzM4s220qfp7c5bm2DgOrKdifhSVSVpvpdw1SgSIQWBGgvpEJQlMtIn1G7FjsDLCaMQGisScmDvLta/uiR9pPT5/jjS7ipAJUlojUs4Wno3NuO/rDSmEKExFpNKp4j58cSYzCCSIRsVjynzWJmvc1608A4GF6tGcHscEsJi3nYg4OMmct9IKMRX5LOzmiZNF9EwCYt9QMRPNCXPmnb+KtyDiizTUoI2iTYVYDi4uWe/IfkVkPFiW/XOh2XjSK/nB/SNmjl6EnGXB2olLc2cmxC80SsyK4vuqEEkfSvFSOQ+VM3jMpv9LGwkFNs3j0gd0L0S9De9eSdKf6DiDQBZs+2wUPwsiWtZqu/GaKVOheiqO0eAEhZVrgelWqr8kKWK65UqoZATxybhjZsQewWOgTUbgbBoduf8SjwUtjFD/cHp1ySuSydeUhc0k1DYjgGKD0shLuuDzbWXOH3DPJj5/tgbwmG4x2yxGznCTzjuZdM9t05ykXaQLh6pI5VnsUtGlyVcokaOugc72kcmG2lUBAQEBAQEBOyXCS07AjKKzso5ktynoCtud2wJ8GOhz0RVHIx1XuC/e0EjtR1UK0MMZNoijE8+MKpeG7s+N+wZizExwNBPbuWHdV3KRIKdYchmCkscmcRuaLagxNjRLp8KrJIEZpzlnZpM8kzw9WE7vK0mgKaB1y1zkLawAl1/wz5ELgQ7TvPrEFAy1K5eOW4qg4gyTkyTQ1Ceioyg61k3NIc3I7Fnpfa1ZB7RW2vU5PbeohVFhiPFjYsTwDyx90R5bIkyDx9pk2C2/TAGnVwsLwdqGkR45ZpLVMvn7irw+5QiVoldd1FDobjVvYuMVodzMA49LUnhMg7SDx0IpQvLnFe584Rgpvyij6LQGeoVZSf40lj9mxijP7z/Ri3EB17I7PzFKlHIhbSm4yXogpVW+KCqjHedYF2lzybVB+VYDzDYSk8MRvqmU5Ts1UaP12WzRFS3lVHBV1I7NWUeGgnQPmWbHMUr9GSYScLo9vtdKRajhfqTAGrx6Q1izHBvsFVr1mSvpk0b2PtRingjyUzTNDuIVYwAAPZ6xRaiUckwya9AwvgaazpuLnKJUdFo4Zt3GmXF5WkwcVWHIfsdmkBNTopuS8TJYcX1Cz0A94DGEzAJxAdBeWrdSBjSxklwwdbzu+pqZu5EKonpIeJ5phJecgICAgICAXQiByQmYUTSenkSrGKFIUVZ0kI2kVKnsCv0xjGfMxkyDV1wxZp0DR0meXiJrhudrNYTBqXhMkGRyZfbpRT9O1+MYpq7aH2ZRsixSyzPVmkrrC3R/KWURbxdqyRDJMka60pQ5epc1ROdVcudjHiNGwCvoKf3gzakLu5O4SE0KZbLOgfvba4c7N4r0purSnlT2WzYjhtuglbAHm8zm8o6N2EBV01l1fN6IjWT2RLN76Dun5TEZxkH1FqHpmLovY+CoFaI56eKFqhjldFBilKjb0k/cb8w06Eopr5/yzlM0GlJoVSMh5tJlpRlvHbtevJoib48lizfa7aJR23bV1o7pq7DBnFfegxkMbx3eL2uS/MKmJjMmVFELi8LatWzJBH8f0m9lVyLDNytkfY9eaQvsYshjAPgekPskfQ/556EHy3IekrGkuSyEK9YqjMwaW+rFFMZd8UpGIYLaaw/7cw+Vv6DSF2b1eqi1T9j997LpnmM0JCOTyrKYduLuV69EDQBbsoavM/fhVBtJy2l8uO8A+8xwWZes06IspXpbNDIqHrOfRaefYhZF9VN2VbnsMq3K6SwrM1lLZ8wBdjx7Rq4AoPbf1/5en4IqUT8ViCEvkyFjXxWqUkvtyky1nT5wdr87dpQ55jaC0piBl5yZacu2RnjJCQgICAgI2JUwA0yOCUxOACNuxag/NYkeit6YuykoBcwlnQfbmLPuo78XqIzZZTwfX/Vs8bPW/5vJtkFRO92F7znD0VTOgyN263NhwKzFu7+sE7v2c5ToRYYqoeibvEpUL0Vg1YKLKlkT0PLmuPkceR3fxl1n2IWBihQJZUZA95dc9Nolk0xYBM8ThqP2iMsbMPwssXXr7bprbSScrBx3jE/G4waAi1S5Pzx2RGc1MrHpWhpDDVB7uJ9Zj7CuDj1CGots8dLs77D+MjkWxfOb4b7ws8pYGybsRT9nrkSueOFmMtRE36SVPBil/AMXDh1vSOTvSmq4sS6ZcKztWDvtmC4psOoKj+q+tGZN7ohIOR2UZK9pp/ngNovHj8eAePqjrBZFmDivrQKPMeJ+5T6J5vc5ryFmjKrefcX3m2bPrKK0PevNZI/hfIcAIPFLEvB173atxiyDxdcA82bbsgcAVP8otc/qXVS9IWwN63sSEtToSLl7h31gpho5RlXGTTMWjyinjTNQVRpr9CfKtOx4ievtnFeY0w16GY2T3jLPpwiAezZ55Tm45ANIo2NWjTlW1/9jzprJWdQ38/a364+vhOkQ69SYoP2zj1ie1VXFgmNxPW+pHWUKaEdCeMkJCAgICAjYhTATmpznPN21nRBecgICAgICAnYhhJecgBmHiQ3qa6zIrXXb0wCA8oPrEe1mxWmF+fZT70tiv0V7Q83dzf68gSq3rl4v1uzZKZykGecHnU+RMiVa8ISYEdHkDSdOBEhYKemvtD2ViDBaQfXQ9AinxA94BoGcDusZjxmaitJ9mQrPjRYMG75pz2COwOUDhIJOTG4qTtqcJCIUFJFjbzGdtu3tP6m78gaKyw60EzGby6WvT9RgaNowa8Soijo/xeTrqXXGtC0xTgTJ4kw2jou8cggtNwVm2JiNjOlYNG3aCQp72ynO1u9sGjtPF5jEpXizQBSxgRnPXHdqpipqmHJaQJ00TSrFHvAM3eJEBK5uqsUrQ5BNhY+dAJW/Y9FoEhuZAmHIeK4Woan9fD1NvWNLCACIRq3g058SEbM+Fnfy9fGm67hPVG8ZiqePqO8kfT1Szrrf++Qxk/C1YhFstZAWOSP9x0CmmytuOlDMFXnKa92kbC+VuTntmywOVGwAHu9SpqOTqupuG5ifxhbRs/8dTxnxeFm1Doanjnset9/FLuFADdKUD0+flkk07omyU+UKPBE94PV9peDaX/emd7i/soaabcDQIybXv5GzbRDBeTGSfRRprIkkoDbtpscz0/Hxurqr1s5TjFNtJLF9Bmg+5p9/az/LLonEsCFhi5/VTlydmj5vuv6U8/an6wNmBOElJyAgICAgYBeCUs+9QOdzL/C5fRBecrYT4o4nAhWL/RjRuI08SqvtW3+JopOorwqM7gkAUPP3sduNjAI1K3bFujEANtURAHSl5SKgbAFNP2Lr5EWHxhcnwovYAGd3z/bqrTZMiSIUtoUf7Af6KApnBmeCo7gpMToU0DrJZFuipFS0zAxUMx3ZqXIhJ8wzlD6cbGy4VNFsxIq0uBYgBoELn3rFK12ababg6HScKxUgiJQTanvHFvaEbN6ZaUrqLuIW9iFy1y5bXBIlAzBj4pWNAIiFousspTgGHSOSExcXNVSbjMwy6ySTLZeO20XUKqL1TDFLwEuXrrgUcR5HIjL1WDo+Dgt2ozk9rqAhnY+k+3cpIKuqBeiomjp2TOUdEGnHnmWLeMaJE1d7bITqpevQzeQvkwruszvSHo85kGuT6RvAMVGq1zGGiq9tI8+KiSA6Y7Wgym3HCpHZomnEjnXItq8cIVtaQMTl5UKueGxSa0GDDEqr1DdZ6wjvZxn//T2O1d1on02JZ5DIwmZmrtX8ue55wwWFJ6YQr6N09WwadzFyRopcBoLMGpNmp4s5YQzN6ecs0K/2uhWIjTZkOshJC8lYU/o3YXPDRiyGjpKgwOc/OtslkXBZhw61vRN794B7/kjJnIFeWQ/5x/M2gVIzMF21g7zk7CCZ7gEBAQEBAQEBW4fA5Gwn+KUWjCbb+naCpE2pkc10NFdYPYXioaTFedFeAAA1tDvQa0sKmAEbZakNVodh1o+50g78yRFV4lJRpR1dTMsMfD3MJt7SC4W8gV8nBjjNfYqLKrKNeTutqYHHEtTdd6KnSYwzEROdC0WqcStfVJO3Tww060Gqrthi7jziNGvln6uJlEtfzqTZ+joaQcnpm7JsWAp8vqwhqES5ooq6Wnb9wOtVPR1NPc3uMMsB7RgmTUZ+ovPxrPxduq2SfjLcr8zMtJxmhlmoaLDqrlGmLIdpJ2lLAQ+mneSuu9UueYU/Abf9yKAbrxwdF+icG02nH/KvixRJJDM9Sc+OnaFknNbTpNJ5M6VLAMh4EoO9onLlHJgRGCqn+wBOAwR44ylz3XUxcswMsyF9VRnvnUzpEV2JHLuVRakIgHRZXsHUXLkMhs8mMevUQ2OoUnbt8Zg7SeHna8RFLPuqbn3WCHIf9lVdSjd/B+S0YWp0tv3c71DEfZYBacbEZkcVFMbo2ffYH21bVq+zn5PT3r3PWi9ON0durJp2AvglIQCgOmQ/y1VgIxUWXkesE5taes9HubcTA8VldPrSY8hMTkGxDcYQrd9wZqPZkiuqGDl9ZJHuRyBvOLqNEITHAQEBAQEBATslwkvO84TLL78cF198MS644AJcccUVAIDzzz8fP/vZz/D000+jr68PL3vZy/DJT34SS5Ys2ey+HnzwQXzwgx/ELbfcgk6ngwMOOADf/e53seeeVufSaDTw/ve/H9/+9rfRbDaxdOlSXHXVVRgdtcZXv//973H55Zfjl7/8JdatW4dFixbh//yf/4MLLrjgWZ8fRwRs0KWRHygN0pjoWhtl1uk8ZU24ogPWAQtIp9M3x24wSvO6vWuB9RTtUHQibAoAsNSA5799g0BunxTR6zjdCUVLJuLSDx0pjCjMTCd2kR0f09OvZI3WVJGiH+0yiRTrSEqRi0azdu+xp2vhLAqODLVnZOeZ3SWZ9ROPEWFTO9GHeJkeOfOuyBl1ZbM6fPM3aXvFnQczd9o3HRRWJ38LynmwbmeylSoDAEAya3x9kBxvms4xNl7k6BWoZIPHRoaFiJSLwn0DPH9c+OdR8tjJjAYkxWh50au0Z4j0MFRIUZVLzpiNmYOGyyAzWUYKnr6FP+dabUO8sibMlxTS9CNzZoUoU00liWMHMllypp1IqRLOvFIDFWkrlxGApwdjtlSKnJZdiRAu+sjQA54GiLP1+Pr7943PNgHportcKoPZPcAVRfWL0GZNPyljT3lsHB/TZxpyxywVHYPjZVECIAPDdIkPVYyEXRWzQWaoSlVMU8bSdMdmla1tLMdI33wAQP+ei+w+WF/YaHqlQNJaN5OYXHHUFJi54yKcU+OiF5Rsxak8k6PLzniUr2lh4YDrCwDodGDWrqf9clHRkqzDJo48Xkyt5TRxZECITgeY2j5lHXYlvGA0OXfeeSe+9KUv4ZBDDkktP/zww3HttdfiwQcfxE9+8hMYY3DiiScijuNN7Al49NFH8YpXvAJLlizBzTffjHvvvRf/3//3/6FScS6273vf+/D9738f119/PW655RY8/fTTeN3rXiff33XXXZg7dy6+8Y1v4P7778eHP/xhXHzxxfjCF74w8ycfEBAQEBCwnaD1zPzfEfCCYHJqtRrOOussXHPNNbjssstS35133nny86JFi3DZZZfh0EMPxeOPP47Fixd33d+HP/xhnHzyyfinf/onWeavOz4+jq985Sv41re+hWOPPRYAcO2112L//ffHr3/9axx11FF429veltrn3nvvjdtvvx3/8R//gXe9613P6XzFW6OoEbHNfWb+vj3dQYeihhYp/itPjKO4v/XY0XuTn87c2bTTjiuSOUgF3yiSMFN1yXZKlXLIFIWU6HXKIMl4o4htfTlykRTP2UfKRcwZPwhViXIePRCmwkh5AvEz8dokOhRf/xBl5vY58vSYEyliWY8l8soWkAQAo9vp9lQ9b5dMuYxukaErhJk4L5guzEm37XLW9IxS5KLvKa/NGX2Sv6+s90yqfcTWGNYPeR5ITmPTJZMqpoAgMbkyBcIw0bgEXHaNXLNi4l1TZoUS58kj/io0Rien0syjD6+MQtd+JTZIxmql4RXVzBat9ViLHorC+6rQrK1opPsyle3HSJw/UDJOfdDKM4DdiujmtDJjk1I2I6sXM+04xbJk25DVBfnnKgyxzxRz33klKwB0zbhEwbtv+XvOsEwSx7LFGUbSK5UgY7YcOWbJZ3wAmPpGRAO2REJJW1a6qeqotS17PTDL6hENZ5VyEVPvHP1MQOmLTZRzsQcg/eBjK9B+cI392SsJAsBqk+ieFtbV26/c+1OOmRPmTVgqGuOlIgz311rOAFQwzEDyuO/Ewq5ta0RKQe8iKeQviHexd77znTjllFNw/PHHb3a9qakpXHvttdhrr72wYMGCruskSYIf/vCHeNGLXoSlS5di7ty5eOlLX4r/+q//knXuuusutNvt1PGWLFmCPffcE7fffvsmjz8+Po6RkZFNft9sNjExMZH6HxAQEBAQ8EJCpNWM/N8R8Ly/5Hz729/G3XffjWXLlm1ynauuugp9fX3o6+vDj3/8Y9x4440olUpd112zZg1qtRouv/xynHTSSfjpT3+K008/Ha973etwyy23AABWrVqFUqmEoaGh1Lajo6NYtWpV1/3edtttuO6661LMUhbLli3D4OCg/N/Ui1hAQEBAQEDAtsfzOl21fPlyXHDBBbjxxhtTepkszjrrLJxwwglYuXIlPv3pT+OMM87Ar371q67bJETvnnbaaXjf+94HADjssMNw22234eqrr8Yxxxyz1e38wx/+gNNOOw2XXHIJTjzxxE2ud/HFF+PCCy+U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b3xj0pjNnz+/YZuDeb7urzE92OeqxZ6Hfcix2G0UCgUcffTR+NGPfrRb3xsbG8Oll16K0047bZfbrFq1CnfeeSeOOuqoSZ998YtfxG9/+1v88pe/xOOPP47t27fjox/96G63/0DF/hpXAPj0pz+Nvr4+/XPrrbfuVhsOZOytcT3yyCMbxuzPf/5zw+cH83zdX2MKHNxz1WLPw5Z1sNhtnH322Tj77LN3+3uf/exncfHFF8N13Z1Gfvl8Hpdccgl++tOf4uabb274LJPJ4Gc/+xnuv/9+fPCDHwQA3HXXXViwYAGefvppnHzyyX9TXw4k7I9xZcRiMXR1de32sd8N2FvjGggEdjlmB/t83R9jyjiY56rFnodlciz2Ce666y688cYb+PrXv77Lba688kqce+65OP300yd9tnr1alSr1YbP5s+fj+nTp2PlypV7pc3vBrzTcWXcd999aGtrw8KFC3HDDTegWCzujea+a/B2xnXdunWYMmUKZs+ejUsuuQRbtmzRn9n5OhnvdEwZdq5a7A4sk2Ox17Fu3Tpcf/31ePLJJxEI7HzK/fznP8dzzz2HVatW7fTzHTt2IBQKoampqeH9zs5O7NixY083+V2BPTGuAHDxxRdjxowZmDJlCl566SVcd911WLt2LX71q1/traYf0Hg743rSSSfh7rvvxrx589DX14cbb7wR/+W//Be88sorSCaTdr5OwJ4YU8DOVYvdh33IsdirqNfruPjii3HjjTfi8MMP3+k2vb29WLZsGR555JFDqjruO8GeHNfPfOYz+vdFixahu7sbp512GjZs2IA5c+bs8bYfyHg74wqgYanmqKOOwkknnYQZM2bgF7/4Ba644op90dR3DfbkmNq5arG7sA85FnsVuVwOzz77LJ5//nlcddVVAADP8yClRCAQwB/+8Adks1kMDAzguOOO09+r1+t44okn8MMf/hDlchldXV2oVCoYGxtriI77+/sPyfX5PTWurutO2vdJJ50EAFi/fv0h94/j7Ywra2z8aGpqwuGHH47169cDgJ2vPuypMd0ZDuW5avH2YB9yLPYqUqkUXn755Yb37rjjDvzpT3/Cv/3bv2HWrFnwPG/SNp/61Kcwf/58XHfddXBdF8cffzyCwSD++Mc/4oILLgAArF27Flu2bMHixYv3WX8OFOypcd0ZXnjhBQBAd3f3Xmn7gYy3M647Qz6fx4YNG/DJT34SAOx89WFPjenOcCjPVYu3B/uQY7HbyOfzDdHVxo0b8cILL6ClpQXTp0/HDTfcgG3btuHee++F4zhYuHBhw/c7OjoQiUQa3p+4TTweR2trq34/nU7jiiuuwDXXXIOWlhakUil8/vOfx+LFi9/1mSqM/TGuGzZswP33349zzjkHra2teOmll/DFL34R73vf+3aZbv5uw94Y1y996Us477zzMGPGDGzfvh1f//rX4bouLrroIgAH/3zdH2N6KMxViz0P+5Bjsdt49tln8YEPfED/fc011wAALrvsMtx9993o6+vbaVbEO8X3v/99OI6DCy64AOVyGUuWLMEdd9yxx4+zv7A/xjUUCuHRRx/F7bffjkKhgJ6eHlxwwQX46le/ukePsz+xN8Z169atuOiiizA8PIz29na8973vxdNPP4329na9zcE8X/fHmB4Kc9Viz0NIKeX+boSFhYWFhYWFxZ6G9cmxsLCwsLCwOChhH3IsLCwsLCwsDkrYhxwLCwsLCwuLgxL2IcfCwsLCwsLioIR9yLGwsLCwsLA4KGEfciwsLCwsLCwOStiHHAsLCwsLC4uDEvYhx8LiTfD+978fX/jCFw6q415++eVYunTpO9rHzJkzIYSAEAJjY2O73O7uu++eVInbYs/h8ssv1+fh17/+9f5ujoXFAQf7kGNhcQDiV7/6FW666Sb998yZM3H77bfvvwbtBN/85jfR19eHdDq9v5ty0OOxxx7b6QPlD37wA/T19e2fRllYvAtgyzpYWByAaGlp2d9NeEskk8kDpqJ2tVpFMBjc383Y50in0/Yh08LiTWCZHAuL3cDo6CguvfRSNDc3IxaL4eyzz8a6dev057w88/DDD2PBggVIJBI466yzGqLtWq2Gq6++Gk1NTWhtbcV1112Hyy67rGEJyb9c9f73vx+bN2/GF7/4Rb00AQDf+MY3cMwxxzS07/bbb8fMmTP13/V6Hddcc40+1rXXXouJlVw8z8Py5csxa9YsRKNRHH300fi3f/u3v2l87r77bkyfPh2xWAwf+chHMDw8PGmb3/zmNzjuuOMQiUQwe/Zs3HjjjajVavrz1157De9973sRiURwxBFH4NFHH21Yjtm0aROEEHjggQdw6qmnIhKJ4L777gMA/O///b+xYMECRCIRzJ8/f1KtqN7eXnz84x9HU1MTWlpacP7552PTpk3688ceewwnnngi4vE4mpqa8J73vAebN29+W31/q35973vfw6JFixCPx9HT04P//t//O/L5vP588+bNOO+889Dc3Ix4PI4jjzwSv//977Fp0yZdJ6q5uRlCCFx++eVvq00WFoc67EOOhcVu4PLLL8ezzz6L//f//h9WrlwJKSXOOeccVKtVvU2xWMR3v/td/Ou//iueeOIJbNmyBV/60pf059/+9rdx33334a677sKKFSuQzWbfVE/xq1/9CtOmTdPLQ7uzPHHbbbfh7rvvxr/8y7/gz3/+M0ZGRvDggw82bLN8+XLce++9+PGPf4xXX30VX/ziF/EP//APePzxx9/+wAB45plncMUVV+Cqq67CCy+8gA984AO4+eabG7Z58skncemll2LZsmX461//ijvvvBN33303vvWtbwFQD2VLly5FLBbDM888g5/85Cf4x3/8x50e7/rrr8eyZcuwZs0aLFmyBPfddx++9rWv4Vvf+hbWrFmDf/qnf8L/+B//A/fccw8AxfYsWbIEyWQSTz75JFasWKEfQiuVCmq1GpYuXYpTTz0VL730ElauXInPfOYz+qHyzfBW/QIAx3HwP//n/8Srr76Ke+65B3/6059w7bXX6s+vvPJKlMtlPPHEE3j55Zfx7W9/G4lEAj09Pfi///f/AgDWrl2Lvr4+/OAHP9itc2NhcchCWlhY7BKnnnqqXLZsmZRSytdff10CkCtWrNCfDw0NyWg0Kn/xi19IKaW86667JAC5fv16vc2PfvQj2dnZqf/u7OyU3/nOd/TftVpNTp8+XZ5//vk7Pa6UUs6YMUN+//vfb2jb17/+dXn00Uc3vPf9739fzpgxQ//d3d0tb731Vv13tVqV06ZN08cqlUoyFovJp556qmE/V1xxhbzooot2OS47a89FF10kzznnnIb3PvGJT8h0Oq3/Pu200+Q//dM/NWzzr//6r7K7u1tKKeV//Md/yEAgIPv6+vTnjzzyiAQgH3zwQSmllBs3bpQA5O23396wnzlz5sj777+/4b2bbrpJLl68WB9n3rx50vM8/Xm5XJbRaFQ+/PDDcnh4WAKQjz322C77vSu8Vb92hl/+8peytbVV/71o0SL5jW98Y6fb/ud//qcEIEdHR3f6uX98LCwsDKwmx8LibWLNmjUIBAI46aST9Hutra2YN28e1qxZo9+LxWKYM2eO/ru7uxsDAwMAgEwmg/7+fpx44on6c9d1cfzxx8PzvD3a3kwmg76+vob2BgIBnHDCCXrJav369SgWizjjjDMavlupVHDsscfu1vHWrFmDj3zkIw3vLV68GA899JD++8UXX8SKFSsaGI56vY5SqYRisYi1a9eip6enQevjHys/TjjhBP17oVDAhg0bcMUVV+DTn/60fr9Wq2nNyosvvoj169cjmUw27KdUKmHDhg0488wzcfnll2PJkiU444wzcPrpp+PjH/84uru737Lvb9WvWCyGRx99FMuXL8drr72GbDaLWq3W8PnVV1+Nz33uc/jDH/6A008/HRdccAGOOuqotzy2hYXFrmEfciws9jAmCmCFEJN0MHsCjuNM2q9/2eztgDUh//7v/46pU6c2fBYOh99ZA3dxvBtvvBEf/ehHJ30WiUR2a1/xeLxhvwDw05/+tOGhDlAPkbzN8ccfr/U7frS3twMA7rrrLlx99dV46KGH8MADD+CrX/0qHnnkEZx88snvqF+bNm3Chz70IXzuc5/Dt771LbS0tODPf/4zrrjiClQqFcRiMfzX//pfsWTJEvz7v/87/vCHP2D58uW47bbb8PnPf363xsXCwsLAPuRYWLxNLFiwALVaDc888wxOOeUUAMDw8DDWrl2LI4444m3tI51Oo7OzE6tWrcL73vc+ACrif+655yaJiP0IhUKo1+sN77W3t2PHjh2QUmrdyAsvvNBwrO7ubjzzzDP6WLVaDatXr8Zxxx0HADjiiCMQDoexZcsWnHrqqW+rD7vCggUL8MwzzzS89/TTTzf8fdxxx2Ht2rWYO3fuTvcxb9489Pb2or+/H52dnQCAVatWveWxOzs7MWXKFLzxxhu45JJLdrrNcccdhwceeAAdHR1IpVK73Nexxx6LY489FjfccAMWL16M+++//y0fct6qX6tXr4bnebjtttvgOEoK+Ytf/GLSdj09PfjsZz+Lz372s7jhhhvw05/+FJ///OcRCoUAYNIcsLCweHPYhxwLi7eJww47DOeffz4+/elP484770QymcT111+PqVOn4vzzz3/b+/n85z+P5cuXY+7cuZg/fz7++Z//GaOjo28qcJ05cyaeeOIJXHjhhQiHw2hra8P73/9+DA4O4tZbb8Xf//3f46GHHsJ//Md/NPwDX7ZsGW655RYcdthhmD9/Pr73ve81eK0kk0l86Utfwhe/+EV4nof3vve9yGQyWLFiBVKpFC677LK33a+rr74a73nPe/Dd734X559/Ph5++OGGpSoA+NrXvoYPfehDmD59Ov7+7/8ejuPgxRdfxCuvvIKbb74ZZ5xxBubMmYPLLrsMt956K3K5HL761a8CwFsKgG+88UZcffXVSKfTOOuss1Aul/Hss89idHQU11xzDS655BJ85zvfwfnnn49vfvObmDZtGjZv3oxf/epXuPbaa1GtVvGTn/wEH/7whzFlyhSsXbsW69atw6WXXvqWfX+rfs2dOxfVahX//M//jPPOOw8rVqzAj3/844Z9fOELX8DZZ5+Nww8/HKOjo/jP//xPLFiwAAAwY8YMCCHwu9/9Dueccw6i0SgSicTbPjcWFocs9q8kyMLiwMZEAfDIyIj85Cc/KdPptIxGo3LJkiXy9ddf15/fddddDUJbKaV88MEHpf9Sq1ar8qqrrpKpVEo2NzfL6667Tn7sYx+TF1544S6Pu3LlSnnUUUfJcDjcsK//9b/+l+zp6ZHxeFxeeuml8lvf+laD8Lharcply5bJVColm5qa5DXXXCMvvfTSBpGz53ny9ttvl/PmzZPBYFC2t7fLJUuWyMcff3yX47Iz4bGUUv7sZz+T06ZNk9FoVJ533nnyu9/97qTxeOihh+Qpp5wio9GoTKVS8sQTT5Q/+clP9Odr1qyR73nPe2QoFJLz58+Xv/3tbyUA+dBDD0kpjfD4+eefn3T8++67Tx5zzDEyFArJ5uZm+b73vU/+6le/0p/39fXJSy+9VLa1tclwOCxnz54tP/3pT8tMJiN37Nghly5dKru7u2UoFJIzZsyQX/va12S9Xt/lOOxOv773ve/J7u5uPW/uvffeBjHxVVddJefMmSPD4bBsb2+Xn/zkJ+XQ0JD+/je/+U3Z1dUlhRDysssuazg2rPDYwmKnEFLuBbGAhYXF24bneViwYAE+/vGPN7gcH8iYOXMmvvCFL+yTkhcrVqzAe9/7Xqxfv75B0G1hIITAgw8++I7LdVhYHGywPjkWFvsYmzdvxk9/+lO8/vrrePnll/G5z30OGzduxMUXX7y/m7ZbuO6665BIJJDJZPbofh988EE88sgj2LRpEx599FF85jOfwXve8x77gLMTfPazn7XLVhYWbwLL5FhY7GP09vbiwgsvxCuvvAIpJRYuXIhbbrlFi4PfDdi8ebPO5Jo9e7YW0+4J3Hvvvbj55puxZcsWtLW14fTTT8dtt92G1tbWPXaM3cWRRx65S+fjO++8c5di572NgYEBZLNZAMqqwJ9xZmFhYR9yLCwsLN4S/oe6iejs7JzkvWNhYXFgwD7kWFhYWFhYWByUsJocCwsLCwsLi4MS9iHHwsLCwsLC4qCEfcixsLCwsLCwOChhH3IsLCwsLCwsDkrYhxwLCwsLCwuLgxL2IcfCwsLCwsLioIR9yLGwsLCwsLA4KGEfciwsLCwsLCwOSvz/nUrK/EWxp9IAAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], diff --git a/docs/notebooks/api_user_guide/2_providers_products_available.ipynb b/docs/notebooks/api_user_guide/2_providers_products_available.ipynb index 89bae7484..35ffed217 100644 --- a/docs/notebooks/api_user_guide/2_providers_products_available.ipynb +++ b/docs/notebooks/api_user_guide/2_providers_products_available.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -39,26 +39,31 @@ { "data": { "text/plain": [ - "['astraea_eod',\n", + "['dedl',\n", + " 'dedt_lumi',\n", + " 'peps',\n", + " 'astraea_eod',\n", " 'aws_eos',\n", " 'cop_ads',\n", " 'cop_cds',\n", " 'cop_dataspace',\n", + " 'cop_marine',\n", " 'creodias',\n", + " 'creodias_s3',\n", " 'earth_search',\n", " 'earth_search_cog',\n", " 'earth_search_gcs',\n", " 'ecmwf',\n", - " 'hydroweb_next',\n", + " 'eumetsat_ds',\n", " 'meteoblue',\n", " 'onda',\n", - " 'peps',\n", " 'planetary_computer',\n", " 'sara',\n", " 'theia',\n", " 'usgs',\n", " 'usgs_satapi_aws',\n", - " 'wekeo']" + " 'wekeo',\n", + " 'wekeo_cmems']" ] }, "execution_count": 2, @@ -80,7 +85,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "eodag has 20 providers already configured.\n" + "eodag has 22 providers already configured.\n" ] } ], @@ -107,6 +112,7 @@ " 'aws_eos',\n", " 'cop_dataspace',\n", " 'creodias',\n", + " 'creodias_s3',\n", " 'earth_search',\n", " 'earth_search_gcs',\n", " 'onda',\n", @@ -133,7 +139,7 @@ "\n", "Note\n", "\n", - "If a provider is configured to need authentication for search, and has no crendentials set, it will be pruned on EODAG initialization, and will not appear in available providers list.\n", + "If a provider is configured to need authentication for search, and has no credentials set, it will be pruned on EODAG initialization, and will not appear in available providers list.\n", "\n", "" ] @@ -154,14 +160,14 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "EODAG has 149 product types stored in its internal catalog.\n" + "EODAG has 245 product types stored in its internal catalog.\n" ] } ], @@ -179,7 +185,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "EODAG has 295 product types stored in its extended catalog, after having fetched providers.\n" + "EODAG has 414 product types stored in its extended catalog, after having fetched providers.\n" ] } ], @@ -204,7 +210,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "list_product_types() keeps returning 295 product types.\n" + "list_product_types() keeps returning 414 product types.\n" ] } ], @@ -222,16 +228,17 @@ "data": { "text/plain": [ "{'ID': 'CAMS_EAC4',\n", - " 'abstract': 'CAMS (Copernicus Atmosphere Monitoring Service) ECMWF Atmospheric Composition Reanalysis 4\\nfrom Copernicus ADS\\n',\n", + " 'abstract': 'EAC4 (ECMWF Atmospheric Composition Reanalysis 4) is the fourth generation ECMWF global reanalysis of atmospheric composition. Reanalysis combines model data with observations from across the world into a globally complete and consistent dataset using a model of the atmosphere based on the laws of physics and chemistry.\\nThis principle, called data assimilation, is based on the method used by numerical weather prediction centres and air quality forecasting centres, where every so many hours (12 hours at ECMWF) a previous forecast is combined with newly available observations in an optimal way to produce a new best estimate of the state of the atmosphere, called analysis, from which an updated, improved forecast is issued.\\nReanalysis works in the same way to allow for the provision of a dataset spanning back more than a decade.\\nReanalysis does not have the constraint of issuing timely forecasts, so there is more time to collect observations, and when going further back in time, to allow for the ingestion of improved versions of the original observations, which all benefit the quality of the reanalysis product.\\nThe assimilation system is able to estimate biases between observations and to sift good-quality data from poor data.\\nThe atmosphere model allows for estimates at locations where data coverage is low or for atmospheric pollutants for which no direct observations are available.\\nThe provision of estimates at each grid point around the globe for each regular output time, over a long period, always using the same format, makes reanalysis a very convenient and popular dataset to work with.\\nThe observing system has changed drastically over time, and although the assimilation system can resolve data holes, the initially much sparser networks will lead to less accurate estimates.\\nFor this reason, EAC4 is only available from 2003 onwards.\\nAlthough the analysis procedure considers chunks of data in a window of 12 hours in one go, EAC4 provides estimates every 3 hours, worldwide. This is made possible by the 4D-Var assimilation method, which takes account of the exact timing of the observations and model evolution within the assimilation window.\\n',\n", " 'instrument': None,\n", " 'platform': 'CAMS',\n", " 'platformSerialIdentifier': 'CAMS',\n", " 'processingLevel': None,\n", - " 'keywords': 'Copernicus,Atmosphere,Atmospheric,Reanalysis,CAMS,EAC4,ADS,ECMWF',\n", + " 'keywords': 'Copernicus,ADS,CAMS,Atmosphere,Atmospheric,EWMCF,EAC4',\n", " 'sensorType': 'ATMOSPHERIC',\n", " 'license': 'proprietary',\n", - " 'title': 'CAMS ECMWF Atmospheric Composition Reanalysis 4',\n", - " 'missionStartDate': '2003-01-01T00:00:00Z'}" + " 'title': 'CAMS global reanalysis (EAC4)',\n", + " 'missionStartDate': '2003-01-01T00:00:00Z',\n", + " '_id': 'CAMS_EAC4'}" ] }, "execution_count": 8, @@ -252,9 +259,18 @@ "data": { "text/plain": [ "['CAMS_EAC4',\n", - " 'CAMS_GACF_AOT',\n", - " 'CAMS_GACF_MR',\n", - " 'CAMS_GACF_RH',\n", + " 'CAMS_EAC4_MONTHLY',\n", + " 'CAMS_EU_AIR_QUALITY_FORECAST',\n", + " 'CAMS_EU_AIR_QUALITY_RE',\n", + " 'CAMS_GAC_FORECAST',\n", + " 'CAMS_GFE_GFAS',\n", + " 'CAMS_GLOBAL_EMISSIONS',\n", + " 'CAMS_GREENHOUSE_EGG4',\n", + " 'CAMS_GREENHOUSE_EGG4_MONTHLY',\n", + " 'CAMS_GREENHOUSE_INVERSION',\n", + " 'CAMS_GRF',\n", + " 'CAMS_GRF_AUX',\n", + " 'CAMS_SOLAR_RADIATION',\n", " 'CBERS4_AWFI_L2',\n", " 'CBERS4_AWFI_L4',\n", " 'CBERS4_MUX_L2',\n", @@ -329,34 +345,51 @@ " 'S1_SAR_SLC',\n", " 'S2_MSI_L1C',\n", " 'S2_MSI_L2A',\n", + " 'S2_MSI_L2AP',\n", " 'S2_MSI_L2A_COG',\n", " 'S2_MSI_L2A_MAJA',\n", " 'S2_MSI_L2B_MAJA_SNOW',\n", " 'S2_MSI_L2B_MAJA_WATER',\n", " 'S2_MSI_L3A_WASP',\n", " 'S3_EFR',\n", + " 'S3_EFR_BC002',\n", " 'S3_ERR',\n", + " 'S3_ERR_BC002',\n", " 'S3_LAN',\n", " 'S3_OLCI_L2LFR',\n", " 'S3_OLCI_L2LRR',\n", " 'S3_OLCI_L2WFR',\n", + " 'S3_OLCI_L2WFR_BC003',\n", " 'S3_OLCI_L2WRR',\n", + " 'S3_OLCI_L2WRR_BC003',\n", + " 'S3_OLCI_L4BALTIC',\n", " 'S3_RAC',\n", " 'S3_SLSTR_L1RBT',\n", + " 'S3_SLSTR_L1RBT_BC003',\n", + " 'S3_SLSTR_L1RBT_BC004',\n", " 'S3_SLSTR_L2',\n", " 'S3_SLSTR_L2AOD',\n", " 'S3_SLSTR_L2FRP',\n", " 'S3_SLSTR_L2LST',\n", " 'S3_SLSTR_L2WST',\n", + " 'S3_SLSTR_L2WST_BC003',\n", " 'S3_SRA',\n", + " 'S3_SRA_1A_BC004',\n", + " 'S3_SRA_1A_BC005',\n", + " 'S3_SRA_1B_BC004',\n", + " 'S3_SRA_1B_BC005',\n", " 'S3_SRA_A',\n", " 'S3_SRA_BS',\n", + " 'S3_SRA_BS_BC004',\n", + " 'S3_SRA_BS_BC005',\n", " 'S3_SY_AOD',\n", " 'S3_SY_SYN',\n", " 'S3_SY_V10',\n", " 'S3_SY_VG1',\n", " 'S3_SY_VGP',\n", " 'S3_WAT',\n", + " 'S3_WAT_BC004',\n", + " 'S3_WAT_BC005',\n", " 'S5P_L1B2_IR_ALL',\n", " 'S5P_L1B_IR_SIR',\n", " 'S5P_L1B_IR_UVN',\n", @@ -382,6 +415,12 @@ " 'S5P_L2_O3_PR',\n", " 'S5P_L2_O3_TCL',\n", " 'S5P_L2_SO2',\n", + " 'S6_AMR_L2_F06',\n", + " 'S6_P4_L1AHR_F06',\n", + " 'S6_P4_L1BAHR_F06',\n", + " 'S6_P4_L1BLR_F06',\n", + " 'S6_P4_L2HR_F06',\n", + " 'S6_P4_L2LR_F06',\n", " 'SATELLITE_CARBON_DIOXIDE',\n", " 'SATELLITE_METHANE',\n", " 'SATELLITE_SEA_LEVEL_BLACK_SEA',\n", @@ -427,7 +466,7 @@ { "data": { "text/plain": [ - "['S1_SAR_GRD', 'S1_SAR_OCN', 'S1_SAR_SLC', 'S2_MSI_L1C', 'S2_MSI_L2A']" + "['S1_SAR_GRD', 'S1_SAR_OCN', 'S1_SAR_SLC', 'S2_MSI_L1C']" ] }, "execution_count": 10, @@ -463,7 +502,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "The most common product type is 'S2_MSI_L1C' with 11 providers offering it.\n" + "The most common product type is 'S2_MSI_L1C' with 12 providers offering it.\n" ] } ], @@ -493,7 +532,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "The provider with the largest number of product types is 'planetary_computer' with 122.\n" + "The provider with the largest number of product types is 'planetary_computer' with 123.\n" ] } ], @@ -561,7 +600,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.11.4" }, "nbsphinx": { "execute": "always" diff --git a/docs/notebooks/api_user_guide/3_configuration.ipynb b/docs/notebooks/api_user_guide/3_configuration.ipynb index 69d3a222c..eb8a3ee1f 100644 --- a/docs/notebooks/api_user_guide/3_configuration.ipynb +++ b/docs/notebooks/api_user_guide/3_configuration.ipynb @@ -38,26 +38,32 @@ { "data": { "text/plain": [ - "['astraea_eod',\n", + "['creodias_s3',\n", + " 'peps',\n", + " 'astraea_eod',\n", " 'aws_eos',\n", " 'cop_ads',\n", " 'cop_cds',\n", " 'cop_dataspace',\n", + " 'cop_marine',\n", " 'creodias',\n", + " 'dedl',\n", + " 'dedt_lumi',\n", " 'earth_search',\n", " 'earth_search_cog',\n", " 'earth_search_gcs',\n", " 'ecmwf',\n", + " 'eumetsat_ds',\n", " 'hydroweb_next',\n", " 'meteoblue',\n", " 'onda',\n", - " 'peps',\n", " 'planetary_computer',\n", " 'sara',\n", " 'theia',\n", " 'usgs',\n", " 'usgs_satapi_aws',\n", - " 'wekeo']" + " 'wekeo',\n", + " 'wekeo_cmems']" ] }, "execution_count": 2, @@ -88,8 +94,6 @@ " productType: '{productType}'\n", " download:\n", " type: AwsDownload\n", - " base_uri: https://tamn.snapplanet.io\n", - " flatten_top_dirs: True\n", " auth:\n", " type: AwsAuth\n", " credentials:\n", @@ -140,7 +144,7 @@ { "data": { "text/plain": [ - "('tamn', 2)" + "('tamn', 4)" ] }, "execution_count": 5, @@ -198,16 +202,16 @@ "name": "stderr", "output_type": "stream", "text": [ - "2023-10-17 15:35:20,898 eodag.config [DEBUG ] (tid=140145864171520) Loading configuration from /home/sylvain/workspace/eodag/eodag/resources/providers.yml\n", - "2023-10-17 15:35:21,004 eodag.config [INFO ] (tid=140145864171520) Loading user configuration from: /home/sylvain/.config/eodag/eodag.yml\n", - "2023-10-17 15:35:21,120 eodag.core [DEBUG ] (tid=140145864171520) Opening product types index in /home/sylvain/.config/eodag/.index\n", - "2023-10-17 15:35:21,124 eodag.core [INFO ] (tid=140145864171520) Locations configuration loaded from /home/sylvain/.config/eodag/locations.yml\n" + "2024-03-14 10:13:48,250 eodag.config [DEBUG ] (tid=140013209061184) Loading configuration from /home/anesson/workspace/EODAG/dev/eodag/eodag/resources/providers.yml\n", + "2024-03-14 10:13:48,608 eodag.config [INFO ] (tid=140013209061184) Loading user configuration from: /home/anesson/.config/eodag/eodag.yml\n", + "2024-03-14 10:13:48,670 eodag.core [DEBUG ] (tid=140013209061184) Opening product types index in /home/anesson/.config/eodag/.index\n", + "2024-03-14 10:13:48,681 eodag.core [INFO ] (tid=140013209061184) Locations configuration loaded from /home/anesson/.config/eodag/locations.yml\n" ] }, { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 7, diff --git a/docs/notebooks/api_user_guide/4_search.ipynb b/docs/notebooks/api_user_guide/4_search.ipynb index 86c6967b7..c131f3449 100644 --- a/docs/notebooks/api_user_guide/4_search.ipynb +++ b/docs/notebooks/api_user_guide/4_search.ipynb @@ -33,8 +33,10 @@ "name": "stderr", "output_type": "stream", "text": [ - "2024-02-19 12:00:29,455 eodag.config [INFO ] Loading user configuration from: /home/sylvain/.config/eodag/eodag.yml\n", - "2024-02-19 12:00:29,545 eodag.core [INFO ] Locations configuration loaded from /home/sylvain/.config/eodag/locations.yml\n" + "2024-06-20 09:28:56,927 eodag.config [INFO ] Loading user configuration from: /home/sylvain/.config/eodag/eodag.yml\n", + "2024-06-20 09:28:56,953 eodag.core [INFO ] aws_eos: provider needing auth for search has been pruned because no credentials could be found\n", + "2024-06-20 09:28:56,953 eodag.core [INFO ] wekeo_cmems: provider needing auth for search has been pruned because no credentials could be found\n", + "2024-06-20 09:28:56,963 eodag.core [INFO ] Locations configuration loaded from /home/sylvain/.config/eodag/locations.yml\n" ] } ], @@ -52,7 +54,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A default set of search criteria is defined, the area of interest is in the South-West of France." + "A default set of search criteria is defined, the area of interest is in the South-West of France, and `count` is enabled." ] }, { @@ -65,7 +67,8 @@ " \"productType\": \"S2_MSI_L1C\",\n", " \"start\": \"2021-03-01\",\n", " \"end\": \"2021-03-31\",\n", - " \"geom\": {\"lonmin\": 1, \"latmin\": 43, \"lonmax\": 2, \"latmax\": 44}\n", + " \"geom\": {\"lonmin\": 1, \"latmin\": 43, \"lonmax\": 2, \"latmax\": 44},\n", + " \"count\": True\n", "}" ] }, @@ -116,10 +119,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "[search()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.search) was the first search method implemented in `eodag`. It returns a tuple with:\n", - "\n", - "* a [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) that stores the products obtained from a given **page** and a given maximum **number of items per page**\n", - "* an integer that is the **estimated** total number of products matching the search criteria\n", + "[search()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.search) was the first search method implemented in `eodag`. It returns a [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) that stores the products obtained from a given **page** and a given maximum **number of items per page**. The attribute [SearchResult.number_matched](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) optionally stores the **estimated** total number of products matching the search criteria.\n", "\n", "By default, [search()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.search) **returns the products from the first page with a maximum of 20 products**. This means\n", "that it is often expected to obtain a [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) that contains 20 products and a much larger estimated\n", @@ -129,7 +129,8 @@ "\n", "Warning\n", "\n", - "The second element returned by [search()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.search) is the **estimated** total number of products matching the search criteria, since, unfortunately, all the providers do not return the **exact** total number. For example,\n", + "The [SearchResult.number_matched](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) attribute is the **estimated** total number of products matching the search criteria, since, unfortunately, all the providers do not return the **exact** total number.\n", + "For example,\n", "*theia* returns the number of products available in the whole collection instead of the number of products that match the search criteria.\n", "\n", "\n", @@ -146,15 +147,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "2023-01-13 11:03:30,087 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", - "2023-01-13 11:03:30,089 eodag.plugins.search.qssearch [INFO ] Sending count request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=1&page=1\n", - "2023-01-13 11:03:32,525 eodag.plugins.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=20&page=1\n", - "2023-01-13 11:03:33,810 eodag.core [INFO ] Found 48 result(s) on provider 'peps'\n" + "2024-06-20 09:29:05,778 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", + "2024-06-20 09:29:05,782 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=20&page=1\n", + "2024-06-20 09:29:12,252 eodag.core [INFO ] Found 48 result(s) on provider 'peps'\n" ] } ], "source": [ - "products_first_page, estimated_total_number = dag.search(**default_search_criteria)" + "products_first_page = dag.search(**default_search_criteria)" ] }, { @@ -171,7 +171,7 @@ } ], "source": [ - "print(f\"Got a hand on {len(products_first_page)} products and an estimated total number of {estimated_total_number} products available.\")" + "print(f\"Got a hand on {len(products_first_page)} products and an estimated total number of {products_first_page.number_matched} products available.\")" ] }, { @@ -183,15 +183,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "2023-01-13 11:03:38,323 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", - "2023-01-13 11:03:38,326 eodag.plugins.search.qssearch [INFO ] Sending count request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=1&page=1\n", - "2023-01-13 11:03:38,824 eodag.plugins.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=10&page=2\n", - "2023-01-13 11:03:39,756 eodag.core [INFO ] Found 48 result(s) on provider 'peps'\n" + "2024-06-20 09:29:12,274 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", + "2024-06-20 09:29:12,276 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=10&page=2\n", + "2024-06-20 09:29:13,240 eodag.core [INFO ] Found 48 result(s) on provider 'peps'\n" ] } ], "source": [ - "products_another_second_page, estimated_total_number = dag.search(page=2, items_per_page=10, **default_search_criteria)" + "products_another_second_page = dag.search(page=2, items_per_page=10, **default_search_criteria)" ] }, { @@ -208,7 +207,7 @@ } ], "source": [ - "print(f\"Got a hand on {len(products_another_second_page)} products and an estimated total number of {estimated_total_number} products available.\")" + "print(f\"Got a hand on {len(products_another_second_page)} products and an estimated total number of {products_another_second_page.number_matched} products available.\")" ] }, { @@ -233,7 +232,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The `raise_errors` parameter controls how errors raised internally during a search are propagated to the user. By default this parameter is set to `False`, which means that **errors are not raised**. Instead, errors are logged and a null result is returned (empty [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) and 0)." + "The `raise_errors` parameter controls how errors raised internally during a search are propagated to the user. By default this parameter is set to `False`, which means that **errors are not raised**. Instead, errors are logged and a null result is returned (empty [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) and 0). The use of the `provider` kwarg and the error raised in the example below are explained in [the id and provider sub-section](#id-and-provider) and [the fallback section](#fallback-in-case-of-error) respectively." ] }, { @@ -255,24 +254,41 @@ "name": "stderr", "output_type": "stream", "text": [ - "2023-01-13 11:04:01,626 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", - "2023-01-13 11:04:01,629 eodag.core [INFO ] No result from provider 'peps' due to an error during search. Raise verbosity of log messages for details\n", - "2023-01-13 11:04:01,631 eodag.core [ERROR ] Error while searching on provider peps (ignored):\n", + "2024-06-20 09:29:17,662 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", + "2024-06-20 09:29:17,664 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=malformed_start_date&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=20&page=1\n", + "2024-06-20 09:29:17,859 eodag.search.qssearch [ERROR ] Skipping error while searching for peps QueryStringSearch instance: \n", + "Traceback (most recent call last):\n", + " File \"/home/sylvain/workspace/eodag/eodag/plugins/search/qssearch.py\", line 1138, in _request\n", + " response.raise_for_status()\n", + " File \"/home/sylvain/.virtualenvs/eodag-dev/lib/python3.10/site-packages/requests/models.py\", line 1021, in raise_for_status\n", + " raise HTTPError(http_error_msg, response=self)\n", + "requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=malformed_start_date&completionDate=2021-03-31&geometry=POLYGON%20((1.0000%2043.0000,%201.0000%2044.0000,%202.0000%2044.0000,%202.0000%2043.0000,%201.0000%2043.0000))&productType=S2MSI1C&maxRecords=20&page=1\n", + "2024-06-20 09:29:17,860 eodag.core [INFO ] No result from provider 'peps' due to an error during search. Raise verbosity of log messages for details\n", + "2024-06-20 09:29:17,861 eodag.core [ERROR ] Error while searching on provider peps (ignored):\n", + "Traceback (most recent call last):\n", + " File \"/home/sylvain/workspace/eodag/eodag/plugins/search/qssearch.py\", line 1138, in _request\n", + " response.raise_for_status()\n", + " File \"/home/sylvain/.virtualenvs/eodag-dev/lib/python3.10/site-packages/requests/models.py\", line 1021, in raise_for_status\n", + " raise HTTPError(http_error_msg, response=self)\n", + "requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=malformed_start_date&completionDate=2021-03-31&geometry=POLYGON%20((1.0000%2043.0000,%201.0000%2044.0000,%202.0000%2044.0000,%202.0000%2043.0000,%201.0000%2043.0000))&productType=S2MSI1C&maxRecords=20&page=1\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", "Traceback (most recent call last):\n", - " File \"/home/sylvain/workspace/eodag/eodag/api/core.py\", line 1389, in _do_search\n", - " res, nb_res = search_plugin.query(count=count, **kwargs)\n", - " File \"/home/sylvain/workspace/eodag/eodag/plugins/search/qssearch.py\", line 384, in query\n", - " self.search_urls, total_items = self.collect_search_urls(\n", - " File \"/home/sylvain/workspace/eodag/eodag/plugins/search/qssearch.py\", line 582, in collect_search_urls\n", - " for collection in self.get_collections(**kwargs):\n", - " File \"/home/sylvain/workspace/eodag/eodag/plugins/search/qssearch.py\", line 812, in get_collections\n", - " match = re.match(\n", - "AttributeError: 'NoneType' object has no attribute 'groupdict'\n" + " File \"/home/sylvain/workspace/eodag/eodag/api/core.py\", line 1828, in _do_search\n", + " res, nb_res = search_plugin.query(prep, **kwargs)\n", + " File \"/home/sylvain/workspace/eodag/eodag/plugins/search/qssearch.py\", line 725, in query\n", + " provider_results = self.do_search(prep, **kwargs)\n", + " File \"/home/sylvain/workspace/eodag/eodag/plugins/search/qssearch.py\", line 858, in do_search\n", + " response = self._request(single_search_prep)\n", + " File \"/home/sylvain/workspace/eodag/eodag/plugins/search/qssearch.py\", line 1153, in _request\n", + " raise RequestError(str(err))\n", + "eodag.utils.exceptions.RequestError: 400 Client Error: Bad Request for url: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=malformed_start_date&completionDate=2021-03-31&geometry=POLYGON%20((1.0000%2043.0000,%201.0000%2044.0000,%202.0000%2044.0000,%202.0000%2043.0000,%201.0000%2043.0000))&productType=S2MSI1C&maxRecords=20&page=1\n" ] } ], "source": [ - "products_first_page, estimated_total_number = dag.search(**bad_search_criteria)" + "products_first_page = dag.search(provider=\"peps\", **bad_search_criteria)" ] }, { @@ -289,7 +305,7 @@ } ], "source": [ - "print(f\"Got a hand on {len(products_first_page)} products and an estimated total number of {estimated_total_number} products available.\")" + "print(f\"Got a hand on {len(products_first_page)} products and an estimated total number of {products_first_page.number_matched} products available.\")" ] }, { @@ -309,29 +325,42 @@ "name": "stderr", "output_type": "stream", "text": [ - "2023-01-13 11:04:42,214 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", - "2023-01-13 11:04:42,217 eodag.core [INFO ] No result from provider 'peps' due to an error during search. Raise verbosity of log messages for details\n" + "2024-06-20 09:29:20,996 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", + "2024-06-20 09:29:21,000 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=malformed_start_date&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=20&page=1\n", + "2024-06-20 09:29:21,197 eodag.search.qssearch [ERROR ] Skipping error while searching for peps QueryStringSearch instance: \n", + "Traceback (most recent call last):\n", + " File \"/home/sylvain/workspace/eodag/eodag/plugins/search/qssearch.py\", line 1138, in _request\n", + " response.raise_for_status()\n", + " File \"/home/sylvain/.virtualenvs/eodag-dev/lib/python3.10/site-packages/requests/models.py\", line 1021, in raise_for_status\n", + " raise HTTPError(http_error_msg, response=self)\n", + "requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=malformed_start_date&completionDate=2021-03-31&geometry=POLYGON%20((1.0000%2043.0000,%201.0000%2044.0000,%202.0000%2044.0000,%202.0000%2043.0000,%201.0000%2043.0000))&productType=S2MSI1C&maxRecords=20&page=1\n", + "2024-06-20 09:29:21,198 eodag.core [INFO ] No result from provider 'peps' due to an error during search.\n" ] }, { - "ename": "AttributeError", - "evalue": "'NoneType' object has no attribute 'groupdict'", + "ename": "RequestError", + "evalue": "400 Client Error: Bad Request for url: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=malformed_start_date&completionDate=2021-03-31&geometry=POLYGON%20((1.0000%2043.0000,%201.0000%2044.0000,%202.0000%2044.0000,%202.0000%2043.0000,%201.0000%2043.0000))&productType=S2MSI1C&maxRecords=20&page=1", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [10]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m products_first_page, estimated_total_number \u001b[38;5;241m=\u001b[39m \u001b[43mdag\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msearch\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mbad_search_criteria\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mraise_errors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/workspace/eodag/eodag/api/core.py:902\u001b[0m, in \u001b[0;36mEODataAccessGateway.search\u001b[0;34m(self, page, items_per_page, raise_errors, start, end, geom, locations, **kwargs)\u001b[0m\n\u001b[1;32m 897\u001b[0m search_kwargs\u001b[38;5;241m.\u001b[39mupdate(\n\u001b[1;32m 898\u001b[0m page\u001b[38;5;241m=\u001b[39mpage,\n\u001b[1;32m 899\u001b[0m items_per_page\u001b[38;5;241m=\u001b[39mitems_per_page,\n\u001b[1;32m 900\u001b[0m )\n\u001b[1;32m 901\u001b[0m search_plugin\u001b[38;5;241m.\u001b[39mclear()\n\u001b[0;32m--> 902\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_do_search\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 903\u001b[0m \u001b[43m \u001b[49m\u001b[43msearch_plugin\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcount\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mraise_errors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mraise_errors\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43msearch_kwargs\u001b[49m\n\u001b[1;32m 904\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/workspace/eodag/eodag/api/core.py:1389\u001b[0m, in \u001b[0;36mEODataAccessGateway._do_search\u001b[0;34m(self, search_plugin, count, raise_errors, **kwargs)\u001b[0m\n\u001b[1;32m 1387\u001b[0m total_results \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m 1388\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 1389\u001b[0m res, nb_res \u001b[38;5;241m=\u001b[39m \u001b[43msearch_plugin\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mquery\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcount\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcount\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1391\u001b[0m \u001b[38;5;66;03m# Only do the pagination computations when it makes sense. For example,\u001b[39;00m\n\u001b[1;32m 1392\u001b[0m \u001b[38;5;66;03m# for a search by id, we can reasonably guess that the provider will return\u001b[39;00m\n\u001b[1;32m 1393\u001b[0m \u001b[38;5;66;03m# At most 1 product, so we don't need such a thing as pagination\u001b[39;00m\n\u001b[1;32m 1394\u001b[0m page \u001b[38;5;241m=\u001b[39m kwargs\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpage\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", - "File \u001b[0;32m~/workspace/eodag/eodag/plugins/search/qssearch.py:384\u001b[0m, in \u001b[0;36mQueryStringSearch.query\u001b[0;34m(self, items_per_page, page, count, **kwargs)\u001b[0m\n\u001b[1;32m 382\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mquery_params \u001b[38;5;241m=\u001b[39m qp\n\u001b[1;32m 383\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mquery_string \u001b[38;5;241m=\u001b[39m qs\n\u001b[0;32m--> 384\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msearch_urls, total_items \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcollect_search_urls\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 385\u001b[0m \u001b[43m \u001b[49m\u001b[43mpage\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpage\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mitems_per_page\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mitems_per_page\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcount\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcount\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\n\u001b[1;32m 386\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 387\u001b[0m provider_results \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdo_search(items_per_page\u001b[38;5;241m=\u001b[39mitems_per_page, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 388\u001b[0m eo_products \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnormalize_results(provider_results, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", - "File \u001b[0;32m~/workspace/eodag/eodag/plugins/search/qssearch.py:582\u001b[0m, in \u001b[0;36mQueryStringSearch.collect_search_urls\u001b[0;34m(self, page, items_per_page, count, **kwargs)\u001b[0m\n\u001b[1;32m 580\u001b[0m urls \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m 581\u001b[0m total_results \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m count \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 582\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m collection \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_collections\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m:\n\u001b[1;32m 583\u001b[0m \u001b[38;5;66;03m# skip empty collection if one is required in api_endpoint\u001b[39;00m\n\u001b[1;32m 584\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{collection}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconfig\u001b[38;5;241m.\u001b[39mapi_endpoint \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m collection:\n\u001b[1;32m 585\u001b[0m \u001b[38;5;28;01mcontinue\u001b[39;00m\n", - "File \u001b[0;32m~/workspace/eodag/eodag/plugins/search/qssearch.py:812\u001b[0m, in \u001b[0;36mQueryStringSearch.get_collections\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m 810\u001b[0m collections \u001b[38;5;241m=\u001b[39m (\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mS2\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mS2ST\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 811\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 812\u001b[0m match \u001b[38;5;241m=\u001b[39m \u001b[43mre\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmatch\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 813\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43mr\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m(?P\u001b[39;49m\u001b[38;5;124;43m\\\u001b[39;49m\u001b[38;5;124;43md\u001b[39;49m\u001b[38;5;132;43;01m{4}\u001b[39;49;00m\u001b[38;5;124;43m)-(?P\u001b[39;49m\u001b[38;5;124;43m\\\u001b[39;49m\u001b[38;5;124;43md\u001b[39;49m\u001b[38;5;132;43;01m{2}\u001b[39;49;00m\u001b[38;5;124;43m)-(?P\u001b[39;49m\u001b[38;5;124;43m\\\u001b[39;49m\u001b[38;5;124;43md\u001b[39;49m\u001b[38;5;132;43;01m{2}\u001b[39;49;00m\u001b[38;5;124;43m)\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdate\u001b[49m\n\u001b[1;32m 814\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgroupdict\u001b[49m()\n\u001b[1;32m 815\u001b[0m year, month, day \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 816\u001b[0m \u001b[38;5;28mint\u001b[39m(match[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124myear\u001b[39m\u001b[38;5;124m\"\u001b[39m]),\n\u001b[1;32m 817\u001b[0m \u001b[38;5;28mint\u001b[39m(match[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmonth\u001b[39m\u001b[38;5;124m\"\u001b[39m]),\n\u001b[1;32m 818\u001b[0m \u001b[38;5;28mint\u001b[39m(match[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mday\u001b[39m\u001b[38;5;124m\"\u001b[39m]),\n\u001b[1;32m 819\u001b[0m )\n\u001b[1;32m 820\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m year \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m2016\u001b[39m \u001b[38;5;129;01mor\u001b[39;00m (year \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m2016\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m month \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m12\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m day \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m5\u001b[39m):\n", - "\u001b[0;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'groupdict'" + "\u001b[0;31mHTTPError\u001b[0m Traceback (most recent call last)", + "File \u001b[0;32m~/workspace/eodag/eodag/plugins/search/qssearch.py:1138\u001b[0m, in \u001b[0;36mQueryStringSearch._request\u001b[0;34m(self, prep)\u001b[0m\n\u001b[1;32m 1131\u001b[0m response \u001b[38;5;241m=\u001b[39m requests\u001b[38;5;241m.\u001b[39mget(\n\u001b[1;32m 1132\u001b[0m url,\n\u001b[1;32m 1133\u001b[0m timeout\u001b[38;5;241m=\u001b[39mtimeout,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1136\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[1;32m 1137\u001b[0m )\n\u001b[0;32m-> 1138\u001b[0m \u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mraise_for_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1139\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m requests\u001b[38;5;241m.\u001b[39mexceptions\u001b[38;5;241m.\u001b[39mTimeout \u001b[38;5;28;01mas\u001b[39;00m exc:\n", + "File \u001b[0;32m~/.virtualenvs/eodag-dev/lib/python3.10/site-packages/requests/models.py:1021\u001b[0m, in \u001b[0;36mResponse.raise_for_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1020\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m http_error_msg:\n\u001b[0;32m-> 1021\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m HTTPError(http_error_msg, response\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n", + "\u001b[0;31mHTTPError\u001b[0m: 400 Client Error: Bad Request for url: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=malformed_start_date&completionDate=2021-03-31&geometry=POLYGON%20((1.0000%2043.0000,%201.0000%2044.0000,%202.0000%2044.0000,%202.0000%2043.0000,%201.0000%2043.0000))&productType=S2MSI1C&maxRecords=20&page=1", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mRequestError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[10], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m products_first_page \u001b[38;5;241m=\u001b[39m \u001b[43mdag\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msearch\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mbad_search_criteria\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mraise_errors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/workspace/eodag/eodag/api/core.py:1132\u001b[0m, in \u001b[0;36mEODataAccessGateway.search\u001b[0;34m(self, page, items_per_page, raise_errors, start, end, geom, locations, provider, count, **kwargs)\u001b[0m\n\u001b[1;32m 1130\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, search_plugin \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(search_plugins):\n\u001b[1;32m 1131\u001b[0m search_plugin\u001b[38;5;241m.\u001b[39mclear()\n\u001b[0;32m-> 1132\u001b[0m search_results \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_do_search\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1133\u001b[0m \u001b[43m \u001b[49m\u001b[43msearch_plugin\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1134\u001b[0m \u001b[43m \u001b[49m\u001b[43mcount\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcount\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1135\u001b[0m \u001b[43m \u001b[49m\u001b[43mraise_errors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mraise_errors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1136\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43msearch_kwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1137\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1138\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(search_results) \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m i \u001b[38;5;241m<\u001b[39m \u001b[38;5;28mlen\u001b[39m(search_plugins) \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[1;32m 1139\u001b[0m logger\u001b[38;5;241m.\u001b[39mwarning(\n\u001b[1;32m 1140\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNo result could be obtained from provider \u001b[39m\u001b[38;5;132;01m{\u001b[39;00msearch_plugin\u001b[38;5;241m.\u001b[39mprovider\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m, \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1141\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mwe will try to get the data from another provider\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 1142\u001b[0m )\n", + "File \u001b[0;32m~/workspace/eodag/eodag/api/core.py:1828\u001b[0m, in \u001b[0;36mEODataAccessGateway._do_search\u001b[0;34m(self, search_plugin, count, raise_errors, **kwargs)\u001b[0m\n\u001b[1;32m 1825\u001b[0m prep\u001b[38;5;241m.\u001b[39mpage \u001b[38;5;241m=\u001b[39m kwargs\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpage\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m 1826\u001b[0m prep\u001b[38;5;241m.\u001b[39mitems_per_page \u001b[38;5;241m=\u001b[39m kwargs\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mitems_per_page\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m-> 1828\u001b[0m res, nb_res \u001b[38;5;241m=\u001b[39m \u001b[43msearch_plugin\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mquery\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprep\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1830\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(res, \u001b[38;5;28mlist\u001b[39m):\n\u001b[1;32m 1831\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m PluginImplementationError(\n\u001b[1;32m 1832\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThe query function of a Search plugin must return a list of \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1833\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresults, got \u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m instead\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(\u001b[38;5;28mtype\u001b[39m(res))\n\u001b[1;32m 1834\u001b[0m )\n", + "File \u001b[0;32m~/workspace/eodag/eodag/plugins/search/qssearch.py:725\u001b[0m, in \u001b[0;36mQueryStringSearch.query\u001b[0;34m(self, prep, **kwargs)\u001b[0m\n\u001b[1;32m 722\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m prep\u001b[38;5;241m.\u001b[39mtotal_items_nb\n\u001b[1;32m 723\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m prep\u001b[38;5;241m.\u001b[39mneed_count\n\u001b[0;32m--> 725\u001b[0m provider_results \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdo_search\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprep\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 726\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m count \u001b[38;5;129;01mand\u001b[39;00m total_items \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(prep, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtotal_items_nb\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[1;32m 727\u001b[0m total_items \u001b[38;5;241m=\u001b[39m prep\u001b[38;5;241m.\u001b[39mtotal_items_nb\n", + "File \u001b[0;32m~/workspace/eodag/eodag/plugins/search/qssearch.py:858\u001b[0m, in \u001b[0;36mQueryStringSearch.do_search\u001b[0;34m(self, prep, **kwargs)\u001b[0m\n\u001b[1;32m 851\u001b[0m single_search_prep\u001b[38;5;241m.\u001b[39minfo_message \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSending search request: \u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(\n\u001b[1;32m 852\u001b[0m search_url\n\u001b[1;32m 853\u001b[0m )\n\u001b[1;32m 854\u001b[0m single_search_prep\u001b[38;5;241m.\u001b[39mexception_message \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 855\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSkipping error while searching for \u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 856\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124minstance:\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprovider, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m)\n\u001b[1;32m 857\u001b[0m )\n\u001b[0;32m--> 858\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43msingle_search_prep\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 859\u001b[0m next_page_url_key_path \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconfig\u001b[38;5;241m.\u001b[39mpagination\u001b[38;5;241m.\u001b[39mget(\n\u001b[1;32m 860\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnext_page_url_key_path\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 861\u001b[0m )\n\u001b[1;32m 862\u001b[0m next_page_query_obj_key_path \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconfig\u001b[38;5;241m.\u001b[39mpagination\u001b[38;5;241m.\u001b[39mget(\n\u001b[1;32m 863\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnext_page_query_obj_key_path\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 864\u001b[0m )\n", + "File \u001b[0;32m~/workspace/eodag/eodag/plugins/search/qssearch.py:1153\u001b[0m, in \u001b[0;36mQueryStringSearch._request\u001b[0;34m(self, prep)\u001b[0m\n\u001b[1;32m 1145\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1146\u001b[0m logger\u001b[38;5;241m.\u001b[39mexception(\n\u001b[1;32m 1147\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSkipping error while requesting: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m (provider:\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m, plugin:\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m): \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 1148\u001b[0m url,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1151\u001b[0m err_msg,\n\u001b[1;32m 1152\u001b[0m )\n\u001b[0;32m-> 1153\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m RequestError(\u001b[38;5;28mstr\u001b[39m(err))\n\u001b[1;32m 1154\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\n", + "\u001b[0;31mRequestError\u001b[0m: 400 Client Error: Bad Request for url: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=malformed_start_date&completionDate=2021-03-31&geometry=POLYGON%20((1.0000%2043.0000,%201.0000%2044.0000,%202.0000%2044.0000,%202.0000%2043.0000,%201.0000%2043.0000))&productType=S2MSI1C&maxRecords=20&page=1" ] } ], "source": [ - "products_first_page, estimated_total_number = dag.search(**bad_search_criteria, raise_errors=True)" + "products_first_page = dag.search(**bad_search_criteria, raise_errors=True)" ] }, { @@ -349,36 +378,41 @@ "source": [ "[search_all()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.search_all) takes the pain away from thinking about pagination. It returns a [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) that contains **all** the products matching the search criteria. It does so by iterating over the pages of a search result (with [search_iter_page()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.search_iter_page)) and gathering products. Compared to [search()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.search):\n", "\n", - "* It does not return a tuple but directly a [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult). The estimate of total number of products available isn't required here, since they all get collected anyway. This also spares some requests to be sent, since the estimate is usually obtained by sending an additional request.\n", + "* The attribute [SearchResult.number_matched](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) is `None`. The estimate of total number of products available isn't required here, since they all get collected anyway. This also spares some requests to be sent, since the estimate is usually obtained by sending an additional request.\n", "\n", "* It tries to optimize the number of items/products requested per page. The limit of most providers has been configured in `eodag`, it is used if available (e.g. 500 products per page). If not available, a default value of 50 is used. An arbitrary value can also be used.\n", "\n", - "* It has no `raise_errors` parameter, errors are not caught. " + "* It has no `raise_errors` parameter, errors are not caught.\n", + " \n", + "* `count` is not available for this method, as it will be directly [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) length." ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "2023-01-13 11:04:56,848 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", - "2023-01-13 11:04:56,850 eodag.core [INFO ] Iterate search over multiple pages: page #1\n", - "2023-01-13 11:04:56,853 eodag.plugins.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=500&page=1\n", - "2023-01-13 11:04:58,343 eodag.core [INFO ] Found 48 result(s) on provider 'peps'\n" + "2024-06-20 09:32:21,779 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", + "2024-06-20 09:32:21,783 eodag.core [INFO ] Iterate search over multiple pages: page #1\n", + "2024-06-20 09:32:21,785 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=500&page=1\n", + "2024-06-20 09:32:26,692 eodag.core [INFO ] Found 48 result(s) on provider 'peps'\n" ] } ], "source": [ + "# remove count parameter from search criteria\n", + "default_search_criteria.pop(\"count\", None)\n", + "\n", "all_products = dag.search_all(**default_search_criteria)" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -403,19 +437,19 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "2023-01-13 11:05:03,535 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", - "2023-01-13 11:05:03,537 eodag.core [INFO ] Iterate search over multiple pages: page #1\n", - "2023-01-13 11:05:03,540 eodag.plugins.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=30&page=1\n", - "2023-01-13 11:05:04,734 eodag.core [INFO ] Iterate search over multiple pages: page #2\n", - "2023-01-13 11:05:04,736 eodag.plugins.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=30&page=2\n", - "2023-01-13 11:05:05,550 eodag.core [INFO ] Found 48 result(s) on provider 'peps'\n" + "2024-06-20 09:32:34,213 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", + "2024-06-20 09:32:34,216 eodag.core [INFO ] Iterate search over multiple pages: page #1\n", + "2024-06-20 09:32:34,217 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=30&page=1\n", + "2024-06-20 09:32:36,578 eodag.core [INFO ] Iterate search over multiple pages: page #2\n", + "2024-06-20 09:32:36,579 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=30&page=2\n", + "2024-06-20 09:32:37,949 eodag.core [INFO ] Found 48 result(s) on provider 'peps'\n" ] } ], @@ -451,18 +485,18 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "2023-01-13 11:05:15,177 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", - "2023-01-13 11:05:15,180 eodag.core [INFO ] Iterate search over multiple pages: page #1\n", - "2023-01-13 11:05:15,182 eodag.plugins.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=30&page=1\n", - "2023-01-13 11:05:16,809 eodag.core [INFO ] Iterate search over multiple pages: page #2\n", - "2023-01-13 11:05:16,810 eodag.plugins.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=30&page=2\n" + "2024-06-20 09:32:58,853 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", + "2024-06-20 09:32:58,856 eodag.core [INFO ] Iterate search over multiple pages: page #1\n", + "2024-06-20 09:32:58,856 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=30&page=1\n", + "2024-06-20 09:33:01,872 eodag.core [INFO ] Iterate search over multiple pages: page #2\n", + "2024-06-20 09:33:01,873 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=30&page=2\n" ] }, { @@ -483,7 +517,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -516,17 +550,17 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "SearchResult([EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TCJ_20210328T124650, provider=peps),\n", - " EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TCH_20210328T124650, provider=peps)])" + "SearchResult([EOProduct(id=S2B_MSIL1C_20210328T103629_N0500_R008_T31TDH_20230602T033834, provider=peps),\n", + " EOProduct(id=S2B_MSIL1C_20210328T103629_N0500_R008_T31TCJ_20230602T033834, provider=peps)])" ] }, - "execution_count": 16, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -545,16 +579,16 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TCJ_20210328T124650, provider=peps)" + "EOProduct(id=S2B_MSIL1C_20210328T103629_N0500_R008_T31TDH_20230602T033834, provider=peps)" ] }, - "execution_count": 17, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -582,19 +616,19 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ - "" + "" ], "text/plain": [ - "" + "" ] }, - "execution_count": 18, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -605,7 +639,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -614,7 +648,7 @@ "('peps', 'S2_MSI_L1C')" ] }, - "execution_count": 19, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -625,20 +659,19 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'auth': GenericAuth(provider=peps, priority=1, topic=Authentication),\n", - " 'productType': 'S2_MSI_L1C',\n", + "{'productType': 'S2_MSI_L1C',\n", " 'startTimeFromAscendingNode': '2021-03-01',\n", " 'completionTimeFromAscendingNode': '2021-03-31',\n", - " 'geometry': }" + " 'geometry': }" ] }, - "execution_count": 20, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -649,17 +682,17 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "('https://peps.cnes.fr/resto/collections/S2ST/387c7327-9a71-5a34-9163-0dfdeb024522/download',\n", - " 'https://peps.cnes.fr/resto/collections/S2ST/387c7327-9a71-5a34-9163-0dfdeb024522/download')" + "('https://peps.cnes.fr/resto/collections/S2ST/2d85d4c8-34c1-55dc-b43c-0ab0fe4c2b97/download',\n", + " 'https://peps.cnes.fr/resto/collections/S2ST/2d85d4c8-34c1-55dc-b43c-0ab0fe4c2b97/download')" ] }, - "execution_count": 21, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -670,16 +703,16 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "dict_keys(['abstract', 'instrument', 'platform', 'platformSerialIdentifier', 'processingLevel', 'keywords', 'sensorType', 'license', 'missionStartDate', 'title', 'productType', 'uid', 'keyword', 'resolution', 'organisationName', 'publicationDate', 'parentIdentifier', 'orbitNumber', 'orbitDirection', 'cloudCover', 'snowCover', 'creationDate', 'modificationDate', 'sensorMode', 'startTimeFromAscendingNode', 'completionTimeFromAscendingNode', 'id', 'quicklook', 'downloadLink', 'storageStatus', 'thumbnail', 'resourceSize', 'resourceChecksum', 'visible', 'newVersion', 'isNrt', 'realtime', 'relativeOrbitNumber', 'useDatalake', 's2TakeId', 'mgrs', 'bareSoil', 'highProbaClouds', 'mediumProbaClouds', 'lowProbaClouds', 'snowIce', 'vegetation', 'water', 'isRefined', 'nrtResource', 'services', 'links', 'storage'])" + "dict_keys(['abstract', 'instrument', 'platform', 'platformSerialIdentifier', 'processingLevel', 'keywords', 'sensorType', 'license', 'missionStartDate', 'title', '_id', 'productType', 'uid', 'keyword', 'resolution', 'organisationName', 'publicationDate', 'parentIdentifier', 'orbitNumber', 'orbitDirection', 'cloudCover', 'snowCover', 'creationDate', 'modificationDate', 'sensorMode', 'startTimeFromAscendingNode', 'completionTimeFromAscendingNode', 'id', 'quicklook', 'downloadLink', 'tileIdentifier', 'storageStatus', 'thumbnail', 'resourceSize', 'resourceChecksum', 'visible', 'newVersion', 'isNrt', 'realtime', 'relativeOrbitNumber', 'useDatalake', 'bucket', 'prefix', 's2TakeId', 'bareSoil', 'highProbaClouds', 'mediumProbaClouds', 'lowProbaClouds', 'snowIce', 'vegetation', 'water', 'isRefined', 'nrtResource', 'storage'])" ] }, - "execution_count": 22, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -698,16 +731,16 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TCJ_20210328T124650, provider=peps)" + "EOProduct(id=S2B_MSIL1C_20210328T103629_N0500_R008_T31TDH_20230602T033834, provider=peps)" ] }, - "execution_count": 23, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -729,17 +762,17 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "SearchResult([EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TCJ_20210328T124650, provider=peps),\n", - " EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TCH_20210328T124650, provider=peps)])" + "SearchResult([EOProduct(id=S2B_MSIL1C_20210328T103629_N0500_R008_T31TDH_20230602T033834, provider=peps),\n", + " EOProduct(id=S2B_MSIL1C_20210328T103629_N0500_R008_T31TCJ_20230602T033834, provider=peps)])" ] }, - "execution_count": 24, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -801,6 +834,7 @@ "* `start` and `end`\n", "* `geom`\n", "* `locations`\n", + "* `count`\n", "\n", "More parameters can be passed through *kwargs*, they are also described below." ] @@ -870,7 +904,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "`start` and `end` parameters are optional. They are used to search for products that have been sensed between these two times. Dates or datetimes must be passed as `strings` in UTC ISO8601 format (e.g. `yyyy-MM-dd`, `yyyy-MM-ddThh:mm:ss.SSSZ`)." + "`start` and `end` parameters are optional. They are used to search for products that have been sensed between these two times. Dates or datetimes must be passed as `strings` in UTC ISO8601 format (e.g. `yyyy-MM-dd`, `yyyy-MM-ddThh:mm:ss.SSSZ`). \n", + "\n", + "The `string` representation of dates will be interpreted as UTC datetime values, for instance, `2020-01-01` will be interpreted as `2020-01-01T00:00:00Z`. Consequently, when time is not explicitly specified:\n", + "\n", + "- The start date will be inclusive, while the end date will be exclusive. In other words, results will include dates satisfying the condition: `start ≤ results_datetime < end`.\n", + "\n", + "- To search for products within a single day, the start date can be specified as `2020-01-01` and the end date as `2020-01-02`." ] }, { @@ -913,7 +953,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 27, "metadata": {}, "outputs": [], "source": [ @@ -945,7 +985,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -972,7 +1012,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -981,7 +1021,7 @@ "{'lonmin': 1, 'latmin': 43, 'lonmax': 2, 'latmax': 44}" ] }, - "execution_count": 27, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -1001,7 +1041,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 30, "metadata": {}, "outputs": [], "source": [ @@ -1010,7 +1050,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ @@ -1020,7 +1060,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ @@ -1029,14 +1069,16 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Make this Notebook Trusted to load map: File -> Trust Notebook
" + " \n", + " geo_json_daf11358767b96910736b09135b224a4.addTo(map_223d910490d8cf4f996c07fa2eedcdd7);\n", + "</script>\n", + "</html>\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen>" ], "text/plain": [ - "" + "" ] }, - "execution_count": 31, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -1203,7 +1252,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Locations search" + "### Locations search" ] }, { @@ -1231,20 +1280,20 @@ "For example, a *continents.shp* shapefile is set as a location in this file. The *path* entry is set to its absolute filepath, the *name* entry is set to `continent`. The shapefile contains continent's areas (polygons) and a field *fullname* (it may have other fields, they just won't be of any use here). The following search uses the geometry of the features of *continents.shp* that have *fullname* equal to `Europe`:\n", "\n", "```python\n", - "products, estimated_total_nbr_of_results = dag.search(\n", + "products = dag.search(\n", " productType=\"S2_MSI_L1C\",\n", " locations=dict(continent='Europe')\n", ")\n", "```\n", "\n", - "The location query (`continent=\"Europe\"`) is passed as a dictionnary to the `locations` parameter. It accepts [regular expressions](https://en.wikipedia.org/wiki/Regular_expression) which can come in handy when the query field has an underlying structure (e.g. see [this tutorial](../tutos/tuto_search_location_tile.ipynb) dedicated to search for products by tile(s)).\n", + "The location query (`continent=\"Europe\"`) is passed as a dictionary to the `locations` parameter. It accepts [regular expressions](https://en.wikipedia.org/wiki/Regular_expression) which can come in handy when the query field has an underlying structure (e.g. see [this tutorial](../tutos/tuto_search_location_tile.ipynb) dedicated to search for products by tile(s)).\n", "\n", "The locations configuration is stored in the `locations_config` attribute of the `EODataAcessGateway` once instantiated. `eodag` provides a default location which is a [Natural Earth Countries](https://www.naturalearthdata.com/downloads/110m-cultural-vectors/110m-admin-0-countries/) shapefile whose *ADM0_A3_US* field can be used to query specific countries by a short code such as *FRA* for *France* or *JPN* for *Japan*." ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -1255,7 +1304,7 @@ " 'attr': 'ADM0_A3_US'}]" ] }, - "execution_count": 32, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -1266,7 +1315,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -1303,7 +1352,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -1315,7 +1364,7 @@ " 'locations': {'country': 'BEL|CHE'}}" ] }, - "execution_count": 34, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1329,22 +1378,20 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "2023-01-13 11:06:53,694 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", - "2023-01-13 11:06:53,696 eodag.plugins.search.qssearch [INFO ] Sending count request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=MULTIPOLYGON (((6.1567 50.8037, 5.6070 51.0373, 4.9740 51.4750, 4.0471 51.2673, 3.3150 51.3458, 3.3150 51.3458, 3.3150 51.3458, 2.5136 51.1485, 2.6584 50.7968, 3.1233 50.7804, 3.5882 50.3790, 4.2860 49.9075, 4.7992 49.9854, 5.6741 49.5295, 5.7824 50.0903, 6.0431 50.1281, 6.1567 50.8037)), ((9.5942 47.5251, 8.5226 47.8308, 8.3173 47.6136, 7.4668 47.6206, 7.1922 47.4498, 6.7366 47.5418, 6.7687 47.2877, 6.0374 46.7258, 6.0226 46.2730, 6.5001 46.4297, 6.8436 45.9911, 7.2739 45.7769, 7.7560 45.8245, 8.3166 46.1636, 8.4900 46.0052, 8.9663 46.0369, 9.1829 46.4402, 9.9228 46.3149, 10.3634 46.4836, 10.4427 46.8935, 9.9324 46.9207, 9.4800 47.1028, 9.6329 47.3476, 9.5942 47.5251)))&productType=S2MSI1C&maxRecords=1&page=1\n", - "2023-01-13 11:06:54,398 eodag.plugins.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=MULTIPOLYGON (((6.1567 50.8037, 5.6070 51.0373, 4.9740 51.4750, 4.0471 51.2673, 3.3150 51.3458, 3.3150 51.3458, 3.3150 51.3458, 2.5136 51.1485, 2.6584 50.7968, 3.1233 50.7804, 3.5882 50.3790, 4.2860 49.9075, 4.7992 49.9854, 5.6741 49.5295, 5.7824 50.0903, 6.0431 50.1281, 6.1567 50.8037)), ((9.5942 47.5251, 8.5226 47.8308, 8.3173 47.6136, 7.4668 47.6206, 7.1922 47.4498, 6.7366 47.5418, 6.7687 47.2877, 6.0374 46.7258, 6.0226 46.2730, 6.5001 46.4297, 6.8436 45.9911, 7.2739 45.7769, 7.7560 45.8245, 8.3166 46.1636, 8.4900 46.0052, 8.9663 46.0369, 9.1829 46.4402, 9.9228 46.3149, 10.3634 46.4836, 10.4427 46.8935, 9.9324 46.9207, 9.4800 47.1028, 9.6329 47.3476, 9.5942 47.5251)))&productType=S2MSI1C&maxRecords=20&page=1\n", - "2023-01-13 11:06:56,590 eodag.core [INFO ] Found 248 result(s) on provider 'peps'\n" + "2024-06-20 09:33:59,004 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", + "2024-06-20 09:33:59,006 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=MULTIPOLYGON (((6.1567 50.8037, 6.0431 50.1281, 5.7824 50.0903, 5.6741 49.5295, 4.7992 49.9854, 4.2860 49.9075, 3.5882 50.3790, 3.1233 50.7804, 2.6584 50.7968, 2.5136 51.1485, 3.3150 51.3458, 3.3150 51.3458, 3.3150 51.3458, 4.0471 51.2673, 4.9740 51.4750, 5.6070 51.0373, 6.1567 50.8037)), ((9.5942 47.5251, 9.6329 47.3476, 9.4800 47.1028, 9.9324 46.9207, 10.4427 46.8935, 10.3634 46.4836, 9.9228 46.3149, 9.1829 46.4402, 8.9663 46.0369, 8.4900 46.0052, 8.3166 46.1636, 7.7560 45.8245, 7.2739 45.7769, 6.8436 45.9911, 6.5001 46.4297, 6.0226 46.2730, 6.0374 46.7258, 6.7687 47.2877, 6.7366 47.5418, 7.1922 47.4498, 7.4668 47.6206, 8.3173 47.6136, 8.5226 47.8308, 9.5942 47.5251)))&productType=S2MSI1C&maxRecords=50&page=1\n" ] } ], "source": [ - "locations_products, estimated_total_number = dag.search(**location_search_criteria)" + "locations_products = dag.search(**location_search_criteria, items_per_page=50)" ] }, { @@ -1357,14 +1404,16 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Make this Notebook Trusted to load map: File -> Trust Notebook
" + " \n", + " geo_json_bcb496328c01d852a74033441a641188.addTo(map_9742693415c6ef047540903620997e91);\n", + "</script>\n", + "</html>\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen>" ], "text/plain": [ - "" + "" ] }, - "execution_count": 36, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -1610,7 +1667,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 39, "metadata": {}, "outputs": [], "source": [ @@ -1635,7 +1692,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -1648,7 +1705,7 @@ " 'locations': {'country': 'BEL|CHE'}}" ] }, - "execution_count": 38, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1661,34 +1718,34 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "2023-01-13 11:07:18,062 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", - "2023-01-13 11:07:18,064 eodag.plugins.search.qssearch [INFO ] Sending count request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=MULTIPOLYGON (((6.1567 50.8037, 5.6070 51.0373, 4.9740 51.4750, 4.0471 51.2673, 3.3150 51.3458, 3.3150 51.3458, 3.3150 51.3458, 2.5136 51.1485, 2.6584 50.7968, 3.1233 50.7804, 3.5882 50.3790, 4.2860 49.9075, 4.7992 49.9854, 5.6741 49.5295, 5.7824 50.0903, 6.0431 50.1281, 6.1567 50.8037)), ((9.5942 47.5251, 8.5226 47.8308, 8.3173 47.6136, 7.4668 47.6206, 7.1922 47.4498, 6.7366 47.5418, 6.7687 47.2877, 6.0374 46.7258, 6.0226 46.2730, 6.5001 46.4297, 6.8436 45.9911, 7.2739 45.7769, 7.7560 45.8245, 8.3166 46.1636, 8.4900 46.0052, 8.9663 46.0369, 9.1829 46.4402, 9.9228 46.3149, 10.3634 46.4836, 10.4427 46.8935, 9.9324 46.9207, 9.4800 47.1028, 9.6329 47.3476, 9.5942 47.5251)), ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000)))&productType=S2MSI1C&maxRecords=1&page=1\n", - "2023-01-13 11:07:18,515 eodag.plugins.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=MULTIPOLYGON (((6.1567 50.8037, 5.6070 51.0373, 4.9740 51.4750, 4.0471 51.2673, 3.3150 51.3458, 3.3150 51.3458, 3.3150 51.3458, 2.5136 51.1485, 2.6584 50.7968, 3.1233 50.7804, 3.5882 50.3790, 4.2860 49.9075, 4.7992 49.9854, 5.6741 49.5295, 5.7824 50.0903, 6.0431 50.1281, 6.1567 50.8037)), ((9.5942 47.5251, 8.5226 47.8308, 8.3173 47.6136, 7.4668 47.6206, 7.1922 47.4498, 6.7366 47.5418, 6.7687 47.2877, 6.0374 46.7258, 6.0226 46.2730, 6.5001 46.4297, 6.8436 45.9911, 7.2739 45.7769, 7.7560 45.8245, 8.3166 46.1636, 8.4900 46.0052, 8.9663 46.0369, 9.1829 46.4402, 9.9228 46.3149, 10.3634 46.4836, 10.4427 46.8935, 9.9324 46.9207, 9.4800 47.1028, 9.6329 47.3476, 9.5942 47.5251)), ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000)))&productType=S2MSI1C&maxRecords=50&page=1\n", - "2023-01-13 11:07:20,210 eodag.core [INFO ] Found 425 result(s) on provider 'peps'\n" + "2024-06-20 09:34:19,919 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", + "2024-06-20 09:34:19,921 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=MULTIPOLYGON (((6.1567 50.8037, 6.0431 50.1281, 5.7824 50.0903, 5.6741 49.5295, 4.7992 49.9854, 4.2860 49.9075, 3.5882 50.3790, 3.1233 50.7804, 2.6584 50.7968, 2.5136 51.1485, 3.3150 51.3458, 3.3150 51.3458, 3.3150 51.3458, 4.0471 51.2673, 4.9740 51.4750, 5.6070 51.0373, 6.1567 50.8037)), ((9.5942 47.5251, 9.6329 47.3476, 9.4800 47.1028, 9.9324 46.9207, 10.4427 46.8935, 10.3634 46.4836, 9.9228 46.3149, 9.1829 46.4402, 8.9663 46.0369, 8.4900 46.0052, 8.3166 46.1636, 7.7560 45.8245, 7.2739 45.7769, 6.8436 45.9911, 6.5001 46.4297, 6.0226 46.2730, 6.0374 46.7258, 6.7687 47.2877, 6.7366 47.5418, 7.1922 47.4498, 7.4668 47.6206, 8.3173 47.6136, 8.5226 47.8308, 9.5942 47.5251)), ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000)))&productType=S2MSI1C&maxRecords=50&page=1\n" ] } ], "source": [ - "combined_products, estimated_total_number = dag.search(**combined_search_criteria, items_per_page=50)" + "combined_products = dag.search(**combined_search_criteria, items_per_page=50)" ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Make this Notebook Trusted to load map: File -> Trust Notebook
" + " \n", + " geo_json_8b3256d37f26379f0fafdbe62f957d52.addTo(map_992702db121a51224644d931fe6dbb79);\n", + "</script>\n", + "</html>\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen>" ], "text/plain": [ - "" + "" ] }, - "execution_count": 40, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -1923,87 +1988,66 @@ ] }, { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Supported kwargs" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### `id` and `provider`" - ] - }, - { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "EO products have in their metadata an `id` field." + "### Count\n", + "\n", + "The estimated total number of matching items can optionally be retrieved and stored in the [SearchResult.number_matched](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) attribute.\n", + "This is done by setting the search parameter `count=True`. If not set, *count* will be disabled (parameter default value is `False`) as this operation can cost extra time on some providers:" ] }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 46, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "'S2B_MSIL1C_20210328T103629_N0209_R008_T31TCJ_20210328T124650'" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-06-20 09:37:24,720 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", + "2024-06-20 09:37:24,724 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=20&page=1\n", + "2024-06-20 09:37:26,388 eodag.core [INFO ] Found 48 result(s) on provider 'peps'\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number_matched: 48\n" + ] } ], "source": [ - "product_id = one_product.properties[\"id\"]\n", - "product_id" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This identifier, if known beforehand, can be used to search for this specific product by passing the `id` kwarg to the [search()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.search) method. The `provider` kwarg can also be passed to specify among which provider's catalog the product should be searched for. If `provider` is not provided, `eodag` will iterate over all the providers until it finds the product targeted." + "results_with_count = dag.search(count=True, **default_search_criteria)\n", + "print(f\"number_matched: {results_with_count.number_matched}\")" ] }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "2023-01-13 11:09:17,102 eodag.core [INFO ] Searching product with id 'S2B_MSIL1C_20210328T103629_N0209_R008_T31TCJ_20210328T124650' on provider: onda\n", - "2023-01-13 11:09:17,104 eodag.plugins.search.qssearch [INFO ] Sending search request: https://catalogue.onda-dias.eu/dias-catalogue/Products?$format=json&$search=%22S2B_MSIL1C_20210328T103629_N0209_R008_T31TCJ_20210328T124650%22\n", - "2023-01-13 11:09:18,358 eodag.core [INFO ] Found 1 result(s) on provider 'onda'\n" + "2024-06-20 09:37:30,477 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", + "2024-06-20 09:37:30,480 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=20&page=1\n" ] }, { - "data": { - "text/plain": [ - "(SearchResult([EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TCJ_20210328T124650, provider=onda)]),\n", - " 1)" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "number_matched: None\n" + ] } ], "source": [ - "one_product_onda, _ = dag.search(id=product_id, provider=\"onda\")\n", - "one_product_onda, _" + "results_with_count = dag.search(count=False, **default_search_criteria)\n", + "print(f\"number_matched: {results_with_count.number_matched}\")" ] }, { @@ -2011,7 +2055,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Guess a product type" + "### Supported kwargs" ] }, { @@ -2019,14 +2063,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "`eodag` has an internal product type catalog which stores a number of metadata for each product type (see [this page](../../getting_started_guide/product_types.rst) for more information). It is actually possible to search for products by using some of these metadata. In that case, `eodag` will query its own catalog and use **the product type that best matches the query** among the available product types (i.e. all product types offered by providers where the necessary credentials are provided). The supported kwargs are:\n", - "\n", - "* `instrument` (e.g. *MSI*)\n", - "* `platform` (e.g. *SENTINEL2*)\n", - "* `platformSerialIdentifier` (e.g. *S2A*)\n", - "* `processingLevel` (e.g. *L1*)\n", - "* `sensorType` (e.g. *OPTICAL*)\n", - "* `keywords` (e.g. *SENTINEL2 L1C SAFE*), which is case insensitive and ignores `-` or `_` characters" + "#### `id` and `provider`" ] }, { @@ -2034,27 +2071,28 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For example if we call the method with platform=\"SENTINEL1\", all the product types offering products from this platform will be returned." + "EO products have in their metadata an `id` field." ] }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "['S1_SAR_GRD', 'S1_SAR_OCN', 'S1_SAR_RAW', 'S1_SAR_SLC']" + "'S2B_MSIL1C_20210328T103629_N0500_R008_T31TDH_20230602T033834'" ] }, - "execution_count": 46, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "dag.guess_product_type(platform=\"SENTINEL1\")" + "product_id = one_product.properties[\"id\"]\n", + "product_id" ] }, { @@ -2062,74 +2100,100 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "By passing the following argument we can get all collections that contain the keyword collection2 and a keyword that starts with \"LANDSAT\"." + "This identifier, if known beforehand, can be used to search for this specific product by passing the `id` kwarg to the [search()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.search) method. This search by identifier can be optimized by including the appropriate `productType` in the kwargs. The `provider` kwarg can also be passed to specify among which provider's catalog the product should be searched for. If `provider` is not provided, `eodag` will iterate over all the providers until it finds the product targeted." ] }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 50, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-06-20 09:40:25,189 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: cop_dataspace\n", + "2024-06-20 09:40:25,190 eodag.core [INFO ] Searching product with id 'S2B_MSIL1C_20210328T103629_N0500_R008_T31TDH_20230602T033834' on provider: cop_dataspace\n", + "2024-06-20 09:40:25,191 eodag.core [INFO ] Iterate search over multiple pages: page #1\n", + "2024-06-20 09:40:25,191 eodag.search.base [INFO ] cop_dataspace is configured with default sorting by 'startTimeFromAscendingNode' in ascending order\n", + "2024-06-20 09:40:25,193 eodag.search.qssearch [INFO ] Sending search request: https://catalogue.dataspace.copernicus.eu/odata/v1/Products?$filter=Collection/Name%20eq%20%27SENTINEL-2%27%20and%20Attributes/OData.CSC.StringAttribute/any%28att:att/Name%20eq%20%27productType%27%20and%20att/OData.CSC.StringAttribute/Value%20eq%20%27S2MSI1C%27%29%20and%20contains%28Name%2C%27S2B_MSIL1C_20210328T103629_N0500_R008_T31TDH_20230602T033834%27%29&$orderby=ContentDate/Start%20asc&$top=1000&$skip=0&$expand=Attributes&$expand=Assets\n" + ] + }, { "data": { "text/plain": [ - "['LANDSAT_C2L1',\n", - " 'LANDSAT_C2L2',\n", - " 'LANDSAT_C2L2ALB_BT',\n", - " 'LANDSAT_C2L2ALB_SR',\n", - " 'LANDSAT_C2L2ALB_ST',\n", - " 'LANDSAT_C2L2ALB_TA',\n", - " 'LANDSAT_C2L2_SR',\n", - " 'LANDSAT_C2L2_ST',\n", - " 'LANDSAT_ETM_C2L1',\n", - " 'LANDSAT_ETM_C2L2',\n", - " 'LANDSAT_TM_C2L1',\n", - " 'LANDSAT_TM_C2L2']" + "(SearchResult([EOProduct(id=S2B_MSIL1C_20210328T103629_N0500_R008_T31TDH_20230602T033834, provider=cop_dataspace)]),\n", + " 1)" ] }, - "execution_count": 47, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "dag.guess_product_type(keywords=\"LANDSAT* collection2\")" + "one_product_cop_dataspace = dag.search(id=product_id, productType=\"S2_MSI_L1C\", provider=\"cop_dataspace\")\n", + "one_product_cop_dataspace, one_product_cop_dataspace.number_matched" ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "In the previous request we made use of the whoosh query language which can be used to do complex text search. It supports the boolean operators AND, OR and NOT to combine the search terms. If a space is given between two words as in the example above, this corresponds to the operator AND. Brackets '()' can also be used. The example above also shows the use of the wildcard operator '*' which can represent any numer of characters. The wildcard operator '?' always represents only one character. It is also possible to match a range of terms by using square brackets '[]' and TO, e.g. [A TO D] will match all words in the lexical range between A and D. Below you can find some examples for the different operators." + "#### `sortBy`" ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "dag.guess_product_type(platform=\"LANDSAT OR SENTINEL1\")" - ] - }, - { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "returns all product types where the platform is either LANDSAT or SENTINEL1:\n", - "\n", - "['L57_REFLECTANCE', 'LANDSAT_C2L1', 'LANDSAT_C2L2', 'LANDSAT_C2L2ALB_BT', 'LANDSAT_C2L2ALB_SR', 'LANDSAT_C2L2ALB_ST', 'LANDSAT_C2L2ALB_TA', 'LANDSAT_C2L2_SR', 'LANDSAT_C2L2_ST', 'LANDSAT_ETM_C1', 'LANDSAT_ETM_C2L1', 'LANDSAT_ETM_C2L2', 'LANDSAT_TM_C1', 'LANDSAT_TM_C2L1', 'LANDSAT_TM_C2L2', 'S1_SAR_GRD', 'S1_SAR_OCN', 'S1_SAR_RAW', 'S1_SAR_SLC']" + "EO products can be sorted by metadata that the provider used supports as sorting parameters (see the [available_sortables()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.available_sortables) method) in the wanted sorting order (`ASC`|`DESC`) by passing the `sortBy` kwarg. If `sortBy` is not passed but the provider has a default sorting parameter, the sort is realized with it. If the number of sorting parameters exceeds the maximum allowed for the provider or if the provider does not support the sorting feature or at least one sorting parameter, an error is returned." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 51, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-06-20 09:40:36,018 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: cop_dataspace\n", + "2024-06-20 09:40:36,020 eodag.search.base [INFO ] cop_dataspace is configured with default sorting by 'startTimeFromAscendingNode' in ascending order\n", + "2024-06-20 09:40:36,024 eodag.search.qssearch [INFO ] Sending search request: https://catalogue.dataspace.copernicus.eu/odata/v1/Products?$filter=Collection/Name%20eq%20%27SENTINEL-2%27%20and%20OData.CSC.Intersects%28area=geography%27SRID=4326%3BPOLYGON%20%28%281.0000%2043.0000%2C%201.0000%2044.0000%2C%202.0000%2044.0000%2C%202.0000%2043.0000%2C%201.0000%2043.0000%29%29%27%29%20and%20Attributes/OData.CSC.StringAttribute/any%28att:att/Name%20eq%20%27productType%27%20and%20att/OData.CSC.StringAttribute/Value%20eq%20%27S2MSI1C%27%29%20and%20ContentDate/Start%20lt%202021-03-31T00:00:00.000Z%20and%20ContentDate/End%20gt%202021-03-01T00:00:00.000Z&$orderby=ContentDate/Start%20asc&$top=20&$skip=0&$expand=Attributes&$expand=Assets\n", + "2024-06-20 09:40:44,585 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: cop_dataspace\n", + "2024-06-20 09:40:44,588 eodag.search.qssearch [INFO ] Sending search request: https://catalogue.dataspace.copernicus.eu/odata/v1/Products?$filter=Collection/Name%20eq%20%27SENTINEL-2%27%20and%20OData.CSC.Intersects%28area=geography%27SRID=4326%3BPOLYGON%20%28%281.0000%2043.0000%2C%201.0000%2044.0000%2C%202.0000%2044.0000%2C%202.0000%2043.0000%2C%201.0000%2043.0000%29%29%27%29%20and%20Attributes/OData.CSC.StringAttribute/any%28att:att/Name%20eq%20%27productType%27%20and%20att/OData.CSC.StringAttribute/Value%20eq%20%27S2MSI1C%27%29%20and%20ContentDate/Start%20lt%202021-03-31T00:00:00.000Z%20and%20ContentDate/End%20gt%202021-03-01T00:00:00.000Z&$orderby=ContentDate/Start%20desc&$top=20&$skip=0&$expand=Attributes&$expand=Assets\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The start time of the first returned product is later than or equal to that of\n", + "the first returned product in the default search which sorts by start date\n", + "in ascending order by default: True\n" + ] + } + ], "source": [ - "dag.guess_product_type(keywords=\"(LANDSAT AND collection2) OR SAR\")" + "sorted_by_start_date_in_asc_order_products = dag.search(\n", + " provider=\"cop_dataspace\",\n", + " **default_search_criteria\n", + ")\n", + "sorted_by_start_date_in_desc_order_products = dag.search(\n", + " provider=\"cop_dataspace\",\n", + " sortBy=[(\"startTimeFromAscendingNode\", \"DESC\")],\n", + " **default_search_criteria\n", + ")\n", + "print(\n", + " \"The start time of the first returned product is later than or equal to that \"\n", + " \"of\\nthe first returned product in the default search which sorts by start \"\n", + " \"date\\nin ascending order by default:\",\n", + " sorted_by_start_date_in_desc_order_products[0].properties['startTimeFromAscendingNode'] \\\n", + " >= \\\n", + " sorted_by_start_date_in_asc_order_products[0].properties['startTimeFromAscendingNode']\n", + ")" ] }, { @@ -2137,18 +2201,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "returns all product types which contain either the keywords LANDSAT and collection2 or the keyword SAR:\n", - "\n", - "['LANDSAT_C2L1', 'LANDSAT_C2L2', 'LANDSAT_C2L2ALB_BT', 'LANDSAT_C2L2ALB_SR', 'LANDSAT_C2L2ALB_ST', 'LANDSAT_C2L2ALB_TA', 'LANDSAT_C2L2_SR', 'LANDSAT_C2L2_ST', 'LANDSAT_ETM_C2L1', 'LANDSAT_ETM_C2L2', 'LANDSAT_TM_C2L1', 'LANDSAT_TM_C2L2', 'S1_SAR_GRD', 'S1_SAR_OCN', 'S1_SAR_RAW', 'S1_SAR_SLC']" + "#### Extra query parameters" ] }, { - "cell_type": "code", - "execution_count": null, + "attachments": {}, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "dag.guess_product_type(platformSerialIdentifier=\"L?\")" + "The search methods accept any additional query parameter passed as kwargs. Some of them may already be known to `eodag` and be converted in a correct way." ] }, { @@ -2156,18 +2217,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "returns all product types where the platformSerialIdentifier is composed of 'L' and one other character:\n", + "
\n", "\n", - "['L57_REFLECTANCE', 'L8_OLI_TIRS_C1L1', 'L8_REFLECTANCE', 'LANDSAT_C2L1', 'LANDSAT_C2L2', 'LANDSAT_C2L2ALB_BT', 'LANDSAT_C2L2ALB_SR', 'LANDSAT_C2L2ALB_ST', 'LANDSAT_C2L2ALB_TA', 'LANDSAT_C2L2_SR', 'LANDSAT_C2L2_ST', 'LANDSAT_ETM_C1', 'LANDSAT_ETM_C2L1', 'LANDSAT_ETM_C2L2', 'LANDSAT_TM_C1', 'LANDSAT_TM_C2L1', 'LANDSAT_TM_C2L2']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "dag.guess_product_type(platform=\"[SENTINEL1 TO SENTINEL3]\")" + "Warning\n", + "\n", + "This feature is intended for advanced users.\n", + "\n", + "
" ] }, { @@ -2175,9 +2231,32 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "returns all product types where the platform is SENTINEL1, SENTINEL2 or SENTINEL3:\n", + "Providers generally accept many more request parameters than the basic ones provided by `eodag` by default (geometry and time period). Many of these parameters are actually known to `eodag` and configured internally (see the [providers pre-configuration section](../../add_provider.rst#providers-pre-configuration)). They are just not exposed in the signature of the search methods, not to overload it, and also because these parameters are not necessarily share among all the providers.\n", "\n", - "['S1_SAR_GRD', 'S1_SAR_OCN', 'S1_SAR_RAW', 'S1_SAR_SLC', 'S2_MSI_L1C', 'S2_MSI_L2A', 'S2_MSI_L2A_COG', 'S2_MSI_L2A_MAJA', 'S2_MSI_L2B_MAJA_SNOW', 'S2_MSI_L2B_MAJA_WATER', 'S2_MSI_L3A_WASP', 'S3_EFR', 'S3_ERR', 'S3_LAN', 'S3_OLCI_L2LFR', 'S3_OLCI_L2LRR', 'S3_OLCI_L2WFR', 'S3_OLCI_L2WRR', 'S3_RAC', 'S3_SLSTR_L1RBT', 'S3_SLSTR_L2AOD', 'S3_SLSTR_L2FRP', 'S3_SLSTR_L2LST', 'S3_SLSTR_L2WST', 'S3_SRA', 'S3_SRA_A', 'S3_SRA_BS', 'S3_SY_AOD', 'S3_SY_SYN', 'S3_SY_V10', 'S3_SY_VG1', 'S3_SY_VGP', 'S3_WAT']" + "A common parameter used when searching for EO products is the percentage of cloud cover. *PEPS* for instance accepts a `cloudCover` parameter. `eodag` knows how to transform it in a way that is adapted to *PEPS*." + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-06-20 09:43:12,105 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", + "2024-06-20 09:43:12,108 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?cloudCover=[0,10]&startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=20&page=1\n", + "2024-06-20 09:43:13,010 eodag.core [INFO ] Found 11 result(s) on provider 'peps'\n" + ] + } + ], + "source": [ + "products = dag.search(\n", + " cloudCover=10, # cloud cover Less than 10\n", + " count=True,\n", + " **default_search_criteria\n", + ")" ] }, { @@ -2185,16 +2264,37 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can also pass several parameters at the same time, e.g.:" + "It is possible to check that the search returned products than have a cloud cover less than 10%." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 54, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[0,\n", + " 0.332726867187601,\n", + " 3.4506936264591905,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 7.062549162254081,\n", + " 2.06458837230135]" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "dag.guess_product_type(platform=\"LANDSAT\", platformSerialIdentifier=\"L1\")" + "[p.properties[\"cloudCover\"] for p in products]" ] }, { @@ -2202,21 +2302,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "['LANDSAT_C2L1', \n", - "'L57_REFLECTANCE', \n", - "'LANDSAT_C2L2', \n", - "'LANDSAT_C2L2ALB_BT', \n", - "'LANDSAT_C2L2ALB_SR', \n", - "'LANDSAT_C2L2ALB_ST', \n", - "'LANDSAT_C2L2ALB_TA', \n", - "'LANDSAT_C2L2_SR', \n", - "'LANDSAT_C2L2_ST', \n", - "'LANDSAT_ETM_C1', \n", - "'LANDSAT_ETM_C2L1', \n", - "'LANDSAT_ETM_C2L2', \n", - "'LANDSAT_TM_C1', \n", - "'LANDSAT_TM_C2L1', \n", - "'LANDSAT_TM_C2L2']" + "Having a closer look at the URL displayed in the logs above, it can be observed that `cloudCover=10` was actually converted by `eodag` to the query string `cloudCover=[0,10]`. This proves that `eodag` indeed knows about this parameter and how to adapt it for *PEPS*." ] }, { @@ -2224,7 +2310,30 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The product types in the result are ordered by how well they match the criteria. In the example above only the first product type (LANDSAT_C2L1) matches the second parameter (platformSerialIdentifier=\"L1\"), all other product types only match the first criterion. Therefore, it is usually best to use the first product type in the list as it will be the one that fits best." + "Query parameters unknown to `eodag` are also propagated until they are directly requested to the provider, albeit as is." + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-06-20 09:43:38,011 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", + "2024-06-20 09:43:38,015 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?random_parameter=random_value&startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=20&page=1\n", + "2024-06-20 09:43:39,353 eodag.core [INFO ] Found 48 result(s) on provider 'peps'\n" + ] + } + ], + "source": [ + "products = dag.search(\n", + " random_parameter=\"random_value\",\n", + " count=True,\n", + " **default_search_criteria\n", + ")" ] }, { @@ -2232,267 +2341,635 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If a search is made without specifying `productType` but hints are passed with following supported kwargs, `guess_product_type()` will internally be used to get the best matching product type." + "The logs above show that the random kwarg passed to the [search()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.search) method was indeed propagated to the request made to *PEPS*. It happens that *PEPS* accept unsupported parameters and still returned products, another provider might just have sent an error." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Guess a product type" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`eodag` has an internal product type catalog which stores a number of metadata for each product type (see [this page](../../getting_started_guide/product_types.rst) for more information). It is actually possible to search for products by using some of these metadata. In that case, `eodag` will query its own catalog and use **the product type that best matches the query** among the available product types (i.e. all product types offered by providers where the necessary credentials are provided). The supported parameters are:\n", + "\n", + "* `free_text`: *search applied to all of the following fields*\n", + "* `instrument` (e.g. *MSI*)\n", + "* `platform` (e.g. *SENTINEL2*)\n", + "* `platformSerialIdentifier` (e.g. *S2A*)\n", + "* `processingLevel` (e.g. *L1*)\n", + "* `sensorType` (e.g. *OPTICAL*)\n", + "* `keywords` (e.g. *SENTINEL2 L1C SAFE*), which is case insensitive and ignores `-` or `_` characters\n", + "* `abstract` (e.g. *\"Level-1C product is composed of 100x100 km2\"*), which is case insensitive\n", + "* `title` (e.g. *SENTINEL2 Level-1C*), which is case insensitive" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For example, if we call the method with \"Sentinel\", all the product having one off their searchable (described just above) field matching \"Sentinel\" (case insensitive) will be returned." ] }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'start': '2021-03-01',\n", - " 'end': '2021-03-31',\n", - " 'geom': {'lonmin': 1, 'latmin': 43, 'lonmax': 2, 'latmax': 44},\n", - " 'instrument': 'MSI',\n", - " 'platform': 'SENTINEL2',\n", - " 'platformSerialIdentifier': 'S2A',\n", - " 'sensorType': 'OPTICAL'}" + "['S3_SRA_1B_BC005',\n", + " 'S5P_L2_CLOUD',\n", + " 'S3_EFR_BC002',\n", + " 'S5P_L2_NO2',\n", + " 'S5P_L2_CO',\n", + " 'S3_WAT_BC005',\n", + " 'S5P_L2_IR_ALL',\n", + " 'S3_SRA_1A_BC005',\n", + " 'S3_SLSTR_L1RBT_BC003',\n", + " 'S3_SRA_BS_BC005',\n", + " 'S3_ERR_BC002',\n", + " 'S5P_L2_CH4',\n", + " 'S5P_L1B_RA_BD1',\n", + " 'S5P_L1B_RA_BD2',\n", + " 'S5P_L1B_RA_BD3',\n", + " 'S5P_L1B_RA_BD4',\n", + " 'S5P_L1B_RA_BD5',\n", + " 'S5P_L1B_RA_BD6',\n", + " 'S5P_L1B_RA_BD7',\n", + " 'S5P_L1B_RA_BD8',\n", + " 'S5P_L1B_IR_ALL',\n", + " 'S3_SRA',\n", + " 'S3_LAN_SI',\n", + " 'S3_SRA_1A_BC004',\n", + " 'S3_SRA_1B_BC004',\n", + " 'S3_ERR',\n", + " 'S3_LAN_LI',\n", + " 'S1_SAR_RAW',\n", + " 'S3_WAT',\n", + " 'S2_MSI_L2A',\n", + " 'S3_SLSTR_L2WST_BC003',\n", + " 'S3_EFR',\n", + " 'S3_SLSTR_L1RBT_BC004',\n", + " 'S3_RAC',\n", + " 'S3_LAN_HY',\n", + " 'S3_SRA_BS_BC004',\n", + " 'S1_SAR_SLC',\n", + " 'S2_MSI_L2AP',\n", + " 'S3_OLCI_L2LFR',\n", + " 'S3_OLCI_L2LRR',\n", + " 'S3_OLCI_L2WFR',\n", + " 'S3_OLCI_L2WRR',\n", + " 'S3_OLCI_L2WFR_BC003',\n", + " 'S5P_L2_HCHO',\n", + " 'S5P_L2_O3',\n", + " 'S1_SAR_GRD',\n", + " 'S2_MSI_L1C',\n", + " 'S3_WAT_BC004',\n", + " 'S5P_L2_O3_PR',\n", + " 'S5P_L2_O3_TCL',\n", + " 'S5P_L2_SO2',\n", + " 'S1_SAR_OCN',\n", + " 'S2_MSI_L2A_MAJA',\n", + " 'S2_MSI_L2B_MAJA_SNOW',\n", + " 'S5P_L2_AER_AI',\n", + " 'S5P_L2_AER_LH',\n", + " 'S5P_L2_NP_BD3',\n", + " 'S5P_L2_NP_BD6',\n", + " 'S5P_L2_NP_BD7',\n", + " 'S5P_L1B_IR_SIR',\n", + " 'S5P_L1B_IR_UVN',\n", + " 'L8_REFLECTANCE',\n", + " 'MO_WAVE_GLO_PHY_SWH_L3_NRT_014_001',\n", + " 'MO_WAVE_GLO_PHY_SWH_L4_NRT_014_003',\n", + " 'EEA_DAILY_VI',\n", + " 'MO_SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_006',\n", + " 'MO_WAVE_GLO_WAV_L3_SPC_NRT_OBSERVATIONS_014_002',\n", + " 'MO_GLOBAL_MULTIYEAR_WAV_001_032',\n", + " 'S2_MSI_L2A_COG',\n", + " 'S2_MSI_L2B_MAJA_WATER',\n", + " 'S2_MSI_L3A_WASP',\n", + " 'S3_LAN',\n", + " 'S3_OLCI_L2WRR_BC003',\n", + " 'S3_SLSTR_L1RBT',\n", + " 'S3_SLSTR_L2',\n", + " 'S3_SLSTR_L2AOD',\n", + " 'S3_SLSTR_L2FRP',\n", + " 'S3_SLSTR_L2LST',\n", + " 'S3_SLSTR_L2WST',\n", + " 'S3_SRA_A',\n", + " 'S3_SRA_BS',\n", + " 'S3_SY_AOD',\n", + " 'S3_SY_SYN',\n", + " 'S3_SY_V10',\n", + " 'S3_SY_VG1',\n", + " 'S3_SY_VGP']" ] }, - "execution_count": 48, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "guess_search_criteria = default_search_criteria.copy()\n", - "del guess_search_criteria[\"productType\"]\n", - "guess_search_criteria.update(\n", - " instrument=\"MSI\",\n", - " platform=\"SENTINEL2\",\n", - " platformSerialIdentifier=\"S2A\",\n", - " sensorType=\"OPTICAL\",\n", - ")\n", - "guess_search_criteria" + "# doing this\n", + "dag.guess_product_type(\"Sentinel\")\n", + "# is equivalent as doing that\n", + "dag.guess_product_type(free_text=\"Sentinel\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, let say we want only the product types whith the platform being \"SENTINEL1\":" ] }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'S2_MSI_L1C'" + "['S1_SAR_GRD', 'S1_SAR_OCN', 'S1_SAR_RAW', 'S1_SAR_SLC']" ] }, - "execution_count": 49, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "dag.guess_product_type(**guess_search_criteria)[0]" + "dag.guess_product_type(platform=\"SENTINEL1\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By passing the following argument we can get all collections that contain the keyword collection2 and a keyword that starts with \"LANDSAT\"." ] }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 59, "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-01-13 11:09:49,233 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", - "2023-01-13 11:09:49,235 eodag.plugins.search.qssearch [INFO ] Sending count request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=1&page=1\n", - "2023-01-13 11:09:49,743 eodag.plugins.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=20&page=1\n", - "2023-01-13 11:09:50,514 eodag.core [INFO ] Found 48 result(s) on provider 'peps'\n" - ] + "data": { + "text/plain": [ + "['L8_OLI_TIRS_C1L1',\n", + " 'L8_REFLECTANCE',\n", + " 'LANDSAT_C2L1',\n", + " 'LANDSAT_C2L2',\n", + " 'LANDSAT_C2L2ALB_BT',\n", + " 'LANDSAT_C2L2ALB_SR',\n", + " 'LANDSAT_C2L2ALB_ST',\n", + " 'LANDSAT_C2L2ALB_TA',\n", + " 'LANDSAT_C2L2_SR',\n", + " 'LANDSAT_C2L2_ST',\n", + " 'LANDSAT_ETM_C2L1',\n", + " 'LANDSAT_ETM_C2L2',\n", + " 'LANDSAT_TM_C2L1',\n", + " 'LANDSAT_TM_C2L2',\n", + " 'L57_REFLECTANCE',\n", + " 'LANDSAT_ETM_C1',\n", + " 'LANDSAT_TM_C1']" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "products, estimated_total_number = dag.search(**guess_search_criteria)" + "dag.guess_product_type(keywords=\"LANDSAT* collection2\")" ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "`eodag` searches through its metadata catalog and checks which product type corresponds to the given parameters. There is a product type called `S2_MSI_L1C`, for the platform SENTINEL2 with the platformSerialIdentifiers S2A and S2B using the instrument MSI and the sensorType OPTICAL. Thus, all parameters of the product type `S2_MSI_L1C` are matching to the given search criteria and it is chosen to be internally used to search for products. If no product type is matching all the criteria, the one with the most matches is chosen, if several product types match all the given criteria, the first one is chosen." + "In the previous request we made use of the [whoosh query language](https://whoosh.readthedocs.io/en/latest/querylang.html#the-default-query-language) which can be used to do complex text search. It supports the boolean operators `AND`, `OR` and `NOT` to combine the search terms. If a space is given between two words as in the example above, this corresponds to the operator AND. Brackets `()` can also be used. The example above also shows the use of the wildcard operator `*` which can represent any numer of characters. The wildcard operator `?` always represents only one character. It is also possible to match a range of terms by using square brackets `[]` and TO, e.g. `[A TO D]` will match all words in the lexical range between A and D. Below you can find some examples for the different operators." ] }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'S2_MSI_L1C'" + "['L57_REFLECTANCE',\n", + " 'LANDSAT_C2L1',\n", + " 'LANDSAT_C2L2',\n", + " 'LANDSAT_C2L2ALB_BT',\n", + " 'LANDSAT_C2L2ALB_SR',\n", + " 'LANDSAT_C2L2ALB_ST',\n", + " 'LANDSAT_C2L2ALB_TA',\n", + " 'LANDSAT_C2L2_SR',\n", + " 'LANDSAT_C2L2_ST',\n", + " 'LANDSAT_ETM_C1',\n", + " 'LANDSAT_ETM_C2L1',\n", + " 'LANDSAT_ETM_C2L2',\n", + " 'LANDSAT_TM_C1',\n", + " 'LANDSAT_TM_C2L1',\n", + " 'LANDSAT_TM_C2L2',\n", + " 'S1_SAR_GRD',\n", + " 'S1_SAR_OCN',\n", + " 'S1_SAR_RAW',\n", + " 'S1_SAR_SLC']" ] }, - "execution_count": 51, + "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "products[0].product_type" + "dag.guess_product_type(platform=\"LANDSAT OR SENTINEL1\")" ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "#### Extra query parameters" + "returns all product types where the platform is either LANDSAT or SENTINEL1." ] }, { - "attachments": {}, - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 61, "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['LANDSAT_C2L1',\n", + " 'LANDSAT_C2L2',\n", + " 'LANDSAT_C2L2ALB_BT',\n", + " 'LANDSAT_C2L2ALB_SR',\n", + " 'LANDSAT_C2L2ALB_ST',\n", + " 'LANDSAT_C2L2ALB_TA',\n", + " 'LANDSAT_C2L2_SR',\n", + " 'LANDSAT_C2L2_ST',\n", + " 'LANDSAT_ETM_C2L1',\n", + " 'LANDSAT_ETM_C2L2',\n", + " 'LANDSAT_TM_C2L1',\n", + " 'LANDSAT_TM_C2L2',\n", + " 'MO_WAVE_GLO_WAV_L3_SPC_NRT_OBSERVATIONS_014_002',\n", + " 'S1_SAR_GRD',\n", + " 'S1_SAR_OCN',\n", + " 'S1_SAR_RAW',\n", + " 'S1_SAR_SLC']" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "The search methods accept any additional query parameter passed as kwargs. Some of them may already be known to `eodag` and be converted in a correct way." + "dag.guess_product_type(keywords=\"(LANDSAT AND collection2) OR SAR\")" ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "
\n", - "\n", - "Warning\n", - "\n", - "This feature is intended for advanced users.\n", - "\n", - "
" + "returns all product types which contain either the keywords LANDSAT and collection2 or the keyword SAR." + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['CLMS_CORINE',\n", + " 'L57_REFLECTANCE',\n", + " 'L8_OLI_TIRS_C1L1',\n", + " 'L8_REFLECTANCE',\n", + " 'LANDSAT_C2L1',\n", + " 'LANDSAT_C2L2',\n", + " 'LANDSAT_C2L2ALB_BT',\n", + " 'LANDSAT_C2L2ALB_SR',\n", + " 'LANDSAT_C2L2ALB_ST',\n", + " 'LANDSAT_C2L2ALB_TA',\n", + " 'LANDSAT_C2L2_SR',\n", + " 'LANDSAT_C2L2_ST',\n", + " 'LANDSAT_ETM_C1',\n", + " 'LANDSAT_ETM_C2L1',\n", + " 'LANDSAT_ETM_C2L2',\n", + " 'LANDSAT_TM_C1',\n", + " 'LANDSAT_TM_C2L1',\n", + " 'LANDSAT_TM_C2L2']" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dag.guess_product_type(platformSerialIdentifier=\"L?\")" ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "Providers generally accept many more request parameters than the basic ones provided by `eodag` by default (geometry and time period). Many of these parameters are actually known to `eodag` and configured internally (see the [providers pre-configuration section](../../add_provider.rst#providers-pre-configuration)). They are just not exposed in the signature of the search methods, not to overload it, and also because these parameters are not necessarily share among all the providers.\n", - "\n", - "A common parameter used when searching for EO products is the percentage of cloud cover. *PEPS* for instance accepts a `cloudCover` parameter. `eodag` knows how to transform it in a way that is adapted to *PEPS*." + "returns all product types where the platformSerialIdentifier is composed of 'L' and one other character." ] }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 63, "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-01-13 11:10:05,660 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", - "2023-01-13 11:10:05,664 eodag.plugins.search.qssearch [INFO ] Sending count request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?cloudCover=[0,10]&startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=1&page=1\n", - "2023-01-13 11:10:06,223 eodag.plugins.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?cloudCover=[0,10]&startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=20&page=1\n", - "2023-01-13 11:10:06,922 eodag.core [INFO ] Found 10 result(s) on provider 'peps'\n" - ] + "data": { + "text/plain": [ + "['S1_SAR_GRD',\n", + " 'S1_SAR_OCN',\n", + " 'S1_SAR_RAW',\n", + " 'S1_SAR_SLC',\n", + " 'S2_MSI_L1C',\n", + " 'S2_MSI_L2A',\n", + " 'S2_MSI_L2AP',\n", + " 'S2_MSI_L2A_COG',\n", + " 'S2_MSI_L2A_MAJA',\n", + " 'S2_MSI_L2B_MAJA_SNOW',\n", + " 'S2_MSI_L2B_MAJA_WATER',\n", + " 'S2_MSI_L3A_WASP',\n", + " 'S3_EFR',\n", + " 'S3_EFR_BC002',\n", + " 'S3_ERR',\n", + " 'S3_ERR_BC002',\n", + " 'S3_LAN',\n", + " 'S3_LAN_HY',\n", + " 'S3_LAN_LI',\n", + " 'S3_LAN_SI',\n", + " 'S3_OLCI_L2LFR',\n", + " 'S3_OLCI_L2LRR',\n", + " 'S3_OLCI_L2WFR',\n", + " 'S3_OLCI_L2WFR_BC003',\n", + " 'S3_OLCI_L2WRR',\n", + " 'S3_OLCI_L2WRR_BC003',\n", + " 'S3_RAC',\n", + " 'S3_SLSTR_L1RBT',\n", + " 'S3_SLSTR_L1RBT_BC003',\n", + " 'S3_SLSTR_L1RBT_BC004',\n", + " 'S3_SLSTR_L2',\n", + " 'S3_SLSTR_L2AOD',\n", + " 'S3_SLSTR_L2FRP',\n", + " 'S3_SLSTR_L2LST',\n", + " 'S3_SLSTR_L2WST',\n", + " 'S3_SLSTR_L2WST_BC003',\n", + " 'S3_SRA',\n", + " 'S3_SRA_1A_BC004',\n", + " 'S3_SRA_1A_BC005',\n", + " 'S3_SRA_1B_BC004',\n", + " 'S3_SRA_1B_BC005',\n", + " 'S3_SRA_A',\n", + " 'S3_SRA_BS',\n", + " 'S3_SRA_BS_BC004',\n", + " 'S3_SRA_BS_BC005',\n", + " 'S3_SY_AOD',\n", + " 'S3_SY_SYN',\n", + " 'S3_SY_V10',\n", + " 'S3_SY_VG1',\n", + " 'S3_SY_VGP',\n", + " 'S3_WAT',\n", + " 'S3_WAT_BC004',\n", + " 'S3_WAT_BC005']" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "products, estimated_total_number = dag.search(\n", - " cloudCover=10, # cloud cover Less than 10\n", - " **default_search_criteria\n", - ")" + "dag.guess_product_type(platform=\"[SENTINEL1 TO SENTINEL3]\")" ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "It is possible to check that the search returned products than have a cloud cover less than 10%." + "returns all product types where the platform is SENTINEL1, SENTINEL2 or SENTINEL3." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also pass several parameters at the same time, e.g.:" ] }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[0, 7.7926, 1.5388000000000002, 0.0185, 0, 0, 4.4443, 1.7617, 6.8998, 0]" + "['LANDSAT_C2L1',\n", + " 'L57_REFLECTANCE',\n", + " 'LANDSAT_C2L2',\n", + " 'LANDSAT_C2L2ALB_BT',\n", + " 'LANDSAT_C2L2ALB_SR',\n", + " 'LANDSAT_C2L2ALB_ST',\n", + " 'LANDSAT_C2L2ALB_TA',\n", + " 'LANDSAT_C2L2_SR',\n", + " 'LANDSAT_C2L2_ST',\n", + " 'LANDSAT_ETM_C1',\n", + " 'LANDSAT_ETM_C2L1',\n", + " 'LANDSAT_ETM_C2L2',\n", + " 'LANDSAT_TM_C1',\n", + " 'LANDSAT_TM_C2L1',\n", + " 'LANDSAT_TM_C2L2']" ] }, - "execution_count": 53, + "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "[p.properties[\"cloudCover\"] for p in products]" + "dag.guess_product_type(platform=\"LANDSAT\", platformSerialIdentifier=\"L1\")" ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "Having a closer look at the URL displayed in the logs above, it can be observed that `cloudCover=10` was actually converted by `eodag` to the query string `cloudCover=[0,10]`. This proves that `eodag` indeed knows about this parameter and how to adapt it for *PEPS*." + "The product types in the result are ordered by how well they match the criteria. In the example above only the first product type (LANDSAT_C2L1) matches the second parameter (platformSerialIdentifier=\"L1\"), all other product types only match the first criterion. Therefore, it is usually best to use the first product type in the list as it will be the one that fits best." ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "Query parameters unknown to `eodag` are also propagated until they are directly requested to the provider, albeit as is." + "Per parameter, guesses are joined using a `UNION` by default (`intersect=False`). This can also be changed to an intersection:" ] }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['LANDSAT_C2L1']" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dag.guess_product_type(platform=\"LANDSAT\", platformSerialIdentifier=\"L1\", intersect=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If a search is made without specifying `productType` but hints are passed with following supported kwargs, `guess_product_type()` will internally be used to get the best matching product type." + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'start': '2021-03-01',\n", + " 'end': '2021-03-31',\n", + " 'geom': {'lonmin': 1, 'latmin': 43, 'lonmax': 2, 'latmax': 44},\n", + " 'instrument': 'MSI',\n", + " 'platform': 'SENTINEL2',\n", + " 'platformSerialIdentifier': 'S2A',\n", + " 'sensorType': 'OPTICAL'}" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "guess_search_criteria = default_search_criteria.copy()\n", + "del guess_search_criteria[\"productType\"]\n", + "guess_search_criteria.update(\n", + " instrument=\"MSI\",\n", + " platform=\"SENTINEL2\",\n", + " platformSerialIdentifier=\"S2A\",\n", + " sensorType=\"OPTICAL\",\n", + ")\n", + "guess_search_criteria" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'S2_MSI_L1C'" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dag.guess_product_type(**guess_search_criteria)[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 69, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "2023-01-13 11:10:20,091 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", - "2023-01-13 11:10:20,094 eodag.plugins.search.qssearch [INFO ] Sending count request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?random_parameter=random_value&startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=1&page=1\n", - "2023-01-13 11:10:20,543 eodag.plugins.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?random_parameter=random_value&startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=20&page=1\n", - "2023-01-13 11:10:21,423 eodag.core [INFO ] Found 48 result(s) on provider 'peps'\n" + "2024-06-20 09:44:56,194 eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", + "2024-06-20 09:44:56,196 eodag.search.qssearch [INFO ] Sending search request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=20&page=1\n", + "2024-06-20 09:44:57,549 eodag.core [INFO ] Found 48 result(s) on provider 'peps'\n" ] } ], "source": [ - "products, estimated_total_number = dag.search(\n", - " random_parameter=\"random_value\",\n", - " **default_search_criteria\n", - ")" + "products = dag.search(count=True, **guess_search_criteria)" ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "The logs above show that the random kwarg passed to the [search()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.search) method was indeed propagated to the request made to *PEPS*. It happens that *PEPS* accept unsupported parameters and still returned products, another provider might just have sent an error." + "`eodag` searches through its metadata catalog and checks which product type corresponds to the given parameters. There is a product type called `S2_MSI_L1C`, for the platform SENTINEL2 with the platformSerialIdentifiers S2A and S2B using the instrument MSI and the sensorType OPTICAL. Thus, all parameters of the product type `S2_MSI_L1C` are matching to the given search criteria and it is chosen to be internally used to search for products. If no product type is matching all the criteria, the one with the most matches is chosen, if several product types match all the given criteria, the first one is chosen." + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'S2_MSI_L1C'" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "products[0].product_type" ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Fallback in case of error\n", "\n", - "Usually, search is performed on the provider with the highest priority. If the request to this provider fails, i.e. if an error is returned (for example because the provider is currently unavailable) or if no results are returned, a request to the the provider with the next highest priority offering the desired product type will be attempted. In this case a warning message will be shown in the logs. If the request fails for all providers offering the desired product type, an error message will be returned." + "Usually, search is performed on the provider with the highest priority. If the request to this provider fails, i.e. if an error is returned (for example because the provider is currently unavailable) or if no results are returned, a request to the the provider with the next highest priority offering the desired product type will be attempted. In this case a warning message will be shown in the logs. If the request fails for all providers offering the desired product type, if at least one error occured during the fallback, an error will be raised, otherwise only an error message will be returned." ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ + "
\n",
     "2023-07-03 13:38:24,041 eodag.core  [INFO] (core) No result from provider 'peps' due to an error during search. Raise verbosity of log messages for details\n",
-    "2023-07-03 13:38:24,041 eodag.core  [WARNING] (core) No result could be obtained from provider peps, we will try to get the data from another provider"
+    "2023-07-03 13:38:24,041 eodag.core  [WARNING] (core) No result could be obtained from provider peps, we will try to get the data from another provider\n",
+    "
" ] }, { @@ -2513,20 +2990,20 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'productType': typing.Annotated[str, FieldInfo(annotation=NoneType, required=True)],\n", - " 'id': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'start': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='startTimeFromAscendingNode', alias_priority=2)],\n", - " 'end': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='completionTimeFromAscendingNode', alias_priority=2)],\n", - " 'geom': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='geometry', alias_priority=2)]}" + " 'id': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'start': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='startTimeFromAscendingNode', alias_priority=2)],\n", + " 'end': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='completionTimeFromAscendingNode', alias_priority=2)],\n", + " 'geom': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='geometry', alias_priority=2)]}" ] }, - "execution_count": 2, + "execution_count": 72, "metadata": {}, "output_type": "execute_result" } @@ -2544,26 +3021,31 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 73, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-06-20 09:46:00,008 eodag.search.qssearch [INFO ] Fetching queryables: https://hda.data.destination-earth.eu/stac/search/../collections/EO.ECMWF.DAT.CAMS_SOLAR_RADIATION_TIMESERIES/queryables\n" + ] + }, { "data": { "text/plain": [ "{'sky_type': typing.Annotated[typing.Literal['clear', 'observed_cloud'], FieldInfo(annotation=NoneType, required=False, default='clear')],\n", - " 'time_step': typing.Annotated[typing.Literal['15minute', '1day', '1hour', '1minute', '1month'], FieldInfo(annotation=NoneType, required=False, default='1minute')],\n", " 'time_reference': typing.Annotated[typing.Literal['true_solar_time', 'universal_time'], FieldInfo(annotation=NoneType, required=False, default='true_solar_time')],\n", - " 'location': typing.Annotated[dict, FieldInfo(annotation=NoneType, required=False, default={'latitude': 0, 'longitude': 0})],\n", " 'altitude': typing.Annotated[int, FieldInfo(annotation=NoneType, required=False, default=-999)],\n", " 'format': typing.Annotated[typing.Literal['csv', 'netcdf'], FieldInfo(annotation=NoneType, required=False, default='csv')],\n", - " 'end': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='completionTimeFromAscendingNode', alias_priority=2)],\n", - " 'geom': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='geometry', alias_priority=2)],\n", + " 'end': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='completionTimeFromAscendingNode', alias_priority=2)],\n", " 'productType': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default='CAMS_SOLAR_RADIATION')],\n", - " 'id': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'start': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='startTimeFromAscendingNode', alias_priority=2)]}" + " 'geom': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='geometry', alias_priority=2)],\n", + " 'id': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'start': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='startTimeFromAscendingNode', alias_priority=2)]}" ] }, - "execution_count": 3, + "execution_count": 73, "metadata": {}, "output_type": "execute_result" } @@ -2581,71 +3063,70 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 74, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "2024-02-19 12:01:07,071 eodag.search.qssearch [INFO ] Fetching queryables: https://planetarycomputer.microsoft.com/api/stac/v1/search/../collections/sentinel-1-grd/queryables\n" + "2024-06-20 09:46:11,550 eodag.search.qssearch [INFO ] Fetching queryables: https://planetarycomputer.microsoft.com/api/stac/v1/search/../collections/sentinel-1-grd/queryables\n" ] }, { "data": { "text/plain": [ - "{'id': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'end': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='completionTimeFromAscendingNode', alias_priority=2)],\n", - " 'geom': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='geometry', alias_priority=2)],\n", - " 'platform': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 's1:shape': typing.Annotated[list, FieldInfo(annotation=NoneType, required=False)],\n", - " 'end_datetime': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, title='End datetime', description='End datetime', metadata=[PydanticGeneralMetadata(pattern='(\\\\+00:00|Z)$')])],\n", - " 's1:resolution': typing.Annotated[typing.Literal['full', 'high', 'medium'], FieldInfo(annotation=NoneType, required=False, title='Resolution')],\n", - " 's1:datatake_id': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, title='Datatake ID')],\n", - " 'start_datetime': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, title='Start datetime', description='Start datetime', metadata=[PydanticGeneralMetadata(pattern='(\\\\+00:00|Z)$')])],\n", - " 's1:orbit_source': typing.Annotated[typing.Literal['DOWNLINK', 'POEORB', 'PREORB', 'RESORB'], FieldInfo(annotation=NoneType, required=False, title='Orbit Source')],\n", - " 's1:slice_number': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, title='Slice Number')],\n", - " 's1:total_slices': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, title='Total Slices')],\n", - " 'sar:looks_range': typing.Annotated[int, FieldInfo(annotation=NoneType, required=False, title='Looks range')],\n", - " 'orbitDirection': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'sar:product_type': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, title='Product type')],\n", - " 'sar:looks_azimuth': typing.Annotated[int, FieldInfo(annotation=NoneType, required=False, title='Looks azimuth')],\n", - " 'polarizationChannels': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'dopplerFrequency': typing.Annotated[typing.Optional[float], FieldInfo(annotation=NoneType, required=False)],\n", - " 'sat:absolute_orbit': typing.Annotated[NoneType, FieldInfo(annotation=NoneType, required=False, title='Absolute Orbit', json_schema_extra={'$ref': 'https://stac-extensions.github.io/sat/v1.0.0/schema.json#/definitions/fields/properties/sat:absolute_orbit'})],\n", - " 'orbitNumber': typing.Annotated[typing.Optional[int], FieldInfo(annotation=NoneType, required=False)],\n", - " 's1:processing_level': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False)],\n", - " 'sensorMode': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'sar:center_frequency': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, title='Center Frequency (GHz)')],\n", - " 'sar:resolution_range': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, title='Resolution range (m)')],\n", - " 's1:product_timeliness': typing.Annotated[typing.Literal['Fast-24h', 'NRT-10m', 'NRT-1h', 'NRT-3h', 'Off-line', 'Reprocessing'], FieldInfo(annotation=NoneType, required=False, title='Product Timeliness')],\n", - " 'sar:resolution_azimuth': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, title='Resolution azimuth (m)')],\n", - " 'sar:pixel_spacing_range': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, title='Pixel spacing range (m)')],\n", - " 'sar:observation_direction': typing.Annotated[typing.Literal['left', 'right'], FieldInfo(annotation=NoneType, required=False, title='Antenna pointing direction')],\n", - " 'sar:pixel_spacing_azimuth': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, title='Pixel spacing azimuth (m)')],\n", - " 'sar:looks_equivalent_number': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, title='Equivalent number of looks (ENL)')],\n", - " 's1:instrument_configuration_ID': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False)],\n", - " 'sat:platform_international_designator': typing.Annotated[typing.Literal['0000-000A', '2014-016A', '2016-025A'], FieldInfo(annotation=NoneType, required=False, title='Platform Designation')],\n", + "{'id': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'end': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='completionTimeFromAscendingNode', alias_priority=2)],\n", + " 'geom': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='geometry', alias_priority=2)],\n", + " 'platform': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 's1:shape': typing.Annotated[list, FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'end_datetime': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='End datetime', description='End datetime', metadata=[_PydanticGeneralMetadata(pattern='(\\\\+00:00|Z)$')])],\n", + " 's1:resolution': typing.Annotated[typing.Literal['full', 'high', 'medium'], FieldInfo(annotation=NoneType, required=False, default=None, title='Resolution')],\n", + " 's1:datatake_id': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Datatake ID')],\n", + " 'start_datetime': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Start datetime', description='Start datetime', metadata=[_PydanticGeneralMetadata(pattern='(\\\\+00:00|Z)$')])],\n", + " 's1:orbit_source': typing.Annotated[typing.Literal['DOWNLINK', 'POEORB', 'PREORB', 'RESORB'], FieldInfo(annotation=NoneType, required=False, default=None, title='Orbit Source')],\n", + " 's1:slice_number': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Slice Number')],\n", + " 's1:total_slices': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Total Slices')],\n", + " 'sar:looks_range': typing.Annotated[int, FieldInfo(annotation=NoneType, required=False, default=None, title='Looks range')],\n", + " 'orbitDirection': typing.Annotated[typing.Literal['ascending', 'descending', 'geostationary'], FieldInfo(annotation=NoneType, required=False, default=None, title='Orbit State')],\n", + " 'sar:product_type': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Product type')],\n", + " 'sar:looks_azimuth': typing.Annotated[int, FieldInfo(annotation=NoneType, required=False, default=None, title='Looks azimuth')],\n", + " 'polarizationChannels': typing.Annotated[list, FieldInfo(annotation=NoneType, required=False, default=None, title='Polarizations')],\n", + " 'dopplerFrequency': typing.Annotated[typing.Literal['C', 'K', 'Ka', 'Ku', 'L', 'P', 'S', 'X'], FieldInfo(annotation=NoneType, required=False, default=None, title='Frequency Band')],\n", + " 'sat:absolute_orbit': typing.Annotated[NoneType, FieldInfo(annotation=NoneType, required=False, default=None, title='Absolute Orbit', json_schema_extra={'$ref': 'https://stac-extensions.github.io/sat/v1.0.0/schema.json#/definitions/fields/properties/sat:absolute_orbit'})],\n", + " 'orbitNumber': typing.Annotated[NoneType, FieldInfo(annotation=NoneType, required=False, default=None, title='Relative Orbit', json_schema_extra={'$ref': 'https://stac-extensions.github.io/sat/v1.0.0/schema.json#/definitions/fields/properties/sat:relative_orbit'})],\n", + " 'processingLevel': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'sensorMode': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Instrument Mode')],\n", + " 'sar:center_frequency': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Center Frequency (GHz)')],\n", + " 'sar:resolution_range': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Resolution range (m)')],\n", + " 's1:product_timeliness': typing.Annotated[typing.Literal['Fast-24h', 'NRT-10m', 'NRT-1h', 'NRT-3h', 'Off-line', 'Reprocessing'], FieldInfo(annotation=NoneType, required=False, default=None, title='Product Timeliness')],\n", + " 'sar:resolution_azimuth': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Resolution azimuth (m)')],\n", + " 'sar:pixel_spacing_range': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Pixel spacing range (m)')],\n", + " 'sar:observation_direction': typing.Annotated[typing.Literal['left', 'right'], FieldInfo(annotation=NoneType, required=False, default=None, title='Antenna pointing direction')],\n", + " 'sar:pixel_spacing_azimuth': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Pixel spacing azimuth (m)')],\n", + " 'sar:looks_equivalent_number': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Equivalent number of looks (ENL)')],\n", + " 's1:instrument_configuration_ID': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'sat:platform_international_designator': typing.Annotated[typing.Literal['0000-000A', '2014-016A', '2016-025A'], FieldInfo(annotation=NoneType, required=False, default=None, title='Platform Designation')],\n", " 'productType': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default='S1_SAR_GRD')],\n", - " 'doi': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'platformSerialIdentifier': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'instrument': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'processingLevel': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'resolution': typing.Annotated[typing.Optional[int], FieldInfo(annotation=NoneType, required=False)],\n", - " 'publicationDate': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'cloudCover': typing.Annotated[typing.Optional[typing.Annotated[int, Gt(gt=0), Lt(lt=100)]], FieldInfo(annotation=NoneType, required=False)],\n", - " 'productVersion': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'creationDate': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'modificationDate': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'availabilityTime': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'acquisitionStation': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'acquisitionSubType': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'illuminationAzimuthAngle': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'illuminationElevationAngle': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'start': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='startTimeFromAscendingNode', alias_priority=2)]}" + " 'doi': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'platformSerialIdentifier': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'instrument': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'resolution': typing.Annotated[typing.Optional[int], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'publicationDate': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'cloudCover': typing.Annotated[typing.Optional[typing.Annotated[int, Gt(gt=0), Lt(lt=100)]], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'productVersion': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'creationDate': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'modificationDate': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'availabilityTime': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'acquisitionStation': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'acquisitionSubType': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'illuminationAzimuthAngle': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'illuminationElevationAngle': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'start': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='startTimeFromAscendingNode', alias_priority=2)]}" ] }, - "execution_count": 4, + "execution_count": 74, "metadata": {}, "output_type": "execute_result" } @@ -2663,7 +3144,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 75, "metadata": {}, "outputs": [ { @@ -2676,14 +3157,14 @@ " 'day': typing.Annotated[typing.Literal['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29'], FieldInfo(annotation=NoneType, required=True)],\n", " 'variable': typing.Annotated[typing.Literal['100m_u_component_of_wind', '100m_v_component_of_wind', '10m_u_component_of_neutral_wind', '10m_u_component_of_wind', '10m_v_component_of_neutral_wind', '10m_v_component_of_wind', '10m_wind_gust_since_previous_post_processing', '2m_dewpoint_temperature', '2m_temperature', 'air_density_over_the_oceans', 'angle_of_sub_gridscale_orography', 'anisotropy_of_sub_gridscale_orography', 'benjamin_feir_index', 'boundary_layer_dissipation', 'boundary_layer_height', 'charnock', 'clear_sky_direct_solar_radiation_at_surface', 'cloud_base_height', 'coefficient_of_drag_with_waves', 'convective_available_potential_energy', 'convective_inhibition', 'convective_precipitation', 'convective_rain_rate', 'convective_snowfall', 'convective_snowfall_rate_water_equivalent', 'downward_uv_radiation_at_the_surface', 'duct_base_height', 'eastward_gravity_wave_surface_stress', 'eastward_turbulent_surface_stress', 'evaporation', 'forecast_albedo', 'forecast_logarithm_of_surface_roughness_for_heat', 'forecast_surface_roughness', 'free_convective_velocity_over_the_oceans', 'friction_velocity', 'geopotential', 'gravity_wave_dissipation', 'high_cloud_cover', 'high_vegetation_cover', 'ice_temperature_layer_1', 'ice_temperature_layer_2', 'ice_temperature_layer_3', 'ice_temperature_layer_4', 'instantaneous_10m_wind_gust', 'instantaneous_eastward_turbulent_surface_stress', 'instantaneous_large_scale_surface_precipitation_fraction', 'instantaneous_moisture_flux', 'instantaneous_northward_turbulent_surface_stress', 'instantaneous_surface_sensible_heat_flux', 'k_index', 'lake_bottom_temperature', 'lake_cover', 'lake_depth', 'lake_ice_depth', 'lake_ice_temperature', 'lake_mix_layer_depth', 'lake_mix_layer_temperature', 'lake_shape_factor', 'lake_total_layer_temperature', 'land_sea_mask', 'large_scale_precipitation', 'large_scale_precipitation_fraction', 'large_scale_rain_rate', 'large_scale_snowfall', 'large_scale_snowfall_rate_water_equivalent', 'leaf_area_index_high_vegetation', 'leaf_area_index_low_vegetation', 'low_cloud_cover', 'low_vegetation_cover', 'maximum_2m_temperature_since_previous_post_processing', 'maximum_individual_wave_height', 'maximum_total_precipitation_rate_since_previous_post_processing', 'mean_boundary_layer_dissipation', 'mean_convective_precipitation_rate', 'mean_convective_snowfall_rate', 'mean_direction_of_total_swell', 'mean_direction_of_wind_waves', 'mean_eastward_gravity_wave_surface_stress', 'mean_eastward_turbulent_surface_stress', 'mean_evaporation_rate', 'mean_gravity_wave_dissipation', 'mean_large_scale_precipitation_fraction', 'mean_large_scale_precipitation_rate', 'mean_large_scale_snowfall_rate', 'mean_northward_gravity_wave_surface_stress', 'mean_northward_turbulent_surface_stress', 'mean_period_of_total_swell', 'mean_period_of_wind_waves', 'mean_potential_evaporation_rate', 'mean_runoff_rate', 'mean_sea_level_pressure', 'mean_snow_evaporation_rate', 'mean_snowfall_rate', 'mean_snowmelt_rate', 'mean_square_slope_of_waves', 'mean_sub_surface_runoff_rate', 'mean_surface_direct_short_wave_radiation_flux', 'mean_surface_direct_short_wave_radiation_flux_clear_sky', 'mean_surface_downward_long_wave_radiation_flux', 'mean_surface_downward_long_wave_radiation_flux_clear_sky', 'mean_surface_downward_short_wave_radiation_flux', 'mean_surface_downward_short_wave_radiation_flux_clear_sky', 'mean_surface_downward_uv_radiation_flux', 'mean_surface_latent_heat_flux', 'mean_surface_net_long_wave_radiation_flux', 'mean_surface_net_long_wave_radiation_flux_clear_sky', 'mean_surface_net_short_wave_radiation_flux', 'mean_surface_net_short_wave_radiation_flux_clear_sky', 'mean_surface_runoff_rate', 'mean_surface_sensible_heat_flux', 'mean_top_downward_short_wave_radiation_flux', 'mean_top_net_long_wave_radiation_flux', 'mean_top_net_long_wave_radiation_flux_clear_sky', 'mean_top_net_short_wave_radiation_flux', 'mean_top_net_short_wave_radiation_flux_clear_sky', 'mean_total_precipitation_rate', 'mean_vertical_gradient_of_refractivity_inside_trapping_layer', 'mean_vertically_integrated_moisture_divergence', 'mean_wave_direction', 'mean_wave_direction_of_first_swell_partition', 'mean_wave_direction_of_second_swell_partition', 'mean_wave_direction_of_third_swell_partition', 'mean_wave_period', 'mean_wave_period_based_on_first_moment', 'mean_wave_period_based_on_first_moment_for_swell', 'mean_wave_period_based_on_first_moment_for_wind_waves', 'mean_wave_period_based_on_second_moment_for_swell', 'mean_wave_period_based_on_second_moment_for_wind_waves', 'mean_wave_period_of_first_swell_partition', 'mean_wave_period_of_second_swell_partition', 'mean_wave_period_of_third_swell_partition', 'mean_zero_crossing_wave_period', 'medium_cloud_cover', 'minimum_2m_temperature_since_previous_post_processing', 'minimum_total_precipitation_rate_since_previous_post_processing', 'minimum_vertical_gradient_of_refractivity_inside_trapping_layer', 'model_bathymetry', 'near_ir_albedo_for_diffuse_radiation', 'near_ir_albedo_for_direct_radiation', 'normalized_energy_flux_into_ocean', 'normalized_energy_flux_into_waves', 'normalized_stress_into_ocean', 'northward_gravity_wave_surface_stress', 'northward_turbulent_surface_stress', 'ocean_surface_stress_equivalent_10m_neutral_wind_direction', 'ocean_surface_stress_equivalent_10m_neutral_wind_speed', 'peak_wave_period', 'period_corresponding_to_maximum_individual_wave_height', 'potential_evaporation', 'precipitation_type', 'runoff', 'sea_ice_cover', 'sea_surface_temperature', 'significant_height_of_combined_wind_waves_and_swell', 'significant_height_of_total_swell', 'significant_height_of_wind_waves', 'significant_wave_height_of_first_swell_partition', 'significant_wave_height_of_second_swell_partition', 'significant_wave_height_of_third_swell_partition', 'skin_reservoir_content', 'skin_temperature', 'slope_of_sub_gridscale_orography', 'snow_albedo', 'snow_density', 'snow_depth', 'snow_evaporation', 'snowfall', 'snowmelt', 'soil_temperature_level_1', 'soil_temperature_level_2', 'soil_temperature_level_3', 'soil_temperature_level_4', 'soil_type', 'standard_deviation_of_filtered_subgrid_orography', 'standard_deviation_of_orography', 'sub_surface_runoff', 'surface_latent_heat_flux', 'surface_net_solar_radiation', 'surface_net_solar_radiation_clear_sky', 'surface_net_thermal_radiation', 'surface_net_thermal_radiation_clear_sky', 'surface_pressure', 'surface_runoff', 'surface_sensible_heat_flux', 'surface_solar_radiation_downward_clear_sky', 'surface_solar_radiation_downwards', 'surface_thermal_radiation_downward_clear_sky', 'surface_thermal_radiation_downwards', 'temperature_of_snow_layer', 'toa_incident_solar_radiation', 'top_net_solar_radiation', 'top_net_solar_radiation_clear_sky', 'top_net_thermal_radiation', 'top_net_thermal_radiation_clear_sky', 'total_cloud_cover', 'total_column_cloud_ice_water', 'total_column_cloud_liquid_water', 'total_column_ozone', 'total_column_rain_water', 'total_column_snow_water', 'total_column_supercooled_liquid_water', 'total_column_water', 'total_column_water_vapour', 'total_precipitation', 'total_sky_direct_solar_radiation_at_surface', 'total_totals_index', 'trapping_layer_base_height', 'trapping_layer_top_height', 'type_of_high_vegetation', 'type_of_low_vegetation', 'u_component_stokes_drift', 'uv_visible_albedo_for_diffuse_radiation', 'uv_visible_albedo_for_direct_radiation', 'v_component_stokes_drift', 'vertical_integral_of_divergence_of_cloud_frozen_water_flux', 'vertical_integral_of_divergence_of_cloud_liquid_water_flux', 'vertical_integral_of_divergence_of_geopotential_flux', 'vertical_integral_of_divergence_of_kinetic_energy_flux', 'vertical_integral_of_divergence_of_mass_flux', 'vertical_integral_of_divergence_of_moisture_flux', 'vertical_integral_of_divergence_of_ozone_flux', 'vertical_integral_of_divergence_of_thermal_energy_flux', 'vertical_integral_of_divergence_of_total_energy_flux', 'vertical_integral_of_eastward_cloud_frozen_water_flux', 'vertical_integral_of_eastward_cloud_liquid_water_flux', 'vertical_integral_of_eastward_geopotential_flux', 'vertical_integral_of_eastward_heat_flux', 'vertical_integral_of_eastward_kinetic_energy_flux', 'vertical_integral_of_eastward_mass_flux', 'vertical_integral_of_eastward_ozone_flux', 'vertical_integral_of_eastward_total_energy_flux', 'vertical_integral_of_eastward_water_vapour_flux', 'vertical_integral_of_energy_conversion', 'vertical_integral_of_kinetic_energy', 'vertical_integral_of_mass_of_atmosphere', 'vertical_integral_of_mass_tendency', 'vertical_integral_of_northward_cloud_frozen_water_flux', 'vertical_integral_of_northward_cloud_liquid_water_flux', 'vertical_integral_of_northward_geopotential_flux', 'vertical_integral_of_northward_heat_flux', 'vertical_integral_of_northward_kinetic_energy_flux', 'vertical_integral_of_northward_mass_flux', 'vertical_integral_of_northward_ozone_flux', 'vertical_integral_of_northward_total_energy_flux', 'vertical_integral_of_northward_water_vapour_flux', 'vertical_integral_of_potential_and_internal_energy', 'vertical_integral_of_potential_internal_and_latent_energy', 'vertical_integral_of_temperature', 'vertical_integral_of_thermal_energy', 'vertical_integral_of_total_energy', 'vertically_integrated_moisture_divergence', 'volumetric_soil_water_layer_1', 'volumetric_soil_water_layer_2', 'volumetric_soil_water_layer_3', 'volumetric_soil_water_layer_4', 'wave_spectral_directional_width', 'wave_spectral_directional_width_for_swell', 'wave_spectral_directional_width_for_wind_waves', 'wave_spectral_kurtosis', 'wave_spectral_peakedness', 'wave_spectral_skewness', 'zero_degree_level'], FieldInfo(annotation=NoneType, required=True)],\n", " 'year': typing.Annotated[typing.Literal['1940', '1941', '1942', '1943', '1944', '1945', '1946', '1947', '1948', '1949', '1950', '1951', '1952', '1953', '1954', '1955', '1956', '1957', '1958', '1959', '1960', '1961', '1962', '1963', '1964', '1965', '1966', '1967', '1968', '1969', '1970', '1971', '1972', '1973', '1974', '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982', '1983', '1984', '1985', '1986', '1987', '1988', '1989', '1990', '1991', '1992', '1993', '1994', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021', '2022', '2023', '2024'], FieldInfo(annotation=NoneType, required=True)],\n", - " 'end': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='completionTimeFromAscendingNode', alias_priority=2)],\n", - " 'geom': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='geometry', alias_priority=2)],\n", " 'productType': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default='ERA5_SL')],\n", - " 'id': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'start': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='startTimeFromAscendingNode', alias_priority=2)]}" + " 'end': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='completionTimeFromAscendingNode', alias_priority=2)],\n", + " 'geom': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='geometry', alias_priority=2)],\n", + " 'id': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'start': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='startTimeFromAscendingNode', alias_priority=2)]}" ] }, - "execution_count": 5, + "execution_count": 75, "metadata": {}, "output_type": "execute_result" } @@ -2700,12 +3181,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If default values are defined for a parameter in the configuration, the values of the other parameters will be filtered by this default value if constraints are available. If all possible configurations shall be shown, the default value can be removed by setting it to empty. The example below shows on request in which all default values are used and one where the default for api_product_type is removed." + "If default values are defined for a parameter in the configuration, the values of the other parameters will be filtered by this default value if constraints are available. If all possible configurations shall be shown, the default value can be removed by setting it to empty. The example below shows on request in which all default values are used and one where the default for `api_product_type` is removed." ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 76, "metadata": {}, "outputs": [ { @@ -2715,14 +3196,14 @@ " 'api_product_type': typing.Annotated[typing.Literal['gridded', 'hypsometry', 'vector'], FieldInfo(annotation=NoneType, required=False, default='gridded')],\n", " 'version': typing.Annotated[typing.Literal['6_0'], FieldInfo(annotation=NoneType, required=False, default='6_0')],\n", " 'format': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default='zip')],\n", - " 'end': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='completionTimeFromAscendingNode', alias_priority=2)],\n", - " 'geom': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='geometry', alias_priority=2)],\n", " 'productType': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default='GLACIERS_DIST_RANDOLPH')],\n", - " 'id': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'start': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='startTimeFromAscendingNode', alias_priority=2)]}" + " 'end': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='completionTimeFromAscendingNode', alias_priority=2)],\n", + " 'geom': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='geometry', alias_priority=2)],\n", + " 'id': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'start': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='startTimeFromAscendingNode', alias_priority=2)]}" ] }, - "execution_count": 6, + "execution_count": 76, "metadata": {}, "output_type": "execute_result" } @@ -2736,24 +3217,24 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'variable': typing.Annotated[typing.Literal['glacier_area'], FieldInfo(annotation=NoneType, required=False, default='glacier_area')],\n", - " 'api_product_type': typing.Annotated[typing.Literal['gridded', 'hypsometry', 'vector'], FieldInfo(annotation=NoneType, required=True)],\n", + " 'api_product_type': typing.Annotated[typing.Literal['gridded', 'hypsometry', 'vector'], FieldInfo(annotation=NoneType, required=False, default='gridded')],\n", " 'version': typing.Annotated[typing.Literal['5_0', '6_0'], FieldInfo(annotation=NoneType, required=False, default='6_0')],\n", " 'format': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default='zip')],\n", - " 'end': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='completionTimeFromAscendingNode', alias_priority=2)],\n", - " 'geom': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='geometry', alias_priority=2)],\n", " 'productType': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default='GLACIERS_DIST_RANDOLPH')],\n", - " 'id': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False)],\n", - " 'start': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, alias='startTimeFromAscendingNode', alias_priority=2)]}" + " 'end': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='completionTimeFromAscendingNode', alias_priority=2)],\n", + " 'geom': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='geometry', alias_priority=2)],\n", + " 'id': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None)],\n", + " 'start': typing.Annotated[typing.Optional[str], FieldInfo(annotation=NoneType, required=False, default=None, alias='startTimeFromAscendingNode', alias_priority=2)]}" ] }, - "execution_count": 7, + "execution_count": 77, "metadata": {}, "output_type": "execute_result" } diff --git a/docs/notebooks/api_user_guide/5_serialize_deserialize.ipynb b/docs/notebooks/api_user_guide/5_serialize_deserialize.ipynb index fc2be9f1b..5188add30 100644 --- a/docs/notebooks/api_user_guide/5_serialize_deserialize.ipynb +++ b/docs/notebooks/api_user_guide/5_serialize_deserialize.ipynb @@ -1,46 +1,20 @@ { - "metadata": { - "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.8.6" - }, - "orig_nbformat": 2, - "kernelspec": { - "name": "python3", - "display_name": "Python 3.8.6 64-bit", - "metadata": { - "interpreter": { - "hash": "0cf725079c7d16f2cba0a185a776402bb287255802a557bed9d05e4eed5bfa43" - } - } - } - }, - "nbformat": 4, - "nbformat_minor": 2, "cells": [ { + "cell_type": "markdown", + "metadata": {}, "source": [ "# Serialize/Deserialize" - ], - "cell_type": "markdown", - "metadata": {} + ] }, { + "cell_type": "markdown", + "metadata": {}, "source": [ "The [EODataAccessGateway](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway) class provides methods to save a [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) object to a GeoJSON file or to load a GeoJSON file to a [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult). These methods come in handy to save the state of a search and restore it later.\n", "\n", "The credentials are required in this notebook to download a quicklook from *PEPS*." - ], - "cell_type": "markdown", - "metadata": {} + ] }, { "cell_type": "code", @@ -60,8 +34,8 @@ "metadata": {}, "outputs": [ { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "2021-04-12 23:54:53,617-15s eodag.config [INFO ] Loading user configuration from: /home/maxime/.config/eodag/eodag.yml\n", "2021-04-12 23:54:54,450-15s eodag.core [INFO ] Locations configuration loaded from /home/maxime/.config/eodag/locations.yml\n" @@ -79,18 +53,18 @@ ] }, { + "cell_type": "markdown", + "metadata": {}, "source": [ "## Serialize" - ], - "cell_type": "markdown", - "metadata": {} + ] }, { + "cell_type": "markdown", + "metadata": {}, "source": [ "The method [serialize()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.serialize) allows to save a [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) as a *GeoJSON* file." - ], - "cell_type": "markdown", - "metadata": {} + ] }, { "cell_type": "code", @@ -98,8 +72,8 @@ "metadata": {}, "outputs": [ { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "2021-04-12 23:54:56,405-15s eodag.core [INFO ] Searching product type 'S2_MSI_L1C' on provider: peps\n", "2021-04-12 23:54:56,411-15s eodag.plugins.search.qssearch [INFO ] Sending count request: https://peps.cnes.fr/resto/api/collections/S2ST/search.json?startDate=2021-03-01&completionDate=2021-03-31&geometry=POLYGON ((1.0000 43.0000, 1.0000 44.0000, 2.0000 44.0000, 2.0000 43.0000, 1.0000 43.0000))&productType=S2MSI1C&maxRecords=1&page=1\n", @@ -109,7 +83,7 @@ } ], "source": [ - "search_results, _ = dag.search(\n", + "search_results = dag.search(\n", " productType=\"S2_MSI_L1C\",\n", " start=\"2021-03-01\",\n", " end=\"2021-03-31\",\n", @@ -124,14 +98,14 @@ "metadata": {}, "outputs": [ { - "output_type": "execute_result", "data": { "text/plain": [ "[EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TCJ_20210328T124650, provider=peps), EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TCH_20210328T124650, provider=peps)]" ] }, + "execution_count": 4, "metadata": {}, - "execution_count": 4 + "output_type": "execute_result" } ], "source": [ @@ -139,11 +113,11 @@ ] }, { + "cell_type": "markdown", + "metadata": {}, "source": [ "A folder is created to save the output of this notebook." - ], - "cell_type": "markdown", - "metadata": {} + ] }, { "cell_type": "code", @@ -162,14 +136,14 @@ "metadata": {}, "outputs": [ { - "output_type": "execute_result", "data": { "text/plain": [ "'eodag_workspace_serialize_deserialize/search_results.geojson'" ] }, + "execution_count": 6, "metadata": {}, - "execution_count": 6 + "output_type": "execute_result" } ], "source": [ @@ -182,21 +156,21 @@ ] }, { + "cell_type": "markdown", + "metadata": {}, "source": [ "## Deserialize" - ], - "cell_type": "markdown", - "metadata": {} + ] }, { + "cell_type": "markdown", + "metadata": {}, "source": [ "There are two methods offered by [EODataAccessGateway](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway) to load a search result saved as a GeoJSON:\n", "\n", "* [deserialize()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.deserialize): it simply recreates a [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) and the [EOProduct](../../api_reference/eoproduct.rst#eodag.api.product._product.EOProduct) it contained\n", "* [deserialize_and_register()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.deserialize_and_register): it also recreates a [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) but additionally registers for each [EOProduct](../../api_reference/eoproduct.rst#eodag.api.product._product.EOProduct) the information it requires to download itself" - ], - "cell_type": "markdown", - "metadata": {} + ] }, { "cell_type": "code", @@ -204,14 +178,14 @@ "metadata": {}, "outputs": [ { - "output_type": "execute_result", "data": { "text/plain": [ "[EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TCJ_20210328T124650, provider=peps), EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TCH_20210328T124650, provider=peps)]" ] }, + "execution_count": 7, "metadata": {}, - "execution_count": 7 + "output_type": "execute_result" } ], "source": [ @@ -225,9 +199,9 @@ "metadata": {}, "outputs": [ { - "output_type": "error", "ename": "AttributeError", "evalue": "'NoneType' object has no attribute 'config'", + "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", @@ -242,11 +216,11 @@ ] }, { + "cell_type": "markdown", + "metadata": {}, "source": [ "Trying to download a quicklook from a [SearchResult](../../api_reference/searchresult.rst#eodag.api.search_result.SearchResult) that was loaded with [serialize()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.deserialize) since it doesn't try to configure each product so that it can be downloaded." - ], - "cell_type": "markdown", - "metadata": {} + ] }, { "cell_type": "code", @@ -254,14 +228,14 @@ "metadata": {}, "outputs": [ { - "output_type": "execute_result", "data": { "text/plain": [ "[EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TCJ_20210328T124650, provider=peps), EOProduct(id=S2B_MSIL1C_20210328T103629_N0209_R008_T31TCH_20210328T124650, provider=peps)]" ] }, + "execution_count": 9, "metadata": {}, - "execution_count": 9 + "output_type": "execute_result" } ], "source": [ @@ -275,20 +249,22 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "HBox(children=(HTML(value=''), FloatProgress(value=0.0, layout=Layout(flex='2'), max=15629.0), HTML(value=''))…", "application/vnd.jupyter.widget-view+json": { + "model_id": "ec9f3265372f45aa9ae184916174437b", "version_major": 2, - "version_minor": 0, - "model_id": "ec9f3265372f45aa9ae184916174437b" - } + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(HTML(value=''), FloatProgress(value=0.0, layout=Layout(flex='2'), max=15629.0), HTML(value=''))…" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "2021-04-12 23:55:07,085-15s eodag.api.product [INFO ] Download recorded in /home/maxime/TRAVAIL/06_EODAG/01_eodag/eodag/docs/notebooks/api_user_guide/eodag_workspace_serialize_deserialize/S2B_MSIL1C_20210328T103629_N0209_R008_T31TCJ_20210328T124650\n" ] @@ -301,11 +277,37 @@ ] }, { + "cell_type": "markdown", + "metadata": {}, "source": [ "Downloading the quicklook with [deserialize_and_register()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.deserialize_and_register) works as expected." - ], - "cell_type": "markdown", - "metadata": {} + ] } - ] + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.8.6 64-bit", + "metadata": { + "interpreter": { + "hash": "0cf725079c7d16f2cba0a185a776402bb287255802a557bed9d05e4eed5bfa43" + } + }, + "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.8.6" + }, + "orig_nbformat": 2 + }, + "nbformat": 4, + "nbformat_minor": 2 } diff --git a/docs/notebooks/api_user_guide/6_crunch.ipynb b/docs/notebooks/api_user_guide/6_crunch.ipynb index 4f0f88054..1d69d3337 100644 --- a/docs/notebooks/api_user_guide/6_crunch.ipynb +++ b/docs/notebooks/api_user_guide/6_crunch.ipynb @@ -60,7 +60,7 @@ "\n", "# Uncomment these lines to regenerate the GeoJSON file used in this notebook.\n", "\n", - "#search_results, _ = dag.search(\n", + "#search_results = dag.search(\n", "# productType=\"S2_MSI_L1C\",\n", "# start=\"2021-03-01\",\n", "# end=\"2021-03-31\",\n", diff --git a/docs/notebooks/api_user_guide/7_download.ipynb b/docs/notebooks/api_user_guide/7_download.ipynb index d8a31eea0..796e0de00 100644 --- a/docs/notebooks/api_user_guide/7_download.ipynb +++ b/docs/notebooks/api_user_guide/7_download.ipynb @@ -74,7 +74,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "By default `eodag` saves products in the directory set by `outputs_prefix` which is by default the system temporary folder (`/tmp` on Linux) and quicklooks in a `quicklooks `subfolder of `outputs_prefix` (`tmp/quicklooks` on Linux). Here `eodag` is configured to download products in this workspace directory." + "By default `eodag` saves products in the directory set by `outputs_prefix` which is by default the system temporary folder (`/tmp` on Linux) and quicklooks in a `quicklooks` subfolder of `outputs_prefix` (`tmp/quicklooks` on Linux). To make them easier to use, `eodag` even stores them in a standardized output tree, regardless of whether the products are stored in a file, folder or archive to be extracted (see below). The path of this tree is defined as `{outputs_prefix}/{title}`, with `title` the title of the products. Here `eodag` is configured to download products in this workspace directory." ] }, { @@ -90,12 +90,45 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Another setting that could be defined here is whether or not products need to be automatically extracted from their archive. They are extracted by default, this setting is not going to be altered here. The search result is finally loaded with [deserialize_and_register()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.deserialize_and_register)." + "The `extract` setting could be also defined here. It indicates whether products need to be automatically extracted from their archive or not. They are extracted by default, this setting is not going to be altered here. The search result is finally loaded with [deserialize_and_register()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.deserialize_and_register)." ] }, { "cell_type": "code", "execution_count": 4, + "metadata": { + "nbsphinx": "hidden" + }, + "outputs": [], + "source": [ + "# # This code cell has a special metadata entry: \"nbsphinx\": \"hidden\"\n", + "# # That hides it when the documentation is built with nbsphinx/sphinx.\n", + "\n", + "# # Uncomment these lines to regenerate the GeoJSON file used in this notebook.\n", + "\n", + "# from eodag.api.search_result import SearchResult\n", + "\n", + "# dag.set_preferred_provider(\"peps\")\n", + "# search_results = dag.search_all(\n", + "# productType=\"S2_MSI_L1C\",\n", + "# start=\"2018-01-01\",\n", + "# end=\"2021-01-01\",\n", + "# geom={\"lonmin\": 1, \"latmin\": 45, \"lonmax\": 1.5, \"latmax\": 45.5},\n", + "# )\n", + "# combined_search_results = SearchResult([])\n", + "# offline_prods = [p for p in search_results if p.properties[\"storageStatus\"] == \"OFFLINE\"]\n", + "# online_prods = [p for p in search_results if p.properties[\"storageStatus\"] == \"ONLINE\"]\n", + "# if len(offline_prods) == 0 or len(online_prods) == 0:\n", + "# raise ValueError(\"This search result must contain both ONLINE and OFFLINE products for the #notebook to be run correctly\")\n", + "# combined_search_results.extend(online_prods[:5])\n", + "# combined_search_results.extend(offline_prods[:5])\n", + "# combined_search_results\n", + "# dag.serialize(combined_search_results, \"data/download_search_results.geojson\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -117,49 +150,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Logging is set to see more about what `eodag` does when it downloads products." + "`delete_archive` is another setting that allows to remove the archive containing products after its extraction, or not. The deletion is activated by default." ] }, { - "cell_type": "code", - "execution_count": 5, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "from eodag import setup_logging\n", - "setup_logging(2)" + "Logging is set to see more about what `eodag` does when it downloads products." ] }, { "cell_type": "code", "execution_count": 6, - "metadata": { - "nbsphinx": "hidden" - }, + "metadata": {}, "outputs": [], "source": [ - "# # This code cell has a special metadata entry: \"nbsphinx\": \"hidden\"\n", - "# # That hides it when the documentation is built with nbsphinx/sphinx.\n", - "\n", - "# # Uncomment these lines to regenerate the GeoJSON file used in this notebook.\n", - "\n", - "# from eodag.api.search_result import SearchResult\n", - "\n", - "# search_results = dag.search_all(\n", - "# productType=\"S2_MSI_L1C\",\n", - "# start=\"2018-01-01\",\n", - "# end=\"2021-01-01\",\n", - "# geom={\"lonmin\": 1, \"latmin\": 45, \"lonmax\": 1.5, \"latmax\": 45.5},\n", - "# )\n", - "# combined_search_results = SearchResult([])\n", - "# offline_prods = [p for p in search_results if p.properties[\"storageStatus\"] == \"OFFLINE\"]\n", - "# online_prods = [p for p in search_results if p.properties[\"storageStatus\"] == \"ONLINE\"]\n", - "# if len(offline_prods) == 0 or len(online_prods) == 0:\n", - "# raise ValueError(\"This search result must contain both ONLINE and OFFLINE products for the #notebook to be run correctly\")\n", - "# combined_search_results.extend(online_prods[:5])\n", - "# combined_search_results.extend(offline_prods[:5])\n", - "# combined_search_results\n", - "# dag.serialize(combined_search_results, \"data/download_search_results.geojson\")" + "from eodag import setup_logging\n", + "setup_logging(2)" ] }, { @@ -189,7 +197,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "f1fbb8e667ea4f85a22303514788c234", + "model_id": "654b553f8be048fd927e244a54243f0b", "version_major": 2, "version_minor": 0 }, @@ -224,7 +232,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "10090630957349eab6a987405d9aa8c5", + "model_id": "ea17a73cdc4149d2b82b155c541a7ff3", "version_major": 2, "version_minor": 0 }, @@ -267,7 +275,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "1fa040c68d4c485aaa765e8b75b3b1fa", + "model_id": "dcf66f93db2a49e3a59e811be860900b", "version_major": 2, "version_minor": 0 }, @@ -281,7 +289,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "c94db8bcfcec4543aacf46bb9bb8b2b8", + "model_id": "793231fd5edb4f18aceecb7b2643286e", "version_major": 2, "version_minor": 0 }, @@ -364,7 +372,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "6be28f31ff9745108093212ce6dedfdc", + "model_id": "2827e9fedbf14763aa65889c39cfa108", "version_major": 2, "version_minor": 0 }, @@ -379,13 +387,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 15:53:36,297-15s eodag.api.product [INFO ] Download recorded in /home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2B_MSIL1C_20201231T105349_N0209_R051_T31TCK_20201231T120402\n" + "2023-10-18 14:53:31,315 eodag.product [INFO ] Download recorded in /home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2B_MSIL1C_20201231T105349_N0500_R051_T31TCK_20230328T212259\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "b17b293c653148ffafdcf1cca9b8c820", + "model_id": "18197a3ebb914623b6901f69a7b0ca82", "version_major": 2, "version_minor": 0 }, @@ -400,13 +408,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 15:53:36,860-15s eodag.api.product [INFO ] Download recorded in /home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2B_MSIL1C_20201231T105349_N0209_R051_T31TCL_20201231T120402\n" + "2023-10-18 14:53:31,668 eodag.product [INFO ] Download recorded in /home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2B_MSIL1C_20201231T105349_N0500_R051_T31TCL_20230328T212259\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e1310103b37240b3b96f00504aed1fb6", + "model_id": "858d3af7894e4ecb98223f112306be19", "version_major": 2, "version_minor": 0 }, @@ -421,13 +429,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 15:53:37,628-15s eodag.api.product [INFO ] Download recorded in /home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2A_MSIL1C_20201229T110451_N0209_R094_T31TCL_20201229T131620\n" + "2023-10-18 14:53:32,179 eodag.product [INFO ] Download recorded in /home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2A_MSIL1C_20201229T110451_N0500_R094_T31TCL_20230328T144935\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e6f0b799d36e46a6bb529a17984ef7a1", + "model_id": "c0140f82cf8b442f9afc3e5ef22fc3bd", "version_major": 2, "version_minor": 0 }, @@ -442,13 +450,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 15:53:38,276-15s eodag.api.product [INFO ] Download recorded in /home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2A_MSIL1C_20201226T105451_N0209_R051_T31TCK_20201226T130209\n" + "2023-10-18 14:53:32,630 eodag.product [INFO ] Download recorded in /home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2A_MSIL1C_20201226T105451_N0500_R051_T31TCL_20230328T002707\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "6946468fcf3d4f5db4445e83fe2c758b", + "model_id": "94fd8f5a32b4499fa708873da4ff5776", "version_major": 2, "version_minor": 0 }, @@ -463,13 +471,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 15:53:38,843-15s eodag.api.product [INFO ] Download recorded in /home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2A_MSIL1C_20201226T105451_N0209_R051_T31TCL_20201226T130209\n" + "2023-10-18 14:53:33,096 eodag.product [INFO ] Download recorded in /home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2A_MSIL1C_20201226T105451_N0500_R051_T31TCK_20230328T002707\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "40d77e0163074d4888606cd4e0bfe001", + "model_id": "980f77357ec54336b712773ce6bb4c83", "version_major": 2, "version_minor": 0 }, @@ -484,13 +492,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 15:53:39,354-15s eodag.api.product [INFO ] Download recorded in /home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2A_MSIL1C_20201119T110341_N0209_R094_T31TCL_20201119T131255\n" + "2023-10-18 14:53:33,549 eodag.product [INFO ] Download recorded in /home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2B_MSIL1C_20201201T105419_N0209_R051_T31TCL_20201201T115506\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "f9006c9cb3914908a0822081edcf9d3d", + "model_id": "53a220b1dc424f33a8e735fe9b6ffc08", "version_major": 2, "version_minor": 0 }, @@ -505,13 +513,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 15:53:40,024-15s eodag.api.product [INFO ] Download recorded in /home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2A_MSIL1C_20201116T105331_N0209_R051_T31TCK_20201116T130215\n" + "2023-10-18 14:53:33,961 eodag.product [INFO ] Download recorded in /home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2B_MSIL1C_20201201T105419_N0209_R051_T31TCK_20201201T115506\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e1462a75fc5746f8b2665fb669861945", + "model_id": "66a40e30e101495ab8378440a5abcd30", "version_major": 2, "version_minor": 0 }, @@ -526,13 +534,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 15:53:40,657-15s eodag.api.product [INFO ] Download recorded in /home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2A_MSIL1C_20201116T105331_N0209_R051_T31TCL_20201116T130215\n" + "2023-10-18 14:53:34,534 eodag.product [INFO ] Download recorded in /home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2B_MSIL1C_20201111T105259_N0209_R051_T31TCK_20201111T130651\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "db9a46b90c7640ee906189a5981cde64", + "model_id": "590292c2053d42bb83a1f5bc00696ccf", "version_major": 2, "version_minor": 0 }, @@ -547,13 +555,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 15:53:41,151-15s eodag.api.product [INFO ] Download recorded in /home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2B_MSIL1C_20201114T110319_N0209_R094_T31TCL_20201114T120840\n" + "2023-10-18 14:53:35,263 eodag.product [INFO ] Download recorded in /home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2B_MSIL1C_20201111T105259_N0209_R051_T31TCL_20201111T130651\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "21b2328036e946929a68e99d432251d9", + "model_id": "7b6c682e8db14d3287c588152c955c62", "version_major": 2, "version_minor": 0 }, @@ -568,19 +576,17 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 15:53:41,709-15s eodag.api.product [INFO ] Download recorded in /home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2B_MSIL1C_20201111T105259_N0209_R051_T31TCK_20201111T130651\n" + "2023-10-18 14:53:35,785 eodag.product [INFO ] Download recorded in /home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/quicklooks/S2B_MSIL1C_20200902T104629_N0209_R051_T31TCK_20200902T121149\n" ] }, { "data": { - "image/png": "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cWXDr5rKhm9QG4bKjl8Db2g7rmz4BrThH3TR87f/Az4CvAycB/4f13t7XuO2vweX7ngOeKb89xFcrczngbPA54DZ8v0C12V7HngeePh678Or3M9HgI+XP98MPA6cA/4ACMvno/LxufL1m6/3dv8Av583rA2X2/+mt+PKhr/n91PZ8A2wH69iPys7/u7fzxvWjisbvvFsuBo1XVFRUVFRUVFRUXEN17vEoqKioqKioqKiouKGonKQKyoqKioqKioqKq6hcpArKioqKioqKioqrqFykCsqKioqKioqKiquoXKQKyoqKioqKioqKq6hcpArKioqKioqKioqrqFykCsqKioqKioqKiquoXKQKyoqKioqKioqKq6hcpArKioqKioqKioqrqFykCsqKioqKioqKiquoXKQKyoqKioqKioqKq6hcpArKioqKioqKioqrqFykCsqKioqKioqKiquoXKQKyoqKioqKioqKq6hcpArKioqKioqKioqrqFykCsqKioqKioqKiquoXKQKyoqKioqKioqKq6hcpBvQIQQJ4QQnxRCdIQQm0KI/1kI4V3v7aqoeC0IIe4UQnxBCNETQpwTQvxn13ubKioqKioqXg2Vg3xj8q+AbWAFeAB4P/B/vJ4bVFHxWigXdH8CfByYBX4d+G0hxG3XdcMqKioqKipeBZWDfGNyE/D71trEWrsJfAq4+zpvU0XFa+EO4BDwT6212lr7BeCrwN+6vptVUVFRUVHxvakc5BuTfwb8shCiLoQ4DHwY5yRXVLyREcA913sjKioqKioqvheVg3xj8iguYtwHVoFvAn98PTeoouI1cgZXJvR/FUL4Qogfx5UK1a/vZlVUVFRUVHxvKgf5BkMIIXHR4o8BDWAemAH+yfXcroqK14K1Ngd+FvhJYBP4b4Hfxy34KioqKioqbmiEtfZ6b0PFNQgh5oEdYNpa2yuf+1ng/2utrdLTFW9YhBBfA/69tfY3rve2VFRUVFRUfDeqCPINhrV2F7gI/H0hhCeEmAZ+DXjuum5YRcVrRAhxnxAiKmvp/y84VZb/7TpvVkVFRUVFxfekcpBvTH4O+BAuknwOyIH/83XdooqK187fAjZwtcgfAD5orU2v7yZVVFRUVFR8b6oSi4qKioqKioqKioprqCLIFRUVFRUVFRUVFdfwujjIQogPCSHOlONl/9Hr8TcqKl5v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", + "image/png": "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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -686,14 +692,14 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 15:53:55,220-15s eodag.plugins.crunch.filter_property [INFO ] Finished filtering products. 5 resulting products\n" + "2023-10-18 14:53:40,104 eodag.crunch.property [INFO ] Finished filtering products. 5 resulting products\n" ] }, { @@ -702,7 +708,7 @@ "['ONLINE', 'ONLINE', 'ONLINE', 'ONLINE', 'ONLINE']" ] }, - "execution_count": 14, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -730,20 +736,20 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 15:53:57,558-15s eodag.core [INFO ] Downloading 2 products\n" + "2023-10-18 14:53:40,408 eodag.core [INFO ] Downloading 2 products\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "2a46ccd2f87649e6899a26d07aedcad8", + "model_id": "bd913fa0b035411090e28312eafec23a", "version_major": 2, "version_minor": 0 }, @@ -757,7 +763,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "ccf12fa726af4e32abfd15d20fb1e0b1", + "model_id": "31715053389747a48ba4bdd6c7132e92", "version_major": 2, "version_minor": 0 }, @@ -772,15 +778,22 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 15:53:57,642-15s eodag.plugins.download.base [INFO ] Download url: https://peps.cnes.fr/resto/collections/S2ST/86440880-7f7d-50f0-87a7-ac1bc2bd8fbd/download\n", - "2021-05-18 15:56:13,034-15s eodag.plugins.download.base [INFO ] Extraction activated\n", - "2021-05-18 15:56:15,056-15s eodag.api.product [INFO ] Remote location of the product is still available through its 'remote_location' property: https://peps.cnes.fr/resto/collections/S2ST/86440880-7f7d-50f0-87a7-ac1bc2bd8fbd/download\n" + "2023-10-18 14:53:40,447 eodag.download.base [INFO ] Download url: https://peps.cnes.fr/resto/collections/S2ST/6f9f68b8-b278-55fb-8cb7-df0e983a5ce2/download\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-10-18 14:57:22,213 eodag.download.base [INFO ] Extraction activated\n", + "2023-10-18 14:57:23,489 eodag.download.base [INFO ] Deleting archive S2A_MSIL1C_20201229T110451_N0500_R094_T31TCL_20230328T144935.zip\n", + "2023-10-18 14:57:23,560 eodag.product [INFO ] Remote location of the product is still available through its 'remote_location' property: https://peps.cnes.fr/resto/collections/S2ST/6f9f68b8-b278-55fb-8cb7-df0e983a5ce2/download\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "19822930690b497893863b9e99f3a241", + "model_id": "f695d396b4c14a97ad2742df62725fa7", "version_major": 2, "version_minor": 0 }, @@ -795,9 +808,10 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 15:56:15,103-15s eodag.plugins.download.base [INFO ] Download url: https://peps.cnes.fr/resto/collections/S2ST/c51639e0-18ab-55a4-bc7c-7757a64911fa/download\n", - "2021-05-18 16:00:46,615-15s eodag.plugins.download.base [INFO ] Extraction activated\n", - "2021-05-18 16:00:50,326-15s eodag.api.product [INFO ] Remote location of the product is still available through its 'remote_location' property: https://peps.cnes.fr/resto/collections/S2ST/c51639e0-18ab-55a4-bc7c-7757a64911fa/download\n" + "2023-10-18 14:57:23,575 eodag.download.base [INFO ] Download url: https://peps.cnes.fr/resto/collections/S2ST/d0cc77dd-d4bb-5b9c-8be6-e9e454ca5924/download\n", + "2023-10-18 15:04:57,850 eodag.download.base [INFO ] Extraction activated\n", + "2023-10-18 15:05:00,652 eodag.download.base [INFO ] Deleting archive S2A_MSIL1C_20201226T105451_N0500_R051_T31TCL_20230328T002707.zip\n", + "2023-10-18 15:05:00,781 eodag.product [INFO ] Remote location of the product is still available through its 'remote_location' property: https://peps.cnes.fr/resto/collections/S2ST/d0cc77dd-d4bb-5b9c-8be6-e9e454ca5924/download\n" ] } ], @@ -808,17 +822,17 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "['/home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20201229T110451_N0209_R094_T31TCL_20201229T131620/S2A_MSIL1C_20201229T110451_N0209_R094_T31TCL_20201229T131620.SAFE',\n", - " '/home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20201226T105451_N0209_R051_T31TCK_20201226T130209/S2A_MSIL1C_20201226T105451_N0209_R051_T31TCK_20201226T130209.SAFE']" + "['/home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20201229T110451_N0500_R094_T31TCL_20230328T144935',\n", + " '/home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20201226T105451_N0500_R051_T31TCL_20230328T002707']" ] }, - "execution_count": 16, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -831,12 +845,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The command below shows that the products have been downloaded as archived files (*Sentinel* products are distributed in the [SAFE format](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi/data-formats)). `eodag` then took care of extracting them to their own directory." + "The products have been downloaded as archived files (*Sentinel* products are distributed in the [SAFE format](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi/data-formats)). The logs above and the command below show that `eodag` then took care of extracting them to their own directory and deleting them afterward." ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -844,10 +858,8 @@ "output_type": "stream", "text": [ "quicklooks\n", - "S2A_MSIL1C_20201226T105451_N0209_R051_T31TCK_20201226T130209\n", - "S2A_MSIL1C_20201226T105451_N0209_R051_T31TCK_20201226T130209.zip\n", - "S2A_MSIL1C_20201229T110451_N0209_R094_T31TCL_20201229T131620\n", - "S2A_MSIL1C_20201229T110451_N0209_R094_T31TCL_20201229T131620.zip\n" + "S2A_MSIL1C_20201226T105451_N0500_R051_T31TCL_20230328T002707\n", + "S2A_MSIL1C_20201229T110451_N0500_R094_T31TCL_20230328T144935\n" ] } ], @@ -857,7 +869,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -882,20 +894,20 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 16:10:58,354-15s eodag.core [INFO ] Downloading 2 products\n" + "2023-10-18 15:05:02,889 eodag.core [INFO ] Downloading 2 products\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "d712e591f1c841d29e07865dfe94bc05", + "model_id": "759bffdd7a894af296504570493fe0f6", "version_major": 2, "version_minor": 0 }, @@ -909,7 +921,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "70f39c06c0934426a3e978eadbe01ccf", + "model_id": "0411a70eb4c74b66bc2a7369342f5fbb", "version_major": 2, "version_minor": 0 }, @@ -924,14 +936,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 16:10:58,438-15s eodag.plugins.download.base [INFO ] Product already present on this platform. Identifier: /home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20201229T110451_N0209_R094_T31TCL_20201229T131620/S2A_MSIL1C_20201229T110451_N0209_R094_T31TCL_20201229T131620.SAFE\n", - "2021-05-18 16:10:58,440-15s eodag.api.product [INFO ] Remote location of the product is still available through its 'remote_location' property: https://peps.cnes.fr/resto/collections/S2ST/86440880-7f7d-50f0-87a7-ac1bc2bd8fbd/download\n" + "2023-10-18 15:05:02,942 eodag.download.base [INFO ] Product already present on this platform. Identifier: /home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20201229T110451_N0500_R094_T31TCL_20230328T144935\n", + "2023-10-18 15:05:02,943 eodag.product [INFO ] Remote location of the product is still available through its 'remote_location' property: https://peps.cnes.fr/resto/collections/S2ST/6f9f68b8-b278-55fb-8cb7-df0e983a5ce2/download\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "8ddead9fd363442399080031ff27a935", + "model_id": "c670e9ac00984f96a3c1689fe7f2eb82", "version_major": 2, "version_minor": 0 }, @@ -946,18 +958,18 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 16:10:58,479-15s eodag.plugins.download.base [INFO ] Product already present on this platform. Identifier: /home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20201226T105451_N0209_R051_T31TCK_20201226T130209/S2A_MSIL1C_20201226T105451_N0209_R051_T31TCK_20201226T130209.SAFE\n", - "2021-05-18 16:10:58,481-15s eodag.api.product [INFO ] Remote location of the product is still available through its 'remote_location' property: https://peps.cnes.fr/resto/collections/S2ST/c51639e0-18ab-55a4-bc7c-7757a64911fa/download\n" + "2023-10-18 15:05:02,987 eodag.download.base [INFO ] Product already present on this platform. Identifier: /home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20201226T105451_N0500_R051_T31TCL_20230328T002707\n", + "2023-10-18 15:05:02,988 eodag.product [INFO ] Remote location of the product is still available through its 'remote_location' property: https://peps.cnes.fr/resto/collections/S2ST/d0cc77dd-d4bb-5b9c-8be6-e9e454ca5924/download\n" ] }, { "data": { "text/plain": [ - "['/home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20201229T110451_N0209_R094_T31TCL_20201229T131620/S2A_MSIL1C_20201229T110451_N0209_R094_T31TCL_20201229T131620.SAFE',\n", - " '/home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20201226T105451_N0209_R051_T31TCK_20201226T130209/S2A_MSIL1C_20201226T105451_N0209_R051_T31TCK_20201226T130209.SAFE']" + "['/home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20201229T110451_N0500_R094_T31TCL_20230328T144935',\n", + " '/home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20201226T105451_N0500_R051_T31TCL_20230328T002707']" ] }, - "execution_count": 19, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -997,14 +1009,14 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 16:11:17,493-15s eodag.plugins.crunch.filter_property [INFO ] Finished filtering products. 5 resulting products\n" + "2023-10-18 15:05:03,154 eodag.crunch.property [INFO ] Finished filtering products. 5 resulting products\n" ] }, { @@ -1013,21 +1025,21 @@ "'OFFLINE'" ] }, - "execution_count": 20, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "offline_product = search_results.crunch(\n", - " FilterProperty(dict(storageStatus=\"OFFLINE\"))\n", + "offline_product = search_results.filter_property(\n", + " storageStatus=\"OFFLINE\"\n", ")[1]\n", "offline_product.properties[\"storageStatus\"]" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 20, "metadata": { "tags": [] }, @@ -1035,7 +1047,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "6cab70ca773d492f91e28b04cfaeacc0", + "model_id": "26e55cff0b9b4da695bc85d112e4cdf7", "version_major": 2, "version_minor": 0 }, @@ -1050,9 +1062,10 @@ "name": "stderr", "output_type": "stream", "text": [ - "2021-05-18 16:11:18,974-15s eodag.plugins.download.base [INFO ] Download url: https://peps.cnes.fr/resto/collections/S2ST/0b57ac26-d487-5367-aa86-9101dac07271/download\n", - "2021-05-18 16:15:39,370-15s eodag.plugins.download.base [INFO ] Extraction activated\n", - "2021-05-18 16:15:43,101-15s eodag.api.product [INFO ] Remote location of the product is still available through its 'remote_location' property: https://peps.cnes.fr/resto/collections/S2ST/0b57ac26-d487-5367-aa86-9101dac07271/download\n" + "2023-10-18 15:05:03,330 eodag.download.base [INFO ] Download url: https://peps.cnes.fr/resto/collections/S2ST/2e5a5258-8b84-5a77-a04c-264429706c93/download\n", + "2023-10-18 15:11:08,011 eodag.download.base [INFO ] Extraction activated\n", + "2023-10-18 15:11:09,899 eodag.download.base [INFO ] Deleting archive S2B_MSIL1C_20201201T105419_N0209_R051_T31TCK_20201201T115506.zip\n", + "2023-10-18 15:11:10,005 eodag.product [INFO ] Remote location of the product is still available through its 'remote_location' property: https://peps.cnes.fr/resto/collections/S2ST/2e5a5258-8b84-5a77-a04c-264429706c93/download\n" ] } ], @@ -1060,22 +1073,22 @@ "path = dag.download(\n", " offline_product,\n", " wait=1,\n", - " timeout=5,\n", + " timeout=10,\n", ")" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'/home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20201116T105331_N0209_R051_T31TCK_20201116T130215/S2A_MSIL1C_20201116T105331_N0209_R051_T31TCK_20201116T130215.SAFE'" + "'/home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2B_MSIL1C_20201201T105419_N0209_R051_T31TCK_20201201T115506'" ] }, - "execution_count": 22, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -1093,16 +1106,16 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'file:///home/sylvain/workspace/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2A_MSIL1C_20201116T105331_N0209_R051_T31TCK_20201116T130215/S2A_MSIL1C_20201116T105331_N0209_R051_T31TCK_20201116T130215.SAFE'" + "'file:///home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_download/S2B_MSIL1C_20201201T105419_N0209_R051_T31TCK_20201201T115506'" ] }, - "execution_count": 23, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -1131,7 +1144,7 @@ "metadata": {}, "outputs": [], "source": [ - "search_results, total_count = dag.search(\n", + "search_results = dag.search(\n", " productType=\"S2_MSI_L2A\", \n", " provider=\"planetary_computer\"\n", ")" diff --git a/docs/notebooks/api_user_guide/8_post_process.ipynb b/docs/notebooks/api_user_guide/8_post_process.ipynb index 1b71effbf..2440a853a 100644 --- a/docs/notebooks/api_user_guide/8_post_process.ipynb +++ b/docs/notebooks/api_user_guide/8_post_process.ipynb @@ -126,7 +126,7 @@ " \"cloudCover\": 1 # Cloud cover < 1\n", "}\n", "\n", - "products, estimated_total_number = dag.search(**search_criteria)" + "products = dag.search(**search_criteria)" ] }, { @@ -154,12 +154,12 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "f90074dc6c2c4820872bdd807a3da6d4", + "model_id": "df29416e57e242d28998029633b33001", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "HBox(children=(HTML(value='S2B_MSIL1C_20210301T104859_N0209_R051_T31TCJ_20210301T115849'), FloatProgress(value…" + "0.00B [00:00, ?B/s]" ] }, "metadata": {}, @@ -167,30 +167,8 @@ }, { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "5d97262a2fdb43a89a85a3f1bbafbd97", - "version_major": 2, - "version_minor": 0 - }, "text/plain": [ - "HBox(children=(HTML(value='Extracting files from S2B_MSIL1C_20210301T104859_N0209_R051_T31TCJ_20210301T115849.…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n" - ] - }, - { - "data": { - "text/plain": [ - "'file:///home/maxime/TRAVAIL/06_EODAG/01_eodag/eodag/docs/notebooks/api_user_guide/eodag_workspace_post_process/S2B_MSIL1C_20210301T104859_N0209_R051_T31TCJ_20210301T115849/S2B_MSIL1C_20210301T104859_N0209_R051_T31TCJ_20210301T115849.SAFE'" + "'/home/anesson/workspace/EODAG/dev/eodag/docs/notebooks/api_user_guide/eodag_workspace_post_process/S2B_MSIL1C_20210301T104859_N0500_R051_T31TCJ_20230604T191601'" ] }, "execution_count": 3, @@ -240,6 +218,12 @@ "metadata": {}, "outputs": [], "source": [ + "import warnings\n", + "import rasterio\n", + "\n", + "# mute rasterio warnings\n", + "warnings.filterwarnings(\"ignore\", category=rasterio.errors.NotGeoreferencedWarning)\n", + "\n", "VIR = one_product.get_data(band=\"B04\", **common_params)\n", "NIR = one_product.get_data(band=\"B08\", **common_params)\n", "NDVI = (NIR - VIR * 1.) / (NIR + VIR)" @@ -284,6 +268,7 @@ "}\n", "\n", "html[theme=dark],\n", + "body[data-theme=dark],\n", "body.vscode-dark {\n", " --xr-font-color0: rgba(255, 255, 255, 1);\n", " --xr-font-color2: rgba(255, 255, 255, 0.54);\n", @@ -296,7 +281,7 @@ "}\n", "\n", ".xr-wrap {\n", - " display: block;\n", + " display: block !important;\n", " min-width: 300px;\n", " max-width: 700px;\n", "}\n", @@ -513,6 +498,11 @@ " grid-column: 4;\n", "}\n", "\n", + ".xr-index-preview {\n", + " grid-column: 2 / 5;\n", + " color: var(--xr-font-color2);\n", + "}\n", + "\n", ".xr-var-name,\n", ".xr-var-dims,\n", ".xr-var-dtype,\n", @@ -534,14 +524,16 @@ "}\n", "\n", ".xr-var-attrs,\n", - ".xr-var-data {\n", + ".xr-var-data,\n", + ".xr-index-data {\n", " display: none;\n", " background-color: var(--xr-background-color) !important;\n", " padding-bottom: 5px !important;\n", "}\n", "\n", ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n", - ".xr-var-data-in:checked ~ .xr-var-data {\n", + ".xr-var-data-in:checked ~ .xr-var-data,\n", + ".xr-index-data-in:checked ~ .xr-index-data {\n", " display: block;\n", "}\n", "\n", @@ -551,13 +543,16 @@ "\n", ".xr-var-name span,\n", ".xr-var-data,\n", + ".xr-index-name div,\n", + ".xr-index-data,\n", ".xr-attrs {\n", " padding-left: 25px !important;\n", "}\n", "\n", ".xr-attrs,\n", ".xr-var-attrs,\n", - ".xr-var-data {\n", + ".xr-var-data,\n", + ".xr-index-data {\n", " grid-column: 1 / -1;\n", "}\n", "\n", @@ -595,7 +590,8 @@ "}\n", "\n", ".xr-icon-database,\n", - ".xr-icon-file-text2 {\n", + ".xr-icon-file-text2,\n", + ".xr-no-icon {\n", " display: inline-block;\n", " vertical-align: middle;\n", " width: 1em;\n", @@ -604,50 +600,104 @@ " stroke: currentColor;\n", " fill: currentColor;\n", "}\n", - "
<xarray.DataArray (dim_0: 229, dim_1: 170)>\n",
-       "array([[-0.00838169,  0.00969697,  0.02765209, ...,  0.08899382,\n",
-       "         0.08953168,  0.15292459],\n",
-       "       [-0.00458415,  0.01956135,  0.02684236, ...,  0.09963695,\n",
-       "         0.09245055,  0.14425428],\n",
-       "       [ 0.00064725,  0.0250139 ,  0.02480916, ...,  0.12380952,\n",
-       "         0.10745698,  0.14026793],\n",
-       "       ...,\n",
-       "       [ 0.10257797,  0.12961097,  0.16120461, ...,  0.24607679,\n",
-       "         0.27561718,  0.27751196],\n",
-       "       [ 0.06745214,  0.08427058,  0.10302594, ...,  0.21860465,\n",
-       "         0.24454148,  0.24917188],\n",
-       "       [ 0.05295161,  0.06307043,  0.07108024, ...,  0.1889263 ,\n",
-       "         0.20932009,  0.21919386]])\n",
-       "Dimensions without coordinates: dim_0, dim_1
" + "
<xarray.DataArray (band: 1, y: 170, x: 229)>\n",
+       "array([[[-0.01069218, -0.0005571 ,  0.00191414, ...,  0.06095877,\n",
+       "          0.09421021,  0.17242782],\n",
+       "        [-0.01016949,  0.00253879,  0.00917431, ...,  0.05355142,\n",
+       "          0.07989228,  0.15472028],\n",
+       "        [-0.00594396,  0.00528806,  0.01310717, ...,  0.06370495,\n",
+       "          0.0800173 ,  0.15190415],\n",
+       "        ...,\n",
+       "        [ 0.05523631,  0.0687461 ,  0.08069241, ...,  0.16106414,\n",
+       "          0.15670103,  0.13839919],\n",
+       "        [ 0.03644602,  0.04596401,  0.05092091, ...,  0.1254868 ,\n",
+       "          0.12524335,  0.12167711],\n",
+       "        [ 0.04537003,  0.05537398,  0.05558696, ...,  0.11399289,\n",
+       "          0.1247118 ,  0.14471477]]])\n",
+       "Coordinates:\n",
+       "  * x            (x) float64 1.435 1.435 1.435 1.435 ... 1.458 1.458 1.458 1.458\n",
+       "  * y            (y) float64 43.6 43.6 43.6 43.6 ... 43.59 43.59 43.59 43.59\n",
+       "  * band         (band) int64 1\n",
+       "    spatial_ref  int64 0
" ], "text/plain": [ - "\n", - "array([[-0.00838169, 0.00969697, 0.02765209, ..., 0.08899382,\n", - " 0.08953168, 0.15292459],\n", - " [-0.00458415, 0.01956135, 0.02684236, ..., 0.09963695,\n", - " 0.09245055, 0.14425428],\n", - " [ 0.00064725, 0.0250139 , 0.02480916, ..., 0.12380952,\n", - " 0.10745698, 0.14026793],\n", - " ...,\n", - " [ 0.10257797, 0.12961097, 0.16120461, ..., 0.24607679,\n", - " 0.27561718, 0.27751196],\n", - " [ 0.06745214, 0.08427058, 0.10302594, ..., 0.21860465,\n", - " 0.24454148, 0.24917188],\n", - " [ 0.05295161, 0.06307043, 0.07108024, ..., 0.1889263 ,\n", - " 0.20932009, 0.21919386]])\n", - "Dimensions without coordinates: dim_0, dim_1" + "\n", + "array([[[-0.01069218, -0.0005571 , 0.00191414, ..., 0.06095877,\n", + " 0.09421021, 0.17242782],\n", + " [-0.01016949, 0.00253879, 0.00917431, ..., 0.05355142,\n", + " 0.07989228, 0.15472028],\n", + " [-0.00594396, 0.00528806, 0.01310717, ..., 0.06370495,\n", + " 0.0800173 , 0.15190415],\n", + " ...,\n", + " [ 0.05523631, 0.0687461 , 0.08069241, ..., 0.16106414,\n", + " 0.15670103, 0.13839919],\n", + " [ 0.03644602, 0.04596401, 0.05092091, ..., 0.1254868 ,\n", + " 0.12524335, 0.12167711],\n", + " [ 0.04537003, 0.05537398, 0.05558696, ..., 0.11399289,\n", + " 0.1247118 , 0.14471477]]])\n", + "Coordinates:\n", + " * x (x) float64 1.435 1.435 1.435 1.435 ... 1.458 1.458 1.458 1.458\n", + " * y (y) float64 43.6 43.6 43.6 43.6 ... 43.59 43.59 43.59 43.59\n", + " * band (band) int64 1\n", + " spatial_ref int64 0" ] }, "execution_count": 6, @@ -676,7 +726,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -685,20 +735,25 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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zz33HCZPnjymfcvlMubOnYs777wT8+fPj3x3wQUXqJ+nT5+O+fPn47DDDsOKFSswY8YMuyiFbDaLiRMnJn7385//HOl0Grfddhs8Oau44447cOihh+Kll17CPvvsg7/+9a/o6+vDl770JUydKjxErrnmGhx66KF49dVXsc8++4ypbQ4ODg4ODg5vHYzppWjatGnbVCi9SIwFF110EU477TScdNJJsZciE8PDw1i4cCH22muvrZa/ePFi9PT0oKOjAyeccALmz5+Pri4hdKzVashkMuqFCADyUkT429/+Fvvssw/2339/dHV14a677sI///M/IwgC3HXXXTjggAMwffr0Mbctgkxa0armUgff1A8AYIyyTxuiPssA0BTfqvBnnzI4U/bmlDYDo3NHMlpbYdr5VqAkGMD1A0sBAEvXC3H1z14q451TCtH9fb00RUtYKqWHrNuoGE1gbRqnJUw/lGkjCR9zKXhthgGmfZxt9ldoBwCEDPCGhPkk75cGj9mSXi5QNLa8PuayRj3a38gywyjOWjYwaXC1TGUsydhLN4WccY386HlgmEPaSPk6o30knYKV8kHtnzLGkJUiwcg0HlsqirTNCCOW182fKAWv1A8Dm7To1i4jKaSfrqvv6+UGs83WMoMa655nhKJTf8vzMi/WfnVcOi1E2kB0mYmuMQlrTasAuy5mO2QqHFq6UsLrzUYGdlryybcABTq3rGvDWMq0TA65WT8S9/Z2AwDKrW14uV/cs4fvcZDYRy4B82otfh3pk4dquYxE4b78U8A9T9/j9LwaGQEqcjmrKpf+qF71pjYEpbQghDBUbeS2BUS5opfAzf3JYFKJxGW9UqFONWJaKxDoXpV1YbTE2NYasxHgjTD2LKLfzIAQryDtECZIcXkhD079O0ypU2RdajX1M/JGEEi7LJ+Wlmn/kaohbzCWlncS/eKiz0bHG4o+6+/vxxNPPIH169cjtBxNP/axj425nHvvvRdPPvkklixZMuo+t99+Oy6//HIMDw9j//33xwMPPIBMJjPq/qeccgrOPPNM7LXXXnj55Zfxz//8z3jf+96Hxx9/HL7v44QTTsCll16Kr3zlK7jkkkswPDyMK6+8EgDw+uviZaBUKmHx4sV4//vfj+uvvx4AsO++++JXv/oVUrauwUCtVotoqQYHB8fcFw4ODg4ODjsDHmPKZX17ytgdsc0vRffffz/mzp2LcrmM1tZWnQwTIupsrC9Fq1atwiWXXIIHHngAuVxu1P3mzp2Lk08+Ga+//jpuuukmnHXWWfjd73436jH/8A//oH4+5JBDcOihh2LGjBlYvHgxTjzxRBx00EG45557cOmll+Kqq66C7/v4zGc+g97eXsUejYyM4Pzzz8e73vUu/PCHP0QQBLjppptw2mmnYcmSJYpZsrFgwQJcd9118S8aDTEjp3DWgjamY3ZKDprhJM1OlVC7rvudxH0qHJbrtBYkOG4vadNGgmRHWMdUrB5+EQDw1AYRGvyD5wVr9ezyzTh+qmAJewqy7lXjRW8sUwVKwugj0SBtVBizZrLgV6k9cj5Ymwy9pv6Ss3OWzShrfVU7WWcPAB8mwasMrW1UdUhxEjNnmwhm9HVRs0Q70a/5syozoa9McTDVv22UtC9AguGgp+/g0Azvj7I0uv9qyQlkATHTTkh2q2AZGlIiTcBIW0IpKXLZWFJanYjW0+yenTrCYEAjdWnS91JMTwxBoJNqKic5up+a/bosK1ybZbPa9NC0JkgS8NLxNuOl2Jd6JOGuKFOG8qdSOqy9QwiiyyUdRl7qkgw8GbZWy5rllUaixEIhlRIGjgCQE6yDz1LoykkDyBq127RdsNKbUD0bVaTlV53ZSZFmsWYdoNQatLFSjRt6Jt3DxDrKNCEilQeLfmdUj9jeyPGxUHfjTxQxUiazRnWyWD0uhdqs3tTCduqPgOu0MHZyakA/14jdmbSn2DdbAn95Zbzd1FY1zqJJikVZMkkspRcqD+hrTUadO1Fo7TA6tjnNx+c//3l8/OMfR7lcRn9/PzZv3qz+9/X1bb0AiaVLl2L9+vU44ogjkEqlkEql8Mgjj+A//uM/kEqlEMg/7G1tbdh3331x3HHH4cc//jH++te/4qc//emYz7P33nuju7sbL730ktp2zjnnYO3atXjttdewadMmXHvttdiwYQP23ntvAMAPfvADrFixAgsXLsQ73vEOHHPMMfjBD36A5cuX43/+539GPddVV12FgYEB9X/VqlVjrqeDg4ODg8POgMf0Etob/f+2FlqbeO211/CZz3wGhUJh6ztvASeeeCKeeeaZyLZ58+Zh5syZuOKKKxKjyzjn4JxvU7j/6tWrsWnTJkyaNCn2XW+vCMu+++67kcvlcPLJJwMAKpUKPM+LsGD0u71caCKbzUYi3cx6w0+BtcowcLlmH5kT2GZyzXpyskUgYmuvkBTy3C0MzNA2Uc+8pYkj2egPhmWsHxEJUV8bFnUYkLPTTEsGe7eJ80wsiPQYfN1yUU4YilQCJgKenFgRUCxRInyWnN6DTNaIbZKGiH53QTMqxJSRpiCVMkwYZT9XpLHdwAYVSqtQKOvZmTLOk+yTkXg3MUkogY43Lf1tU8RcNha6z/Ky7sWCYjgoyWXkeTNaEs4Im2gwHjSjrpJpoWToKs1owl0LNFvmxE6QeWHWV31vJtJkhVFsBCpVbdpHbTRDkql/7eSdlIDUhq11ipgDWuyOvAYRfQvtT9qf0AjXp+uby8QT20rwTDreRvOaUF/SWDRZLkqu2iF0kM+uewRNGQ6/d6tgIAqdIojF9yahmG4X+2+U99nrK/V52iTbIJ8fhZEqCinxXOMDr0bqDM+LaYkUgzoyDAyLCWyWGGSy6GAeeCj7pKb7Uif7NdJUUBsp1J3O12KYbNJYJHZPsTseWJ7K0pYLjNpYtIxuAX1/DdG9KO+jjlbdRgrlp3FQqep7kerna/sJNZ6lEWlYaej7Zr20WnhN9C3PZcAHZPmN6Fhkvd1Azx6qDwEAA2sNO5WhaL9VqnGtV7kCVCxd1g6CWz4bHdvMFM2ZMwd//OMft/vEpVIJBx98cOR/S0sLurq6cPDBB+OVV17BggULsHTpUqxcuRKPPfYYPvzhDyOfz+PUU09V5cycOVMxR+VyGZdddhl+//vfY8WKFXjooYdwxhlnYJ999sGcOXPUMbfeeiuefPJJvPDCC7jttttw8cUXY8GCBWhvbwcAnHzyydi8eTMuuugiPP/883j22Wcxb948pFIpvPe9793utjs4ODg4ODi8+TAmpuhnP/uZ+vm0007DZZddhueeew6HHHJIzLPn9NNPH5eK5XI5PProo7jllluwefNm9Pb24rjjjsNjjz0W8UtatmwZBgbEG73v+3j66adxzz33oL+/H5MnT8bs2bNx/fXXRxicJ554Atdccw3K5TJmzpyJb37zm/joRz+qvp85cybuv/9+XHfddTj22GPheR7+5m/+BosWLUpknLYGxhhQq4FveFlukO+ilSEjasJiAYBoJJr5XTOIz57JYKxSNfRJcpaaaTHKlIflxYxsYPhFDNbFmjuZce3fJcryPYYVg2LW+FK/YPUO7p0lChjoB1sjWZcNOkpLRZRIxojXtBYjlqjWZCvsBLBBqNf9bXLGZ8nGcJDr8/QdRdFQfzebcT0C55p1onX/spzVDZajaT2AqN4oZUUpkUagGoAVbCYviGhaAOg0BW0TgayIisMakUBURVXBiJoiHYxpIOlZYwPQ9UobRqAAUA/AG2QKKbUNWd25TF0fyQqRAMT3Yol9eT1Qs2Uu9UzMHJ+FUXSCxQKg2kMsmh7nTJrjEWMWMb202a16Q5jm0TnN44Co+aDcX/zO9XSQopWy2USNkyjUSCCrkr/KfsvH26muTzMw7llRr2I6p2bYxbRgclOeGKfNsI5yQ7S/1CYZIBktif4hnSamIceIx8TYAVQyZ9Xvm/p1hJSt/as39D2RE2O+Fop9sywDKH2S8UwiVoDGf0e3/n1IPgeIkaF+rzc0U0K6HtqnkIs/wzLpuBGqyTBaLJ3SWHX2qqYxTyS45db1EpDanUYQ0xKZGiO6C5qrRT94lRfEZykDPkxaOXkv073W3qmTe4fE1A4CTanBJK2bBK/V4+PS80Z9ro03HFM0Osb0UvT+978/tu1LX/pSbBtjTGmB3ggWL16sfp48eTJ++ctfbvUYMywzn8/jV7/61VaP+c53vrPVfU4++WS1nObg4ODg4LC7wMM4vBThbfxStCUdjcPWwRsNEZlD0TlmJIsVuaJmP+Z+tD7O9UxJzVSVr4lkKWp1w7uH0ieEelaeFucZljOY4cYQqtJLp5ASZU1rFbOrtcN1/GWTWOPuLQhtQ1u2HQCwR/dEeEWhe4hpizBKqgQbJjtkaY4irBJFrUmNUThUB5OpFZTHCzFunqdnl6+tlttkHzWDWDoNxpjWuKRp1i/1PbV6fN0fRpoHpeOKzu5YMaP0XBEfJZvxoCix6kqgW8z4WakcbY8JWXdGETa1WpT9oH1UktRoagGT3UHa0ngEXLNBaWrP6I8HHnJwmd6DzsNI81HI6z6RbBibuD8AoN+rox4K1oCYkkIg27P2ec2yUFnVWjRpq4lcNq5ZSRl6FvK8sX2rwhCoyzE1Is83UtVMjJlagkDbiOXqlKxitqC9kSgpa9LEUO7Tle/BhJzQF/mbhVcWpZ5BKqN1cFU5DkhnlctGfYMAce0y8tiMFa1ljDeVSLmu+5Z0Q00u6jVQF2lZOrOToFptMBk8ZSTHNRE0dT/TeFaRis0400rIZcAoiteMUCPGWzLZCrWyMa6jHkaiDPlzLNrR6AdP1IX5TLGbNIbVZ1Wn+VDPHdIY5UL1zCIPI33/NYERyQoFsh9qlZguVDHAlZEY+8wmdILlti091huFYIq2j5XaXZmibe6V73znO4lC53q9PiYGxsHBwcHBwcHhzYhtjj6bN28eTjnllFgetKGhIcybN2+bzBvfVjBnvOZ6ue1LVE/wGZFQM1ffj+selI9OWs9iabbFPL2/nB005WymHjbVG393XsyuOnKingd2F1BKi++qUiO0qSrYrqktB2hHZwNqjZ68cYh1SHuapbAj0RIi05jHdNRZOvruzquBnkGriDEjComYNcv12+xPNZPMZYzoMcMvhPa3yyevpGw2zmqQr0kuo11w24STOvyMTqZJruKkXSqP6ASb5ABMXlMmW2HrJIIg5geEas3wi5HsY4oYHU9HByb5odiaHdKFNQIwL3qteaWhdVM0o66Rm3CoZvOUjPfVpmBFXiuvQyi5i9aMYAr2axc5D7OmC7PBvqmxZDPWzUC7SJMnlzwvNyMHbTQDdT1Z3tQR0X1p3EsAWCZtOCzTPSgfnUFTRTuqiDfSN4Uh2KBkwfpEBNOkzmnga5eJ/ShZLqFe06wLjW/qh9YWrQNqlVGljarSzZFukBMzWSxojRjVnfRGuXiELCHgTaTktVau3009zmgb27xRH0RaOtJzUZRbNquiD7nJ1gJinHe0qbqKAzz1zGI5+R3pc4J69BkHaA2gnwHK0qlesfFyLHa06Xab9ytFVtpJrZNg+BupZxWNg1bJ7OfblXO+updb2mP+XkqT53lGEtudz7g4TdHo2OaXIs55JFSdsHr1arS1tY1LpRwcHBwcHBx2DNxL0egY80vR3/zN34AxBsYYTjzxxEi6iyAIsHz5cpxyyik7pJIODg4ODg4ODjsaY34pogi0p556CnPmzEGxWFTfZTIZTJ8+HR/84AfHvYK7BWzal2j5hHDeSOoHO9Eo2efn8sbyWXQfVq0BRbF0w7Iy5Jt5ej9p0pb1BWXdlmlDMxSUdkWKQSe1CPrbzJtI4fohmbyFobFMpU0WGUjImyBXUzQxGUkmiLFJfL0lSjkM9TJWV7vY1imXq1av0VQ41U8tleR0okgSeTJPG9dxa7myq11T+0T7U4ixx7RJZFLiVLOugMjzShYBlLovRUJgH9gk6f+aITCGMA40U2QA0JR81UjbQZOUwbIh/rSWoooFJdLGoFgqjJhtKvNGufxT0SlKTNNGBbW8Rst6cimrXAFXCTBFf01oFeLifKqIWiD6zWeizjkuLQDKI0aKEi1iVyHlsdQpXmSpKoIwjJgCRsqUbQKgljxZPqfE2krIS8suxZIKeY/cUwB4ZRNAOQ6pfFoC8zxwqitd18FB1feqfOmPBi+exFYtAQ8O676hMVweAabJY2lsUfqeqZPUcg7Ly+U2TsucQ8rENc3E/mlPjLGAN3WCZNMKxFoGMgMBlHiYLCfIJqG9pMXRfaKPOAVIDJa1AHyKDKnv3VOZXA42xDJYKMdGe+sh4C2vRfqGtQrbggaaSNGStJXMmadSOkbK7Fu6/hRaL4MFeCYEa1jPHmXxwaCeXbSMKO9N1j4Fa0ZE4AlZLEzo2VeNF5WGherOPKBN2geso3u/Hk+qu4PgmKLRMeaXomuuuQZBEGD69OmYPXv2G/LrcXBwcHBwcNi18OS/7S1jd8Q2aYp838eFF16I559/fkfVZ/eFsdwYm4kCyQkXlQmjZApahWiXtXSpGRGvDkTPk2+K7wFlzMYZwGTxDRmCW6mL42pBBaGcIffKmeXGETGrWbx6QKX8OHKiYFZyvhRhDryGoM9Ky7ClVB5bSHTIQ66NHE2GKMFYTZzH6JtUdAjzIIgxJJHkue0ipYKaPYdNnQbENqHr7AQriVksb8jZP2Tyzv6h0VN/1BtaREn7FHJaKEsh1WTolkmDbxqItscQufKUZGCojRHzRm1MqUBjg8LNSahc1NdHsUFhAvND6TBMsTwxRAGl/kip60OCazKC5AHX4fkbRP6/vEzKmwe09QGlu+l7XrfLTslgWCwoIbdpKmgbm3rRmXwiwtCwZpBtNvzOlHi2U0z8WNsk1Jgon1iuUkYyk+UN+jibMTTrYDAsiv2pk3mlZKE6pgKSNOGDwqCRyf7jmwfBqtHUEnxgEGzDGvFzS7/4TgrA2ZRD8OqIMIsdrou8jz0FYS7YjZJOjCxNJUtp0Z4UPCCQYmWT2U4yL5Wf6o61AwHMJNQpybBKFo1XA6AhxgSbJO/J0gSVnHptRbS/Gojz9uRbVaohJu+jIcnMZPwcumQfxtjUjZvBiZkz7CsU+ygZbS4/mcfAbSPZBPARyehQWp6wqepFaIZ1pImtozEvGcdNjY3oav0b2SePizKHtO2Aw67DNr/qUQoOBwcHBwcHh7cemFw+257/SQFXuwO2Ofps/vz5+Kd/+idcf/31mDVrFlpaWiLft1KYpIMCm9AFFjS0XoRmUvm8kYKCjPzo0/CCokSVpGfItRoGYZJtoDV1P6Vm4mTdD0itAIC+qmA6XpIJJF8Z2IzWjBgGR/ZS2gFRp+X9VawcEGXs2yHYqlJGRhguX41wgDRFhj3AWMJLLW0RgzZFMxklpVWyjrPThQDQ/WfqMoqWoV0zUFoK6j8eNHQILYVB02wt14qw1B05DSPdUf/Q6G1tBsq0LqJnoBl+LXqNWSpl6EWssjxtpxBrtdlWU0cUWlqfumaF7PQGql0eAyTTY6dqgc8EMwTjmgzVVRlel5Uc2tCgqBDpzYP6XL5mGSJ1rzfiTBmg9WM2+2Om67AZDGCLCXTpgc6VxUJG35ddglHhHeJzqNGvDCfrgRgj+ZSY8ad4wsyemN2Ub5hqGilaqL3EGJMVRKOqtUtpwcwqPVxbKZ46ZWgY/PX1kXOyPQS7NcyrWFcRWhXSDHbnE3SI8r5RfwiCpv7eNEQcjcFIpYCMlRCZ2L56xWAto6wyKxgpPQyLgIyfk5/i3HV5v9aDJkaa4lnny3qRdqc90wtsej56bpMxov422C1QahqqjxwHoXFfKGY6KSRfpc6R47z/NUyiNB+yT/ngBnB63nAynhTtG2kOoVkQzxZfMpPMY2CkDdvBcJqi0bHNL0WUjPX000+PvClSqP72pPlwcHBwcHBwcNhV2OaXoocffnhH1GP3RqkdqA9p1oCiR5iRAJCYAhUVFBgzaoqYEixcEyFSyoKfjAClJqXUobQaQagjREaaotz1I2Jm+fRGMYN/ub+JfTvErGeN1EcM1sSsbqQRoCYTuqoAI0/OViMaFs1MKKNFmmXR2r3JTNhMT9IafhBGI53M4+rh6HqeZjOekiFnzL6kFT8npi1oAjIiRrE7LZqZ66+L2XbAxYywuyj0DzzzalwHppiIwOgTqR8xWQ66dqYexk79QTDbZybHpLbSLFixIjp5KaUiIL0EAg7WLttmRzZ6Xjwhqpleg5gImhnX+oGqNSs3k3mq9DMWk+V52vSTtFEmQ6cMQa3EoIBmIpJYCzvSLAwBL5pA1DxOsXWmOac1ljw5y29NdyKUUZWba+L+GZZ6mPbiBHDJDDCLaRT6tqgJJ280VJuUQed6GX1ULkdNOAHdb61FoEXqmGpl3eZ+ycDRuWWaoMKereggnY0EpVXhtQFtPklsUIp0XqGOwqRINt8Ht9LjRJgSGhM0IR4WrBqrGwmYKSKvvVWXY4+bSj96ckIP2d0pWBdKkBvyULFIhJyMoGUblwOrhbZKjVkzGTDVnZhjj+n+oig6MorNGn8SlY7OYK+JHbWjazesAR+WrGjFYJ7pPpN14BNEe/aYcgjQkIwSGbx29AJDpF3csfCYNw5pPpzQGgBw/PHH74h6ODg4ODg4OOwEuOWz0bHNL0UA0N/fj7vuuktFoR100EH4+Mc/7hytR8NQP8AMNoDQ1AlHOSWTpKilVAqckmnKKI5QztyaYVVrGVRqCj27C1Ugl36TJ01EX1VEgQzUxP4B1z//do2I+NhsfEfr6pTmo046pVw2zgqZ7fMTbhhbI7SFhLBAPL0HgTeCONtCbU2loik/zM+Ub2gNjLQalCrCjgr0PMWMBdIvBTRbLeSiDBRgsWFRtoWnNPOnWAPa1/P0LJZ8kEyNkGIwrCTAnsE0EiuSMfqMfGNMfx9qm50CI6LFoW3yM2PoPyh9QtoDJ5mI8nzR/aySfdJx5Ls0UtUsiK0RagZRtolgazto5m+zhOY+W0LItZ6LvMLMNDz1FaKuQ+vVIXQPdnWLCKgKkxF6paLSmRFjpNiHISONh9ke6icaG2V577/eiF8XStXSDHQ/UNRiuaLLIEZGntMbGUTeF0zRSCCeEZWmeLYUWrp08lL5TKnIfTzmIaeiAyk6LhtPR6SY6jCu2aIkvWbaFotVZV2d8XtkeBMgI0Hp6VGiaLpsCfAN3SAAXpeRoGtXa82S5QHHCzmdlJnusTBU3kCK1aFkyD7T3l30WbC0doAxTonhNTSglPZk84D2pKK+GZD93mgAbRPkuSUjV+gACxISQe8AuJei0bHN/Ncf//hHzJgxA1/96lfR19eHvr4+3HzzzZgxYwaefPLJHVFHBwcHBwcHB4cdjm1mij73uc/h9NNPx5133qlSfTSbTfzjP/4jPvvZz+I3v/nNuFfyrQ6+bgN4KR+PumkGWkNCDqxl+Xu6CaYSGYqZhydnotl0AagP6jIAoCAjGHJtaMpIs5R0q23yuvJXKcuyGnLmNlgPsGpQzHI2SAfjQHq21IMQbVKXQolhCynBBvLhl7X/jcno0IyLopwapK+Ir8sr9+vRfEEsd2vlLeJ7qlzSuKAgZ1v5HDDaDCZlMDshzToZ0N0ufs5YUVTNOlqyQsfRVEXKOhVawErENkkWhByuTbbCYGm4HVhC35VSKgEmj3ndsJgnk46cirNCW/TnMetm+icBYoZtnztM0PPI8crSHrySbJAZbUXIWDoO+q5Wj8+ezeOVPxFFbQGqz20tmllf2yPHiNpTUJFtjdhxfNhgiizWBWGonIu5ZGbzMiqRZatag0MaHmIeq3XNBkb6nZKiyj4lZqEaxDy5GOR3zY0AscmGnkd5ScnEtkxqini+Ff0yIqu/HmUf2koTkKZ7QT5TMpId4gg1hUmRUMWCvs9sdi7kmpFUvmLU74HBLAWRtmKvaboMSozcqMa9vIhFym0GMlYi23pN7cPaKDLXSPQMgKUy0fseACpRd2lRVe3RFVZIByiugedrJjzCFgE6y8CUqWBtMvpMenJhxV/B6blOHlt0rTf0aV2ffHZzHoJXdpamyDFFo2GbX4r++Mc/Rl6IACCVSuHyyy/HkUceOa6Vc3BwcHBwcBhfOKH16NjmVrW2tmLlypWx7atWrUKpVBqXSjk4ODg4ODg47GxsM1N09tln4/zzz8dNN92Ed77znQCA3/3ud7jsssvwkY98ZNwruDuA5fJCxBsTHUItM7AOS6RuLg1sEKHynEwG863gKWPZAyIVAQDwYicCuVRGy2eNsI5KQywFVGQY6EBN1GHZpgqWrxff1eQyWqYojtt7YhH7dAh6+MheQUt3NWW4/4p1KlVEBERDW+H0zGfgiNLsSlwdhPEltC2ZQAahPndZ0s3Fkj7OFlgThc9Dbd5IdcikldWBWsKilB48VEZ2nqLgZVn5diCk66LTB0TOBxjLJs1oChcgajJphxKbsMStatmsaSxP2OH6dE4TuUxc8ErLDilfLY2p9pjmhwkpLFg6ukmVHYZGmL0cDySEbTbVUgKXdg9eq7H0ldrCI4naSNe1rM0B1TKgGTpuCbOV+LYyospQ6T3MZaB0tGG82QSXyzlsoyyTlkHM60X9XdWCYLXsVjPsBKgvqb+NlCu0FE3LYWp5JuVrAbexVMjk0i8lVWWTDwIArCoviy2bUQh7mnvg1SFVRwBIBdKE10vp5UASWmeyOvWJOfaozWrMbSHVihdGdomE5NPx1Zr+mcaPOj5BeE/jobNNWwtQnc0lMxLAD/QDkEEtMqCBxmI4VNef5D+StcTU5s+0RNohnh2Vjl4sH3wGAFDMiGXU6TMO1TYfGzdH21OtgUtDUxUI0awDQ1a7dxA8MHjYzuWz7Tz+zYptfim66aabwBjDxz72MTTlQyCdTuOTn/wkbrjhhnGvoIODg4ODg8P4wWmKRsc2vxRlMhl87Wtfw4IFC/DyyyLh4IwZM1AoFLZy5NsYvROANNcGZjS7zGb1jKZbzhB7pAjVnCmROdprMklkth/olCZoNDOSiQdHmmX4TBqFyWlZPaiiImdLG2VSyXVSTFiua3EnfRYkUzRrYhFH9Iifj+iZLvbZIK55aKR5UCkjQq6Fn4Y4EQCQ9pSwWoeiJ7AbhIRt3PhOJS0lc0QzLDhjsU5m+gGalRWN8UqGjsTESTaJp3NgcgbqkXGebAPLlbQJ4QgJhkm8GiSIlnl8m5lks2KF4keOpVm2ZRLpsQTxscEO0X4Zi00CgLqRJJdADIedHiNitEf7GiHICWHwysiPGCKjXSxNCV5phmwkf7VhGjraTJHHgJwMWaewazLJq+n6sWwm2tahtDb4JHsETzMemtUxmC86J40bOl+tZrAOWvhL9VWsE7E8mTSU0NoCy/pgXZK1nCDHW5dMM5MpAJtkCDpdp/YS2JRDAADrG+LZMFQVCVVDhJhanCiqLE0bO3Pid963ChjpF2WQwJrYlLCpxc7MYFipL8pafA5A9CON+4y8FsTCDQ3rZx4dT9egv183vB5PZqxT7chnpcf09c9ayV8D43hiuchyoBnoJLSb5DkNhlEFglTIlNS4NmToSOydEa6vnnOyrcPNAaytCMuDjDTX7OmZhrxcAeBko2DcKyojhBrXOWDnZPlw2ALekE8RABQKBRxyyCHjWRcHBwcHBweHHQyREHb7hNIuIazE8PAwbrjhBjz00ENYv349QmuW+Morr4xb5XYbZFuAUh5ol4OQDMmYr9fCJdMTytmPFzTBZdoNbBYW9joq3DDtI6M1NasD0jJRIpPbAt5AnwwlXjkoZlUDUsdwYHcLppTEbGxArq/P2UvMVg/tzmFPGXo8rSS0Cvyvi8Vnw7judjqO0UCsUWDoOGwkmDjGksU2QqUFiBkB5rLa3oDW831De1CUM0+pI0KjCgzKWWWdkutSaoUW8DTNfiUzQEaa+VYwmfxYsVR1g72y9SVhiMTUFQCwdqPW3FQtlsLUSJEmi9rj+5qRMe9DxRBZaTtCrnU1tC+ZRcLQ/djh15l0PAFmwMHymWhdq2Tsaeo5KBWIYfAoTUm9omEqSZ92+haT9SMdh2l+aRt1Ukh7Og2QMSOxE9JQkplMHlkHBIGuq5lGhWAZE4LsF5pGKotYOhE/msqF6qnGrNR1UZh3axFsqtAGson7AABqBWnA2Cyj2DlVtluUNVDfgNX9SwEAlYYoszsv+nZKy75oCaTJYYWMYZ8Vn42qfm6QNlGZmja1BoeeKY0G+IBhGAlo/VU+B0Vv2OMNiKfCMRP+JhmISrZJjSFi0v2Urg+BmN1mPZ7uhpCkTQz180MzznHrEHWkbzCtdK2JMVq3CQDQ070XDuycAQDor4ltPkvF9U+h8Tv1F9mpdO0Flnbmjbsa2/xS9I//+I945JFH8NGPfhSTJk3abd8WHRwcHBwcHN5e2OaXov/93//FL37xC7zrXe/aEfXZLcHSBQy1tuKVwWUAgMGKmA20Z1uQT4mZ7qYNYhZHaTjaswXs3zETANA1cX8AAC9K5mhkUM2aKOqsweTsjOtElrTWnvayqIfRSKQJLWKWMrWUQs6PRjxNbxXDYrjRRH9Npg2gWZqZlDPQDIRqq53eI9wCK2RClsXNstIJ0R9qf5rNy5khtdnUDZFugMozZ6Zhv/isNzSzFESZCNQbgEzyyCWjx2Q/htkCfKXnkhFCMukuYwxbbK3SS4hZMN88YKSusBJvAvFoHjPSLEjQLmUsdoLYoEJOnMsogytWKGUwJRQxZ9S3GdX/sHwmnurATF9Rtma8iu0yYKeH8Rj4CCUQlVqxXCMWRWjqhfS2aCJdVmoBSlJ7QmOX7oFiIV4/IG6OqdrT1Lokihgb7o+cH4ChEdPaL7te8Dx9jZMYOZUsVrQx6wmmtsYq6KsJTdHaymsABDuUkrq8qSXxHNijKJ4V2LgcnHQ1xHa2in3Q0omqTBZNiaIJ7e37gpHBq2RI0kEI5IWWUEXCSlaRc64T4arUNAbTRn1BCYV9gy1VEaCG0WfGZr4pQrWpr599Po/pPs0ZzBIgNF9WVGg4WEPYJ3VGw1HGKPKcMqNj6XjSEhG7J9My8RXPYvK+s0QzikLDlW00we0oOqlJY22lWOTwJpQxBMcU7Wps80tRR0cHOjs7t76jg4ODg4ODw5sOzrxxdGzzS9H111+Pq6++Gvfcc4+LOBsjmsUO/Gb1I7h3mVjbX/q6TBWQ8rBPp2AZOvPiUtCkpD3bj/06RELKg7q6AAD7twudQW9+GnhFrFuHUhvTkN5EaS8DNOSsR86yUn4GnTJiY89WuZ9kdHwGpOVsbqAu9v/jOhmpNtLEET1i2/FTxKcvZ0ZhvzFbpzQfZiqPhsUibcl3yADbwn4qnYjJRhGrQTdoPq9mkCy0PH8qVe0vY3vxGGVx0kuYLAAl/ZT6jBQATuc0E7TKT4o6UsyXmRyTZrVKP5OKeyuZaSFiCVGNKDLT/0a1w9LE0Iy6vRSNeLPbb/s6qfJCxCLMMmlDX2IlaE1lDI2KpbepVOMpOQyWjDyswgGZOiXk8KisViNSjo6vWu03mbYgyiwoXQx0OgwdcdeMsXVaU2IkEpYaJxZKbRbnmlmydS0GC6n6pjJi9BONA+M6UUJoSqpa6RdNb+lCa0EkEPUly1sLhtGWEdtaSCOzcbmoX6YFkAxEU7Im/XURoVYdflH9QQtkSiCKWM14OaVFfH3oZbXPtF6hKcx2ivQcrE7pK4YAWUfVVpOFkywq+fkoDVgYAkUrigzQ10wxvwZDSf1LaXU4Rbr6QMEasyphdk2PkbrWAykNkUxSTVFnvBFohloyZdyMQvSte53GXbWung2FdsnIVQ0WLpbMOKU0bij1AAA29P8R5RGLWdpBcEzR6Njml6J///d/x8svv4ze3l5Mnz4dacvozCWFdXBwcHBwcHgrYptfit7//vfvgGrs3kgFgYwKETOJuqSDhioNrB+sRfYlpiST9rB/l2DiqpKB2bM0Ue7VotyXK0rHItf/kQLCKhUGAPDgISNni905sY3MWitNjj+tF7PlJ9YIDUJGzoLyaQ8Hdok1+qxkn5r90fqadeaAdoMlJEZ/JChuKMLDjD6zjzWOU7M3mnVTNA0PgVDOtpO8TlSdiXXSWivFHhEyKYD8ibrEDHmgthEAUEwbmiKqC3nYmAxB05jxqognw02b6mm1VfvneLGoKD48oo+zI3g8ZkR8EcPSovZXDtZ2m82IRoJZNs1wyXcm5SsXZR1RFNWPAFDJX5W2JpeNM0VmZBexdAWjb6lcm+UKuY54s52tq/XYOFNeRoUcUJQO8nI2z5qB8A0DNMtA1zDJP4kix0yPnZwVjeex+PWpVHUCYlNfAgDT9tW6H2Ji+oV+iK9foerR2SqYY/gZYFiwP8RasnaRlHQYdTAm6pb3RJ90ZkXZ1VRFMUQqUlU6tfssBV/q5/ZqFZYrAW8izel+ke0oSv+k1h4wGa3GB0VdsGGVKLN/SI+FkuzvtMH2UfTYiNS8VWtxXZKpt6LxohLpSl1QyAFiAe0otwQ2kRVSinUO7TGS9o0oWdIUWfpFoyx4khEOAjCZCDbVENeHjwzocU/tojFlsCx8k2D3ZnYdiUFPR4PuSDhH69GxzS9F11xzzZj2++EPf4jTTz8dLS0t21wpBwcHBwcHhx0DD+OwfLabvhTtMKXUhRdeiHXr1u2o4h0cHBwcHBzeQrjtttswffp05HI5HH300XjiiSdG3ffOO+/E3/7t36KjowMdHR046aSTtrj/eOENO1pvDSrRogP40Hrs17sP3j1FhLP68g39pc0jeG1IULu1YUGvNmVoaM1jWKkoXiFIbM/I5YpqUy3r+CwqlDRt+sOsoOc3lpcp88aUpODbMqIOf+2r4YGXRNj5yGZBR0+YJOj8AycUcJBcwuPrhJ1AWJZ0sO/Fw+gTTBxjIfrm/uaS0RhSfdBxSnANGKJWQ9yZZCJH20ncSEtf9aoOWSfhJtPLQLQc8eSG3wEA1g6LpbmjJh6GLmXaaIVim1A0Po+HvJttoDqTOSJ95zEjwagVwm6mDkkZoc5bgEqLYmkBUW9E04cAUSE01d1YPlPGkWRlkDb63RYT0zKdmZSWYIhV1RJHi1xmMSwWKFyfJSZ9tc5n1p+WzXLiPmKlXtQyYtko48twdUMUq8wOq6t035jiaRvKKsGyU6g3jASisv/aSzr5c3u7OHeHMGXc7NfRNySSimZl8tbenr0AAOnWXh0IsFnWq78faJVtkgJoCqMPgxAlX4qbZdsCGe6+fuRVrK/0yfaLOpfSOmimRnYA0qqjKzcF7Wm5jGym1ADAQk9tY2lxb/HWDtkPXPcFLUmSWW2jCgzLJS9KkzIyEu9fClvP53X7yTiTwt3NZS0aB5FEvVHbCuaz+H1C16kRqCwsvGHv4wGelebDvNZDMjzfk9dnZFBfd0tUzxsNfaw0qNxUW4uh2s4Kyd/50Wc/+tGPcOmll+KOO+7A0UcfjVtuuQVz5szBsmXL0NPTE9t/8eLF+MhHPoJ3vvOdyOVyuPHGGzF79mw8++yzmDJlynbVfUvYPWPqHBwcHBwcHBJB0Wfb+39bcPPNN+MTn/gE5s2bhwMPPBB33HEHCoUC7r777sT9v//97+NTn/oUDj/8cMycORP/+Z//iTAM8dBDD41HF4yKHcYUbStuuOEGXHXVVbjkkktwyy23ABBLcA8++CDWrFmDYrGId77znbjxxhsxc+bMUcs577zzcM8990S2zZkzB4sWLVK/P/nkk7jiiiuwZMkS+L6PD37wg7j55ptRpBBRiW9/+9u4+eab8cILL6C1tRUf/vCHcdttt21746pD6ElNx5E9gul5WYonn1mvGQNKwhrIcFufMezfKWZv+3aIz/aMFDcG/WjKmU7Wk2JNEi3WKkrMuLEqzvPspuV4vk/Myrrz4riWtLj0m6oB/JQY3MUJoqxDeoQO7N1T8jhKhuLypc+Jz2pCMksjbQe32KJYglgDtM0+RpcbZaKUoNtjqh58QMwy2ZCc6ZeKxuxc1rUgGYOOCUqgzuuUgFWHiCtjOWIYsnq2SSZ59CAopbuAYdG/sdQcYahZFNPm32aWTPNDlbTWTlNgpEOwUllEyjDZJztEXpbN8nlw2U/ctgUYrSy7TJqBV+uawSIjSClyZlRvsywjAavqG7vNZuJVMsSsN8A3i7FLYdRMCaCNhLhJDJliHUjcKvfpyKDSFKLYDSNiVs8RKrFxa1EIZVsz4jnDN7ys2QyqO5lYZjPaTDKJRSLxPe0/pRfoErNcYiE31YX1xvKBl7ByaJNsmhg3+7UL1mp664HISMG0P5TRbaZ0NfKT2tCSalXsTEOyYusqQtD7176VeHaTaD/FRbRl5TMg7SmLDmKRJhY247DuIwAAhZw8Dz1v6hWVFoQ3ZT8QC1ssAnW5rSoZRkoh0gzi46ze0GPKZk6r9VjqHAqnN4M7GBFe5r1mpV8xn2FeVtQ1VCH6iGNLxrPKamIEfINg35h5T9mGq97oLHe+OAmN1FuPpxikNEkS2WwW2WzUDqVer2Pp0qW46qqr1DbP83DSSSfh8ccfH9N5KpUKGo3GDvdJfFNcgSVLluCb3/wmDj300Mj2WbNmYeHChXj++efxq1/9CpxzzJ49G4Ht4mvhlFNOweuvv67+//CHP1TfrVmzBieddBL22Wcf/OEPf8CiRYvw7LPP4rzzzouUcfPNN+MLX/gCrrzySjz77LN48MEHMWfOnHFrs4ODg4ODw64AY964/AeAqVOnoq2tTf1fsGBB7HwbN25EEATo7e2NbO/t7cXatWvHVOcrrrgCkydPxkknnbT9HbAF7HKmqFwuY+7cubjzzjsxf/78yHcXXHCB+nn69OmYP38+DjvsMKxYsQIzZswYtcxsNouJEycmfvfzn/8c6XQat912mzKFu+OOO3DooYfipZdewj777IPNmzfji1/8Iu6//36ceOKJ6lj7pW3M8NNArYKcXDvOSWZmQktaJWMl80ZfztJaMz4O6RbbDusWpo0oi3Bw5IpqplvKyLdmWosO6oDUEjXlrMxjDB0yFL9NvsFn5Nr+vu01dM3sjlS3JPVGe5bymNQi+plvFJoaZYcP09Qsus4+GkZjkSIzsYTQ/JihY8g1izQkZ41DkjHKZeNsizJGLKiEriCmaHBY70+h66buSBrT9eYnyVOLumabodb90CxQGc0lGCkmsS8EzxvdPqBaT9D4GIwOFWuGxdvGiTTbrhkGkkrrkDCDtY0dq7X4jLdcMeoanVvxINDpR2w7gYSUIer4YiGWDoKHoTLTI0PHUI4bry0bNbI025rydR0oMTB917IBWal7WVdZCQBYPzKgNBLdOaENSZUEU5RvaVfsBKsayWgB0e8qIayllctlNUPWIk0MJ+6DZks7AGCoIe7nDSOrAQBrhjfj1SHBwBBb05OXofncGD/0c3s7WJtgmyoQ9fM5PUdyKpXH5poIeOmTiUo3jAzjL5tEnV+SOsLOnDjuxGktOKJHGELmfDHeOrIlpXEKZKoNn1KHGLou5st7ktqcLSl2TrFIr68Qvw8MqeTECrms1hClDT0bIBLvDhBjGGWIIsmp5XfKciOTjt8HIVdpOhhZBEhTznCoHrcVIYSh/i5t8Qn1htY4ZY37wmJKdZJhI2nyZqE1zQNoDI0kn3ucweDB205OhFjJVatWoVUmxwYQY4nGAzfccAPuvfdeLF68GLlcbusHbAd2GFM0bdq0mLFjEi666CKcdtppW337Gx4exsKFC7HXXnth6tSpW9x38eLF6Onpwf77749PfvKT2LRpk/quVqshk8lol1wAeflH8Le//S0A4IEHHkAYhnjttddwwAEHYI899sBZZ52FVatWbfG8tVoNg4ODkf8ODg4ODg67K1pbWyP/k16Kuru74ft+LCJ93bp1oxIYhJtuugk33HADfv3rX79xYmIbsM1M0apVq8AYwx577AEAeOKJJ/CDH/wABx54YITZ+ctf/rLVsu699148+eSTWLJkyaj73H777bj88ssxPDyM/fffHw888AAymcyo+59yyik488wzsddee+Hll1/GP//zP+N973sfHn/8cfi+jxNOOAGXXnopvvKVr+CSSy7B8PAwrrzySgDA66+LhIuvvPIKwjDEv/3bv+FrX/sa2tra8MUvfhEnn3wynn766VHPv2DBAlx33XXxL/wUkCuiKiO39iyRPqUFk1p8uS0vt4kZogcPe5aEtmEqJXkcFNoDns5huCLqmk8JHVRaveRlhKkbgJQ0ZuvOl9DkgSoXAFqz4nxHT/RQDcQMar2c6awui33rQRNMMlBBRUZNRBImbp0himiJ7LX5hsHo+Nb7eVJ0mypTb6NoOI90JnJGLr40UksAgvVJye+51hyoRLCKiZHXN2iCN8TMLSP7qzVT1PvYRnGGloeR7iFl6BlCSxtkwmZiCClfm/zRzJqisWo1FQ0TYXzsdBPtchZXGYnrksy62LNaj+oOxPRQJjtkM2V1I4mrpTtCiLj2RpoesnxeJweVYJDsEgAmr7ViDsNQJ62FzUyF8b6kSdpwHwoyBUZOjocUK6t7L+1Z1yeVU9c6FlVrpgexTDlZVzvQIiI5yZSxWWhFk4t2FFLiuvQW9hRV5iGKacFSUV16C4LR8r0UUqSJoQiwUjeq8tQjDaEVo2g6j3kq2SuxTJR8Out7ykCWsH+XOO7Q7k7MaJsu+yEj69mGVEPUuSY1L82gLvsvo+8led/Qsgr8FKoyOpZBtDUj9TOsXDG0dTKtiu/HEynTeMhoRk4ldvblp8HasKxh2ghxz/AEllaNIclCevI5xTyGoE8+L2ibdLoNhxpqm0epQEj7lknrpMHEOJcN1ofGomlOSelKiMnsHwKG4+a4OwLm8tf2lDFWZDIZzJo1Cw899JAygCbR9MUXXzzqcV/+8pfxr//6r/jVr36FI488crvqO1Zsc6+cc845ePjhhwEAa9euxcknn4wnnngCX/jCF/ClL31pzOWsWrUKl1xyCb7//e9vkQ6bO3cu/vSnP+GRRx7Bfvvth7POOgtVcrFNwD/8wz/g9NNPxyGHHIL3v//9+PnPf44lS5Zg8eLFAICDDjoI99xzD/793/8dhUIBEydOxF577YXe3l7FHoVhiEajgf/4j//AnDlzcMwxx+CHP/whXnzxRdX2JFx11VUYGBhQ/7fGLDk4ODg4OOxsiOgxbzv/b1v02aWXXoo777wT99xzD55//nl88pOfxPDwMObNmwcA+NjHPhYRYt944434l3/5F9x9992YPn061q5di7Vr16JcLo92inHBNjNFf/nLX3DUUUcBAP7f//t/OPjgg/G73/0Ov/71r/H//X//H66++uoxlbN06VKsX78eRxxxhNoWBAF+85vf4NZbb0WtVoPv+0q8te++++KYY45BR0cHfvrTn+IjH/nImM6z9957o7u7Gy+99JLSB51zzjk455xzsG7dOrS0tIAxhptvvhl77703AGDSJDGrO/DAA1U5EyZMQHd3N1auXDnquZJU9wDAMkU0PQ9dMkLk6Imi2w+oj2Byi5gJTmnZF4Ce6TXCOnJyHd8jDxUZ+TFU79Nl03st+X/4HoYCsWy3tiKio1YObcK6ipiBdGSJmRIs1KRCJwbqovxy/fVIvTN+CnxIphGoRv1JEPAtRmXY0WYRNilIWLOnbTZjhFGSxBJL1bAYDCMthEoYSVFOm/v0TFSmFlCRQ4BmNfzRb4uWlF47j0VYEYx+UdoI3wcn9qRpsRoms0J6DHrgdBR0+giLfWFhqPUbZtoAK9qGGCZeb4DJ8anYsRY901X1kqwbT0prYHom2R5BKorMGBvU95R+w0wnYieELeZ1Oghi68IQbJ0Ylx6d22wfsWYU5Ugz+DCEyklhR6aVyyp9xpQOed8ZiVApHUa2JhPJDvdpttFmudJpMGo/JZmV+grW2qs0bFViPHgdOakn4QOiXRmp0+loOxRTS+I8I80hWS9isjLC9wZQEVzMSys2KJBhUx4oNVAFw40B+V1TtREAOnNFHNIt9j96kthGOqKDOg9Ce1Z4xhBL3PQygHxGpDOtkTIBT7WxIWm7UOmfEhgayXzxzs26T40ITbpX1fg0mEaVZFl6M6moyjCMpwUxWUL7fvAYuK1dJH1SNVDPFC+tn6mATBYrnw1caZckm9TRClBUVL5dfGbWgq23GHbDQ035LZHerpDT0Y07GEwm+tjeMrYFZ599NjZs2ICrr74aa9euxeGHH45FixYp8fXKlSsjspZvfOMbqNfr+NCHPhQp55prrsG11167XXXfErb5pajRaKg//A8++CBOP/10AMDMmTPV8tNYcOKJJ+KZZ56JbJs3bx5mzpyJK664Ar7vx47hnINzjlpt7BTj6tWrsWnTJvWiY4Iuxt13341cLoeTTz4ZAPCud70LALBs2TK1TNjX14eNGzdi2rRpYz63g4ODg4ODg8DFF1886nIZreYQVqxYseMrlIBtflU86KCDcMcdd+DRRx/FAw88gFNOOQWACHXv6uoaczmlUgkHH3xw5H9LSwu6urpw8MEH45VXXsGCBQuwdOlSrFy5Eo899hg+/OEPI5/P49RTT1XlzJw5Ez/96U8BiEi2yy67DL///e+xYsUKPPTQQzjjjDOwzz77RMLpb731Vjz55JN44YUXcNttt+Hiiy/GggUL0C4dZvfbbz+cccYZuOSSS/DYY4/hL3/5C84991zMnDkT733ve7e1yxwcHBwcHN402P6ls+13xH6zYpuZohtvvBEf+MAH8JWvfAXnnnsuDjvsMADAz372M7WsNh7I5XJ49NFHccstt2Dz5s3o7e3Fcccdh8ceeyxiCb5s2TIMDAia2Pd9PP3007jnnnvQ39+PyZMnY/bs2bj++usjy1pPPPEErrnmGpTLZcycORPf/OY38dGPfjRy/u985zv43Oc+h9NOOw2e5+H444/HokWLxhRRl4RUrYJ9iyLrdJOSMPMmsjJ8m298VWykdBypjDZmk5RzKG36h0fWaVqdVmoMo7ZV/ULk/ucNItR3xWATAzXx/aQWccCeJSECzKdyKMqw1GJG9NEeRbHPPm29wLo1ovzRwlTHioSlNlNAnbhElrCUZoPZqS+MbNqUwZyWyFgYxlILoFqPhpmbZRVawKQ4lajiQlou79QrcfExhfxyro0glWjZ00JuWvKhzN7GfmoZjEz/Cgl6O0oVEBgGeBTCbgqBrXQnrKUQN6qksPpcXhntkb2BXpLUyxO8JpdNPKZTcVhtQMaLG0GqcHWjXnSdqM2eB2Rl2oriBLWN1+TyMRl0Uln1hqojo6VIo79jVgEk1C1XAE8sn6WkYHgynQ8A75OZ6WnZes1adWxMXF8sAG3t0TrLDPKhMaQb0kIj4+WUzYOy2KA/Lrk25AutspvENlpOT1npNQAR5h7IUHJazqIlwHqzgv6aWGZvymdDyvgjdnC3WOqbXhJ13rMklhFbwwz4a4LB5zJ6NjXzXcoQlurVkGUOh2VUA7nMFkYZ/EK6DSVyU6T60zJ/Lq/HAdWLh0BZhsrbwQLNIL7sGkl3Y/WPuWRmBUKwAldBHpwCSKSQPKwl9DMtlaX9+HOK6lTI6+sv+4qP9I+eTsRsG9376TRYajufs2PErlg+e6tgm1+K3vOe92Djxo0YHBxER0eH2n7BBRegUChs4citw6TPJk+ejF/+8pdbPcb8I5DP5/GrX/1qq8d85zvf2eo+ra2tuOuuu3DXXXdtdV8HBwcHBweHtz7ekHkj5xxLly7Fyy+/jHPOOQelUgmZTGa7X4p2V/DBdeC19WpW68sElT4PwUlsaKc8yGW02FTOPOqhFH7yUIXiK/GlkdqDUgWUJbtTzDBUAzFDoXD7F/uFYVghnUVHth0AMLEgPrtzYp+92w4G/4vIM8MbYxAAmiLnpDD9JIH1G4UyA7TSPGTSYhYKACnJ/IwYbAUJOc2ZvxniDoBVdLoPLq0MWmRCzDSXosvKa7HQd26Y+HHPYi7CUIuu7cSrqbRmfyTDouaTRpJUxUSNGKJfj8zxjFQZBDmjpv1ZRxv4JpnslGbNpoBYWRdQSgajTPqZrmvSjJdgsjT2TDnlx1kx2qdaA4YFu8Ele8BSWUMwTqJwnaJE9YUthE5KX6LM+0JAmhdS+3lhQ1wcTmNsYEiVwdoke9tekp+9YDK8f4iL8VauvqpOTYmac75gZjzmaSF/qxQ0twjZwTDqGKmvk8eJa0dMEZgHXpRC3kGp3axXkC0JXWQjrMNGWabi6LeSjDZ5gO6cqP/EFqGZbKWEr0PrgT4ZyEF9OtKPRk48swZqgkXrq65VZTdD0de5lKhzm7StyPotUJ4JUkxOxrJI53QSZ8MCQ98v1n0dhsb9ZT1HkgxLJXgq9f+z9+bhllTlufi7qmrXrj2efebT3fREN9DMMqhXbq4xzOp9osYnThjHSAa94u2ISn5GMJKAcQgxaEC9GsmkT4jGG+IQNMFg4CoyiSJDNzQ9nz7TPnsea/3+WN+31qra5zR9oJuhre95ePbpvWtYa9Wqor53vd/7GmSJCxY817LioHujq7ZxuiFCGre40bUouMaMOi6kCss6qM1odGWA5B2RIYjLcHjuoIzEEYpnwxD2+RIrfil64okncPHFF2Pnzp1ot9u44IILUCgU8PGPfxztdhs33HDDkWhnEkkkkUQSSSRxGOKZ1il6PsWKX4ouu+wynH322bj//vsjxOrXvOY1eNe73nVYG3fUxNw84DumRLxComr9vslo4/L2QVrzKyShQGHPCLRlyQhWdlTmL4h/1O40kE2pjOg4Io6HMsQjZYUo7VhUGVu1S1YJQuhsdIxKSVkKIKhVEFJbwyplOEshQDZfaLky/X44YOwaWZ+P84cOhiqlXI1EyTq1S2f34WB2xhl/tRaxDQBAGVtMPoCRFccBfJU1s6CfJAFG4aUhs1SCzdkfZ7K9rrH6sJAS3X8WefOs24+PwciFbQsQt92wS+Hj6AZgle63o22wuEEapWH0pFozyIDmOvC4ONDiiCnmP7hRSQFuj90++zs2i7WrSuMoUqNlSv7ZuNZxAJqDGp0ZoudOtwVBvBe5DL8rMh4cvb7uj56t1XqUQ2Xv5zjmb2qDGN+g9i9OoNotq0N0FEJboXvSdVzkU6XIqTv9FkCoS5hWY1Kj/WvdBc0N4nuQeRuOcEBOHiiQNAdqs5qz03bq5vhQoq4TWYX+MKeo1VP9K3oZ/ZsnFKcspPJ5x88CU8dE2iyzJcw3FPr1cHkbAODxRXVfVLuS9QwxSlYhG4rqWKX0pClnT1MpP9uEOA7AVcRcwi8cM/9nyIXARlOWQiQBdb3iUgk8l+1YSrB0JeGIwZJ/+3lSoTYz0trqGHpHHN2y72tGypJ4TsSKX4puv/123HHHHQOqzhs2bMCePXsOW8OSSCKJJJJIIonDH85h8D57uvs/V2PFL0VhGC7pUr97924UCoXD0qijLrpdyJRvUCDiRIhQDtom8Lp3NgfhKySiTdlfm6o8PJHWa/RcHRXS/r4TYFVuJHL6Zq+tjUxH0iqjLNHavgOBRTKKZIXSUnYjAEDu/RnCssp6luIUDfCGnowzxOgO/TOCFMX2jVt7AEaYT7hi8Nx2lQpzNuLr/namqTkvSx2Drkm6D3Qoc22pCkeuMCm7PZRyJ1JbVbWOtvZwnCWqz6y+8necRVrcINMWy0jV44w4lg07jmmr/V0cNWGbj1pDVaABSijR7nPXOo4T4/qEZty0OWuto+0PdM/i1UGAtkFg0UiEoRGo68eQrzA0x6ha14orzDSnKGvO59Wj57b7EO8Hh+cOjlGjZcacK/8Yvc1ll0SIAIV8sB0G83oONNVcWZMbw6pA6Zo1yJy10VvU1VosuMgCjM1eXTcxYgALQoc9qnx0CInodiEXlGr+yJi6Zxl18p0AxxZUtetUVh2fkay+7GkLoHZfnXOGxEwL/iiyxHFiHtGuygOYbarjzrfUdkbNWGKxzfeiGr/VeUKDhKeFJpsiioCh3TBIJs8N1zO8IVuMlWPAhsaqPosJiWr7H7t6054HbJnSJsSQjaXr5j4Q9vHpk6svhWUjAkCJjrK5bIZQqnoVgqpcpbdUNR2dx14d6B3cVPtwRbJ8tnysuFcXXnghrrvuOv1vIQRqtRquvPLKiH5QEkkkkUQSSSSRxPMpVowUfepTn8JFF12Ek046Ca1WC29605vw6KOPYmxsDP/wD/9wJNp4VIQQwqBAnImGodHG6cSqlVKB1ilqk21Hl3RAiv4oevSW7mWisvu+G1gy+3Qox4dfVJeaEaL9DZXN3r7XVMqcSDL1xw8pLlP4xF6E8yorjesByWV0i+K8oUi4S3CJsDQqZIdGiGzjx2VsRARgMjYe5wVCeXJZU+XFO9rICn9a1WSC20YVKYxSHKg9AJ+MejOMXGTJ2NGugONrYV+T+cXo+cJwENXQ2iWu5i1IRjJs49U4l8IRg5U7FLLegNi0jsZGaelwtRcWFgc5SL7hbHDmzddAZdZsxcFcKUu7h0Kw9UVouBUirlZPqIN0nMGKNMcx/abrCAtN0FpPzDvSyKs1P5jjYVtBxDSc4AhjvBuvMMvktKFri5CBZluZM3uOryvM4tU4C+0q2nk1bj2rOoy3Y7CTq0pb/S4CV7UrTYgKo0P5VAkenQcO2bB4LkBVpIJ0gIpUCdfzDE8o61KlKl2uRm9RV7fxs6LWVTyoTquFbGYTAGBX7RcAgL31Wa1xdOyQQsjYXLbebWF/vRzp9+qcmltD6TGNFEmp+uhQtaysWRw2a27oaxU3Lg5DI/ykuXXqQ/alRnwsh2DqbMs6Fs2NII2BYKPXgg8Z0IFjlZZ6fgPGCJbnTH4crZwaZ+Z1FYurIPGI2o7nLN9jfsrcJxPquStG10NUopWCRyqS6rPlY8UvRccccwzuv/9+fPWrX8VPf/pT1Go1vPOd78Qll1yCDMPbSSSRRBJJJJHEczKUeOPTK/9PxBvtnTwPb37zmw93W47eEFS9wllsmbLbpaogWA8lGEI7ZrCoM8ywhxZxFEqsn0OaH2PeOHqU4Tf7xk2YOQqzrfsBALc8rjK2u/fV8IJJleGcPkaIxNzj6vPAImQ9mnlJa339YLEUYrQkesQR5wi5wlSppWKIR1+a77hqjZGrVlurgnMmKiwVcltLCADghINVXfxZqemqJs2JGVoDAFhXOBFBm7LgRjW6n63TwzozQV7rssj2zOD5bP0SwKBVjjCZbbz6ZqkqL5unxnwKRiMD3/zd2K37CEDtEz+PhZxprgVVGDkjgbkGfG67WitWmab1hII0BCOmml+hPkR8TLgPVKUkGSlidMhzBzl5RQuZsnlZAGSVUM+0pRHDY5TNGHNcqr4SJXWtq2hhpqm4O/Nzqg2szVP0MxjLKHRmyFd8s+NKPm3TQbWreDyMzKi/1RiGQvWRNYJG0mnkUmQmS//DYR7hTGuXrtwayarzZcIpYJqQXjLNlTTH2qs2Ybr5BB1Xbc+VcCnf12gGI0QGac6jS+3q9Nv02YNDCJbvsO5SVh9zVXY1ANYlgu5DL+xgsTcTaYPcT2rZi1VzfeLcMsBCOem7IIgqmQOG8xWGkAcIgSLjaneMKvwW2xABn4eeSRaHj58xzkhG/zskflF/llArRqXz2cEKS3qWy9wCQEhRi3haRaewfMWc52oUVYysVfvl8mj1n5kXDXEYkKKEU2TF3/zN3+BXfuVXsHr1ajzxhLrx/vzP/xzf/OY3D2vjkkgiiSSSSCKJJJ6pWPFL0V/91V9h69atePnLX46FhQVdiTY8PBwhYCeRRBJJJJFEEs+9YO+zp/vf0RgrXj77y7/8S3zhC1/Aq1/9alx77bX6+7PPPhvvf//7D2vjjrZgo01dxukIs+RQJDKkNoEtoUNLZAxzelDLG7XugiZRdkIF8eaIkJlxPT1VfUedp9qdQ6WjCLUPzSsTyjt3K7i51uljKqcg4bUFBXFjj4Liw2rHGCQ+mWgjBcPRA+Rp1zl4yX6MOC0cYYTfDuHcDJvLegOCCYzacsQqAWfYPG2WetjeQy8tsRVIuwfBf4+Rzx9ZLKRbWchFtTQgZ+ajbe/1zbIUL0kVO0CrGd0uxYKQ0lrOiy0x2kusuuyYCbfWMp0t2Bg3R/WthxeL48WJn/Z4cp953LuhIclnSU4iF5i2ch9tOw0mh/N5eFnYdaNEcRj/QiGE1S4idvsps9wcN2Pt9QYE+fjekvWGudajVMru03EaTUPo5SXa0WFglSKhd4bVfcCl8nvrj2FHRd03nZBLy9X5Gr0OOrSUNhYognHRVyXtRSePNi9FEZnag2+WnmgZjZeuWv0GFmlpdbGjzlfpqHZ6jquXqYxwK9l9AGZu0BJjbriD4bSyAOElMknPjHyqhByRr3Oeet7w8wSAXircWVVtKLcbWJ0fpr6pzwL10XcCpOk5g57qY0j9mmnu0kv4Y0LtJ+fJZqbTHSS7d7pGvDNOmLeXQ23RRt62H1uu509XmOIAeg70Z5rLFoqg24dscaGF+nSGaH7ns2becKk99cEZWoWfHPiR+ptEKiYmX2qOq5dy6byNrnlueI8BANLja5GuRJ8RRyoSovXyseJePf744zjjjDMGvk+n06jX60vskUQSSSSRRBJJJPHcjxUjRRs3bsR9992H9evXR77/zne+gxNPPPGwNexoCjm3AFmvGsEwbQsRGNSIsm0RqKw2dD30O1w+Hs1qFtozCDxFDGTBOM5q+7KHcluhQA0qh620m9hLL6z/tVehALWOyoI2j2Rwxrg699rscercTygyZDjf0gRmjRosRbBeAgE6GKl6SWHGg2y/XPl9JGybEEYsXMrwGvuj3wMAl4VnAwj6XsasNtANEdLfjk+2EztVFi3GR3T2p207OPzUoA1Aw9hI6DJ1RjIaLUg/blNgZYyanMkIkYWYxInJjmPKhTksYqpGxTj4mK025CJlv1TerMUZiwHcEWozlyCnUoY8zf1gYch0f1CEj81pu11j7xDL+KX9nWXeqccy/luvHxGW1Mfn32KWDDzustMdRB1GhiFH1TOtT+RmNl0u+EOYyKp7yXPUsbJkzcCiqADQk2obJtoW/BGkqMAhLVliwNNCjvOE9LDgYjfsalFEPvdERrWp5I8ps1YA8sCj6lj1RYNYkC2KJug3f4LSOkXgHZ5Q93WdyuI7/RYEoVUejb1Dzwp4PlwiU58+pp7nvpvBkK9QMIfNZdnGxgNAaFhIY8LPonxqGJOuIp/L2e1qeyLCi2LOzA3uQ6sdlUiww7axcWS0r90+REDXmOcgPU8dazuNdgaeLs/XCDMXhqQciILqh0vH1EUctcaABAYXYHTTAR5ZUMgaP95OGD6AEW4PFwfo4oWe6RMhoWJVGsI7BOPtwxCJeOPyseKXoq1bt+Ld7343Wq0WpJT48Y9/jH/4h3/ANddcgy9+8YtHoo1JJJFEEkkkkcRhisTmY/lY8UvRb//2byOTyeDDH/4wGo0G3vSmN2H16tX4i7/4C7zhDW84Em183ke4UEfouhA5LiGlVCLwBy0I6O07lKG2D+BgXoKR2Af6lCkv9hSXYHd1Hv++qwwA+OmMQhvmm90BStDGkkKoXrY2j1NGVQkyl+KH+9Sxwkb34AjRCkMjRHxMCwEaKOF3HYsTFDt3KI3tiBaT7Ovf4mWwGiFoWkJuI8QzyRWU5QCICwRjLirCqmkjo0fM/Qoyxm4iyxIAluWERqvoFuv3BoUWGa3wPQifESXi/PA29j46i6asWAhjhMrts7fn43NkA5Odxm0Uej0jkpnxzfaAQpMYbRnmcctCMOLD4819rjWAeiP6nWVwqyUSYua80rYa4TL6xao5BnOXbJFN5gRlrLYCQCqluUqSpBOMCbBrcVUYBajBIRHCLIt/EtdnKrtRiylyMIfPi92jgCm5F60aBJk6V0I1RyqtOV1mbwuuAsBosEYJHgIQLHJYVSX9srkH6NB4M4rYaJm+cfC1qNSAXUp2gedSrjBJYxNA6yA4bImj+teVHV1aX2BxxOoCRCqMbKfFSFn+AoBDSBFhipD1Och9O6Pt4mvop8y9OFZSfc5nNRdPo5B2mT4fg++RtjW/49czLnRqbSNSjpK6sMJwkYyYKz+T+vPEBxsrRHlzMAidd+BxXLjuBQCAxyqqz67w9P3PoqSRJ5nuv+Jb1TMB6stxnZJ4xmJFL0W9Xg9///d/j4suugiXXHIJGo0GarUaJiYmjlT7kkgiiSSSSCKJwxjJ8tnysaKXIs/z8Lu/+7v4xS+U/Hs2m0U2m32SvZIQvgvZlRAx2XgAJrPhCUbZlkQ4kIUyUjQSTFky/dMAgB0VVbVy255F3LJdVXhM7yOjyYUm0gWVoZ19klrj/5+blIXBCycnsGX4bHXOH/0bAKA/S1l+KDWf56A40VLL4G7shumHSyJEHAcVduTQSJPJpnQVSdfiIsRRGkI8hOcZcb/SOG3jm+yXTD4FWXrIRx4BdiuegCQeA6NJ6FtZqrYVsTgyNkIEqIx1QCRyCcTQ4+ouqjCaKw+idI5VTcO/cR9Hhw3nJrY9Ah9yes60RzWC2p415q2c1XLVXq9vrDk4u00Feq6ylYNtv2Eqg2LGq37KoDnaqNcSWWQ0hLexq5R6UXQQ+azhczHyNzSl2yTmqDqLOSsamUsNIrSVGuQM8V7yZLswrDg5fdlDxlP3C6O3gaBr3q4Z1ITmUY+a1055qLUVn82IOHooUVVY0Sfh1S4hZdVpYJZFGAkp0RWRHXM9GMlMpSAmVRUYCmwWy+PWMJWs48q2o0Fcnyx8be8ie1GOmed6yLM1x8xeOlYXku+bdBwpalqoYwzl6HQHkaymJajKx7TRIzbe5QpS657R6BFz8yJiqcIcAzBVbEuFKxSvKPYdoJ5DpjKNOIMsUmrxmhiZFoxa7Xgca1apZ8oxEy9U39UWgFlG+qJtl+0eBOjazqrndW519LFyJCOpPls+VtyrF73oRbj33nuPRFuSSCKJJJJIIokknrVYMafo93//9/EHf/AH2L17N8466yzkcrnI76eddtpha9zRErLTV0mHG8tm7L85q6NsM5Q9zU3gyJKmSBqeztQ6nuIXzDRVNnz3/joOTKu/mwvqt3a1DY8yozWEGJ06qtaxjy9thtj/MACg//Ae1d7W8hUQdiWY5vowKmRXoS2lSbQEQrSi0GjSoDGs5hS1Oia75DEdIxRlfJPmdjAKl5WmgqtFw635I49t19UpDld0cVbcbBqEiVEHHrZOG/CiNheo1KOcGRhEBi3ry3hVVKttkJ+4PksoBrk+oxO6XcLhii/ioPQ7EMPUBubgcHiuydg5I+aKGUcYfhHzgWRoUAnOpPsWEtNPR/vPYVmADGgldbrm2mUtY1yL9wRQ5R8AjIwAxNkROYWYdNOqnaluD5J0dgZQoTA048ZaUVJCzJapPYSUUCYcDK1Cmiwy2GqjRwhb3/c1R6hJ1WSM6KbdrNYKGk4rFNKRAFrEF5pTlYyyRno1lfoAmhipprOREQAYKkCs2QIAmKXnAOuRDQ+vQaevvts3e2ek+xOZCUwVN6pD0RjJsrr3sVjR5tSSeWFAdC7YYV/feHWkjXCyjhTPHz9l+soGyXZ1KD8Xed6F0lSJ8jYN+8ahiFevWY8hG/Vm9Eek6N6yn01kaRPW+FgWh42rhHlb7v/8IiT1Qz6x1xyL+V88p9o890Nd5en0puk8P4KsxapDj1AcDvHFRLyRgsnU733ve/V3Qgj1UBFCK1wnkUQSSSSRRBLPvXCEOAzLZ08zyX2Oxopfih5//PEj0Y6jOpyhDFBpm+zFsbJgzjzSai09pN8c6Wi9EM5O9SQWHtCPrpkvEndjf62DPmkQub7KrNKFNLKjCj2YyKjv8il13pH0KmD3f6jz7KVKEpuzE6s+e7IatKU0iA4l4vsJhGBEaMAQ1v4HV5+xCu2BRaMDlGclY9X3qmxgoa2yMjatdFOjaJN+S72tMr1J0oZBp6srBnUwktPqAAX6242hLkvomdgokebnxBEMGHVnrt6S3RDLPnocx+iylIgHkx8f3K5DVXHCMdyTAsx3gEJ+ZDTLFjYvY1RVRWl0LOwpPpYdxMWKZPzxirEwhGSEYKASLrSq1JjPtATJgo8ZFA13i86dIrRK1maMWWd3EK3SiAXrLgGDBs2Nsto/7OlxlYHafr6lUKFWv6HvS9YWGk8rLlLQ6UEeeDzSPgkY3hTzhZhn0u8P8nJs5MiuuuPPbAkA8NC0MnqutBUysTpf01pKHC3iCs23ZjUKPVnguU5zZHrW8F8Y3RHCcIM6FnLF/44bAtt8MF3xxeNtaWjx/IqbpgKD5q+eZ9rDqOhQwWzDlaOMbnFbItWYxAPqdA0yZM9VALLWQbhIiu70TNHPnyANsYYq+BjJmytTX9rW2PT09uZZH6t2s55p+tm1Yy/CxkG4UIcxEqRo+VjxS1FctDGJJJJIIokkkkjiaIgVvxT93//7f5f8XgiBIAiwefNmbNy48Wk3LIkkkkgiiSSSOPyRVJ8tHyt+KXr1q1+tOUR22LyiX/mVX8E///M/Y3h4+LA19HkdQ3k4vdCI4jFkn8sCWYKAiRTMth2OcCBoiNnmg8Xe6t2K/m66qWD8fXUFwc7Xu3A8NVmLo+qY+cDDOjI1HKPls4Cgda9VQzhN8vQNgn8PRog+RJuPpxsylBDu0r8JVwws63Hb+9N1iLzqj2CSJi235IWDQkG9sLfpfp5v78NiW5XNsnWKQ+XQoeNATNIcjpFcZbMFQeR2vaQUsJlv3SxBcJvJDiASttAcW2W4UcsRMZQdJFjby692iTwACAeyTaRYLQfQMdtwG+PH7LXM9rzs4luPB34Adq1+8b68lMtLftW6WRpisUv7fHFrEg4/FS3PBhQJN7a8wksWIgzNsu4AQb0D2SSSK8sc8DXIuaZdhWH6raBJ27yMKGszdKwapFBzJEXXOpsa0p8Fr6S2YxuOGWXDIctlQwbmJaUwHCit12EvHy61jBZbSpT1BgSV1vu01M6GtY1uGzmaEyH15wAJQu5vLOrtWGqgSPZCspgzpe6rSH8uW4Jg0voBKuW3LV6oEEAv5fI9Ygt1lvg5R0vb9ape6tLLyT0AU3ROap8evzDUoqV6bsQNiQGIuBxFrx+5ZwEogci44Kge786gkCw/azwXGCMJBCb4B4pULfdMm2OwtEUhp5/1eumPz1trDDwjUGs8Y9o/iU7R8rHiXt1666144QtfiFtvvRWLi4tYXFzErbfeihe/+MW45ZZb8J//+Z+Ym5vD+9///iPR3iSSSCKJJJJIIokjEitGii677DJ8/vOfxznnnKO/O++88xAEAS699FL8/Oc/x3XXXYd3vOMdh7Whz+vo9CCyJgsWlhmpzk49Lj0lSXnHH2A1e0JlQT25gJ3VHQCA+0hg7f4DKituLjQRklnjeF5tf9J4FquIMLyhqC756hxZe+x/FP391eiJbFuNw2DvcUgRt/JwhUag+Jc44RowRHBByFnY6KG3U2XEXqhKnnVZ7/QsQOXc6U1KsLLWLWM/EWrHApXFhXku4R8xJ+IMlIUA6w1TIp4i8iihCBKAsEvqObSgIZGBbcSAkFc9NzjyWXMN4ghLp2uOz7YQgEGGYqKCIpUxKBBneSzUF/YGvtPR6wNlKhvnzLo0brZfJEFIzurtPmuirNWvOOLl82fK2HXkzViy9YM+/gESxOPv7WARy3TaIBd8/S35CyZOd7Pq/ltoT6PRfUJtTtIXE2SLIbstJYYIU7pe8Nlctg5ZJYPWuDlrKE3pv2c9auPX0b7HwhiKZBPObYQQUOKI86rNq0eVaOVsU93LPdnHHM2JHRWF8tw/q65rty9x5oT6eyKjkJliao06Zr5gCNB5Ra7vl1bB9aLzXwt1+ilT2FAqqU+ad8I25Q3oHtFzzEL/rOsj1pxK/ad7ZIHu4WbFKgSI/W+rZZknMzLDBHzP13OerVMghEIzAat0n5DawIVDz01J6LMuAqk1NJrKEhD62VRrGLTStqWZWA0A6JPZMMs35OADbOzLkc5DVJsAvowjHUJCr0Q8nWMcjbHil6Lt27ejWCwOfF8sFvHYY48BAI477jjMzs4+/dYlkUQSSSSRRBKHN+xq06dzjKMwVvxSdNZZZ+Hyyy/HTTfdhPFxlW3NzMzgAx/4AF74QiVv/uijj2Lt2rWHt6XP56jWgZG8ZXBKpZ4AhBstA047lDV1WzojCrUCGWVgcLG3rqThH5hV2cxOKiMNeyHCGMcn77s4Jq+yly0jKnMZJ1KNfOARhPNLiKDF46A2HEuJNx4kjViKs+TG1u/tiCFGB2uL7PYRzqvMkRkYTol4WtkGJGfZY4qLNZybwAKZWpYJDZhuqux7anhM82UEowbhDvXvVntZM1+RGYLUWS0lB0sI82nxxlTKsryIGmeKVMqUQ8f5Jp0u5IKSERCMyJTqpuyeOCWCUI3IQ4wzdjujjiNEFLLdMfYMXAadCow4ZHwcPM/wPJayNomXddvnYu4Ffw4VBmUg7JJ+RmDivJZiHsipcRCZqDRDGOQx31b8n8WaEi5t9ZqaOFpIEW/ERibahP50SOwQs6Y/JNCny8Gta6iRP122Hqi5E9ne4grFhCojKGEQ7StCqVG0qbWnAwC2pdTcrXXa2Et8I35G3H9AoSOdvoTjqOu4oaiQr7EJhRSlmZsG6PnWCVvIEt8ubqSq+sYinkFkP+SbFtLFc6uj+6MRpnGFconiJHY1FHqSJcPdUUZk+j1jrsrzmUJiGqhUouf2GFXzjHQEo102ahefg54Lp6TmLt8tsqba3J9pwttHvDFC0QRzsUaGjMCljQTSmMy31fNmljigk9l1GGWDXnrOz3kdVJ8pZD6JZWPFL0X/5//8H7zqVa/CMccco198du3ahWOPPRbf/OY3AQC1Wg0f/vCHD29Lk0giiSSSSCKJpx8JUrRsrPil6IQTTsCDDz6If/u3f8Mjjzyiv7vgggvg0Fv6q1/96sPayOd9sIUCZ79cBZNOm/VxnmBcydPrAIHKMpqdstqEcpeU4yNPGchQWmWKXF1WO6aIPmUbG0tqm8msixNGVHZ12uiL1bFu/1d1mh1lywAxGkt9v6TNh/27RsOePOPR29rZkX38gSoQbs8S3CJtFiuBgLJysv6QVTWmYacPB2zwqkyNRzefgMyIyrIZIQpcRlZaprJMf9K1y5uqMFlnk1WFAIhUxlTPUBWWrDdMhRlX5HDGb5ukEoogbJ4FixC2iavDwELYN8J/PbWNAIAM8TdobkkW5rMFP+O8DIs3Y0QVLasSzn6Z11M5oG0wdKWZjXho/kuMN9NqD1geaIG/MDQIk4UmaSsOrhizBPk0MsSGsFxNlh9HL1DbN/vqHukRX6/TXNBVniy4OJJepQU9U40atW+B2t4z57T5UkD0vubKQaZtZYJBTlU2MNtz5VyEMxavMOQTuYP2GVa1nscVk8RNe7hcxaMLany3Lajf9tdVnzt9iW0Lqh/MN1pXUIjRGluQk/gzKccHHMvCxY4wNGPCaJotGsn911V4lnApcZDEmKoIrYQ11OtqHmszbJeoGqkAwrNEO63zCNeHdMn8N86La1aA6kKkDbLZNHNVC4eaZxBzF51CzAKkLyGpUlcUd6pjTa5Tv2VyGkXVCGCnC1DV3kRa9XFsWCFyTq8DGarnhqDK4163il74zIg3Ji9Fy8eKX4oAwHEcXHzxxXjZy16GdDptlgGSSCKJJJJIIokknqex4peiMAzxJ3/yJ7jhhhswPT2NRx55BMceeyz+6I/+CBs2bMA73/nOp9yYa6+9FldccQUuu+wyXHfddQCA3/md38H3vvc97N27F/l8Hueccw4+/vGPY8uWLcse521vexu+8pWvRL676KKL8J3vfEf/+5577sEHP/hB3HXXXXBdF6997Wvx6U9/Gvl8fuB4c3NzOP3007Fnzx4sLCygxFUWhxqplLIW4MoazmqLEwBlsxpZ4AzH8dAKVcbB+kQ+2UnkUyVsHlLVDJWO4jMElM2cOp7RCeVIWmU8xw1n8ZIpVW0lHvwvdZpHVGYVVrvGTJUzV0J5ZLdvUBpKWSP4j0ZnnlrGEEF3DqKNtKQFiBtDixhtcIVuc0gIkUtcDNkN0Z8mbZSqyoydSg1Zku7fOEoaKQ3KLCsLwGRMwZ2z4NEJw8eh6jVdyeVndUWWXDSVfQMIkbaryJgMN66b4vlAlrLZuK+g4xj0gBGjxaqxBeGsXtsvuCYzjlcy1Rqmair+W6ttbA20NpHVFkYKbL0Y5tKk/Wj7bNuFOJroeab/jD7x97DsHXS/0kCO7E2yCiGSdD+V27NoEPLHeiqMAOZTwxohctp0nnYDsql0iSRXKbEmU7NpKsuYD8j3cjptrh0jm9x2W3eIP4XR9UGRuGXWNRywJImbrMJCmksFVQUI6LlYpv7sWOxjpsHPDbUvm0EDwGqqsMqSIWpKIzPGToP77zk+ICxdonjwNeV+F6xtbDsQux/ZwFQAMr1NehhKKw6R70QrOvn62u1iY124vub8aY2p6nT0vICpBEynzTxcArUUKdpuTJ3bZQ5YraP5Rdijji+46ChTAlbT9Zxl5LgPlMtq38bP1G+MLqfN3GXOUxZD6KViSNyRCikPA1J0dPKfVqxTdPXVV+Ov//qv8Wd/9mfwfQOTnnLKKfjiF7/4lBty11134cYbb8Rpp50W+f6ss87Cl7/8ZfziF7/Ad7/7XUgpceGFFz6p8ezFF1+Mffv26f/+4R/+Qf+2d+9enH/++di8eTN+9KMf4Tvf+Q5+/vOf421ve9uSx3rnO9850K4kkkgiiSSSeF4Gi6g+3f+OwlgxUnTTTTfh85//PM477zz87u/+rv7+9NNPx0MPPfSUGlGr1XDJJZfgC1/4Aq6++urIb5deeqn+e8OGDbj66qtx+umnY8eOHdi0adOyx0yn05iamlryt1tuuQWpVAqf/exnNQ/qhhtuwGmnnYZt27Zh8+bNetu/+qu/Qrlcxkc+8hF8+9vffkr9g+eqCcQZGJk4itwoJFcIcfbDqsKpAB3iQjg606WsKQwReOrvoq8yqs0ltd9YpgCPlV8pNg1twMi8yl7C+7ep0xBiIlu9AYQoopsSR2SerDqCtue8NoLy9GX08yARtvqav8Rr/JzBRWKJahjZ7i/9WyiNaneZqvUWW3B2K2TIGVHIgtY6yWchRui6sLw2X6dM0fByYsaeCBqQcwvR3/iYQFTJGlA6K/wdb8+Iidcx38X5LLb2j87IWwbNY+V0xxncnttqIUy6DRbio/cj00rNDYlk4ITkcDVRNgCGqKKI9XxIZVvM71PqvwCEH+OZ5LMGgeHjjwwBWXUMbXZLGXbXUeruANCX6l5JdVQmn3J8jASrVHcEHZOqsSBbkCHxtBgVCntG7yY23rLft7gnNEaMhPV7QDpqyquRoHJ1EPnrdgczdDYzbXcGVKsFI23ZABgiVIIrn3KjCH3Vtw5xUTy61hNZB2lCNbt0vzEYO5ZxLb0y4mBx5WQwpCsAGb0W7YaZ93GNqVbbcP/i8waWFleVuHIgZDxIay6eR1w8r99BLkOIEGmtyTqhfX7O6ICxYvvifhokB2JoVfS3jmVqm4lykNBpQCyQMjc/n9qk89XoAQH3J3o/CD9lNJyo4hDzNKemskZzbpiu4WLFbM+f9j1I12Chq3hHlc4cqrbm0pGMhFO0bKwYKdqzZ0/kpYEjDEN049DvIca73/1uvPKVr8T5559/0O3q9Tq+/OUvY+PGjU9a8n/bbbdhYmICJ5xwAn7v934Pc3Nz+rd2uw3f9/ULEQBkiJz6wx/+UH/34IMP4o//+I9x0003RbZdLtrtNiqVSuS/JJJIIokkkkji+RErfik66aSTcPvttw98f/PNN+OMM85YcQO++tWv4p577sE111yz7Daf+9znkM/nkc/n8e1vfxu33nprZOkuHhdffDFuuukmfP/738fHP/5x/OAHP8DLX/5yveR27rnnYv/+/fjEJz6BTqeDhYUFfOhDHwIA7NunuDbtdhtvfOMb8YlPfALr1q07pL5cc801GBoa0v8lWk1JJJFEEkk854KRoqf731EYK14++8hHPoK3vvWt2LNnD8IwxNe//nU8/PDDuOmmm3DLLbes6Fi7du3CZZddhltvvRVBECy73SWXXIILLrgA+/btwyc/+Um87nWvw3/9138tu88b3vAG/fepp56K0047DZs2bcJtt92G8847DyeffDK+8pWvYOvWrbjiiivgui7e+973YnJyUiNCV1xxBU488US8+c1vPuT+XHHFFdi6dav+d6VSUS9GnquWBRheZpEzu/yVCdZMuLYM+zKugmVTkt5hZU+bPHL4RLQs+hltDjmRJaHGeg/yPkX06+2jcmOLXD1QPs+k5aWWq+w4GMGal9HoEPp8kW3oPI7QMHZIyzTKEDbWDrsk2SJW2yH7Ui/xucNqnGWrZ85nkcgBQFblwHKew0sErTZk+DDtS+XWzSUIpwyl2+XKTMwlAqdodSCLtAwU0nILQ+phOEiojYv42ee0LSC0OB71pxvqpUtN7NbCgSlzDF4G48gGUVE7WOKSmQASLF5o7B2M0SrN4xG1rCOnTsD+xuMAgDSJk47kibAe9rR4ITLUBk04942cABGmRXEVQlqeKpNwYr31hG4jFx/kSOwvZy2VyaYStpQsRdC3xpLlDazlTbmLyrqXMuC17TZg5BFErWEI97SspZdRXE+b5Opxs61JeOnSMgYdsCbhJdCRtahn1d8sBOj2OnD7Ho2DGjdeTj+u1EWT2lztRpfPxjMpTGTVktIwjTOPH/owshNcODD/hHkuDVjOSDMmLPBp29DElpb1UptqGfV6xuzPy6dxE2DfG7wuPF+zgZGdYOI8n9dPAXmapyQEieywEVcluw8WPxWptnkechtGaC7mzBI4l+bLJ/bq44i1ZJXCy3UAEKo5qJdiaWlf9PqAr5b/hjMnqmZli8j2rAKDIxnJ8tmysWKk6FWvehX+5V/+Bd/73veQy+XwkY98BL/4xS/wL//yL7jgggtWdKy7774bBw4cwJlnngnP8+B5Hn7wgx/gM5/5DDzP08jO0NAQjjvuOLz0pS/FzTffjIceegjf+MY3Dvk8xx57LMbGxrBt2zb93Zve9Cbs378fe/bswdzcHK666irMzMzg2GOPBQD8+7//O/7xH/9Rt+u8884DAIyNjeHKK69c8jzpdBrFYjHyXxJJJJFEEkkk8fyIp6RT9D/+x//Arbfe+rRPft555+GBBx6IfPf2t78dW7ZswQc/+EG4cXNMAFJKSCnRbrcHflsudu/ejbm5OaxatWrgt8lJVcr5pS99CUEQ6Be7f/qnf0KzaUhvd911F97xjnfg9ttvPyjBe9kYGQKKKlMRRCYMhYVKxMw7uyKET5YfaTKC1URRz9clq5wZcgRuCiUqa53oklz9PT9C72HKxupc3r0E2TlOon6SUvt4qTwAbcw68L0jjHkioyFc+ppyDCqUtuQBljv/UlYDjoU6kegkk6q9ETbblZD1XrTtYR/9RTKCpRJmQWJ3Iu3BrVAWn00NnpvRGTalTQ0Kr4k022i4htDO3DtGWlzXZL95IitbRGZ5KKWvXDJf70KkiETPCJGFauhjxQizdhYcKeGnfgpNvo2JMQIG1aA5XO9VtDjiREYhRKJC9ggAMEbSByy+R1YJyBTREuoaMIG6F86hU1fyCXw/DKfVPZvx8nAI/ZEVRd6WLTIQbTcGSeFxyxEr5FzZbFcqRrfr9bUwp6yqZ4JgIcBQmrHJ9qL9Gc5A+sRlXCBkYbE6QKa2LV2Q51J0OmaupJpQGMNsXVlgcOHFkD+u5Tpq3QUaI4MYZ1Oqv6PRRwQcOGj1VF/rRKB2uWggBNBh8U4aj1UThjAPGl8uJHBEtP1AlEwcJ5rzPG22jCinFiXtG1NVnl98v9XlgBCmKBAi12gBIT0bueSdn92eZ0Qy2ag2XTCWPISGSktcU/A8sYx3AQAFocnuupCEbD/Cx/brZ7nYSKhotmRWBWpkxzO/qPss9tOcOKBkUvypCfjVQ7BcOhxxOKrHkuqzwx+FQgGnnHJK5LtcLofR0VGccsopeOyxx/C1r30NF154IcbHx7F7925ce+21yGQyeMUrXqH32bJlC6655hq85jWvQa1Ww0c/+lG89rWvxdTUFLZv344PfOAD2Lx5My666CK9z/XXX49zzjkH+Xwet956Ky6//HJce+21WoMo/uLDBrcnnnjiynWKkkgiiSSSSOK5Esny2bJxSC9Fw8PDh6xaPc8liochgiDA7bffjuuuuw4LCwuYnJzES1/6Utxxxx2YmJjQ2z388MNYXFRv4K7r4qc//Sm+8pWvoFwuY/Xq1bjwwgvxsY99DOm0KRn98Y9/jCuvvBK1Wg1btmzBjTfeiN/6rd86bG23QwQBkM2pDAWAJI5Et98yKBALwDFSFDZ0ZqwnH2XWVS/EzopaCuzR2/paKldekz8OaZK1D3/2YwBAf/usFjLU1h12Gf5BEKKIwCJwUJHFyPEtvpD6twORipbYu4TgeBtLEKuo3JqyTvnEHnQfIhmBxUNABe0+EF9IsEy/3dc4B6llcRdifCOnEyIkyxCXrUNCs5/mR6SWWIXmftsCilmVsosc23Asw+8BIInroM4ZLv1pH4M/fVdfAy0iSIiU9FNLHwNQpq6WCWvkmJ1utASff+Osn1AD5mXkUwEKOSqRnlfIAluCiMIkelRGvkgcoWpXoTyt6g59+FxKtaGQGkWJkKE0lWmjSbwc2TBckrJCQjWXxJ4P8YzW5oPx380mxCRxghj5Yh5M3UgmCM9C/kBjVaSydkJTutk8NSFEmuQ3wOKDRcu8lFERniOZjOFSMdpE+/dlD6tzKlFL0TOj0a+h1VP9n22p/jeIB+QIgRYhkuU223WoQ45nciilVVtLaYV8uILthjqGI0chcqNokV1LwCKJOUKeO4tGqNNnjg/N78IwxBo+iBP99Hz9PMQicbnatWXRPdntRpE7AHKRxtEWDU1HUSsppTUnFIdH+nMDIqZinOQUsoERdGQxU/73YtVc/5JqO6OETm8ncID+38f/n9lwLERJDYBknhH3YWbeGD1T+4TnArVDXwFJ4sjEIb0Usbo0oNSdr776alx00UV4yUteAgC488478d3vfhd/9Ed/9LQbdNttt+m/V69ejW9961tPuo+9vJDJZPDd7373Sfe56aabVtSul73sZYe2jJFEEkkkkUQSz+VIkKJl45Beit761rfqv1/72tfij//4j/Ge97xHf/fe974X119/Pb73ve/hf//v/334W/l8j3xGCf1xtqxBF2+AS1Ttq+yn2avqihCHLQl4m9YTaHRVRjGRVRnOsZnjAABy5wOQ21V23t+usrn+TEPzZXQ8mQgjoNAdgkYOtrWweTZxvg9XoaUcnaqy0aJ3HHGsTt4MMU7LlbwG79wFZ4+qTtGCi0vxoCyzxvg5Obj6TASeNosVdkVavD/EdXJGArgTxPHR5q9tfUyNonWixxBpz4wvZ76tjkElGIlhRMJCaTCqMkudkZarhoPE+9uVUJqDYaF7zBtjnhX/YHM9NLJkcYX477iwY79vhCNtM1LeXqNVdKbZ/ZAtyrIZ+RhW8hTT7T2YKytkiFGNgCrUhtIl5FMKUSmlFRIsGmWgwxWThGA0y+qzUTeGu5x163aa/miuS9z2BNBjKdJpY7/D9gsdzuDLpirKNnYFgOHVaJMJ7UxT3XfV8g4AQNpNI58qAQDyxCPMZY6DzKj7UmTU+aqeunbVzpzmCAkQ96SlULhu2NFWHGxR0uzVMNdS6MSBxiLsOCY/gk6o+vbQvKqQemhBXc9HyotYlVNjetpYlPvlBXmAjXctsVDmiAVsjKzFRT2DapKljVirUEIxsh7THbIToucIX99e2MFMU3GkRglNGcUaY8/BlYKM5AjHGBbXqGqNqzcD3/wdC+F7Brni+VkzfDNOdPU90mhZ5r+xOdXpansQwUKaI0XdZ12Rxqax2QAgxI9tSDSvstM1FkAs9uk4S9uoHIlIXoqWjRVfge9+97u4+OKLB76/+OKL8b3vfe+wNCqJJJJIIokkkkjimY4VE61HR0fxzW9+E3/wB38Q+f6b3/wmRkdHD1vDjqooFBUSRCiIpLTEgwdQZlghhGhv/TEAQKvfxWigMqN8qLKrNNl8ZL0hnDSivisS4hH+SL2QhjsOIJxR+2keUdvizSzFH3Jjmb5tE0K7Mhq0VMXZgBWIHRZy5FAFl3cMrcdvPEZ9rj4ZDZc4C6Q7IxzHVHXpdhndIuYLMerEPKj+dAN94tRofaLsEtNc99lkO8wN4va5Z24GRgg1IGNHPPoEnaeuuTvcL4cMJBGkB4wwZbcPQRo1bKqqq2eKOYDQBkYd0pQ9i2ZF61Vp3ZgKcTBmZiAXCCGg6+I4DmQjxv/haLQGzWiX0OKRLVMNpH/joP1FLmvQEo4CIS0yBALKoKkfPL/7soeir/q4Kqe2L6TUGHv9nraTkDPb1WenYTS84uaigEZ3BCOMVRqPctUgQmyxQmOLIG+QCK7orDeMhhDzgPiYuSwQ0PbEDWFbibLTwd5FpQHGZqxss+MIB/VeTNU+NYwuccr21pUt0rZF4lT1uhghZI2rStnweWd1EW26H9YWVH8mMkPoERrEOmV25Kj9xxTU+C60FUL1yEIP28s9OoYar2bPWAqlC8TXdAw/VOv68Jgw+lKtGw4SzxOaF20R6nP6rppvY4GaD65XRL2rzt0J1f4NP48scSPZAoStdISfg2RdN7bwqDWjn4BBsMZK6nNoCmJInbNHz1qv0zKoE3PSqgrdwWzZIF8NU8EGIIJIyRahQXz/jJXMM3KazKCnZ4FAPc/F+Ab1ybzSydUQUAiePl+pALjPjCGslCGkPLh/6KEc42iMFb8UffSjH8Vv//Zv47bbbsOLX/xiANCmql/4whcOewOTSCKJJJJIIonDGElJ/rKx4peit73tbTjxxBPxmc98Bl//+tcBqDL1H/7wh/olKYkkkkgiiSSSeK7G4bDpSF6KdLz4xS/G3/3d3x3uthy9ERQUbErQMxOtEfbQo5UhJmnuqDDc7Gn4m8mXHpXi5lJDKAoFs8t996hDPaKWVPqzTb1spMvj7YjbSBxs6cuKgWWzJcrbDxYi7eplKWfLBvXd+pMBABXRQr2joPRsZqM6X6+vl7OckoLenZEMfebUkhOsJSgK5/HdwC/mIt9FrAUci/gNAH3HEKvH1fHdk9apbTafoS0bpPiF2t7brf7dDYEOLYNN0pLSiUQWDzLALEHoc2X1W60B2aRlnzY7s1O7RoY0xL+j8iAAIOUoGH08Y/zzPFq6yjpU5ttuAEvYjgiHHL/bvchnxBLFtmIA1BIBLyXytbbsQbS44ygtQWVLugRdu49rAcCeHreQ2pV3SgCAYmpEL13IJgkAzivCrQx7Vrus0uR4RspLgH6gl+nQjxFt/ZQhDLNoKts8OB5ki5bZ7P8xMCm+Nm+OD6gCCSaM0/IOk6MP1J9AjYoeHJIt4aUs13H1vdvsq+Wp0PofSU8y+VidJ3BT6NCy3mOLShRwT039e3etr5fPdhPReGOxieOH1dLYFC35cRvK7QZ6tJzHRPYzxhXZd02+glmaN7xMx0tYqb6PoEBLWD0aj3YDeRKR1EtXlrCnId/TdzSn0iGwNn88ACDnkMP9tLrWCHtYQ3NEl+bXa9qaBYtzkWPJIG3mAVvoNE1buBQ/PldEZhhz7f2RPuZTw5CBukbZvLq/NGGg0QK0uKpljwMlsipjgo5cti8C3yyz8XJtuQL5xJ7I9hhX1ksiOwq5lixcSNgUrgd4R+eLxvMpDun/iCt1e69Wq0++URJJJJFEEkkk8cxHYgi7bByyeOO+ffsigokHizVr1uC+++7TPmK/7CFc32TTgMlqhaMzyHpPZTGcZY5lClq8sd1XGV9XqP3yqWFNRGRSHwscLokOHWosYdr6lI/HpGgWP5zMwTmBEJjjXgAAqFBWtNiZGTC4hSNUCT0AdxVllKdvUZ+lNYYkSCRckSLiZ6mAVPhz9dNuejm3yvUZLdHfuI4mbbsbSLxvrWon0nlN/MWCQg/COSZohhopc8aofRMbqO0eJLeLM0pHaDFFjRhx9lhraNSESciMMBRTI6YEvU8k5Db1yzbN1CT0FCSLRIZ0vq5FmI6X/PK/PdcIErIpa9YiGhMSwUgJ0nldMMAhmLwc9vR1cRgVojbLXseQXNmKwS6njmXnyA8Zci8TzukeEV5GP5jjQnvRhjEqSMhZpw40KdHjY6NlMn1GjBgBCTIGMcwrZKZcU0bBrX4X+ZRCKZhgzSa1vhPoUvYef4qOLktfm1fPx6msunfL7QN4pKwQ351V1daFtupfNiUwlI5eu+lGH6V0hY5R0u1Rx6rr9jB5O/DUdc2nApTShlgNmGeMAwfFDBUXMOrS7+j7U5DwrJHOEAZ9ZqL+DBO070M2S/YgLSZFs6CoC/ToGcbXutczx2AUiOe4jQZxMIKT9g06E7cTqc1gVM9Zur+7LWPaS89ivl/hOMq8G1DzHohIZ4hZdZ9qxIjv6bmyRlP1/q6r+8F2IPp5cMxGiBGyAyG5Brm4B0g9Q1p4SUn+snFIL0VSSnzxi19EPp9/8o0BdLvLVL8kkUQSSSSRRBJJPEfjkF6K1q1bt6LKsqmpKaRSz0xp4fMhZL+jsmfOkDl0lgpkPJUFrc6pSzKcHofnqO9Ygp+zupJXgtylTATlbhIM03Ycg2/vT2blMbC9Ze2xZAk+YoKNHNZ32sqDytTdE1dDnHgWAGB3qHhTB4g3AQBD/uALt1OgTPC4DQCA5poTAAB76o9iOFCo5VjIZdZUKp0t6Uzf7SsrlHDeZP7GvJW4RYELbx3tyxIBJKqH6gHI2Z0AAGmV4gMKfXG4PJ3tIahkWHbqRhyuz5muEZHTwowUct8BbUK5aqPiYAhCjOS+nwN1QoZiNgfKCNMqqefzcebN3JvuYMmy5ghxaX7gW3YTxeg4pPNGToJRGgkI4qxo5JORmH7bIGyNsmkr9yHeDzuIp6Xb5Wch2CKDOUvUBun5StzROnfE9JWFLQkVknz/9Tpm+8AyFeVgtMkSuxTEy+mFLK5IXKlUDgFJZfB9yhIKrkjpvxn5AwCPRRjd/MBvY4FCcAo+ocOhuqeG0g7GCHX16FqX2z3NCWK5jgNNxZ+pdJoaIWKekY3GFkmE0aP2MV/RdzPmOcXyCEEenVD93adxy7OIo4088nUlSQc5Mw/hEkcobjLspwDmA2pDWDMOGhVicMhzzTFoO9Hpmd/iRsVaNHU3JHN2mCPm+oYj5nC76F4ZKgH5mNAto2N+VqGGAESDngP7ZnSfJVjskzhSpYIScAS0dIYWdgQAeubLoSn1XXYUohf7f8SRigQpWjYO6aVox44dR7gZSSSRRBJJJJHEMxJJSf6y8ZSqz5JYYfQ7kK2qebNmu49+Dzmq6mD+0EK3DACo9yrGIoA4CEVfrfXLXfcjfECJgjFyoTNsGKRH84GW4gotgQAx+qNFyJay1eBwha7a0pVcjjAigmzlsZkqf055AZ7oK77E/bMKwVmkDLHg+9gyTCkhow6tjskMhxUSs6+uBP0eXdiHYwpq37GhMyPNqqODHFW1cQ4rtiu0Jyw3ITo8FoS+jWV11ZiYUBwPbSex5zHIx1W1WW8nZXoWx4o5T5z9aouCRlVXnUU4FH4MPaXfwloHDqMTdeIoMF9iCSNm7cEXhoMcoVY7YsEQ2a/bNygVW1oMq4okkR3GUqadOhghsVAEzW3qWigLALQbUXsTwKAASyELtqltvCqub6E6HEsdI2SkyDqPRg3oHolwsLiKiDgi1ZpBz+KoAwDZU/PNo7YMpRVPpRd2NErDvJxOX82fnmyjT+1iTlGn39aIUt9TvzECnPEKWJVTCOjeehkAUO2Ysc376h4ZSbPAYwvrCureYFHEelddk5q1n7FTUf3xHBc+tYEtQ4q+uk99NwB4uFkQstfRbWyQAW1eVxqGg9WK9vXh+ca8HOar5UbQKU2acwLA/C6gRVyv2LMSwjF/83xjQdVef2mhUQBA3yDYjPi4HkA2NIZbSO30s2Yu8Xm6FsqpBT3pGT5KHKF9MwYd5gpXP6W5Tmwcq61A9kybNm+iTz/3zNl8PEvx2c9+Fp/4xCewf/9+nH766fjLv/xLvOhFL1py25///Of4yEc+grvvvhtPPPEE/vzP/xzve9/7jngbj+4rkEQSSSSRRBJJRONZqD772te+hq1bt+LKK6/EPffcg9NPPx0XXXQRDhw4sOT2jUYDxx57LK699lpMTU0djl4fUiRI0TMR/R7Qs/gfWtfFvJMyr6DcVplYp9/TGWUxS2jL7OMAAPngowOVVRHkh20u2tYafYwDZNt2LMkPioXexrWsNmyEiLdLm2ozABCnnggAOBCEuH9aIUSPLqiMukVtn8xKuKOEtlQU2iIXFgdQAEbOxjIVzcHS2SNxS9xMgC4hOClCjJhb4+yZNsgN83vWTkGMKW0kfV14nLfvQu9xddy4oa4IPN1XrrYRtslkL4ZuhOGg9QfbcXSsbHaeOBh8fYL0IPITN2Ll4wPqHPx9XLPFFeZYZHnBdhU914PLlgqcGXM23WsOZs02L4d0Y3S7Gq3B/lvt1EgXB/Ou+gbJ4bGEvwDJ5+FsnpHWdMGgelwFRMcQNurEw8DoUyjNeNsmuRxxg9swNAgmzbMCmcZ2U1m9G6NBPI7q1CH9ptpVbjc0t4fvb99Vc9ETvjZ99V3Vri7d1wstibGATKCJ6+W7HhqEYDFaNZFdQ013tEUIn5stJNhyAzD8Jm5Ls1eDR7YrLqMivY7mHHE1nfBIoyqVgmTuGj+DGClxXcNrsxAiABAj63H/gdthxxnjL4ZXiaFBfK1TmQFNKsmIjs2ti98rnqsrzTQ3TThGI4sQOWOQnDX/s2eEsUyVk92uqSyLo76AmfM8Fz0XgrlxfL8xYvT4blORxpVya1ZDVi3+35GMZ4FT9OlPfxrvete78Pa3vx0AcMMNN+Bf//Vf8aUvfQkf+tCHBrZ/4QtfiBe+8IUAsOTvRyoSpCiJJJJIIokkknhKUalUIv+1mThvRafTwd13343zzz9ff+c4Ds4//3zceeedz2RznzQSpOiZCM7UqGKDM5Z2ykOzo1AGzhBX54z565CveAsBIz+7qQLqiQXNbYnzgBCkDKrBnCBXDJq+spqynShTRZqNOunjMyrkxhShYXg2whUQOTJH3aT4Ar1VqmLs7p3fw0PzXFGjjh8Q6pRPORgPSLn5EaUxJGerEGMFbgQAYCKrdD2yqSHkPMoaqbJENlTmF2BSa8m00mocgnVn0Ng8CpRJQ6VEGWtpjdG6YRPSXyi+Vu/xsjbV1ePB2kmTOQg2muXMkNGNbGBxKSzUphPTJ2LULZcyBpv8W2DzeSwOESyekeOY6jaNgljnIWSKuV9wBARXhXL1EPFNvL7RFtJqz23S/um0DDcodmwAkIvEA+E+hKHJqJlLYlUFiTiXiDPlblehC3ZUauacPHcZaSvmDVJI3+n9/ZSFHsQQtlbHMg5VHB6xFMJmc5C4jcyjIj2gVHESbRFFfjIuGR4LJ2K0qj4FUoTYZKhKiVHiA40nME3zuNVTxy/4ar9qJ8RsS7WHNYYqnSbmWwrNOHmEuE70zHBFChlvjvZV14cRI9fpwaF8mNvHfCgBB1m6t1xG6PodePpRwggMzc98FmjHeGM8ttnAVBEyqsCctNBUzrG2kisM1wf1GGJaGIMoqiWUriQkeOI4al9PoZl2WHNMMDJmceS0MWt8LnqBQQWdevRYrba5x7nylO8nRwyaLDdaGmXiqjWt97URkE+QISwhRmi3IeuDLxRHJKQ8DEgRGRSvXRv5+sorr8RVV10V+W52dhb9fh+Tk5OR7ycnJ/HQQw89vXYc5nhKL0W33347brzxRmzfvh0333wz1qxZg7/5m7/Bxo0b8Su/8iuHu41JJJFEEkkkkcThisNYfbZr1y4Ui0X9dTousvk8ixUvn/3TP/0TLrroImQyGdx7770aKltcXMSf/umfHvYGJpFEEkkkkUQShzEOI9G6WCxG/lvqpWhsbAyu62J6ejry/fT09DNKoj6UWDFSdPXVV+OGG27AW97yFnz1q1/V3//3//7fcfXVVx/Wxh010awD/TxAUDhPprTw4eqye/Wpya79niZ1ynllKcBCYbLd0/YZvETG/3byvl7y6pP1B7qhES1kU1C2u7DL7mm1IFJ2Hls2w5OQslmsUWxW0Pb2xZ8CAB6r1NDoqXMNpdUxRsi24NihCZTIxDZ83BiuOmQ+ytYSTFAtOHnIObWUKBe4DJ5Izo0qhHcSAGBv53FqsjrPhskTIb3HI8dEOg95gAxJH1SfvcfUElucXA0YqQFnsmCWZXjZgJeYWh2AdTn1kowloMkCir4FvevlT4LlbaPb+DIQL0+EoTGv5CWmlgW/a/KoJZzHx6qrPsrF/aZ93A+9zGfK3KVFgtbHtmxK1Ha0DS+Z2ee2yct6OYsenmQBIeYXjQgl8xIcB0L3l4oK2ITTTw2Kki5FgOXQSyUCGKLMlsnEpYK5fraMgt6XhSCjfZUyhDusyM0z7V2R0xX9UUi6qXjuOsLRS+W8bDbbUqaht+/Zhgfn1Jjm6VmxsajaMJFJoUb35e6a6n83lDhxhJa6aFnLo1L8gj+CVr9O51RLOFya3wl7+p6o0HJWo6t+2zKyDmkaJsnLp72+FsAcytB9U2dT4yUQB3ve8bzmMW2V1bErCzhhTI2byCriuNz/sFnebrWjx4IS6wQAr6T2OwB173fQ0sUoWhiTpAZEu6GXgdkaCY6nxTgFHaudIpkE2UO2T3OQrT+KNM+l1O3S4pJMKs9lTQGBtUyu5yqPAy0fidIavZwnH1YFKHLfHGRjCZuaoyB838dZZ52F73//+3j1q18NAAjDEN///vfxnve859ltXCxW/FL08MMP46UvfenA90NDQyizbkQSSSSRRBJJJPHcjGeh+mzr1q1461vfirPPPhsvetGLcN1116Fer+tqtLe85S1Ys2YNrrnmGgCKnP3ggw/qv/fs2YP77rsP+XwemzdvfnptP0is+KVoamoK27Ztw4YNGyLf//CHP0wMYJeLWhOoLRrZfEnZea8PV5eQEglQWFnKHAnLzUSzJ3csC0nIimwTmZYRjFIGTkllMYLsLcL5lkZ/tDmoRY7mkJTgaAuMlGuMRt0lEKIYyVsEnkJQAIhxJYi4e++/0+kkGHRipYAuJfXrC+sgH1coTVhRfXSGA5W9AxE7FLVjy9hHaJNV1VfR6QKr1Am2lVUGzhlyxs1jkswXuUw3FICgTDKcptJbW8qABSoZiRuhtlil8pq0WY8hJkCUmBy3OuAM20Y8+Dc2uMxlBw1Rmay6WDHHZ6Ss24dIxwTzGJkJQ0gixYq9+2n7bnSb5SImaCjSLpAmxGNBnduhoYXjaFE8PWu4LYUhiKKSAWA7ES16CZj+TBuDV9loRtvIiFa5ahCsGJomUqnBcbavC4/pItk0pFJAJ0asdSxkt2ehgIBlnjuE3XWF5N5HRP2xjJoPJ48MYZREFQXU9q3qdrSIFJx21fmaVFZ/oBHipzPqN1eLdqp5cOZEgJFAzZ/ZphqbvB9g85AqPvBiBOhyZxpzTUXgZSIzG8R2+j3sJdTk53Nc/KB2L6VnsSFzXHQcOl1lVgrA75TUkLDIYiijxGLAoGi9niYiD1ynxYqRsOD7whaCjEe5CjQei3zV9+kZiFAjRFlpBCf1eHRi902zDsnPLJLjaBBZvtWvI5teGz2GXcTAES8SaHcGzGhV0QP9zs8ntsbJjxu0ei3POwnhP0NI0bOgaP36178eMzMz+MhHPoL9+/fjBS94Ab7zne9o8vXOnTvhWMjg3r17ccYZZ+h/f/KTn8QnP/lJ/Oqv/ipuu+22p9f2g8SKX4re9a534bLLLsOXvvQlCCGwd+9e3HnnnXj/+9+PP/qjPzoSbUwiiSSSSCKJTcYyQwAAzftJREFUJJ7n8Z73vGfZ5bL4i86GDRsGNc2egVjxS9GHPvQhhGGI8847D41GAy996UuRTqfx/ve/H//rf/2vI9HG533IRgNy2ir5tUuzbYNEIJLV68xLlySziSnAsIszQvvbJdxcis3l42OZiMkrYNAQ2bWymWyUjyFSjuYe6eD9u+GAqawIXI1wtKAynhqhYxb4ohGjqZwqU53oeJBkxeGUWFRxFZAlBIZKxB3K9GSnboT8CE0SNp+FzqmtCYgv0ezXgJTiHjTCBrVvAeP5MdP+ZfqvLT047Gs3QeX9LRK0a3UMasRcCscSTtQIBiNyxg6ATTJZVFEL1gFGtK7JJfOWpQdzkXxpUBkqEeYSftntmnJ25mxYYndczj5Q5m/zyLTooTfILysSD6rVBmjqassDnvv5MIrAAEaor9U2SAxHNhgUzGMEsdYAqjELD0Yp7OsTs04QqRTQoFJpRqHQNNl8Oiau2m6bkupVG9Spc+paPzB7H7YvKuuGkB7gJ48qpGHYKWru2ygJLhZHX4h6V6EsgaeuOZfHnz1Z0W3cXetHjhlKic3Efzl9TM2JjFfQXERGQSRZWczX9mNHdSZyfEawQhlqi509dJ4UXctWv6slBvyikiuAV9Zmx9okmM1M61VgDtGwDIsl2YLoKNI90ulq1FJfwzDU19iUutNzq9czKOcehRhNTa1Tv0kfWCTB1QrLQ7AkRMnMryrdNzbCSHO8NLme+jdpkEtGimwDZkIpZeyZjF4vakbMEUdg7bnIshgj6l4XYQhRi1nmHKmwOY5P5xhHYaz4pUgIgf/v//v/cPnll2Pbtm2o1Wo46aSTkM8PupwnkUQSSSSRRBLPsZCHYfns6XKSnqPxlMUbfd/HSSeddDjbctSGWDMFIULIRcpObUl6zhx05RJt07OsH7SwGGW+PegqhZAqzJwCGXbmDNfFKVI21+4Bbc6MCEUilMYWYYygQEAUCfJj5q99ibDBqEM/+huAAFExysV2W/MWjqEX6P+x+r+r/f/j3zRy5ZykeGnimONMJsVZMFs6OJ5BUCiDxRi3M9BVJi+eUkaDta7iZq3KbNTcCOSHaDhaEOnRwbGgcYiLCWqhStuMlflgRWqvswhBSIxkQTc/NYh4MLqXzur+CLYv0YabPcsWRu0vSFRP+inD2WCkyXFMm7mSixAQVGqQTcq2WdCRkTYhTPbM6InNwdGIVDradgDOECFSw1RFVG8Y0TpGplhcMQwhWzGhPZsXRpm44OqwsZLmf+mHMP/bLxuD25jNx1IPfD0uvZ6xZmEUrd3RCJFGMBg5GipATKp5+UioKsy+dq/iwD1R7eGcVar/L5pUyMWm4ulq/+qsRjQl3depXgcl4lKBrDM84h2ds2oULxhXaMZCW/GBmG+U8zKYzCg0I8fPim4HdaH4Rdk0zR/qt+f4qLRV+2db6rsy8Vk8x9EWO6ePq/mzhubPusIkym2FlBSG1H2R9dKQxEuqeupYQbqkjlXNmfkcR0rC0DzD2FZnvcXXCeg67ldG0bJajwh5DhxTGy8TsrSohF7RaA2gghrt8xej8xh0fRnxIeNmwfPUrl6MIyGeQcIH7rF2exDZBwbRVL6vUwFC6r/DzzkvDVFpIIlnNw7ppeg3fuM3DvmAX//6159yY5JIIokkkkgiiSMczwLR+vkSh/RSNDQ0pP+WUuIb3/gGhoaGcPbZZwMA7r77bpTL5RW9PP0yhZg8AWjtMSaXvF4+Yo3rtOIlyAWqgKp2DGKjjRYtjSHbwgPQ/w7LTY0G6XCdwb8ZFer3NSKkLToCky2ZqrUwsh9cYRCCMQtN4YqSh5SfzYvWKpuP044/C62eyoJKXklts+3Hqs2zVYiSQToAQPbaEFyJxwgRaaWg1xms1uLsW4bAvBrLPHEC8mRCKSsPa9QpSxVjndQwwDIkhHjxJ/qh1iPhqjNd2WVX3XRiPIBGy/B5xqgkKzdkbF5crsixeAlssVGeNf0AFErElVJO7HYVjuEscGbdamsej0EhiT/U6RqtH0LmNKJl22LEjGvhuUCWuE6FnO4ja7BoPhRn0cNDqmoOUMa+gEEAFqvaFsJGaXQ4Fv/Jah8AZfkBACBbhCBttmeESG8Dw09hhI7nSieMmHbyGMl4/xk18FN6fvWq6rch0tia7LuYIBRkJFBwJdNgIBxjmsuRCnQVYb1PGjb072zfQYam0phLiAojZo5nqlf7BnHO8X3ZonkTDNIYqsQZZCB0NHAwnlHzcyyjtp8i+4mcV9T6SWxwK/tdU7kFdd+wPUghNwKRYasdajxXAA4VNN8OQ0qgjysPpePoSixJ/RK2US8jkrYtEVM0+F7nNvV7hmPIPCBL50o/b9lcdnbOoE2MEC1UzPliHDQdfkoj7BihfvE93awANNf1fWFbx/AnaUzJzBz6aTUvQ2qXly0BPYsbeiQj4RQtG4f0UvTlL39Z//3BD34Qr3vd63DDDTfAJQix3+/j93//9yNS30kkkUQSSSSRRBLPp1gxp+hLX/oSfvjDH+oXIgBwXRdbt27FOeecg0984hOHtYFHTYQ9w8Ow9WrmKZPerzK9/j7KJFoW2sOoDmvE2OvUrExtGZfGK81gq1ZzNZVWqrYyI1Jw1ppEKcecixAmfSRL9Vq6xClKu7oKjNfq0fkZACAdpJHmdXxGkyhbE9mUydhI0RpzC0BMLj5SMcJaNcxVGLWQEs4C+fiZRXMQRkYIiRkamoKcUzwjHjeNgKUcuJuUlohYEzUylDPzEBnKGiuxCqhsAAxTRVtO8TIQ5AeQHmEr7dbmo8eKVHw55rh2tAw3wmipSKDXjW5nw9wx3phIs55Ly+I60bgz8rNqHGKStGuI+ySnH4Y4QFU6ts4MB1fDEUqjq/FabVMhFtNtEq5rrjEjRJW6OT5XtzEaVK4a7gnfRzwO+SwEoVW64olRtVZbI2uak1VrmHMy0sEI0/AkqlROx9VgW4bVOGweCjGVU4gvq0qHTAV0revNGlOer5WZ41WSSAUQvuIX1XsKuah1FN9GCAcjaYWyeC3i1sgeZI10ljwaZzJDLvojOGf1iaqtI2U1NBZqpava6I4+QChsq99FPqXGiw1rhZ+D7FtoHoBuyGifaxC2eCVtPmsMUH26BnScRr+DHFXfaZSnmANyVFnInEE+b7elUaaFlOpHX6pxTLs5dPpU5Uoq3r4bDPzWC9X1nRxaBVBVoFGCZ05n2yCXfG8x6psJDG+oSNtw39tmXht0yDLWZt0pnuvBEGrdMgCgkCLUqVkxiulHOpLls2Vjxd5nvV5vSVfbhx56COFROkhJJJFEEkkkcdQEL/8/rf9+iZfP7Hj729+Od77zndi+fTte9CJV3fOjH/0I1157rZbrTiKJJJJIIokknqORcIqWjRW/FH3yk5/E1NQUPvWpT2HfPgXtrlq1Cpdffjn+4A/+4LA38GgIWd0PdNuGkMpk130zkE8ou4X+XrKaoGUw2V3iTZxJpYC1DEZQOtt+2PvwslkoIyav9rEAa7nMiS6t6bJt63z2v5l0zPvLlgOXbTGGCAafoGWnsAe5i5apdkWdkkXKlLrqJUbHMaagMWG+iFAaL7vZZeTxElyPlls818DlvJwTTOvlGF4qdCdp2Sjjm3bFjUYts0teGtJlun7KEF5p+UC6ni6ljxBEAbWsNiC7YJaReElJxMvOYYnc8ZJXqw0NAPM15lUTx4F2/eVrRrIKwmsbYjIvO5HZqBjfhANkKjq/qMwrV48ei+KUWp5BjYoEyFYlQoTnY5JdhXRalvVJlIQsLTkB6fR1X7UwJy9H2GXQupyflnN4To6PAGvW0nckAtomgrJTNiazfOx+f5CQrZeVyyhkFWF+Y1H1eSitnn3dsIPAVX1Lu2qJiMUSbZI1L6PO9udQJ4sMXjZL0/6LMkSlq5ZRF9tqGagXqvblU4EmPg9l1ZJuTozo4oOQls321pXVSMrxsSGn2rohSyX5vTIAYK61B3WyGmnRUmuLlqlCKc1yHkcqANqePm40WuaebcfMf3uWqTUXSRAxOTt1gmWnYhkd09KiCOj54Zrzdcm0db76CwBAtUuFG+mitk45QMKmWZK2mMyO66U+3iZf2ILc6pOp+apd2ix2sawJ0/p5yMUFsJb8ue3lBbNtnpbyeZm70x00tuWCg9YihskXR7LwZHUBsvoMiTcmsWysePnMcRx84AMfwJ49e1Aul1Eul7Fnzx584AMfiPCMnkpce+21EELgfe97n/7ud37nd7Bp0yZkMhmMj4/jVa961ZLLd3a87W1vgxAi8t/FF18c2eaee+7BBRdcgFKphNHRUVx66aWo1Uzlyv333483vvGNWLt2LTKZDE488UT8xV/8xdPqXxJJJJFEEkk86/G0l84OAyfpORpPWbwRwGGtNrvrrrtw44034rTTTot8f9ZZZ+GSSy7BunXrMD8/j6uuugoXXnghHn/88YO+hF188cWRqrm0Rdrdu3cvzj//fLz+9a/H9ddfj0qlgve9731429vehptvvhmAkhmYmJjA3/7t32Lt2rW44447cOmll8J13WW9W5aNmX1K/JCyeTmtyJHhw3vQn1aZh0Z6uAS+bUrlmeSsydGO0ERn2Y+hSXZZa2hItUsiSVDoiP6G0SeLXB055zLnWQpZckdUVi4sWX8mw4azKmNjQjMmRyA2k5kwIStqHybn0suqXfKqRdqiZGyMj5i/91GpMJO+W+3BEtlKzZAsua88RmFoMr1ZMue1iMAyJnLI5d3C84AsZcaBIuEK6Zt+MHmUS4S9NCQLuCFqcBshJscNJz0PknYzCIsDeLFch/sT+JYbb3T+iF7fIDdx0dB+B/lAZbWMVvhuAEmbCYsorM7XGyytpuxZ+ClDZOWxtc+bGiRf6/4ymdruly7/zkXPF6QNAsGfjDrkSsAQZ/OE8k2sNmRotoVgK5B6A7L7iOoGkapzhBzBz2oxyR6VsiOkT+FA0HYtVnLohJBQ/WmSRMVCW82tRreNSocQHJJrcISx3+DffFehVCcMn4ICzZtKRyFMDSJoD/ljph+Evsy31X7bF/ehR2Oa99V4+TRGgZuCR6KSgnNmz9eiokFH9S2g32SnbojIcekQPzUoaOgzQps3zx19n3cAlNVx+d5gA+dUgJRU37HJrueo52guVUTGVdcg4+X0dwAwll4D9FQbWo7qczfs6OsRMKFbo4im8ESjsIwW1xoGRXUtdAsAikWI0fV0UDpmt2WI8NxHS15DVggxZxSt0QSalgTFkYxk+WzZWPFL0caNGw2Tfol47LHHVtyIWq2GSy65BF/4whdw9dVXR3679NJL9d8bNmzA1VdfjdNPPx07duzApk2blj1mOp3G1NTUkr/dcsstSKVS+OxnP6tdeW+44Qacdtpp2LZtGzZv3ox3vOMdkX2OPfZY3Hnnnfj617++8peiJJJIIokkkkjiOR8rfimyl7YAoNvt4t5778V3vvMdXH755U+pEe9+97vxyle+Eueff/7AS5Ed9XodX/7yl7Fx40asXbv2oMe87bbbMDExgeHhYZx77rm4+uqrMTqq1vXb7TZ839cvRACQofLqH/7wh9i8efOSx1xcXMTIyMiSv/Fx223zpl9hc8JOT2XvlOnKx1TG1t9bQ8iZu8X/AUAZy0GWI2NoUCQYIdIl+Vb5/BLl/cwJ0twg/g0hJKNBsVPYhrCSBSGdHmSXBRBVab27e1bv05+nUnzqs7uKBAE3HKMELgF0hWkrlzg7LPKWUhYLIp9VYogARF7xK1jQbXvt51p8bvPaC9Q2j/w/tf8Tew36wRyhWkO3h68BG8OKNVPA2nWRfotdO6lxrhHf5DJ/snGR7TZEja61LbzIgozCIDBq/xrQIMSQ5QTYSNYWL/RjnI0wNJwqx7JDiIvP2cjPEnNC78eIFNtblAkNCHch01HzPkvIl1ycA9qqrFlyFmxbMvDfnElnCckpDkMwYjZbpmNRlt7qGCTTEmUUNYWQaO4WZ+uOGOR6aa5QT2fgkpEbKlsXw2vRpTnLcyWUIbIOC06qeYYK8UUaLXM9CB2UPnFQPE+bxfLdyigH/CxEQXHq2AQWgDZx7ThqnF2y6gilRCfs6b/tz06/p1GjrMPoTqB5S0MB+9yoSDk+QCXv5Y66B7cR5+uOfWW0aR5sKKpWbyTUfyTII5dS13goTcdslI3Q6Mx26qSFWvI1KChUR8tQwIylXCRUhK+hvydqjM3H0nwzmouMdsnQ9JXQ5FKBkJlUoIUwfVddi4xHnL5mWSMyaeL5BekCQPwkdOi6dA2ipZN+7pctrcDIN/PFGNEsrcFeqebEzgP3U1s8jGfUGI4UFbqV8xiZqgEs4srPCHcecJ4pQ9ikJH+5WPFL0WWXXbbk95/97Gfxk5/8ZMUN+OpXv4p77rkHd91117LbfO5zn8MHPvAB1Ot1nHDCCbj11lvh+8srf1588cX4jd/4DWzcuBHbt2/HH/7hH+LlL3857rzzTriui3PPPRdbt27FJz7xCVx22WWo1+v40Ic+BACaPB6PO+64A1/72tfwr//6r8ue95prrsFHP/rRQ+x5EkkkkUQSSTwLkRjCLhtPi1Nkx8tf/nJcccUVER7Pk8WuXbtw2WWX4dZbb0UQBMtud8kll+CCCy7Avn378MlPfhKve93r8F//9V/L7vOGN7xB/33qqafitNNOw6ZNm3DbbbfhvPPOw8knn4yvfOUr2Lp1K6644gq4rov3vve9mJycjKBHHD/72c/wqle9CldeeSUuvPDCZdt5xRVXYOvWrfrflUpFIVqOA9ls6sy4RwKNYbs3aMJKIeLVXoDmvNjijbLNVTqWUNhS+zIaFA7+JjQ3iKtuBrfR3BO7Uo2LoBh16ANhjTJcEoJkMUqRdg03KoiZkQ6t0ggR8xjcuKWFHZ6rq7t6WZV5PV59AABwx95tmG2qY50+rjK3805Q10w0/l3bqXDGH1baWvhSZKlSaoPK7sUZv4bHasp0cshXiNTIBoUiiuG1eLSqMsLJzPEAgEKZ0IOFGY0e6AdHu2Z4BYwkUNYsF6sGEWpYXCKocdfWInFUxLYR4HCcqCEnEOVIad4UXQObk8bb87np36LTNfYtAfWx19PWCLrqLi7eF28XoDgV2sIkZpDc61t8KVe3XXOp+BgsKtloRSrxAESX9hssqkmIHFcE5kbRFVEri4yXN2iBbp+Zg7oCMFbZiEbLGOjGbC5QKmjezDDxTeq9ihYYZCQ0S/yXbKqIiYw6NyNYLDzYlz14VPk1RpyadC+0+DgKmSxxpV26iAZZcTTZFoSi1gnx6IK6xjNNda1CWaH9cxgN6LqzrUhtxvCyGAln5CxIG/sN5sXxONv/07XRIACYXRi8dq47OJ9t9JH3peuj3VSyw8ixoTLdW1xxFgRFgHk9XAnXqhk0i1FEe47FREW1hU4ozX3NpsZFhY7VAx8PTSvqyM/mFMLoCOCYvLpfji8t0ueZ6tDtmuYXCeK6yUbZPBuSeNbisF2Bm2+++aBLS0vF3XffjQMHDuDMM8+E53nwPA8/+MEP8JnPfAae56FPN83Q0BCOO+44vPSlL8XNN9+Mhx56CN/4xjcO+TzHHnssxsbGsG3bNv3dm970Juzfvx979uzB3NwcrrrqKszMzODYY4+N7Pvggw/ivPPOw6WXXooPf/jDBz1POp1GsViM/JdEEkkkkUQSz6WQUh6W/47GWDFSdMYZZ0SyMSkl9u/fj5mZGXzuc59b0bHOO+88PPDAA5Hv3v72t2PLli344Ac/uGR1GV8Mm7vzZLF7927Mzc1h1apVA79NTipU4Etf+hKCIMAFF1ygf/v5z3+Oc889F29961vxJ3/yJ4d8voE2NxqQ84um0qxOmUf/SSoAlkBsACjEJc4JobBRIs0RgqsrQzQaxHygUOrvdKUZtzte2WZ/t1y7LdRIHd86ZopsNLJUMcTcED9r+EOc1TcMB0PryzDHo9XRWakzpK7pXNNs3+ip8+whXs/+htIBmSoVIB9RnCC+FuhLjaK5w4RcHa/0XR6t3o99dVXVkyupF9zesDrfLxZ+jMcWVXWbM6r6WBwh3Z50QWd82sy2NW+ya86Gbb0ebTdAKA3bcKRM5qp1dHhcbL0irj6TMmoAa5/P8yAKpKXisrmopSfECIfmLFm6QLqqizLlMDQGx6zLwrYnQd5k3rqyhsa71RzkknjWfR43ow2s6kK7soy2Fb1l+FOhNFWFuvqOt3GQIuQj22Ij3icgmSfCSBFXH/me0aWJowgdS2spjpA1mkCo+CyCjlkIhlDIK6QnRBQV6sueRkq5Qi1kVESGWs/Iq5epnTXIkOcQ9QNU9el4cOl65lMKzdhcUucttxtgF6G9NbXfduKPrcotYHWO7je3ZI7t09wg3pC24PGzpqKqz2Np6VVVGSkmNIQqD2W9oYyDlwttttxd/jfNzetp7hIbPXfJwDhiylunfvkpY7XCYS8Fxa9xL4YmWduICWV/s6d6P2abpOXVMttlPXUvdkhvyutS/2szABlVC4/um3QW6CxfxHRYI+EULRsrfil61ateFXkpchwH4+PjeNnLXoYtW7as6FiFQgGnnHJK5LtcLofR0VGccsopeOyxx/C1r30NF154IcbHx7F7925ce+21yGQyeMUrXqH32bJlC6655hq85jWvQa1Ww0c/+lG89rWvxdTUFLZv344PfOAD2Lx5My666CK9z/XXX49zzjkH+Xwet956Ky6//HJce+21KJVKANSS2bnnnouLLroIW7duxf79SmTRdV2Mj4+vdNiSSCKJJJJIIonneKz4peiqq646As1YOoIgwO23347rrrsOCwsLmJycxEtf+lLccccdmJiY0Ns9/PDDWFxUqIDruvjpT3+Kr3zlKyiXy1i9ejUuvPBCfOxjH4toFf34xz/GlVdeiVqthi1btuDGG2/Eb/3Wb+nfb775ZszMzOBv//Zv8bd/+7f6+/Xr12PHjh0r68j0HHp7GwNaRAAsntAhQJHMP0J/4KcI1yemNySAATNZrYTd7Q8ayNooUFx75GDhLr8aK/vS9JHbqrPBBhzNWaDKJBmaTDCiYwKFJlAFk0NZ4AjxGE4d8zCUnqOmq/MxbwR+YHSg6pT9+Q7cEUJP1ioUSAyrysag2cHJI+q70a5qnyRex3B6GC+aVC/H4xmqhCR9F+THNH9Bf4YSmDpGbUYVSayiKw7shvSivA9Wr4afMkaoXvR2FbDQItZWgdFLMsiPde34O9aW0d+7JjOOKzo7wnyXKan9goLSRLKD9HpEuqD0awCgSuhemSrz+v1BfomNBjH6xP2vNQwSxf1gDk+na7g+cZkQx7Eq34i7wahivww3VOMwVCW+yfysOU+uROPAxq1dcx8sNTb8dzETbWenO4CYSRlqjgu32COkJRUMaZ2ulmQTUzV3XeEZnp1VxSgE61PRb4y0tipI07HSrkI5M3mFZKYcH4GndJd+Mq3uo/mW6t+ijcAzx0o4eiw6hJQ2ia/UCZvIeaTd1CCO3H6SZaGqQQDmGrNGVTYDrFOSKiKlxk126lYVWKyisdYw1Yd8TJ/GtNMAuNozrZDdlOR70jH6YLZmUhxFjXPZlgrHiWhQAYCkyrSMl8e6guIpBZ5ql+94GMso5GptfqPajxS04XjWOdXY9sc2ou/Xlz//4YwEKVo2VvxS5Lou9u3bF3kpAYC5uTlMTExoHtBTjdtuu03/vXr1anzrW9960n3stc1MJoPvfve7T7rPTTfddNDfr7rqqmf0BTCJJJJIIokknpFIxBuXjRW/FC1HrmLtnySSSCKJJJJI4jkcCVK0bBzyS9FnPvMZAAqm/uIXv4g8l2EC6Pf7+M///M8Vc4p+WaK3q4qw0R98s045ejlr4FXTJmHHl64scvDAb64YIE6LwIWTVy+sDi0V6aWCVhv9AwqyZVNaTfK127WUOe3BxCVjIVxhtZmgZzZl3f8YkI8aQIrcqFm+4FLfMS6jDc0yAS1PHZM/gbrvoZR+FABwoKGgdCaoorUYLUHnrgzTWJBEAC/hrXVXQc4okna4R+lXiVVqyewYz9dqfUJQPzLU3k4Dcl4JG/KyEYaH9LLcQr9MX6mlCFmehsjRdSFyr2SyZxiakvelHkJLSEjo0GKPNO61hvmOr//BBBc5rJJ80BB1gyw8Iopijoi1HSJvNytGjNK2WOH2LrN8JlIpM9+YcF5vQ6AV2V5qy4iUEa/sRZcREfgQWSLy5pWAXsVT+z8w8zMEJJz338ZeTPt3FNEVgMjSPGPicKtmxo3vg047+m/AELO1BYRvllsoRDBkzEdjS0WyUQYa6reA2hDQGLfDli7PT/P9IBzdRn4KSE3M7hsDYlpac11DvD6+pOaeIxRX8tGyul5D6TSKvjq3rBpbFeEr0cIH5pQW3X0z6n5o9CROGikBAF625lx1nr1K4FG228aGh5ftiXCN1VNoDqnzVDtzNFwZ5FOqXWkZXTqXC7sAEhWVbNjKIqP20ilbKVlmvPoe5GvV6w8un9nk6viSmh1adoHukVn1fFibW4VjptQziJcWM14egmUAyDKGhURtgUueL/sa21FtWEuOSTwrccgvRX/+538OQCFFN9xwQ6QyzPd9bNiwATfccMPhb2ESSSSRRBJJJHH4IpSHASn6JV8+e/xx9Ub8a7/2a/j617+O4eHhI9aooy36lXaUJMuZe18aATJGjA420Q4iysghUq4WR2R0yF1bgtioSL6YILIvZX6ytQjvwF61/f1Kx6n3hCIDhu0eBEzp/kpCLIFkaQSLpQLmiHTY60OM0nxaRX51rqeRIlFUxGQMG2sXXfbLpdVkCIl+R4vb+Y5CQ0bSJMUw+yBkgzJEaoOT9w2Rme1R2MpgtgxJprLhnMpYnb0H6LwOxHFKkE+PDLdpYd5klJx1ttsaPRpmgb26QrQiRrUsaDlW0mOjicU8h6ysVpuxssBco2mJzcX4fY4DUVB91QRtLjdudQbFHunQUkol4Ahoc81Ov4UU94NJ0Vb5tEYB44agnjt4Htpf5rOWfICFVmlRyU70M5817Y+X8FsifGzKurv2EADg7uk5ZFPq+h87pEjP4+kswHYyVqk3ACVYGCehc+l0KE0fuZ3ZjGl7TJRT5kYMUdqNPX77PU1MlwtEAKdr7mcLGjFlNEgMrQJI+FGT3PnYMtT3BpOBF9tKuHS2tUcbzh5bVNzQ1Tn175GghKJXonGwSL80FjVCt+6bUdtXOn0Mp9V93JNECmdUyLXI+zxnNVJZ0jIcTbLoqDX3I+MpCYNSWt3zxUAhZan8OJBWYyJjRsI24V8wwti0romNLALqPtCCo4gcK4K8D0hauIPbscBlc1Ejc1lGuOv7IRtUaMAGt2wk7HiQJLgJKkrI5ofQ95YQPj0SkXCKlo0Vc4r+4z/+40i0I4kkkkgiiSSSSOJZjUN6Kdq6dSs+9rGPIZfLRWwslopPf/rTh6VhR1X0JfAkJfdLIjHLlMFrAUYMCi6KwNVGq86G1erLY49Hg+To9zYUCtLvqaxrrLAKY6P/XW1PWXYqq8p1u9sXEJaZCxJDpCyE6qAij2wPYrdTZ5JWaX5A2RXJ9SMVaKPEWrcMAGi2VZsDN4dMaZIOr7KzZkchOIudGVQ6av0+46n+eAR5hPUGwoZBMwDAGQk0eqIzw1nK1ufKkBXKBNnotk+3TL8PsGXInmnTDwDIZowwJWfKrTbQUEiS5sSwuWSQNogCb1+YoDFKKaE3GhP1JWWd6YIWgNPifQu7IHp0HkZrOLKBHmfBaIuwEEpGpLgtXMqeSllWHGq/tJsFWmX1HWXg+nyVmkFGWH6C50PKQq+08TDtZ8P5jL70JZBmIcyYLUTLQnBiwo4iE2gT2hYJDz6yT/FnWn2JsyYVp2MiUOij3HmH4Z4w34qPGYbAsOKSaQNiRgjKe4ADirumzXzrahyFRTGQZP0g8rtNm5lvQ2bGcH1jElybp09LmiCGsMlVjQFDZDa97coOuqFqY5sQsFpXtaHd68AnPuAxeWVbUxQ0X9sNzeNhhFbOtyCrao6/YOwFagx7yqvSc1ycMX6a6s5+4hIRj0y4rrmv4zydVgXpmur/MQXFxSmnpuEJ9V2JZATkguIuyVbFXNul0ETNU6M5xdfQHkOLp6f5c5pTZ8mR9GIoqpaEcCxpBnoOMEI3tAohtYsFaGW/azhl6ZgVSrsGLNJ9TffbaOEspMRhc946eCRE62XjkK7Avffeiy5B8vfcc8+gJkgSSSSRRBJJJPH8iOSlaNk4pJcie8nM1hFK4tAjYtjKqMtSHCGOJX7TwouOAHzKStjENE08og1jEFuUQamYUmJtB9p7sG32HgDAo2WVnaToWKeN9SGojGr02BepE/mEGHkPovuwQkM0YmQhWkshRAfrj66GY9SIM7Bsxph8spBbKtAciPm2yhaZIzTkj+tKnMWO6s/umuJF/fuuvZhuqEzv19YqzstxxTN0M/QY8rhNjpiqM65k4iqXesuIXgZkTbKUOauufLJ4VHGUzzYSjfMrXM+IGy6STcM4tSU/pKu6dLBQXz5Apa/4HCzsl8uNQmapuqkZ47o0TH8038ZOcJYyl+VP/psQEq9RgWwSX4JQMVGh6kWLW6SvNXVVdsOBCkDmeYkwNJWJtsDpANeJ0K1mB4Ir/vKEIhQIfRsdhhhS3LL5lpo/rZ46z1kTQ3jpalUpJXcoxIPNbVU7rColAMjndeVgRSrUoZAl7ltzEQhIHJC5XMxrsSuZbIFK/q5JyBxzmApjEB7xtHhb30Y8CMliUcTFMiShQJqfREhEqjiJFo15haq7OoQcZbxAV2Tqysw6CyHWDe9F0Lm9AJhTSOxQU6FhF2U30Bh1gF88qPblSkNGWIaHDKJiW9oAQKsJ6aj541H/x7wcZIvug9quyNiIoVUAWWroqj3i8MhO3Ygi8lxh5Ew4QJF+Y1S10wDYKoWDxzkMgfmF6G/MEWu19XOK7U74eQXhaNQ6chfFBTdDq82MSPO8qeyDrCbVZ892rNgQ9h3veAeq1erA9/V6He94xzsOS6OSSCKJJJJIIokjFFIasvVT/S8xhFXxla98Bddeey0KhULk+2aziZtuuglf+tKXDlvjjqYQB0OFlgvOqJfYlxEid63SYhGb1qnPDaei4hLPpqWyrW7YQdFXGc1xJbKmIA2XqexGXc2yq/4wACA/oaq1SmcHSHV+BADo/EyhNnYGrxEv5jjYaBhbjRCCJXIpg2oV/Mh+8FzFQwEgU8TPKYxhf2MHAGA/aX2MBWrOuY6nkSLOzho9lZ0/Xulh24LKtl44SeepUsVYuWosULIWWsP6Mtwf5iqE0vQxtQSKErd+ONRgngVn982m1l6RC5RwUBaJbMa0y65qAoDKAgqjUZNj2Sib6iwb6QFUphuvouK+L6XPwtl9KgUtysSVYukZjZ7Uh9U1yHF1oHMv5AzxbOqU1XcHofYBHl1f6mrHpfSkGHWKIJQxI11kLN4V6Q41G+o+yBMCeuLIBoj9D0f6I4SwLFNovFmLLVvSXB2X+CKCmiA9f9AI1jLg5faJ0ZL6LvDNdWfUhPsXDKFHiIVHSIfWNAK0xQqIRiRcc15tq8J2IrseRJ7alS8onSZB+kPws/o87b7qf4q3Weya6kvLcoWvJ/PgRJoqp+y5z8iv5pN1IWJ9jPB6WLunxlVYXQyYBI8TIpcpoks2Qn2y2vFEnj4dSOZi0XUSBRqkfg+SkCVRVPdKKABnXB2rSxVz/DzJhR6kpLnB1a8jVGVa3mO005g3xHpk1WmkWHuIuH8iNwpw5WwcMWpVBzlSvY7RXzvSkSyfLRuH/FJUqVS0Q321WkUQGFi33+/jW9/61oD1RxJJJJFEEkkkkcTzJQ75pahUKkEIASEEjj/++IHfhRD46Ec/elgbl0QSSSSRRBJJHOZIkKJl45Bfiv7jP/4DUkqce+65+Kd/+ieMjIzo33zfx/r167F69eoj0sijImzirV3+ebDtYm73Di07OeNZOOuoRPi0MwEAVVpaqffmkBeKBDjp09JKo4xjUmR5wITXkGDqel3DyrMtVcr9wNwDAIBj8hPY+Ku/CgDws2oZrftztbwVVi2YV7dzCWsS15Cr9VLaMC292m7nBM8zyVWUyshTmx2h4PUd5Gi+t76AKXIyH/LVNqW0gvVfMJ7CuoI6zyljSqhSPvEL1WYmi8OyQMkEQMDCjyTBny6rf6et24PL5zlsywwtpmhtHxcT9O2ydlqmoRJ2ObdglnF4qZSPFYZAL/bw4TF2XSDLrttGJFIfP26nYYvcpVLR3wCzZMErHmyr0W4rCQJ7PwAVoZYcmMjMLuxiZAigEnS9bMbj7Qq9/CXoN9ki8qm1nV4y7kvIFp2blzwt02l9LF6y4f45jhYt3DR5MgC1VAwAuW4IOf8A9ZHnq2OWMXiZklzmhZfWS7BZum8kLcmhWdfjrceGS/HzWbOkRCKJqM/r6z5wXVxPk6HdFJV6O3TMVGCWYIhULPtdTYoWtGQjtXVIxRCyK2S5woUE/T5cIqRneX7yMle5qsn+ekkylEZGg6UmJmh5Kmf+PyAWleQBSxQgnwXGeUmV+siWMPOLal7x8QElRpq27hcgIn3AYqEpJlHTRJW1GWCRlhnJLkgLOtqCmLQsJtJ5gMRr+VgpIpXLxSeARbqn+P9xvKTVrgHV2D3FS9WdeUiH+s/L44W8Hh8Wy9XLZ/0OMD4e/c71BgU9j1Qk4o3LxiFfgV+l/zk+/vjjWLt2LZyDeS4lkUQSSSSRRBLPzUiQomVjxa+l69cr0lmj0cDOnTvR6USJYaeddtrhadnRFEuZqdL3OtM9SAk+I0TuMSoLcrZsgDj+hQCAtkfkw57KbqayG7VJoZxTpbJotEwpaTaGeACApzLjoq+ymkZ3NwDgtt0PoTGpCNynvOSlAIBU5/sAgN72BYQNytRaFpmSM0rLjBZQdhqaYM1ZICNFlZohazNCMvcEptaoDP9AU2Xpe2tlAEDeNwhRjmwOHCrdPWO8g2xKZZunpdUyb//B/wsACGsdgzqM0DiMDGtyJtpEDuYSWUdESbMAxDARYO2kII7M+KmIMSkAIJMxpddsJsqicr2+QRTi6JNt8xG3DslnIUqq7JwzTOlOmwy/TYgFow22nUjWKkGGQlqkw6J1S5idaosR88goOgrNKAab1LnnnjDHZIkF3tg6r/6OEAyUCTHrhkbkdIn7IVxsR3+zjZEZhaRrIRcWVYk/oMvWs4QISpvMqknVBtXhMe0WyGJC+JbBLxUC8LVbKhh9GR4x17xywPSZzzlK5GYiqHddBz6oDYz4EFpV7leQIzQo1aU51VyEJKFFLfpYIZSjEyM4A+Z/YuUKZDmGMPJnp2vI8db1F0PZ6HYsWlhcpZEO3RaWKMjnrfJ+IsmHhLBlAwi+N7itvZ5GjzRBm+d8vgmZpz4yys3Xsb5o7kEu4Rc093NDkDUSWS0TguUsmOeMLa4KKKSM7n9tsktjKherRsKCn6f86acNCZvRHteQ6jURnsymUa8OWtr0e0ArJr+RxDMeK34pmpmZwdvf/nZ8+9vfXvL3vgVtJ5FEEkkkkUQSz62QfbkynblljnE0xopfit73vvehXC7jRz/6EV72spfhG9/4Bqanp3H11VfjU5/61JFo4/M/4kJ+nN26QvFwrO+Eta1TIpuKzZRRnqwk+cW6s/DI4t0AgPGMyjKHQVnw43dB7iP5eEtUUNiWBXZkijrDIT1IjGUUItUJe+jxejfzGcg8VRTqRuQqS7+lXGP2GkPARC5lhPYY+aD2hdWuMWgNaf2/0YRbLgMAztx0OgBgY1GJt4UyxKhPHA1diqvW59dmNmmz2PD/3aY22Uvl/qFBFsRaxaMSYxtNeS331Zb+D6ySdQAYI/uNbMaI9LG9A2ebNsKk+RK+zvpN2a26TqLXH7guGq2qNSAJSdG8nEniOgyPoUfcKi6tzo2uh+RslAUJObNudQxfprFERqrL9eOCe4PtgwwNesJ8Do1kCYgMiXDysbSRpmOORedjNFGG0ohl2jYy/B2X5C8hC6GtbyxZAX1dSE9F5Cx0J4YAwk8Zwb+iKgPfUbkXADAWrEGJ99NmpDRHfM8cg9E3FvYbXmsELiv02ekCq9XxWVx1tkPiko1p+K46Rs5TSGifxP7mWnvQ6Clu3WhGIVlpOQp54DF1XEautAGrZ/FdCMnhOWW3n/8PoBEjYcaSkba+jFqeABrxkOU9Vpl5LXqsSgWyQ2g1ySEMtJPbSp9iOZ5Kp6tL+NmGRMtDVOsGweFrwOXx6byxx/Ftixlqcy1m2NvuDEpsWLINOnjujikkvVsYQbOn+p/11DzypGmrNoZlk+F02lh+2OPXXwLhOxKRcIqWjRW/FP37v/87vvnNb+Lss8+G4zhYv349LrjgAhSLRVxzzTV45StfeSTamUQSSSSRRBJJJHFEY8UvRfV6XesRDQ8PY2ZmBscffzxOPfVU3HPPPYe9gUdFMHpCGa5tFBlHiHSW5jtwx4iXsUYJgIlJZZz40/n/h5/NKt7PaWMqsxjOn6r2q9RNNstWDpmMtmLgbJirIdq5os5wGCnZWFSI1OYhDyVfoVTyof9S+1PW5GRTEOuosmJSbYN81lhlsNgbixD6qUFxN0KTZLcP0Vf9D/m7mSbEXpUZO4+rvg6VqO1pHyFn/24sq2139Dl7e6nqhjOavoS3karwVm1QuwV5OCR4pzM2Ruv8lBlDXRVD4+h6gKf2E9xnC03RvAQGJ4LGgKGrzkizgUGd2mwIShmmZTXipGIZbH0RblmhDDkStpSdOXN85iUxf6SY04iN5m5wv4K06Qdn1Izu9PpmTvF41xbNmGtEiuZ3JrB4c4wKESfLdS3OVtQCw4F1j3AVWtoB2r3IdxHhTeYBsakvow6dnjGo5bGlYRNCWFwQPlba4nyp/YbT9JxzipCNfdH+2HOEeXp8b5HY30J3FsNUMSV5m053QMiPTVAd0cJih6xtWlTlSdv0ZIhSWj0H0l26htVpLXqqs3bbCDUm9qltWBotg1ZaCBEAdS0YFWKD00wQNS+2x6E+b0xPe1HqhKzWARIlFcND0fb5qSUqVT2DlDDqaKOKvB0jmLxNp2tEO5nXwwasvZa5rzkcAdYI5TaztQ863UHElIfUqsLT4+Cq89W7FY3k5VMl9Vtt1ohvxlG0TFFzyTTfav4JIHyGbD76ckmB1BUf4yiMFZeQnXDCCXj4YVXaePrpp+PGG2/Enj17cMMNN2DVqlVPsncSSSSRRBJJJPFshpRSL1c/5f8Smw8Vl112GfbtU1nTlVdeiYsvvhh/93d/B9/38dd//deHu31HV1iIhQ43ihDpaq2hNMRUSW1DWRZL8++dXtCWBQ6vczOCMTykq250VpYv6N8FZ64k699oH9BGqzlHbcOcHFR2QdZ+rr5jNGCEtIM2rdNoS6+o+DyLnRm4QmXew2up6uLnynATnmfaQ5k7r9ALNpK0Qi5UEc6r7K23Q/0uW3N6zDSS4Bj9G7VNz3BOeJyJLCVbPTinKV5Se0hxDjrdMorC0gSywxGD3zGHiTJEtZ/RutHBiAyjJ/OVaHUaAMxX9LZxhIj3F64w2j1W9RBAujPTVFnDmXI2MKhMLmO247D/jrfZ7jdgMuVW2yCAHtlclKvGFsPmCwEq+2bOhaVrNHBOrj7iedHLLmkLIVqd6HeMDmUCY+Y7RDydjJqfsrkIsUfxbbRRqUbCUrDYISpcTyM4zAMaZSRs8QFTKcfXgJGm0riycwC0DUcrJNPY1IjRviK7BwkYNIPPR7CF7wbwyMKiF6o+M1KUSw1hWNL9yTYcs3MGDaPQnMSRIaMhpM1I6XNhcdDSxuJW8bzRffT8qJaO1XZ1XJ6fhLbY1Zjx+0dreln3D/+dKRoEi3hWaMRQRUBzpQza6QNrlEZeb0rd3zuq6rm1eegMc696XL1mlaPH+G1whNFiGh6Ltr1ZMcaxjERR21NOiAyZ+To1qmJd2GWQPA7mJObHtW1Jl651trgKAgepakziGYkVvxS9+c1v1n+fddZZeOKJJ/DQQw9h3bp1GBsbO8ieSSSRRBJJJJHEsx59HIbls8PSkudcPG35zGw2izPPPPNwtOXoDpupb62l68yO0AxnRGVpzvoxiI1KkZl1Uzxa7TyutBppV2UzIwEtWTbLdJwsMEZZVcpaZ2e+BOt4UIY07BQhF1VWJud+pj4tjghnTYKsXTjjRTqPkLK3Fmkk1bsVNHuUUWdVVUZp47Hq3/2e1iyR/ShaIdYDYojMGpnHsLAHzhOPqu13qfb1dqrzhIttyDodw2Xl2iWExFhNm25+ZyQDsflFAIC9daVyPeSPQ98G8WoKW2+IM0pSx4XnGlSH0SCrOkUfidGJXt+gIJSVy2rNHIt5L/FKs7Rn9FL4IcacnHYPgir5JPFHRCdn0BM2nCQzUjk9a2XEsX71rL/jPBOrH7ahp+ZziRiyFPiDFTzM3ajWDQqWjnJXkMYSaJ2jKnVg8bRIjRl+SquR89zShqp+FpKUn0UMWUAYDuoMBRnDjeHqvTlC4WzNnzyhKGSsLAqTkNQGrgAUdJ+687uANF8Lqmzrd7WRq9RyZabPaj5avKEWmaXWFiCbVO1HCKNsNgd5ORzCMfc896tjoS58HZdCCvk6cjWen1XcIQBoEeclyJjfCGHWzxvHesbEuU6MtIThAPok3LTW1NLq28T1Eb2+4aIx+sKI1KoJzeN6eEFVDD60sBcAcFzxDKMpphXB61rtW88JCpFOG9Nb1lhitXA/O/AdHzMte8iSZpqs0XXqdM3c8aNj2k4HqHXUmAYuj18WSD1Dbxr9cOln5kqPcRTGIb0Ubd269ZAP+OlPf/opNyaJJJJIIokkkkji2YpDeim69957D+lgER2HJJJIIokkkkjiORe2JtjTOcbRGIf0UvQf//EfR7odR3f0parzW0LEkQnWzhARp9eQ8Nv61RoSZjKfXFAS+Ztym8wxGlS63SZhM9cDAhJ7ZCi611alqSDzRACoEJGx3YjC6gDEWrKOCIoQKQWTN7IK4tVlp/ARkL1HvqnOXShsxEJYiXRRl512W5qIKnipjwiQOzqP4yeP/wQA0CRI/OTRVTj5tHMAAP6kIpZ6zk/VoR6ehawvDd3aN6ogAqsoqHFI/Y8TsZ2I44sdBcEP+eOmDJiXwXhZJ53W8L2G7pnY7Dhm+Si2BCH7fbMEYf2mqzXsZRw1EJYpaGyOeN5AqbMmmQNmeYKJ3f2+trrQapz2UlacYBohPavroc1VbQNbu/wZgMxKCL0UF7MmyWXN8gITZ2tcOm5dN/6b98sGkeU5fT4+NxO7tSCmpwmvvIRVa6vrE3hZBHm1FCVLan6KeSJON1uQoKU4Lq3u97T5qDYhraslFpH2tQEqz+eQlkEkrIKBJYp5mbQteJkvlYHs0nHJ+mM0p+7X0HHgUOm2JlOztEUY6mulCcaplJlnfC2YvN7tAo2y+rtB0hRViywe349jCU8sMbTKLAe70fsb/Z6+j0WGlse56MPxzNKdvZQPqHnB9x2Pd39GL6lpU1pednUcoKy+C+dVPxwWjQ1DvVRYo2MFHs0jftYA0UKAeHGAfT/wEp8Wc6XigqCgl2f7Uu2fpiUkr1Uz23u03JtOAyH1Q8ujqDGaa+3Ry6Ys/YDqrDELPtKRlOQvG8+QJW8SSSSRRBJJJPGciETRetlIXoqeiSDRL2OOaQQbRU5dAndKETLFJJf3FiH7hCjwJ5EdZaNsLCNiBGo4nhZmZBKgkCFklQwpZ8vqkzPE4SGIVYRI5alMPzTZSpbQg1pXicnNNhXCFGZCpNt0Ti599naiNEHkcCZkc7tSgc4aZZME3YhAvu3AHvzX3qYeKgDIeAcwnlGExbWjG9WXaxXK5eypoN+KERKZVA2T5TIK521QY9U+5UXYtf8OAEDRz9B58kZgjbPGsZL5NwlHgk1vtXWKAzDhl4ORJtc1GbtnZbOMwMQI1yKV0nYYmnjPA2ELSC6V3cZK7IXrDpKpbePZ+G9MgB0qWaXbhE4wMhOkTb/5s9E0cgOMrNmoQyzLNhYojinT5zHi0u/ihClvZ/Rg9nFTDh8TyRSBr5HMelchGB0Sv3NDDwEThUl+QSNO9UYUNQAMegeY68il6cW8Fk7d21ZobbOi5uZIsAolyvTTjiWcCADBEKSNyALKGJQMSrVUQlpJYAg/C8loFYkeanK56xopAiZ7Z3MGeQktMjigCNFkk8OIl7bXsUUIWTphiAjho2MG1WHUxvW01IFGQQjtQr9jzs1FHEwu9wx5XRPGmeyccgDJdh2EptSapl0sw8BzXwhI+tshM2cuIMDUhL6eo3TN1+Sn6LzVQXQ0SBtUnK8Bz0/PNWKKTW4zbTu2CYsd9RxlO5Z0m8aoNmNkT2wTXPucgN6m02nBE+raOR2a6+U9kNXEEPbZjuSlKIkkkkgiiSR+iSIxhF0+kpeiZyrs7EwbwjpwhigrG6PsgrPm+qL6DwBylKXxWn3HWnfWnBWLw8Jr9fQp63PAAcr+mbOxRqFDYnQjymQtILvqkw0N080G5JxSL59YdxYAYHdtJwDgscXHkBlVRq15EiTD/CwwT+X93EYWOQMMesACiJSRTWSLeMkqxaVgBOf08S1Y5RO3ibPnSVW2767ag7BGZdb1KFIC19GcG3eMytTPOg0A8JMDP9L2IOMZhYplpadLt3WQySoAM74DBqr9QbsKChGko8J3ANBpa1RC+DEOTuBDMI/B5mNw33m84qhLuWq4F/pYJgvm+aaFIcPQ8CXiAopB0TLXpVJ2KpyQnoV8cQbfaBm+ByMrPABhZYAHpccm7ZuxYesLK8Nup6jEOU2aZzt/YXbmrJsF/XIdhbwASNM1YyE8KUM0HDX/MxPH0ckp4/dcza+RTeL3hCFQpOOTma1YfyL9u4gqoRq1bhkA0KF7q9NvGrFURoB6xPnxc+YerCqkFZ2GQe7idhWONW5sgsto1egYBHGkDNoSGFRHjxGdb2EX0NobPY+93KEFPulaTCmEtz2yCpWOQk4nuoQKlfdAahPjWAhr7vP8IbSm0q8g45XU6WJIkfDS5piMoDabGnXUyJWFPurveP4wKl1agx5NvqmsQpULfZK96CwM2nz46UEuFUc2MNvzM4xEMKdbuzBNSPmQr57JhZxCENGuGoSewx4zvmbE7RwN1sBl0dgenc+WUTjSIQe5Y0/pGEdhPENXIIkkkkgiiSSSSOK5HQlS9CyGM5SGs0plHHp9nGX0G5Y8fCmWDfZNBiJcWqsWlCH22pCMFHGms2+/2fcYlUm1SXxuvrFdr4+PuYp7IXerCq1wz7QxdCV04oRjlfHs/bP34PHKQwCAEyeVeKfnZ805ZTR7Rr1hTGlj9gObiidh89ApAIAsiZ3JfY9AOmpfMaWyMV3JtmonnH1qfDS3yBIS01Yp61R/5kbV+R7a/hBOG1Ncg/GMOpaszgEVQoq0QKElKmhXQQEGken1DGrCKMpBuD6R7RghIV6Y8HP673KvDMBU+Y2U1iJgcTyuIGQOlL/XoE62XUPcTJORCW+J252RCWtO6WMxn6MDzXmCR9u3ehZXg419if9iZ6BLGYnyHOesmDJq2VhA2iMuWtcS6CNkQMT5UCPDmr/C1UDtvkKAOmErghoBwGhRIY+l0hpgL9nXPKHQFFmtQfBxC+qerJN1SqW7DxlXnWdNTqFOIXHXUo6vx07zbNqWwTLfB5UF0x+bl2ZHKA0KkqfnAnGsGtksFjuKU5fz1G+u6KHWIo5TX52TLXtWF1dB7ic+XBwRCEODWvPY0nkW2tPYU1Mcp4nxX1HbTD9s7uu2xb0BFBLKVXGE6AriJjZ7VY06a7SXLTf8LMDoEfOaRocNxy1mmouuZRnCwpHW/PEIbSyEVKnb4qq/gr7+pv89gJ55KFkGzxyM8LCoJCF0i81foNxW88un9rUkVbulMoaDxRW+na4RUk3TeYhbVpAhIOk8hPaJ4bUQblJ99mzHcwopuvbaayGEwPve9z793e/8zu9g06ZNyGQyGB8fx6te9So89NBDBz3O2972NgghIv9dfPHFkW3uueceXHDBBSiVShgdHcWll16KWq0W2Wbnzp145StfiWw2i4mJCVx++eXoxb2ZkkgiiSSSSOJ5FE/bDPYw6Bw9V+M5gxTddddduPHGG3HaaadFvj/rrLNwySWXYN26dZifn8dVV12FCy+8EI8//jhcd5l1YQAXX3wxvvzlL+t/p7lCBsDevXtx/vnn4/Wvfz2uv/56VCoVvO9978Pb3vY23HzzzQCAfr+PV77ylZiamsIdd9yBffv24S1veQtSqRT+9E//dGWdi+kTOQWVzXjrihBrKDOmzFBXcmQDzW1hCww5/bA5CGduXOlAaIJo10zG2lB8E1mtQYyPRI612FZr40I4GPPp+Nt/rD4fJZn6VhuSkRiqwsrmVeZzyvhpmKdjVEiufnRkvVVZQxVDbMLYbBoNDubiUEVL3wvRInuQIKOyeVGaNH1liwQem2IuqtUDGLsPmKozruS7b0ahAt1QYpSOFYRcYVLRtgHMMxFWpZRGXTTKQ1lquWKqCLmayq5o4oopG8nRXB/mtjDK5+jrOZSJ+ge6wgOI8yQbhDbwtc8UIUYIPaMMXLarhtfFRqi2BktMk8pUlXUMP4UzcXs/vmY2WhN7KOpx8D2DDBEiqY/drOh5OaDJku9AcnbO/Iw16w0XiCugqK91p4e9DaXnszCrrqFH/Sqli3Bov/m2Gr/phrKxmcwOY9O40vqSe4jrU6lBsi0KoRq5ULVl0UIacpwTcXKU8gBCqTSq0aRr314i6+/1zbgWiW+XZf6MD1FQ874sVBtqXXXNG7VdmsfUIM6X63ho9dS93qF7YzU9M2R12ugSaZ6SpTsV53wR8tHuNjTvjtEwkbJ4NsTBQo3vkdYA305SWyaH10KWqfpOG71SFZ793SjpqhUmDdpiV7cBQGqJZJSrcXstgyJTsEYbMiUIfn4wgtdcNPdgwHOKEfoyZEjVsTTfWpr600ePxrAXqvHjCjLZWjRczvlZ05BxMirm9jECVps1VbiE0rWzebSXAJiTeGbjOfFSVKvVcMkll+ALX/gCrr766shvl156qf57w4YNuPrqq3H66adjx44d2LRpU/xQOtLpNKamppb87ZZbbkEqlcJnP/tZOHRz3HDDDTjttNOwbds2bN68Gf/2b/+GBx98EN/73vcwOTmJF7zgBfjYxz6GD37wg7jqqqvg+/6Sx04iiSSSSCKJ53Qky2fLxnPipejd7343XvnKV+L8888feCmyo16v48tf/jI2btyItWvXLrsdANx2222YmJjA8PAwzj33XFx99dUYHaU38nYbvu/rFyIAyFDFyQ9/+ENs3rwZd955J0499VRMThrE4qKLLsLv/d7v4ec//znOOOOMgXO22220Lb2TCnNVKESghjt1AmVGm9YBecoWOftn/keQ1uqneu2c9CyQzgKkfKs1NWjNWnRbFp+HjtVqWyiFaoPvqv4O+WOQc4QMMbrB6sitvoFIq1SlM6+ys+LEcWi6qu3Nnsr85wBkMtQf4mNwtp52fchHqZKoXImcp3jcf9MVL3vqygR2pLhKc50EZeIuVfDI6TnIdizTtTlFaUIzVm8AAMzP3w0AOK5UwkRWVd1pXk5t0VSRUbCKta7yAgxCxNl2NmMqd7hyMEPohp1ZM1rQqJvsnPVjWJ8llFaFkNpvyKomk2z6ygrLNLZiwxbUSWmcOTXF9KSu/NOIF20v6w3TJ+4Hm2uGITBKVYTM+dIaOPO6Kkg/BludQa6KjSIRb0rrDnEVop+D5Pnst8x4QVWfyaJqw66aQkW7fkebpD5avh8A0KOxnW1W8XhFjUlAFZ1njE/S+I0bpKhVBgDsrKpr3gl72DR1sjq3Nh7tQPBYEAItO0pBffXaUwCPkC5SidZIaH3O8GXYLJWUlyOcIXusJgi1paq4blodOwVPc1T2LirtrxaZJ48EJWSI11XtKISh1alhyFfjuia/GQCQnyPk64kd5tpyLGX0y0bEdD+MF9ciQ/e1Q4rb0tZAiutVoW9MVbX2T4z7BhiEhKPbMpVoPEfyY4aDGN9POEY520ZYASAVoOWo8U2n6J6ce1xtkgrQo2djj01Z/VF9eEZ6PFYSn99lzk3XZ7qu5mLKTWFtQT27i6mR6H5sFA2jxi3GRyBIY22WdN7cUN3Xw7kRCOYl0T382OJPUas8QzpFyUvRsvGsc4q++tWv4p577sE111yz7Daf+9znkM/nkc/n8e1vfxu33nrrQZGaiy++GDfddBO+//3v4+Mf/zh+8IMf4OUvfzn6JEZ37rnnYv/+/fjEJz6BTqeDhYUFfOhDHwIA7Nun4N79+/dHXogA6H/v378fS8U111yDoaEh/d+TvbglkUQSSSSRRBLPnXhWX4p27dqFyy67DH/3d3+HIAiW3e6SSy7Bvffeix/84Ac4/vjj8brXvQ6t1vJv1G94wxvw67/+6zj11FPx6le/Grfccgvuuusu3HbbbQCAk08+GV/5ylfwqU99CtlsFlNTU9i4cSMmJycj6NFK44orrsDi4qL+b9euXU++UxJJJJFEEkk8g/FsEa0/+9nPYsOGDQiCAC9+8Yvx4x//+KDb/+M//iO2bNmCIAhw6qmn4lvf+tZT7fIhx7O6fHb33XfjwIEDOPPMM/V3/X4f//mf/4nrr78e7XYbrutq5OW4447Df/tv/w3Dw8P4xje+gTe+8Y2HdJ5jjz0WY2Nj2LZtG8477zwAwJve9Ca86U1vwvT0NHK5HIQQ+PSnP41jjz0WADA1NTVwwaanp/VvS0U6nY4QujlE2gNcB+4kLXGdSFyoIKPLwSUbP/LSkuNAkvmoYDsJbRrqGWIgmxWyjUCvaciMLOzXaBnInJYeuHTX6XWMtQDDy7xU1OxqSX1NqrWWkdKu+q3VV+ebae7WhowcG4sK1k+3Krq8XzJEHFDp6ugTGCkR2ZvaJ4SD/Q0FgedTanmqxHD+7lmE1aiYnCZXF3w4x6tjzefIZHdB9X1zaQ0KLhl5dkzZrBgmsmWRCJm0DCJ/vm3QIqBjCMcyXipOS0TCz5llTb30adtI0FgyQXUpoUP+rtUZWJ7gtsjFfcj2xyK/ycY+Q/SNhUilIO0lQTscx9gTUEm1sZWpRknXgCKQM9k4PjaO0Oa/2rCV5ms/yKNPy0V6edQq195XV8Tpuw+oJYvFdhvHldQyDC9/LdDSabUj0SYIP8ioa9yg+2FPfYchDNPnWEYRmkeCvBb7c9euMn1gaQEmgLOBL34GFGhsmDCul7sXzTI1729bhvCSEi+1AsCQen7sk6o/MwvqubI2fyyG/Qlqq2rXgYaSDOiHPXRoaW3botq+1eviBeOqPQWHxrmqKnNlt2skGPg68fXJBhAFXs6kZdqyOma2UUaW+ij79CyqVMwyGwmBalJ9qQAxRstRbHrLy2FhCNmgJbTY88oW/pNMpq7NmGIKFjHl7bstfXwwCd8zqwVatoLFMvlzcR9c6o9HpfV1p6flGkrcV6YQzFeAkWhhR7tvCPMs5THsFKP7dbqDz4qhUcyRIC4Xowynjf1RO6v6s42WhffWF1CvL3N/Hu7ohxHKwVM+xgria1/7GrZu3YobbrgBL37xi3HdddfhoosuwsMPP4yJiYmB7e+44w688Y1vxDXXXIP/+T//J/7+7/8er371q3HPPffglFNOeXptP0g8q0jReeedhwceeAD33Xef/u/ss8/GJZdcgvvuu2/J6jIpJaSUEe7Ok8Xu3bsxNzeHVatWDfw2OTmJfD6Pr33tawiCABdccAEA4CUveQkeeOABHDhwQG976623olgs4qSTTnoKvU0iiSSSSCKJZz+kPAxIkVwZUvTpT38a73rXu/D2t78dJ510Em644QZks1l86UtfWnL7v/iLv8DFF1+Myy+/HCeeeCI+9rGP4cwzz8T1119/OIZg2XhWkaJCoTDwxpfL5TA6OopTTjkFjz32GL72ta/hwgsvxPj4OHbv3o1rr70WmUwGr3jFK/Q+W7ZswTXXXIPXvOY1qNVq+OhHP4rXvva1mJqawvbt2/GBD3wAmzdvxkUXXaT3uf7663HOOecgn8/j1ltvxeWXX45rr70WpVIJAHDhhRfipJNOwm/91m/hz/7sz7B//358+MMfxrvf/e4l0aCDhXAEvMkc3GNK1ElCJqoLAwiRZPuKUMJhEug8iZxxmfPCIsS6NdGTcObaaZjsihGFvoRgoUH+jV6H2w6QJmNWRjUElyZPjmr5fyY59gnRafcbcCShE1S62+i1MZRWWdzGghJ5dPeQSN6efUYojgTNdPYsHC153wfbJ7SQdtXvw6HK5sJHFHLUn21AdqNZCgs2ehtKcF5wDgBg+6I69+qcyvJHgzWGyMkE6GJRyxQwCiAPKLK3bPcgCG3ShFxCJkQ2ZSwYGD3QhrcLQL2sviN7FdnuGLQuhvhELGBa0WunOmUJM8Ky1ZieBRYrkd8QhsZ+o1qLtD1C/OXttVhg3hBXGbnhzHx0jUYbBFsyAAYhsb8DIWc8HwltQqja4BUm0ZEWcRcqmwcAtGtYPaZQ1NU5hZDsrO5DpaOQu80k09AgG435lkHE2B4mS+jBbLMKh2xKNhTV9V2bV1l+s1/DgabK8FevoQSnUjPjxPcZj3ulbglg0neM9tkoH18XLU2QAiZIkoBJ2L2eLqCYriqE4JEF1f9ap4UXTpYAABNCbeOT+WuzX0WDTG8DVx3fdzwjQlpWgosYJUkLz4XcR2gotz1LYpyTY8CqDervArePCMOVfQbxoXGT/fvN9fdozut5M2L6z8KMhA620YNPvwtGeWd26HHQKBXP4SCtzXtZkkHyveV6RuSTRB+18azrAc2y+o0J8LapLZPjWWohM2SQ3HmSOaHiBwQ+MLwaADDXU3N3d42KS/wM1hcIIaJrphGvfB44QMg+2ZG0R9fg0Zm71M/UntU5uqe6LXRcNabzJBVwTH4EtfD5ZwgbLyhaasWk0+ng7rvvxhVXXKG/cxwH559/Pu68884lj3vnnXdi69atke8uuugi/PM///Phafgy8awTrQ8WQRDg9ttvxyte8Qps3rwZr3/961EoFHDHHXdE4LaHH34Yi4vqRnFdFz/96U/x67/+6zj++OPxzne+E2eddRZuv/32yIX68Y9/jAsuuACnnnoqPv/5z+PGG2/Ee9/7Xv2767q45ZZb4LouXvKSl+DNb34z3vKWt+CP//iPn7kBSCKJJJJIIonDHVx99nT/A7B27dpIgdFSRVOzs7Po9/tLFi8tV7i0XLHTctsfrnhOlOTbwWRoAFi9evUhEatsGC+TyeC73/3uk+5z0003Pek269evPyzELnciC/f0dRAbVDm4XguvNQb4CNosNpQGDWFSeZPW89OetsxgroZeg3d9XVItRpmvVDaI1BoqDR1Wk63ancMiIT25UZUZ5thAU4aoh6p9lS6VzM/+P90vLheutFUWXExncEIpihBhnuT216+HYMG8me10ACMrwPySxbbKtnqyjYmUaqO89wcAgP4OEoZs9SEYWfHJ/HWSSsDPPhP/r/aAOjUhCRuKiiOTcfOQVOqtuQtDU4b3wvL8+2NlwYCxvGAUIZ8FCFXkjFpL+fd7kJx5s/VFJgCm6EWeDDONBcQc5C7KPJnzYwvu8TmzLLhIu7fawEJMmM9xDJrBqBOPVcfimTBqROX68PwBeQdGJrzCKNKuMQcFADG/AMnISuxT1hsQ0yQgWaQskk12Ow1kea5yBs/opXD0dWGRzW5/ryVMqMZZUDv31fdqDluRjuk7qu+B58PTchAWnwfAtvIejT6dNaHOvW7NWmCR+C85QiCqi7o/mpfD14K5QqkUQGgOG8nCuifFCElAEPqI2qKeZ5uGlOFsjlAEV3hI0SNZzqvth2gcSplRIKv6vyZ/nO5LmtvMFhuM+i7ut2wxCPllbmKxCOGyXQ2bAJMI4eqTMdtS1zggy5lC30J1hhWyJIbUeXopHx6fh9rQpgk619pjLIRA+/O2nmfmDc/T8Sl9L7ExMBvw+rlxFERs3rDAI+8PGISSUStbToC5lm0LFWReH/97ZEgLOvalenYx0jyWWYV0k47Bx+V7uVXTXDSxTqGPOyoPYi8hxlPZIeqPOqafXgWXuErrC6vpPJtQcZbmAx72COWA+OpTOgZUwVSR+ZjAildSnmvxnHspSiKJJJJIIokknh9RLBYjL0VLxdjYGFzX1cVKHNPT08sWLk1NTa1o+8MVyUvRMxDuSesgTjpdr8fLBVWqLxerpqrjUISwuLql2QUYWVig9XWuJpkcM7YgQ2qiirQHOacydrFL8XICruDIDWvhREaDuJos5fhokcHmYlv95lEm3up1UCORtp5UaEXgpuA5zCugrG6tQq06Q+NoUOZZsqpGAACOgz5lXj2pxiPjFrStSfiYylylXXFGCJEzRBVmJ6wDAJSHh/GThxVX41dWK75F0VeZntdpQS6qNrDxpBAuJIlCYt9OdR4WX0t7UUFCwCBGrmsQPzJzbZPBY9ox8hLaxmXjC7Ft8V4AQD9UYzmZVW0e9nMGMSQ7Fp2Zzy/qih+N+Nh8Fjvz5v3i1UY2irQcr6nT0HyMXqjm0jTxbuZbi5ordtxqhQTK8H5j06F5NpaNBP9NYndsqgkZmvFmpJCzbs/XyMW6gkJRXrmxi+G02nfSMaJ7AJAbGtImqcxJ49jf2I/dlKXPttT1ZI7RgUYFgafGN9AoUgfgDJeFJquWYandN8A8OT3XGPxyXwWJP7arpm+6CrELHFCWOXnikhxHCBj8vOG8sWghoxu9lkY/+N6VrUVgnsayqOa4toKZr5g5xZWJPHdrNSPCyaKvxHOq9yq62jPDJrblquZGMUIU+sS/kz00oK5ZU6jzNZrq2eQKD2NpQq7mHkAk7DEdiZrfAmS0C6AXqudBtTuHdqoEABgrEJ9ylhDn/bsNWhS/Xx1h+E/x5w7/Dpj7DdDzc4LaM04WHeoZFTO2te4fLarKc721gJFAXatsKsaxCVvo9NWxuCLNW9gHj0Ryj3TI/iH+P+dJjnGo4fs+zjrrLHz/+9/Hq1/9agBAGIb4/ve/j/e85z1L7vOSl7wE3//+9yNeqLfeeite8pKXPI1WP3kkL0VJJJFEEkkk8csUh3H57FBj69ateOtb34qzzz4bL3rRi3DdddehXq/j7W9/OwDgLW95C9asWaM5SZdddhl+9Vd/FZ/61Kfwyle+El/96lfxk5/8BJ///OefXrufJJKXomciNh4PEQypyg5AVyko/SDiJjDlXWf1URPZgeCMlaw5JGVKAoDkjIh4FmLVBEDGl2yAyehDev16TIwpKXqWym/1VMZX6y5o/gbrpnB2c6B5AHnixJToPEPpktb0SLMBIvEM0iGQ9hQKIiVX01m6PhQjaeKNzO+C/IXiVfSnY+vsrlAoDqAr+sRmZduwq/YYxqgSbX1BcZjylGHK6e3G+oCtTMQ+jbbJfUZ+AYAynmUEjkPbfAQ6s62SngujXWl/zFxQuhaNbgUzDXWecswodDh7EkBaL2JKISSsbzK6Ng/sY3sUMvhlG5JsYIx+Vx+vvsuPQVIGLR8l/hTzJsLQzLc0zRHmyHS6GpUIJZteRrWgBiJmcKvnpONEK92AaOXQYqwqiud6kIYkdMejW+SETBFoMj+LvqT5VhxeC5+qr0SsZqTeq2BHRW3P483o0Fgmj+Npfk52iSu1uM/iYrENjeqPSKchHQvpAaLIEWtrsQkp61Xlx1ANVdsLdD7ZbWmeHWbUOMg66YnlCtr8WGtGcTieQXzISBTlGTPmzE9jbalu16AfWheL9Ld6PV1FyIipLKp/F9y1AF13OUcVbZ6rjWrbHiOMahtHOHqeMGrHJrXDwbhBytiUlREWxzEcOeaydeoAV5a1VLsmM4S6BGu1OSwj7ZjdT+0sm+tCJruC5VxGhgyfjaPdGEB+NR8sUzTt4Yo+4oC5ftZoujVpjmgT2IqeP4zWbR5+AcYy6nnLukgZV/HVfCeAoLFMt6l6c+d2Y7R7FMbrX/96zMzM4CMf+Qj279+PF7zgBfjOd76jydQ7d+6MiCefc845+Pu//3t8+MMfxh/+4R/iuOOOwz//8z8fUY0iIHkpSiKJJJJIIolfrngWxBsB4D3vec+yy2V2kRXHb/7mb+I3f/M3V3yepxPJS9EzEKK0SmUdexSXQM5RptjrLYEIUSaP0Kz5xrgkIrVUJs4KrlWIgDLqUVImXj0FUSQeAlehHVC8FlmpAasUQpImTaKATAx7sq0zm5Aq1BbaatvZZhU+ZWN5MqUcSa9CjpRldZZFlSJwPc290QgW64wERXg9ypZYI+jhbeg/StomLcqGqTJPpD14x5DW0emK43LAV5li2JXYMqKqOUppqvZi1dn9+1RWCQCkco25suF1seltjrgBhTywfgMisYeyVMfR/ej0CcmAamc7bMHnvhJHJNcNMUnZP3Nc9tPYbBry4HHGSZk1Z93wgdFJVW0kHYUAif2UFafTwLhCIHYLNaf2HvgFThxRY5KfVNdfI2C1JTLkwOJZUPbrk3L08UXL9JgrfvZyVeGiqZSLoyf236TWLDGt26BVkYnjo/lQnd6AOa9IVweNTPOkv1XegzRXevH4URxXOg5jxyjuCVf8aN2r9CS8CqE0+7abPvBYdKJtQODrakfJfC3Wgup2IUhIlquhBCmC72o8qhGsVEa1JShOQrK6ORvH8qeFOhl9HjJBzQ6bPvI91enqCkjNQSLUSaRSkJouFasSrDUgGSmqU2Uaa01VKsakmpEzP6W1gdIFdU8x36zSndcq9KwcHhB3spga1aiL1gKzDXW5zYzM2f2QxKViRKbXMarwhDBq5fFe37SV+zhOz4fVW1B21HzjSrhMbRGYfiK6PSOm/Z6ZbyL2jO22jIYXiwfzs6PbNejUPHGq2jVdRSlSBeoPPfv70/Cpr3JGaXKF23YhbDwJOnuY4qnadMSPcTTGc1qnKIkkkkgiiSSSSOKZigQpSiKJJJJIIolfpgiN+OLTOsZRGMlL0TMU8qGH1JIDrOUgKLsIAFYpKf3QU0tokWPwH/bSmV6yoO9abcgFKr/nZYnx1dqgkxfrJBG0w32LEAtq+Ufw0tpmtf/Y2EbIilr2ELSkxlqinX4PLSI+Mvk65xUh91Lp7SyJyml42tfQuC695SWCfkcbK2py9aMHjOkr37y0fOaU0hAnK6PZxRFFxNxRVmTkyewYMh6RLUmeX+5WMgRyrqyXyPgaiJQhcbNYpnAJGg9DA+dz2KKKbHLaI9FCyXYnFaRZtI+2ka0qJgrqu8dpTFlAcKE9jXFegqHlqXVrTwdA4nVcIs5CcSVqX5DWNg3txsN07jYaXTXP8gGRR3X5vfUQ47/5008bK4p9O1Rb6BOdriF3t6xlAyL3yy6NJQuPNppmrvJ+S8xZJi8LXvqVctBU03W1/IIurSZDVeGmjEUIz10+1vQ+lGjJuMR2JWDbkwMW4Z6u59goRJHEQrmsncnLwtEkdBE3je31DGE8KKtPWibty56WCmj21PmCoAhkqLAgLiDYagPgpSQ2hqZlu2LDLN3Ythg8N6i8X7cFxm5EalI4Lb85jpGWYMI9n2duAYLbxUusvR6wQMu5tOTt09xqNzsI6WqPBWouTmTUPPfaDaAbtYDgZThUF8w4sIBkcUJLA/CSGj9/0GoOLGvq/mVhriORybk/YZDHznll7M3LVVuKL1DilkBkSVGdp22JpZbUJz+n7PBj9wNgjIBn6JhzZb1ELON0B2BgyU8M5SC81OB2RyCS5bPlI3kpSiKJJJJIIolfopB9eRh0ipKXoiSeYsj5JxA+dgAhm72yfUdfaqTIKTChktCUlLv8AcNwYEJqVCkUpvSWhR2HxyBY3I0NF8cVQuKEIWRFZT39x6j0lLOmyQP6GDhJZaKb1ynyrSs8lNsqm2NkBq2KNlaMkCABiDCMZt6AMaGsTkNuV4RXtvIIq51BhIjHat04xJotAIC5lkKYPMrEJrPrEQgqM959f2Qc7KyOKydkPxzIeGSXxn6uDBEQIZMzaZbyZ9RiiejLLubaKhNNZVVGLYSD+dY+OpQ6lkcif3bpu3xCkS5dQoWGJo4zRqNUFg2yQuj6PvY3FAo2Q4aYoZRoEvF7yQyXIy794PmAQ+NTIUSTUZ5O1yA9tjmtR9c2Lt7Y6hjyNIVI0zZB2hwj1hbBxwUMehL4wJQSuawWFEqxs6rQxKzI4liSk+DiBVkl5K9a11ILGhVJWVl4XDhw1YmY7qjrMzKppBzYcgNhzyAWnNUz2tVu63ESPPcdNWfWrzlVo6iONtvtGXSHfKHhEdG61jBzNI4shPOG1MtE9V4fcKLyBrotqYMgDvmsMoUFgGEiQFOhAx55WBsJ62NYbWGLkuGUIvgXhs9Cj0RL+b7TsgD9tkGB+JMRLavMn6U5FsIKBFQ/SjGT5YhIZowALTxfW7RouxyaP069jJF0VPQTMjS2SNkYwtSw0CifRVNpHriekRTQwq10fwdpI5lhkbC1FQ7Pa3vu099sICtKBYja888Q9miL5KUoiSSSSCKJJH6JIlk+Wz6Sl6JnInY8BhlKg/4QAiIByLbKhELiZaBK2UPKUaX3AODHMuuUlSnFbRvsDJOzlG5rgM8jpyij9FParsElzlNYptLi5j6E82o7t/eQ+o64GxvXHwsxpkq/u5QpotsDJlQ5vMiX1Xc9w5/SnBgKFrOUjz2OcLvKxPl8shsa01dCitxJKuXfcIzmSBWEys4KvhIxDBoNyKpCT8DSBzZPhY4pcil9HtS7kfMwkhfuXYRrW2QAUVsAyhqdPnFjRIoO42m7Ei6tr3YWMd9WKEaLOEh5X3EX0m4O6CiESCMFVIosJNCSaky6XkjHUsfcO7sPe+sLkWOW0haC5ZG0AJUKS1v+QY8Jc4t6g5YhVvm+IANizevpdLUdih4TvtYWryWCLAFKLDDOdeKwkS1GQPIFjRD9205lDPzwghqj08fz2LBeiXYKEiHUUgud7oDdidRmrsKgIHkF1yz0y3i4vA0AMJUl4cxAldEPpyfgsLUGba/RrQq0jIC2h2kZdISlGVigVEpTdq8RCC2PkDZjyWKCvG2tYRmoEmJUa1hWK3R/c1m44yxhTULbFHLA6Br6m3hUVQsJ82MIkedaCB6JxTbU88D1XLhs+RGTEUDYGzRoZT5Yfhx720reolZXyFqj18ExeYUKatkC7nM6bdCdmDCqyI8DzEWKm/ku7sExZE2iTW/Z+BmwkFKenxkgNxTtP3O5QgspivdVhmZONOgapLqQfkzewXpO6znIsgq5ESD9zNh8hH2J8Gkufz3d/Z+rkZTkJ5FEEkkkkUQSSSBBip6RkAsVuCOBRiAkIROyGxqTV0KKJK1py740YoXEpRFkX6HtBIAB3g1CAVDmFsn44nweRhTGPYhJmgZraR3+YcXvCfcs6Aqw8EGVXYkdZQCAt2sfcKJCelLrTwMANDwAwyrzzIwrXgZzL9CuGWE64mfIHVRxtnMG4Xwz0h/Z7RsrjzFCiDYqcUkxthGSujvONg9sI7H/fm1lslTwMXXW3Goj7ESdDWWLKphafcg6czwYYaKxDTLaAJbtPXxXjXfK8eHGbq1Qhmj11bXthep8XA0TuFmDuugqRPVbvVfRRr18nhpVl823algk/gJf/sBLaasUNKkCkOeBnzLIUNwQNgwNgsNjxX/0egBVcunKnDCMmuMCQIqub6ttUJqlbGtYcJHnIn/6WYuDQtek19G2Iz7tt2lI/fukkfUQCyQSGq+YWgra121xTf/p2Gk3q68HX59cSiGbTrOiLSY0WpE3YpGCrXboGkrm0e0PgSzx5sh+AsIBWKAyXmln82b4PDweXnsZwVZCSzIx/phtuNrn6kC6TkNFY1rL1XsL9FlrKFsgQFuAwE9Zpr9RyxC0OqZdeZo/PEdabXM9hsnih0QcDzR3YbalnillQlCLfha+Q8foV825ARo3QmxYxJLRmnTBoNBkyot5ElltliHnCDlmZC6dNc9DfT/Q/CyOQlDlqDbj5TFq1TT/SQvQumQT01ww48Djlg0Masjzk38rFs19wByzkbWAF7M0OkKRLJ8tH8lLURJJJJFEEkn8EoUMQyPV8DSOcTRG8lL0TISUQCYN4VgIERDJZgeqzfrmTZ55R8wx0vsDBiJgjR3LjFOkmUPhGUPOPiEfnJ1nS2pNHjDr48QbcDpdjeD051kjxVRweVPEe1lDiInraDSDq218R2VGjgy19Yd8RHE3+g+rCq2w1oloN3H/nZJqv7OJqlTWUqVRtqQ1gRzi3nA2J7fvGkQNtD1E1nzH4RgrUT2uhOSJUhoiE0MeiFMjiqsw11L9qfdUG/Io/f/tvXmUHMWZLX4za6+upfdF+4JQi0XCwA8jwwC2ALEa2cwwYJ4BHx4MPBYBzwZk81gMGMHYGOwxNjCMgDlg4/FD4wczFiOMxSIDFsKAYISQhHa11Oq1uvbKyvj9Ed8XkVXdjQRqLYi45+gUXZmVGREZmeR34373QzV8pDNKBpsQpjITyWCf3EaRaw2CcKsfMBSRpkrdyuOmxk8ZaZRNU1/KK6+jPpojfYWsKmeB/o8q2w7oiJ9LWpBGxkq26UKY7NMDipD7BjxeOprJqc5wUiU6goGK/So+gcHeT8wAFLNArkpTkS8gmZHffX38mfI7LgzauRrY/N/yvwt8PvbisQZlwHn1d9xWq1vqhyLhBL7U9GV5CMoGDPN8cIqDWS2+V7wsCs8N8v4RhaLMggNgFTVzps5dnSHmZXeCVVlIzL4AivmB6+p7nJk8vtaBgC6xwSwVZ0yFE7LMBgD0EKuqigYLPTeUX09csxmsEfJq0lgHx+VK/J5ryBZR9DubivPWh9sQ9FE5kCBlvVp+VTiVn0mCz1fMelizyoLXCIQ180Ow/MTg+ILqeQa3oPfnY4C28TODz8H7eZFKqVIjVqPUPmWJoYsGR6tixuBnmW1VsrQAUCeZLKt2tD4u9TFV7MFA0aPHM9gnMC9FBgYGBgYGXySMgE/Rbjti76cwL0UGBgYGBgZfIAgxApoiYV6KDHYHHmGqnSAaP+rXb+tKcE00cLGshdm8fBZmEzFLiYEtsDCXj+N6qlvry6uWzXipQvByW0AtZ7B4GY2crpuEv/hXuS1P5mgkCPc1RWC1kCkaLfXELRuim6qOd7xHbSehdjoL0S2XmcrbqcTIgCddtcxlHWzVV994mWZrTZTCR7YTcIULm5cDe6WgUqzzVL2uWiJiczREI3p5hauCe5Z1uPtWC1UOr4kOrr49TtLmfUGgc6BTtceLbCmlK3KTsWXQjqA+LEWmLVQGQZUy6Fipl3pYpEspxo67Qy1FJkNySSFM4tqIL65EwamibEt/oaCWf4Kcij7gKWnBZWV4qYeEr72+Ivy2PG6cy13wXMkXALX8w8thWmisHo6ciu/36e2cPs6ibKc8aA6qz0AYCNLvYnTNbD8sErDz71Sl8W2dEFzew2MfoD6r0q2VNUG57Elvp+WSDasRTMjlwtD4I+TpeIUlGGQNOcAmjmXP8iDdu1YdiX3JKNXKDqj2qWvgWSZV/0vxlpqoNsmkJSyrpWGQsF1EI9oigZeDhlj+sSKUYl5Tr8+9g+7TNC11sQC4Ng7U0360ZGbVjobg49MSOAaq7C4APYd5+c119bLpDrlULrrlPPVHw6glcXQdmyvW1CND9hOwhiivQ2VBeOkpQ3KC3vwGlXARpH6JPkq7zxcgaPlVCc3DIb2Ey4Jxbmcpr8wn9RLbEAjLtndkpJFoc3Q8Ypzg0uMp0VJ1HdUxLVsZU4qSbEMsPhbuJ5luGuwVmJciAwMDAwODLxBEWUDYu8kUmeUzg8+MQEBGzq6MCN0sp3x70noD2rQRABD2A6D9WNvs86Q1o+o7/vQa7XHkVswOjspJKCrcEqxsH52bIp16zWSIWimKtuJSRGmTLYB90FhYlHavmKbtqyDeXA4AcDb2VzRTlFxlRTAUmMq1w7L/djIEazwZQbL5Ggkr7bIzmCFSRTmDQwjNPanMHLFx1B0N60id2ZOWKQBkJMpi6LAtt6VKMorszm1C2FcZ1eUceaGypQISQSkiZaYoFqiFnZJRsujaKH/QRaUpcvlBbeDrFAnElNBaScLTUhxc6wvi8AZZdqUhQmVS3DJqaFoJZkFYROv36THhqJauecjyI0p9FD00pswGFJ1KRgCoGFNV8oLLFtRENQvCFD0zRr39uuAoi4OJMbAiSQiKwFkoC9uPPqJpduRl0VtmBZK1cWC7HAvFTHnKKGhzPGKdmHXJ5rUFArc9V5IsFgC0yPHO0HkdUUA8INmMELEuLPRH2dGlIthwkVOtIzWw4pzYwMagpUEmjOrvYkn9j0YlXvC4OY6HTaS+RiOe0ipDmP5xiQyawy61y3Zdzbqx6JtNJse2wWqdBgAYcOU4FJwdCLokiuYU9KxHCE6lUsBzi9PW/WHdhl5i2MggFsWSLk3iEPsUi6KmaQJ9V/n8QE1SM15k3NqTkfOht9CrWNQgs5Bsk5DJ6mvM93xX3+D5zHMxWqsYtQI9f0PETAlAG0CSpUmTReVO3CAEG1tymQ/X1c8inluhPrmPZet5QoyxtW0VrIG9Y95oUvKHh3kpMjAwMDAw+ALBdQXc3Xyp2d3f768wL0V7A6US4Lcq9ELye4++gE0Ls9pMjFkjO0lRvYeuVPoiBusnomGAU3A5GiqWKosaApoxyqUg/FxEsq1im+haB7Gjj84nI1ffYVJTY005HCJG2gNOtV/xAYofUORerorEPFARhsd4kiNjLozrG51Qkb1wKHriKCrbB2yvLNCJ2oT+m3UlHP2xfmggA8vylOkAJDOTJHaC9DXdttx/bc9qVWi2NpSgpsrxi/hjqPXJ42cpqs3nJYvkCoFoQG5rDMpjim2rILqIKSKNg04DLlemrAMQ2yRD1zi6HX0BGgcq+ssaBHRtRJTYkIPC+pqLzaQD6/doGwAZtTKTQnqRrCWj4WI5jygX9OSinV7DOT6GKguiyxooTU3Uk8LMaePM4DmecimhavsF0odle7VxHjNR+bQa3w7SeihrAtvS+pViFYvq0fApQ0RPCRQrRaaKrIeyba2rof1ypQ61f9ElBoIYtlBIMgTCsgEhr6u6t4L6PKqEQ5z0OSUPQ8JslcdCwuJ+MxvE8yKV0X3lIqQ1kcElOZgd8/n1fUxlLaw8lb4oZgHWYvE1jEvDRivehE4qjFsWZEpqR9S8h6/ajNNWhq2s9XGoLY4oIkxaNLFja2U7x07WRWg5lT2VgShKjY7qa40cPyvWpO0Q6Hds9+G4ZaRLktWMU7Fk0U/HzGQHFQT2skdWgzy+miOAmv8+uqcyPjk//U3jESDdXaYkj59go9ft70F00zkr7CdQCTaeLHu0X2maB30DAJvFGuwzmJciAwMDAwODLxBEGSOgKRqhxuxnMC9FewGiLws34FeZW8wQibKAVVWEFCXPTOPyHlQQVmWc2RZUCMKlQCKcfVKuLBsAyEjeq4EAtAahb0Bm4wCA72P5SboWsWU73C65n8oEm0Q6ongzrDxF25vIjHFd9+AsMnuwDoqz6RhWwAdfvYz6fIdTKY+6JBDkcgHEXGQo0u3oVJoBVB/fFToLiKNo0tZYPm2Ox1lxlm0PMnTkbK+wP4BkUOoYEkGpKWGNUNgKw6VTl4WM9MO+AXWMWKCW2kwRuceUTWXtJaicgmUD/dtU+2WbSUvS34HaRmlaiRJFpXRMlXkFwArQfzuOjIQBrSXy9E/1m6LhqJCRdThYD5DmSZndeU0w/Wxi6TFjVIVMKctvlCzOKrrWAsyGDSo86zEvzHuiZQAIhuESE2Pz73z+QSVTUkXJCoyqHwt09clzcvFfbrPrKl2T0nMQSyEKhUHMHIIBXTiW9GqtzVJbViznVTZhsSzHNOvKMY4m24Cw1CxlKdvzw953AQDN0WaMicoxAWUqClEG6PJb20m7RaaHolTS2XCfBC/LOVyGlOvqe77oMWbkbQSVkcXzs5RHM2m2+PeupQ1KBWmPFAOWzcAKy3skRRqkIjG7sUCdzoaLEZPZIpnmdf4+TKijYr4WleFIZTSzyHOXr4k3q47uz5Y60pbVNynTR7BskfVtdZpx9pY9YYNNNFGBWsq4hFNUZYj8pE/K0rN1W3qdyiBNBqUJo8hTFl+0Rpc04rY7Zf0MJt0V6zCdcAx+fhaz0WSkAxioMu3cQzCaouFhCsIaGBgYGBgYGMAwRXsFwhEQKA/pAKp9iojB8L59M6NSVcpDALAo+LHCVZqCbF6voXN2mGVDFIjFoLIYyg+mNg6LNTcdMpq1OJskGoZvtIyCrTYqBeIn3UW6C6JLRnhirYys3f6Car9VVbUEPkv1X2XahWS/fKNi8B1BBWQntOvfcFYbeyz1d+s+MiPA8GRYDWJIhvCusZSnSkTrrSgCZd+hiD+EZFD2u5YiQxVR+12USHMRJm1RfVhGm45bVNlKIs3FJAtaC9I6FQCw1ZVaj5JbRMs4ipopTgkVOfLNSw0VtDYE20i31ZdSfRN8PfNFndXEkSuzImGf1lT1ENtUXCHPW1Oro3Hlc+Vh0LhYLGXmWAFP8VjW0nCmUVozZjoD0qOfUu3iNkPtY22W7REe76LmNpkNlSYdB/spwT9E2RZvWRH6b8HnrtbrVO0vWMeSI41drxzvoCfTLlhL9wHdW525Tegjj6iN3d3UznzFJwCMSUjWyaLMQQAQnK3G7JA3M82pZFMBDGZ6vIWeGcw+1NRqDQ7f81liXLN5xQ5b8SEK0Ob6Ko5lRxKwaV4WynL+h3hMUhmIJGmWGuT87y/IPqaKPYoxrWmVbCdrs/KZHPJ0rCh5colEj2aAlXeTx0eIMzO5+CuxneGSH2Fqv+jfoPfnMeL/Zh1RXQKIE3PTIDVsKUH9CiUQqi4jQgxYU2QsEmV6Jm2TmW+Kxfb59Vz3ZECq+UkavkJIPj+3ZVargsP9kOM1efThqrjwnoZhioaHeSkyMDAwMDD4AsH4FA0P81K0N1B2Af+urVQOpcFRDFPAo9MJspM17a+iYUvrUajoo2UHdESTpShe+br4dWTDWWvsHBvoh+DvONrqpcKrtgWxRa69l7somybvqLYKjli5zfApxou9jvyTSad07DHI1bfR7jJKC5RdoOApBukdo5ZG3UfyqREF9mspA8TAgLU17E/j8w12DM7mtNaEztNALEBDfIbSBIl+yoohpowz1QCoAqyqECs008P6H/QNaFanVupfYvE6anIGYc78ojaIAcquy6dVP1S2Uh9F/vni4OK3fv9g9oSZIzusPWVqyLuHomJvdo86t9Otjm2RrqmXMvPy5QE0hmW2kT9F483FeXtTQ3rwAJDROmdfVTF6ViQM0bGj8ruxo5WP1uSAjOpVYeEdb6vrP2QRYJ6z3BZvgVie/+wkny0pR3OQZkl4Hbq5PeTFw95RWzObkS3J4wdJn5OwJAMUtP3IleV+JUEZTPl+j0ZuiOKq1ajSQ1V8l/dkKrFuhlk7f1g5gQvFFBEjXChoDyf25grWqN+LDF13ZrpyvYgya8L3dSddp3AQTrOcG+9uXwoASBUku9MYiSt9HjN/7PtVF25SWYXRMLFv4ZgeA76e3kLEinWh8WImTLiV9wvg0RMWtE6JswtjcVhxyWrlbXms3iw9y4SDRJDYUMpy40LONbk8xAB5KrHuTj1P7MrC09QfduHn7L4C+ZwFfWH0FiTDmOFxdoqAM7yXm8HegXkpMjAwMDAw+AJBCBfCHSIA/5THOBBhXooMDAwMDAy+QBBlAWGZ5bOhsN+8FM2fPx/z5s3D3Llz8cADDwAA/uEf/gEvvvgitm7dilgshq985Su499570d7ePuxxLrnkEjzxxBMV382ePRuLFi1Sf3/00Uf43ve+h6VLl6JYLGL69Om488478dWvflXts2zZMtx8881Yvnw5LMvCMcccg/vuuw8zZsz4bB0si6HpcYaix92qvzXU0prPs43pfy4aG7AhNsn0bhbtCb9PpWKrZQO2n/d5lgZaSEwsBreBC1pavOwUDetjsHg5oAWGolQVRfgsWGQx4B8nBYb2ibMAAH/Jrwa6ZZsnJCYAAJqDbVoczgLJyUcDADpL21WKfOgjaVSITSRodsqaJlfCWhLceq39S7baR6Ul837pFbqPLIJlOr+Olp/8IYRIPKlKJpA5HpwiBNsHcNp8OqtT1zs3AwDiZUmpx/1hiN6Vcr9e2p+XDWxbpbAPWgaqDen+KBsGvy7zQlAp+t79uNhntI7O49fLJQzvHOT0bPrMOWm1hBTn5c207LPVUKuXalQCgEcwm606Dy8rZnN6vD3lTkSe5gHZFogNW/Vv6VqrucvXPpvXY5+tsgewbd03+rDCbqXJpXf/oscIkpaRuO+ucFUh0DSlvrv0P5toIKQMBiuKBqe14BmAnheRsBaFM7xFVlmoTwWOrVEHK/sA5LiP/IzpguCltEKl8N4KBPRSeXVKv+3XwuxUSv+OrwsnhNCctA8/Gn/d8SYAYB0lQoyOyXtkTGwURkXk0ppIdVS2Id4Gh9uXpusUSajlJkElkeBdWmIhP99vasksp68xg8aqwrCU50q8BdmI/O+OtFwW356VS6YuBPJkKdBAiRM1lnxeie4N2gCUzB4tsgVAKa+eV1ZU9iEbDqInT0aYaTk2sUCd+mSmZVxMJhKIrasgTEr+Psd+kZK/bNkyPPzww5g+fXrF90cddRQWLFiAlStX4oUXXoAQAqeeeirK7KszDE477TR0dHSof7/+9a8rtp911llwHAcvvfQSli9fjhkzZuCss87Ctm3yoZtOp3Haaadh3LhxePPNN/Haa68hHo9j9uzZKJXMmq+BgYGBgcGBiH3OFKXTaVx44YV49NFHcdddd1Vsu/zyy9V/T5gwAXfddRdmzJiB9evXY/LkycMeMxQKobW1dchtXV1dWL16NR577DH1EjZ//nw89NBDeP/999Ha2ooPP/wQPT09+OEPf4ixY2UkcNttt2H69OnYsGEDDjrooM/U12q60fJZ2tDRU/JiVzCkIBuQkRGLkL3MiDclGlBRsYhGdFquMnv0WPlzxJ+pjGAsL8PCom+fBYuiPxXpsYljNAD/GIpwjzseAPBi6j0AwKL1XZhzkBQuB22K8ApplYqOuGQB1udkVPde18c4KCmjuGkJKtHRRNFwOAQ0SwNIFWWWNOuihKLMnqSzHgEmp+BS/yMJIMzp40X9HQDEmyHoElhU0BH9JD7t6tWiaK8YlqCMBnuJWfH5ZFFYYLDVgIeRU59B/gyoa6AMOB1n8HXkv4slZRSICEXnsSZ1bBbmD2KM8gUlvo3VS3F1f3EHegsyUk/EqWAmjZGVaFNRvCoWy8dKZ1VhZFX8lLf5fao0i9VADFYkodL/uayMNYkeW4lmWJTOPWDLcztk4ldXDgJ4R/6Oxdhepogz3vk7b2Hg6vF2ylqs2y3FsQ2Uyu3UjFHGhgw2/GyNTlSaYOS4+GnRw9ZSz8Mexi9XNfbMIoVCen7S/N7uy6CFBPBiB5kIUvkS9KcGi5YVwxjXFgsMLjvhOoPNO12h2UY2RaSyJQPRMDbukOMboW0H104AAIxykxDr3pK/43lH/RFOHj6eG8w0RmsBSj4oUFMzJTm2thVHna9W7t9BrGpfn/x7IDOYAee+JmuBxsrix06sHlsGJBu8gZIEHDIlba2pRR0Jv7nwsOj2pPmHeW5QkV16HtiWDYuF32RwmS5sURYEnECiygT5YojTb1UB5mxm8PXfQzC1z4bHPmeKrrrqKpx55pk4+eSTP3G/TCaDBQsWYOLEiepFZTgsWbIEzc3NmDp1Kq688kp0k38IADQ0NGDq1Kl48sknkclk4DgOHn74YTQ3N+Ooo44CAEydOhUNDQ147LHHUCwWkcvl8Nhjj2HatGmYMGHCsOctFApIpVIV/wwMDAwMDPYniLIYkX8HIvYpU/Sb3/wGb7/9NpYtWzbsPg899BBuvPFGZDIZTJ06FYsXL0YwOIy1PeTS2Te/+U1MnDgRa9euxfe//32cfvrpeP311+HzSfO6F198EXPmzEE8Hodt22hubsaiRYtQVyejlHg8jiVLlmDOnDm48847AQBTpkzBCy+8AL9/+CG75557cMcddwze4LMli0LvoFzo1QuVwk6wfJY2GqTir1aUPpM1SlegWA5vGYVClQ7Gwz6IUuXSo+UvaSO3dGU0KArFQQyRijaDAa0P4Ii3LHTZETZo5KK2UT+sKTK6Xu2TkeU/vy/X24M+G7Wk1eB0WNG1TqUXFyh6fH+T1A/15vOIN5G2Z4dOG5cHSAAUxSvbfa+eg1PefRv02HCkzhoh0i5YsSYUIlHqGpXYoGP1Z9cqY8eoQ2wQ6RpE/wBEF5duYB2HDauqhIfSZ9g2RIoMA8NVxomedPAhi7L6qlghV2hmKF/WfaTzqtIXrEHx2h24lXOw4pi0H5e7cNwieoqS6aqrlaxdglknn1+nSw+hjdPRPPWH51R9EtZoyRhycVHEGpGltHaQDiRI1zfrpJAvy+u/ObWRvpNzf1rdNNQ3yfZY1Vos19V6I8WmhbRuhseP54VH66QsA+qlcWm0sQ0u6QCZWYg7lIa+bTUEl9hg7Y7w6pPok1kOrynpEOVR1POAmDMXGT1nY6SpYiPSok5FV2VVAlXzCFDlfgR26O9Yi8jPhVBQlt0BJMsEwGqQDFVndgOCdJ82E/MxpkYaVYqP/qzHma85lUJBPq2YUsWAlfKKpXR9cry40KuAizgZh/pszZQCgGVZmolU5XFI31MTVcwN2w7kymllRtkclW1OBGW/2qKTEeLixSq9X/5O1DYptkkZW/L1LWZlCRcAFj0j2NQV0M+NoivHu1AOwu9WFecOh4DSgfmi8XnCPmOKNm3ahLlz5+Kpp55COBwedr8LL7wQf/3rX/Hyyy/j4IMPxnnnnYd8fniK8fzzz8fXv/51HH744ZgzZw6ef/55LFu2DEuWLAEACCFw1VVXobm5Ga+++ir+8pe/YM6cOTj77LPR0SH/J53L5XDppZfiuOOOwxtvvIGlS5fisMMOw5lnnolcLjfsuefNm4f+/n71b9OmTZ9tcAwMDAwMDPYQWGi9u/8OROwzpmj58uXo7OzEkUceqb4rl8t45ZVX8E//9E8oFArw+XxIJpNIJpOYMmUKjj32WNTV1WHhwoW44IILduk8kyZNQmNjI9asWYNZs2bhpZdewvPPP4/e3l4kSI/y0EMPYfHixXjiiSdw88034+mnn8b69evx+uuvw6ao5Omnn0ZdXR1+//vf4/zzzx/yXKFQCKFQaND3lt+CFfYP0gEJV8AizU01FWknQypbC4218jhjKYpunoIMB1xklc8Mi79vOywqPokeyoDqH9CRWqCKWSiWtG6I28vsQzqrCtYqA0TWH4WDKhJ1syVPfyiaVVEtnTcehDXxcADAotX/BQBY0Skj0m8f2oDakGy/TZG+cIoqs+PPHdIUbvEGuRw5Lu5DfYjME/vW04Dxen4eVsHDfsiGUcc8MQCb0UUzgIqgaXs/jVswij5bRpzbc/KF2SYFTMQfxqjoZDo8RdnekhGcFcjMnM/S2plqzYrrwqqtzBirYIWqHz7eoqde3RgAq6lea6pY68TJAdn8IBZEZcyVHd0eqzISRzgCRGpl10iz4woBv11Zy0UwY5bpBlIU4bNGwquj4Taoa8aGmHHFEKVCcltP+gOkizJiZ0aCGZlYoBYJfy0dVu7Phni2ZQNh0n+xYSWf1ykDrDPyghkLNjSkkijCtjTLxMysJ2uL52KQNGWCi/umMvo6NlK2X7JNZ9NRmQrF1qVzlfelZ4yE36cK6LJeq611mjIXtULEHLP+yi0BQeojm39yBqnrVuqYKs5naYaIS8IkYkrrI8jYdGNalrnoyPagPiz7NpEyR0U3lf/p1bomK1RlKCpcfT3q6LkWjqu5FxVyvMfGplJbbFicfVitlRvK2DLlYReJ3eHfxUNtCMQkm8Uan0CBnoE9WyCIpbLikml0KOPMH29WrGW0TNeFS+8U0p6yII46ts+S/S5TpVpmnEtuUZapATS7FwgDgb3zomFS8ofHPnspmjVrFlasWFHx3Xe+8x20t7fjpptugs/nG/QbIQSEECgUBotXh8PmzZvR3d2NtjZ542Wz8gFhV9H6tm3DpZsmm83Ctm39UKDtlmWpfQwMDAwMDAwOLOyzl6J4PI7DDjus4ruamho0NDTgsMMOw8cff4xnnnkGp556KpqamrB582bMnz8fkUgEZ5xxhvpNe3s77rnnHnzjG99AOp3GHXfcgXPPPRetra1Yu3YtbrzxRhx00EGYPXs2AGDmzJmoq6vDxRdfjFtvvRWRSASPPvoo1q1bhzPPPBMAcMopp+B73/serrrqKlxzzTVwXRfz58+H3++v8DLaZQRsWCGfjvjL+pM1JFaJNTj0Oaper+M3St8Lq1lGN53ODmxLSbv5Iq1txygaOrjuSNh+YgEoArFcodfcq8uCOGWIXlp/p++EKoHhWabkCJnZg2JJZVGJAdJilN1KvQKgNUbJGvT5ZFvX9snPibXymMe2NSDip0iXs7wADPjlC+hb22U0/C4xS3XhuCoKqvRTrC/I5rV/CYOzqYJRWAmpf2FGQlieopo0lqJXMiyW349YUnpibRiQmpUiRYH14UaIfrL8r2ZW/D7NCtKnnQhpL51GyqziDCCnqHQPCj2yD6K7T2c+OZV6MFnKgppAehu0jEOWil3WsC6HdA/CcbSHEZUdYJ2FKAzocSDdhypREK1VnjJ5ipTrwy2KnYkTS4kyZdVVZ6952+4Kj16mKsCwLTWWOUfOyb6CTlZooPPU2ZS109sBQWxLA0XpjXHJLMAfBAJ9cj8uaVLwjGO1F1EwoHV6dqXWyQoHdfkMus846y1uRSH6yIOHi72yNika1gxLi7x31w18gPoaGaDVEhOhyqPYfu03VHWtLW+QuE2yYQJQc1b55XD77JhiRqwQlcKhQsKib0Dfz8wAR/T9rbRHpB9CokH1tzMnJQFb0nJ+Om4Zo2NynrSE6J7aIjPOLMsCVMFZOqb3mreOAwB0R7kQ8wCaw5TxRfeWxbqeUh6iSMEws47sK1Yq6WdrNXvklLU2iPWEmR6EApWSDVHWzx1EiAUkxqhAcz7tFtGdl+1S+jGeF5attV7EIhaLKXWPRPxy/LhkiF3IQvTTvGHGsOwAO7GbGTGIEVj+EgcmU7TPs8+GQzgcxquvvoozzjgDBx10EP7+7/8e8Xgcf/7zn9Hc3Kz2W7VqFfppucPn8+G9997D17/+dRx88MG49NJLcdRRR+HVV19Vy1qNjY1YtGgR0uk0vva1r+Hoo4/Ga6+9ht///vfKmLG9vR3PPfcc3nvvPcycORN/8zd/g61bt2LRokWKcTIwMDAwMPg8wmiKhsc+9ynygsXQADBq1Cj853/+505/Izxvq5FIBC+88MJOf3P00UfvdL9TTjkFp5xyyk6PtauwfJ4MCUbeBSAjG5v0Q1Y9+bSMbtFMAmcpkXttc6INyVoZZbIPRn9Brm33FjoRq6kFAITYByPeCIsLk3bJbB3llZPOQmQL1EYuHEqRW7qoNUHVWUSpDNwuGeGIvI5u+EZRv2Pmqy6J/qJsYywoI/FvTpGR6OTkWOXjARbRB8Iq84RlUIc0yijrkPqg8n9xid1Ska7fN1hD5OOsvTZsyEk/F17bH1U3GWHSvSjmh5EvoIYyRJqjkqVgfUtTZCzQ/YFqKwCt07BtPQ6UOYjmBmCqZEb7I3K/noKMFBPBVvTkpV7Cpfl80JRjqOlvQ6TWq/YAqHTsrsrEgXB1YdoSZ1ORRqImqhk1Yogcyr7xR2sB1qIRw1iISq3IjtymQX4rQTuMMo0zR8+NzFbE8srXSLGPzHahrF3YSW9leYp/ipy85uwDFPRFEAvUynMPUHHeXirOGwgPdmT2sIKC/K1QIvalm5iSjCdZgrV2DbVArTwPZ2Tx/WclR+vzsOaNtVg71momj68BX5+aeoB8hNb1vwsAWN23FaNikvG04wcDABKcOZbvVwVnRbiqwG04pLNCab5afX16O89BT9afFZb3l2DGp0Pu6/blYJWozQPU13hEnYc9iBRj5hSVh1Ut+YPVhiRTFPKFMJr0Ocpdm69nIgYwMymqtFL+IAr0DPuo8y9y92BEOdWHbXI59+rvmCFKU8Ycyyg8GaRWKKj35z6wR5LK1M0DIHaGQf5JiCT0b4nBCZGmSHpz0bEg+xpLSp2knRyt9EaFopxnrnAR8cuxjFIWqtghtVgiO6DnTdgzh/eST5HB8NivXooMDAwMDAwM9ixEWUAMDtM/9TEORJiXIgMDAwMDgy8QXFeoGn27c4wDEealaC/ACvgknU2sbIWBIpc64GUzSrtHvE6n6rLJWZEElvZGBIlyDdZL6j1OImxVBBJAyZJUfy4aAaJSBJmg/bBVLv2IdZthFYYx7YPHfJCN4Jiuzxcg8iRMHurmYIE12wqMGYPtWUkrN0bkQJw4Wi4fJINNiPppqa8oaWkrWAPHlUsp0+rkthmNsm+HNbRr632G1xCPxdpc9JQEx2szK/HnDrn0EiIrhKOaXUyukQUZ0cNFdT1icrLgn9BMAt4YlTHpWgvwEiTT8iywTaXV2Ni05GfVJZQJ5WubXgIArOqRSxJT6qLYQksCHHxx2YFDa1sBvywgq5bnOHV8qFTkjWvh65LLWeq6sGDecfTSFS0V+rnApWVDlNnkjwqclvoAAJ25TvTkMxXtckQZfouWfilLc1q9XCqKBxpQm5TzWPCyba/H3Z3nF98HvMSWycLaJvvqI/FxbSAMuCQ65+vKYuJogy5PQULrUoiLs3aqYqxRTmvnZbO+lG4DF0ZtaoUVlgJ1gSqhvutA8JIal57J0DIKL80A+vqo9tUhVZT9zzlkSigE+gpyLPtDcjk5YVMbvFYSvMwZiei/80MIjVuk/UKWbnsfPWRCdthTwoSWz2gZzS6W4GbpGPz88dEc8SZlKNPHlLIFCflku8bS0l/EF4MvRePF19q7pMvPI047j9JSbqwJO0i0zfPHhVAyAF9Mzp8A3cNiYDuQJkNUXjbziNHVPcvmkNVGqQDQRokHwah+tg70Vu4P6CVSRy4B+2lMLctWbe0mu4ugTz5Pck5aJX+wPUrUn0QUlBDSR2VYujp126vMdUW5DJHZ9czq3YHrAu6uVZT6xGMciNhvhdYGBgYGBgYGBnsThinaG6hOQSb2hct/AJ4CmM2j5KftryzBAG27j0JBR3EkDhV9JBJOd6nIwx+TkW+iZSo2Z2Wk0iOkuHfCOFnnDdl8JZMAeAzXfIMjrj6K+Isl3Y8yiQhdASIPdHmPOoqaW6ZizWrJTjExVRtqUX3zczo8pyf7g4iHpOjysAZ5rDravyabhaDCnCoFV5kSxmBFKQ06KYsCb07LaG5V7xZ0ZuUYTqmTUX19uE0bsHGpFa9xYh+Je4vv0nfU51RGFqIEYHFqMDFH7kBJC6xVKrKORNOUWtxTkMfqzeeRJXt/FqFzRArh7RtF2Zw67mjRstdqQdkUVKUue9tjseCeWY1QXJf5UIVT6eeuq6wf8sQm5Z0SooEgdU22YUdOMoFBOwyQqaJiTUhwK5DV5Sqq7wu/X/eHjAbhzwEJeT2tMZLRS5XlHEkVu9Eal+yUn37GwW88UA8/pWKLbro3qAyLtxQKj6UVimvzPaZ0WZjd01NpKQB4irkGNdvEYmcWZVs2QCVAIn4qjyLK6CNGKOdQH5kBy+c8hX096eYArKJPt2GI8j3MijlCF3ZV85rZCS7f4UmMqC5ALQZyWvgeppIZ4ZAqzyFcEhiXSBxu9euU8mpTRcfRovWEvJfLJKDvyK5FsSyfOzFPejyb0fLYBASNZbZPs3LV54HPUwSZmFAWo/t8wCj5HCg3S+PJXDmNuCvbI1iYz+0s5TX7yCVQiB1sa56CIAnSt2TWAwB6C72q7S1BOSaNAfmcEv0dEJS8oMrDFLWAXpmDFjwJLnuJfjFM0fAwL0UGBgYGBgZfIJiXouFhXor2FmwLHHpz9AcAVoguQawqSs2ntJEb78uRhd/vKbdBpQxSXNojBcG/6+6Tn6U8xoz9EgBgfVqyNZsyMjV07JipEKxZYmt8TwRabcYo+tkAraR0MyB9juXDoFImbIDnwEWe9Avc5bqQ9ptSRmZs0FbKozYpNQCc1hqi6SoK2xVLo8AMSP149EG2cUe/LCC7Iyv757dtfKlZrve3102Sbci7uiwDayE48o/U6PHlbSrlOwyLWSBOrSVNkRX26aK/xNaI/gGEyU19ZtshAIBRsa0AgOZIEj4qmcHp521hGVGLze8ONtjjueJtF0fbThEWzy+KrNX1LZYgdvTJ/26Q/eLrJZIJfQwyoUtGZeQ7JpZBLCCZpR7Sw6QKOYT9sv+popxvrDsaF/drfQmDS9UE/bqsjNI8cXHaEqBSqnXpFTaRfLvnTQDAnzsk81NyBWaPk5H6IXXSwsBPBoqiMAAxQP+tir/S+cJBrf9hu4tcPywursrXPEpzLJ3Vug9ixdT91zxKm1wy6JhOKIrejGQpOZU775QUC8g6OsUI27YyaWQDVaWViUU180fFTkUmC2vdGgCAj9gMH5mACqcIbJf3lOggtmJAP09sKi6tbSSIvcsXtVUCiqpdihUtVrLJCHrKhbB+iHVqth+gEiBOQqbff9Aji393ZvtRGyJbCNKptUTrdFkP0gzyNURPaojCtjT3FWMkxwSAZr/jNbCoUHGOUuYDdhDI0bNOVLFOwtWsuGJ1dB+5LEi2JPfhUjdjY2PR4pPnEaTXRFe3LnPD4GcGPHOJdWOJGlgRk5K/r2FeigwMDAwMDL5AGKqk4mc5xoEI81K0F+DmHIiQzvBSmUnxINBKa/NUnJYt/9HVraOeqtlnhYIAZZ1ZXNJDRW5+WC59x4zBjh6IwEoAwGgqN7CFItjugIP6iVKXITZQRhfphixXaKaImRg2u4uXAR9pNkqsVXAgiA1TfBHrmwpZjKqRUWPJHaBPGYmGhK0ziyhTxqobi+6CZHAcV0ZlcTJ2i/iCOpqr0hdkbAcfkqkiMxisWZiQaEJrVPY1kaMMk42rVFZSNRNjNU3G1qJkJdjssTVBGpbeDq1DYPDvkIWgIrnwUfZeTz/cv74OABhLYzmOz1fs1boC0j+5zhuyfZmCTklrpLFhbUltHIhL5kuV68j3QxnTKW0UjVG+ALdfnsfnI7aBI+pwtzaRI/2Pj3RuoxonIkKlMlwhi31G/UEVJecd2VfWHRXLeSAo9WyKRaGSCSLSDewgZo61T6rkjDNYL+P3A61yTqWJpeMyMWG/hS4qrpp35b0SZl1ULqU0NKr/fH18vgp2gfcXrAVSBVo9ZUGYreNjkcGhaJyILRmp1+NSNbFQLQBgoLgd/cX+irFprUkqhqQlSmxgF913+cLgzCq+hoGANpOM07UbyOhnxMcbqa/r6VhFdY8oDREbqkYCHqPJSoNYFEu6CHTUcz8wU0bDZbnElNm2ZrdZP0bMTCkURm9BZqZt7pYM0cYByTgGbb/KwmuMyHFrjo5XDBG6iTn2lO9QZY+Y3fIy29VlW5gBLZWAbR9TN6jNThGCxzdYxTrlcnru8diQCS6CUQRIP5ml59VYMghtjo6H6JDPWPToYsiqPEuVtlCUStposlmOlxVvgRWpKma9h2CWz4aHyT4zMDAwMDAwMIBhivYeSu4gPx8rEdaZRCqribKv+gc0G+Ln9X+KLGJRlSmjMkxUNkxIR5lcvqKYhrWtgw4lj9FcJ6PULZnVQJ30BKmniE98+KH8vbdwJkVNVp3W2NiQmhi3h7I0SrbWqLCtfZY9aLpRS1qD7dk0NZmNm6AzcDyZKPVhmTXCRSFFH/W1d7uH/aDfkX6mpj6LI5r+P9l9ymDhshdRKwzRLZkOsUVm0YgdPVpXwiVDOKpziorN6shIXQbrmxqKWR2JMyPniVKVP5OXkeDIlq6PW/Bku9HccLm4Lo9fWSj9hwrsvMfkbD1mN5wikPEwHJ79RVnAN4EYRtLEqDI5jofJJAbHouOI2AAiScn4xIPy+gfsIII+ea3Yx4Wz0IpuHh+X19F/yzFKUEHMUdEGCGyr7Ie3yLCfzs0smutCbJO6meMPksWYmyNvUxsCGEMalCAxEIK1dQNp1X8unVGRxectH8GfyoOoKlpvrNXz0lNGhPtaoIypWED2MWTJe8wONsElzUqYxjvki2Kg1F1xeCtE5TjszopCzYDnWpQdWOz9NJYYn02btb6MdVqsNxrIqbnEmZA2M0C2rce8KuMUrlAMkdVGBWsTMc2aMbPImWCpjB5X+h2zvoHa0Qj7ZL+ZVeRnQCIYUexZW43MuI2X/SrTS12XOD0fg1GdHcnXwKt99LYf0MV8IxFZVBkAtpCfUjQCq6leHxfQzx8nqzSFVoNkhbkUjm0BLmUTTkrKNo+pIf+ynk1Aihiifk+WXLxq7pEmy4rXeIps07O8lINw9o6myFuXeXeOcSDCvBQZGBgYGBh8gSBcNovYvWMciDAvRXsBlmUp5gQArBpP4UiO1Ng3hqOMbH6wbxBnvCQSOlraLNkab8RbUSgRkFEKRyrEukT65aUflZiMreRhFGuSPjBB8h0RHTs0W8WRJRfNDIQBzurxQLl1VzEfdv8OtDXLbDPWFQRK7Kpb1DoOutNEarvyPxE9lIHCrtqlUmXfAKBRMhnZmhi6ySmXkXPkmBb8cdSR3kE46+Vnb1pnirFWgaPurnUY3yojwfqwjNLj5D4sOlcPDrU4wpwyHkjIvirNl+NxquUCtdxny1aaIJv382zjDB6LTKC4OCeKWa1rSrMzr1vhkCsPSsxCjYeZHDtOfscZQzlPtiOHgJ7Cs2WK0llbBVc6/AJAXbipYhgctwiX/HJiAakDYS2X6Fo3mKXhcfS6/HoLexIrYe2Q87Q9dpDcVspD7CANCnvl8Hy1bU8BUFd/B8jr7HU6BoCiO9gHSGlqGnVmFWv+yMsmnE5hcmJGxXc8h9NOn2Irm0Ojqf9r0RghT7ICeWDlKDswHNQMBs/BsqdN7KzcJP12xEC/ZpGVtxAX/w3BynC2VlXR4PokrPFUvJcz7vh5ku7X+sEWOfdTdlExpP5tVIx3y1Zqe07PF2LYLG57KY843QeH1cvsQC6CbMGHrCP73eZrUWOj5iBfizDNN8vj4ZPl+V9VNBeAxdmexLCJQkGzW9yvQGDwvUu6ISvZhjxpHzcOSI2Q0yfbkgjWKXZ0fPxQ+TvWQPVt14yUd/6ww7Zi++kZk2xQDCFfV5Hv13PIYJ/BvBQZGBgYGBh8geCOAFN0oAqtzUuRgYGBgYHBFwjmpWh4mJeivQBRkIJlVfqB6Wy/x8iO05O9qeZqmcEjkOTPflpuUyJfLs0R1AZwKt1UC3mRTld8Ri0bLTGP6BpA62hJm0dq6oENMp1VLeXxMoLPX1mQFADKrl4mVKmn9HdPP1onTAcAHFzXRwPDZUKqCtIyhGdZBZ6lBC/YaJFM6zoya7EjJ48fpLayyLPGn0ZdjGhvNscL+T1LDmw6R+Pd1wdRfA8AEKupKhbqSQNWomBebkk0qyK0Bci+pUt96M7L9H62Chgdk/u0oU4JPXm5DRF5vkzAxrbsOuqPPH5TvVz6CAu/Nr3MU0q2A4/RZKVoF46jyx+wUDgpl75CxSa5tAXo5QlXX58anxznpggtuwAIk4A9wA9HVYg3DJfaYPMxMn1y/CxbpfxbLFRXZSHK2uwyp5c81PjSEo/opeXRfE6mqgO6tEZ0iEcaz1nexxcEIlwOg9onXCBLS9cqaSGij8FzlI9Bf4pMN1CiJR9e3qIyM67lwnErl9SQT+vSEmrZsMqaAB4BPH+XykAk5RIpXztr/HQ9Fukqcb3rqueNFeHlMBLZTzsK66ncT56KnrbGJwAAapunqDm7uk+WtunMpZSweEKCxN45MnPM5vT9yYkdvIzmumrcLOpjg59L1bRCgNrK4+EUBy9h8vKwN/VficQ9tgU852urbCuKJQhlI0LyAz4etGVEKVYLAOgtbEdX/3oA2qh0VI0ct4Ad1MugPTTuPWSQuaNn8DJdJOwxx6wymvSHtcib+1/KA6W9WBB2BI5xIMKk5BsYGBgYGBgYwDBFewVWyAcEfR7zNIo2/T4dQXjEggAqUqR5H2ZKrJ4eXVKCLOKVuNoLr7BQpYRyBMaC1E1I+KVwtYcisY/7pfnhlLoZCHKKLBfoZAhXH58ZsIGiZqR8XOyQIv/tXQh2SiaivZmEqWlKJxflQakMlj8EwZEUnydPfQgEFNug0oeJYakNtSAa0GnjXoR8NTrtmkXRbU2agaouLusKjyCXxLBes0iV4l1ZMgKdmyH6JKMUrJUi0nLUxp82S6Hw253yGvz9wTIKbg1NArZS5MnXh8qRpJrq8R/rZUkWJjCOHyUFuu11MxBm00YWwAOadSILAOGSODib0+UcfHJM0yU5HsFIq2ZUOOJV4t2sGre4xzJBZKRFgjLepGtoheLKbkFQeYuKaJjmkmJHGd77QbFbZQgaV6uvj9pD4x0IeEqTsCic2JFARIlnHWatqE12pk+fxyM0Fj5i3ahgqzIj9If0ftz3LAnb013AAM0NNgck9qFQzqDkMpPrEQxTG1VIyuxTGEpgr4oM8zVwXS3ybpSi9S5nBxrryQCSx5cZtnwBFjeZ2VRiirr9Rby9ZQ2NiZwPNQHJsET8MfSR4WJfka0GwrokScBTAgeQ14zbyNeTyrYI1x1k4qoYZKeIRkp5h9PjGQcae2ZdGyQzg/qxqoBsSNDcYpaslPewytwGZuOEZhp53hRLmpHMy2sXoLmSDDYhYMv9mqOyzRFfHAo8x+n+Uean2bxmn5mRamwAaupRAZ4H5aJuP883VwD5vZSSb5iiYWFeigwMDAwMDL5AMC9Fw8O8FO0FWNEALJ+ti78yuxGv0SyIJzJWn9WzjqPboqNZI45OVMmI0qAIXMBTqJUjNS5GmM4pA8hgUh4jXZIp8P3FHWim9F+MktsyQkYyEX8MVu8O1T/AwxjBU3akKPvgdmfhIwPJcJxScDNSz2DVNEitifyhp7+sBfFVthkYtFbPx6oXtbBUZMcaLtl21x8EIhSpxSktOl+AVZ3ezwgHgVi8si1kaYBEzFNGgw0Q6dql0tp0z2XzvoPRmZX//domGZ1+pY0ZQ0cXLa0ykCw3JFRZCz7dYQ2eYrgceUZq5e88xUlFiCLR3pRuJ4+XkG0N2JJpLJbzCDIzx+OgdBBBVeSzRMV/fZYfVlWVE3XewoCO2MnQzss+ieryHjzPXbdC/6Ta4NUcAUBC9tFqmKh1Jmx6x1G3tz30+LdZPuTkYNEc7HP6AAA1wQQCpJdRY0qlSRAIq5IIttL/0HkyWVSUJPFsi4aSyrxR9G2hY/pVGQzFzHnbSmVLFENJhVhFqaRS3bnYbjAS0Wwqs1qqoKzn2Hyv0FhF/DE0kyEhl8Bhy4RAJoWWqGRnQvWS8SgLRxdv5gKtXh3gcP93dMUghkjtW9MHAdKwMcuVz+lrTWahrHlb1/sW8mV5rLao1De1MNPkTWOndvHzAJ2bPSU26NxBXTJFpcOTNi9o2QhxqnyEWB669/NuFiVLHkPx+l4DST5PUOvc2GoDVSVkRHoH0N8nv+O5HvVo2L7g6OnpwTXXXIPnnnsOtm3j3HPPxYMPPohYLDbsbx555BE8/fTTePvttzEwMIDe3l7Uehn0XYTRFBkYGBgYGHyBIIQYkX97ChdeeCE++OADLF68GM8//zxeeeUVXH755Z/4m2w2i9NOOw3f//73d+vchinaG4jXwPJBM0Rs0NY2wVOIkKJ5jkDzBR0ZV8O7Vq+iEh3dW9X6JGBwBpc3uqNos0yGe6y96C92IWdLZmQLaWS4KOfUuvEYl5BsixUmtipgQ5S4IGxl9CjyjseYkqI428Pk+Cv1P/J4pJfiQphWv+qDKswJ6ndvj/oUHBlzNBgmm/66sbrop1evVB3pFjnTyK/3Y4SYTQlqVqJYpefyshtUYqLo5hD1y6s2tUEeoyVKUY9Hn1XNVjVFxuK4USsAANGAbPvEhIzkw8KvtS0MXwCCImr0UlRPBX5lQ2hbvyy1kQhTmQKfX48Nl47w+vjTtSq58voHSnldkkFlD3mygfi/06QvYVO+bH7wvPZquJT5HmUt+Sw9Nm2y306DzIDbll2ty66E5TaL21J2FGsQ4MdcpkudkjOs2EAw7I8iYFXqjDJUZLZY6oLPksdIuDRGbBZZLFUU3AUAMSDvldrAeCRjU6jfMrPTiregVJOo6D4XGUUpr7UqigmlO90p60zVrVKbFm+bAEsQ88DzNCGZCcu2VWaqKkpKLFe06OBIKoUTBRXqpftbuI56ttTGpAYpW07DprnOfVNZrLZ6Eim2Ws0a732lnk+eTEAeQ68ZI/ebWDTOuKwPt0AQ68aFdzNl+XsXLmyK70M0Dn4hn02iNquZP85ki9TAIi2WE+RSNdSudNdgq2ZiIUsoIhSgkhwpGi/WcLnuEKWHejyFrmtpkDzsa6JyHki2bxj6dYSxPy+frVy5EosWLcKyZctw9NFHAwB+/vOf44wzzsCPf/xjjBo1asjfXXfddQCAJUuW7Nb5DVNkYGBgYGBg8JmQSqUq/hWGSvr5FHj99ddRW1urXogA4OSTT4Zt23jzzTd3t7k7hWGK9gKsKZNgJaI6MyYh9Qyd1gAcirzr4zJyCbM9fX+H9k1xPMwFI0yv6cyGMINRdnQZibD0uoHtV1lAFhfMTFF0FgyoyIij7TwVuCyVS+gnr46tmUpGolDOAgHJeCmtlM/S2iXyBqrIQuOCqKxH4Iwhy+NBwmvubgkWaTy4FAVHXVanxxOEWQdveQfl/8IlKVhLUAOL2BAVwXm9lorskSOjNctxgCCxWlHyP2E9iO3Xx3Cqyg7Yts5AoawWnxXAjCYZvU6pk9fqS02HyH1ygHXQJHVcOUby2MHeDpx30Dfld4qdoDHasRbo6qxsu7tZR6/EEIkct8vSupROKjFhr9Xt5P6w1oVFOJatfIcKdO7IQL++jsxSJKlUQqROl2shLY21nfxciqVKRsmL6r8BiLKAxZ4yNB9SRdn2snAQJE1UBUNEbXKIWfNT7MflUaxQXJUrYSYi5IsCOWIb6Xy8T1mUFFOk5inP3egQJWdYi2TZmtFslNq8jvwG9JMPTsQv58i4uCyvg4EdWhvF8JTxUBmmrCe0NwDj5T3OxWLB7Gq+Hxazz+xhRAyG6N4AVq+oOUyMSUWWHTEsQTsM+Kru2TC10+dXc5z7rcrX9HdDkJ5NXVlmIS1bMzLeIrh8zzILSd5ZTZattUNBuj/pXnQ897Cfrz+3IRDWOig+TyKMLA3r5pT0YnJcOaYt0XFoCJJ+SmgGDwCCobB6fgrOhPQ+Y7i8Ds9Xx6nUHAGKMbLCSc3usZeTPwSrUKVr3EMYSaZo7NixFd/fdtttuP322z/zcbdt24ZmKgnF8Pv9qK+vx7Zt2z7zcXcV5qXIwMDAwMDgCwRX7P7yF6+ub9q0CQnPUmCIJAPVuPnmm3Hvvfd+4jFXrly5e40aAZiXIgMDAwMDA4PPhEQiUfFSNBz+9//+37jkkks+cZ9JkyahtbUVnZ2dFd87joOenh60trbuTlN3CealaG9g1CHIRYWy/E8VZSr7+91rsD0rl0SayAytnUo4TGw7HKCq4EqE7de0vC63QZQ1lRZAIIwCpY1yReqck0ayRlLNDVTmQiQpHd4fUjRxlJjglsh4+t0AOME7GZLtGyBa2mf51fKcCHtE0r7BSyAAgLKASNPyl0qjLupPpqp5eSeSRYnEsGWqmB6iitvoSWkRKWfjqpImnuUwZfVPAtj0Dj2GnFrvOFqEzssT/DeojAGg0sBB4lO4DpD2V56HP4N+bZhH/aoTUZw4+iQAgJ9MJS0SOyMaRb5WXh+uRl9D5VHElg8h1kmjPW/pC9X2bNVyS7EEkaH+lthM0SNkViUsaBzIXM4K1qjlCVElerdqGtBNc4mXrupCTQClRHeThQOXMUmn1iNOSwNTWr5EbaHyIsUShL+qzAXDU9qGZ5EoOFrATEZ7wRo5F2utFm0qSNdTlOW+VtkPPy9P8JIUL+k5BUR9ci5Fbdon3eMx1pOfkSBVhneDKvkAVliNCUCiYq7k7qm0DgBZy0GxJMcrXZLLz29sex8O9XtSUrahNUrLM66j5yVbM5C5ogB0KR8ubRIOoRCQc7C/KIW/CWpXOFqrrDZg8/IRze90Wi8383IWL48V0hBqHOQ+fsuHUlzOE3+zFI5bvCTl86MQkmOSdeRzKkaGpX7bhtU3UNEf9dxK9w9OLnBdTT+o5XC2k3AAPhZbdMTl/zh94ZhadhbVJo6lPNCTqvidFYpjoCiffz003kXqczTQjVigFoBeWrUoUSPkOhBsxsnLmt6SI05VEktNVJUdQZjMYjlFPxiFxfcb2TCIcgliuJJHIwzhQtlMfOZjfMrks6amJjQ1Ne10v5kzZ6Kvrw/Lly/HUUcdBQB46aWX4LouvvzlL3+Wpn4qGKG1gYGBgYHBFwicLLe7//YEpk2bhtNOOw2XXXYZ/vKXv2Dp0qW4+uqrcf7556vMsy1btqC9vR1/+ctf1O+2bduGd955B2vWyCByxYoVeOedd9DT0/Opzm+Yor0Aq+wA8CFflkLPAgmZXSHQU5AzK0/ppbGgjH4SwS1oZJNDNmZj4bRla3Erp4uSqV5Xfgt25Mimn0TSfsunIt1IREYsIi6PlS71IuiTsssYCVODZKMf8kURoonfYssINBP1sFAU/aiSGYEeiAwb31mVn/AYOrJgmPrAAtgKlPIqldodQhJoJSkCa2iuGBtRygF5ji7pdyRCV+MH6IjM78mUYJaijvarr1OieCcuGaK+omRMQr4axGmbYFEnqF9hT1kIjmBTHfpmoyhWtWHsDHzcI29uhyLdw+qPkW1JZyE6SNxJTJvwpMqzsJ1tEQAA5coQThRkBGs3xnRkS6ZmBTLJy5RSCFLEH7TlNjY9zDtZZIpyTBVjEkpgwJX97chsAAD00HX1Wz7UsvieI3cW6NYnYWXZyI7E4Vy4Nl8AbGo7R+IFRwuFN8mHXXzKUdQzP5AlMTmXE2ERerYPYKZEjQuLYrPKALEi/ZrbWMWU2ZatTRh9lUwWbL+61swQscFpsZxHihiJDQNbAQDvdxfQEpXHCPvltQjZlMpeygPMVjI7xuG4Ux5cVDSSUOxMzpFjzyUq/IF6+LkEDIuiVb8GPPdGlf4jn9PjxAV4A2H0BGR7+F6si7aonzDzzUy4Yu8sW11HZmEt7l9PvyplA3oWDWncytekkFZtFv0s5KbkkUBgsHGi6k9Bs6NcOiRaizLNl1piwH2UGBIPNKh5vyMnzU/ZAiBe9sPyyfESZCKoihrbtn5+ELONuiSQqHw+KSNZ20ZZyD4G+Fme7YPlH8aGZYThjgBT5H5KpujT4KmnnsLVV1+NWbNmKfPGn/3sZ2p7qVTCqlWrkM1qs9Zf/epXuOOOO9TfJ5xwAgBgwYIFO12288K8FBkYGBgYGBjsN6ivr8fTTz897PYJEyYMMo+8/fbbdyvrjWFeivYCxKb3EGkbhShFC801MgW3KTIW7fVSh8FRFq9n14fapM4BOsroJiYiXexFkQoH8v5Zipg3pXcgVZQ6mDAZwTVHoyqlmM3q8o58w+4pdKt01NpQgn4nI5egL4wgm+Jlpf4lSuUhrNholZ5sUXFWKxqQRWGHGwfextqAetZF+XUUy9FcMa/SuUNhGamJjIcGbR4DANhBUXdXbj0AoC7ShMa6qRXn5UKSrOsAgJYWuY/YtlJF5RYbxzVJilY0jEdHVqYEd/bIT2bfwr4AJiYmyGOpopySyYDfp8ttsGmb61TqHKDZjb5CJ9anpEaDtQ2TE/JaRzJZZWRYDSvk03YIrIMquYqdU7oc1qI0NWjdlNLuyE/HLSDnyPZwKjojYAcRC0jNWjJImqqBLsQpmp9aJ3VDzKaEhK10cGL7qoo+w7YGR/OlIVKyuY8+S6c6cymU4HsVffD2XzEgtj24DAszLDVxrW1httLnV/OEbTKKrIOCrYoLW2xiyKaZrqOOwanhueKAGo/+orzf+uh3LVEbU4ilGxsjG4YUacuK2cr2o0pT5NXeAIBTRF1AXo8Q3bPM5JWFAz+zlflKFq1i3WMoDUuQ72fSKcab0dv3FgBtI1DyPK+ag0HVHgBAhq592dH3cz+xtykPK6wK4WqRLhd2VoVUmVXNpQaXhyEI24blkO0C6+54n2AAVhvpWDwGismg/C7ql89Wvr7RQMIzD+T54j7ZPtG3To8Xs1qkybJq49rWgJn9UFz3jb7jdP1cKYUMPYvZVqI21gi4Q7DmewD7O1O0L2FeigwMDAwMDL5AcMUI+BSZl6I9i/nz52PevHmYO3cuHnjgAQDAP/zDP+DFF1/E1q1bEYvF8JWvfAX33nsv2tvbhz3OJZdcgieeeKLiu9mzZ2PRokXq748++gjf+973sHTpUhSLRUyfPh133nknvvrVr1b87vHHH8f999+Pjz76CIlEAn/3d3+HX/ziF5+6b2LDViCXheBMD2Ik4pEaxMO1AAAr4tELAUCqU5vNUUSVK8uIb0t6uyqOaFtSs8DsUN4pKa0Cr5c3hOtVJKmiIC7pAQsu0ZAcGRU90WZ/QTIYMdLU+MhMLWq36baSBsdOhuD2UFkHynxifYsounCzMsry7WAGjCJFNp4EdISXzuripaxBylCk6/epKPbD3mUAgPe65Dg0RzajNiTZCR4jLnoZC4QVE+MjlqPB59cReJRKJFBByKyTRqooGQEub5J35DH9tk9Fyypq5IyZYEBlMjkUjRVQhOunYpKU1RSmdpXFAGxiBPzUZ9ZuWMm4ZkGIYbO4lENbs247s2/9A5VGlgAsjtZr47DSleUWQpT92BJukQVzoVkA1rog0wORoeP3ynIVIjugrpU/WVtxTK2xgmaBvKhiirgYsnBd3XbSEYmygBWgNjNjtEHqcxCL6kysatVnMOApGmwN3ofLllCmZr7Up+Z/yWU9j94/7CdGaYDMPDlLzB/U85SuGY9fwA6iJSJ1Rq1UZDVd6pMsMIDaMo1XtoMGwh6sr+Frn8kqRlZd88wARJfMUI2yqSgVBs44KZQtyqhibVGaMsbyhYoCvXI8bD1uCWoX6WG2Zdch7JdsRlNEZsdGOTsytUFlFupj8HMuBsSIbauh7EDOGq3xFD+le8UKJyFikiEaoCzHhI/YrmJBXz/uP+mVrFBQF9Zm3RHoPIEAkJRp3Mp41bJRw1mHlE2omMxcpyoVMioqDTfFtpV6H2YYFctF2qJQXOsI+blo24PMWC26nNFAQmXhKmPQchEoD3G/GOxV7BfZZ8uWLcPDDz+M6dOnV3x/1FFHYcGCBVi5ciVeeOEFCCFw6qmnolz+ZDHaaaedho6ODvXv17/+dcX2s846C47j4KWXXsLy5csxY8YMnHXWWRVumffffz9+8IMf4Oabb8YHH3yAF198EbNnzx65ThsYGBgYGOwD7M/ZZ/sa+5wpSqfTuPDCC/Hoo4/irrvuqtjmrYo7YcIE3HXXXZgxYwbWr1+PyZMnD3vMUCg0rMlTV1cXVq9ejccee0y9hM2fPx8PPfQQ3n//fbS2tqK3txe33HILnnvuOcyaNUv9tvqlbVchelIQlquyJbyRDkd/op7WntkyH1ARFPuNjKmVUVoi2KA8iLZRkcsi+YyEfQHFFPGnBVvpRIqkl3BVccUwQhT18Lp6PCD1MPXhVl0+oUg6GI6QS3lVRsHHWWjBgM42o4BHMUbQmVKilxiPsXSNcil9hzFDUCjqkhTKB4jW88NBFY2lyXulN+/S3yXky30V302ulexVe11CZ/z4yC/ETWvmomq8a/yj0UiRfjIkxyTikyxSrR1TpQjEto/kJ2te/D51jdkrxwn6USIdF48zw2cFkAjKyJmZLM58CR7yZQQ7JTsn1slPa7TM/LGap6hxEDG5vxXu1AUpOXJnRi6dHcTSiB6ZOQanDCsomZUgMx+sEfE+/fjYwYCex6yzUFlLJc3O1BDzwexBPqX3I/bRaiXWoFwCeqkcyLrNcpvtYQhUeRDSSPl8lT4xgMeHKSR9YgCdJclaGV9IZUAGXCoIGqlV7EReSIZWFRn11SDMzAjr2vh8Plfpp/hh2kZzROQyqqgxMz/NwfGKbVIMKPcvktBZSpztRvedlS9o7ysul5PK6OyxiGROHbrPS24RyZAcX5GX80YxGAlPFiIXmc15zhMmJrdOPm/KroPRNdKfyM+FYznD0ylqNrCq6KsVTkLQNcZ40tlQuRdEI4M0dog1IVuSx1XsCZf7sC1YDbXyv7nIMOnjRKEIi9dymDHyeKcx88uaL0fk1fEDPPas83NLukwJt4sZIG9WovKtGoJXYJbPBcBsMl1r9tqCL6gYPAXXATzZVHsSRlM0PPY5U3TVVVfhzDPPxMknn/yJ+2UyGSxYsAATJ04cVGulGkuWLEFzczOmTp2KK6+8Et3d3WpbQ0MDpk6diieffBKZTAaO4+Dhhx9Gc3OzMopavHgxXNfFli1bMG3aNIwZMwbnnXceNm3a9InnLRQKg4rjGRgYGBgYGHw+sE+Zot/85jd4++23sWzZsmH3eeihh3DjjTcik8lg6tSpWLx4MYLB4LD7n3baafjmN7+JiRMnYu3atfj+97+P008/Ha+//jp8Ph8sy8KLL76IOXPmIB6Pw7ZtNDc3Y9GiRairk9HWxx9/DNd18aMf/QgPPvggkskkbrnlFpxyyil47733hj3/PffcU+GTwLAiQZ2FAVS4tgp2TO6mbBaOtoIBWBwF0m9FSr7cxcMR5Rg8oUY6VLPnR8rpQz/5hjAbZFu20hKxY7Ll0Q1x9lnOkZFXhNfxezZB7KAXweqMj0Qv/D65Ri9UxoyldSwB6iNrilzhKQ5LUTZnovj9nsKKxAJYnjDGMyYAgHAI+YA8z4YBGYF15SgSj9pojMht7Aczla5rbSiKetJwxW3ya3K3aPaD+xGnWEG48JPvi0U+JrUuFZTtXgt0S5aOi14ye2BFwkCNPE+B5kqquAM1lOmiWIecjBojyQZEA/I8XQOSRVu6VeqiIv41OGuiXLYNcYFg9m4pO9qFmaNaV2hmiJkir+s1j2GK5pv3ulZ717AeIhTWUXKCrm8kqdvB4Iyz9I5BxWItyoQUuQzAc56ygdgtuSwcKNec7aR/cRwgT/PFX+XTEw7pvlaHra6rInYrKfU8na68fwK2i7oS++dQxl0oit6CZEEGyJMpRtqv2lALRD95HjG7wSgUACogzGOqWpLNQ4Qr72HYfukFBGgNW+1oPR7MPDBDwuMeDKhxE9196phWFWPhp5PXukGILSvkH3wtyI3dCtZAONQGclW3uEBwuQxL6YzkGLGvmtyhkllBn0fDxn30st0MnotefRcTkDyHi1nU8Jzj7/h8iWY9Jvzc8MxdwQ7gEa2f4/OKfslO+TkjlO5NANrtnMbZ8sV04VkeN257Pj84W48ZvUgCVlxqsPJCs/HMCgfAmYDEFJWLEORRx0wW4s2AMNln+xr7jCnatGkT5s6di6eeegrhcHjY/S688EL89a9/xcsvv4yDDz4Y5513HvL5/LD7n3/++fj617+Oww8/HHPmzMHzzz+PZcuWYcmSJQCkGdpVV12F5uZmvPrqq/jLX/6COXPm4Oyzz0ZHh7x5XNdFqVTCz372M8yePRvHHnssfv3rX2P16tX405/+NOy5582bh/7+fvVvZ8ySgYGBgYHB3gYXhN2tfwfoS9E+Y4qWL1+Ozs5OHHnkkeq7crmMV155Bf/0T/+EQqEAn8+HZDKJZDKJKVOm4Nhjj0VdXR0WLlyICy64YJfOM2nSJDQ2NmLNmjWYNWsWXnrpJTz//PPo7e1VReweeughLF68GE888QRuvvlmtLVJHckhhxyijtPU1ITGxkZs3Lhx2HOFQqGKCsFsLpXKFoGMJ8Lk2eRVq1W71ZZcWBwIcURVot+VLCBIXjRFivzL8rwpJ4sBykRjpihgl1VGjONyTSViityiYoocOlG0RD5HeRtIs6aoKkJK5WCRp4YYoAg2U4ST83jOABB5ziwSsMqUbZGTbfGlKcIMeCIw/q7seDI36JzssVMSKKRk9Jojl+cCOWnnXRvBEmd1yN0z5FrtL9oI0NikHE/buY9KO0OaiGAWKdJquaTVYAJM/o40DVRrjMfIsv0AjUkxINs5UMyhTHqmMo0Ds4QFK4v0gGxDdkAeK1ckfxafDynqa2iANVbsMZTVOijelvY4+PJn1uPajaqI3XtdHepckT6ZhQgIgJ122ZuqFAACVUrLHOnBMjmAkyHKso+Wr6TbmaP20Bg5PnktyqKMUIrnEu2TKQLsT8Pt81ENq3QBcFi/MRRTxNl3dA1ceWy/XYaPmSJiCsrIYCAjt6eVk7M8T42TRZDaBR5nb7LHcIrTbEG3mXe3/UCBj0H9ADExTsDDFNFYeq8r1/ziZ4mwYNF2y8c6GM7Uy+nfKidvuhZBS/Ub3uMDEG4ZVoCOSYzMwEAeKWIw/HTN1D2TLuj7kqmHKJ3HyerzlHJ6f0CPi3ccRFbf81VMkSgXNePJbfXOa2aoy9QGutdg2QCxuxYxXk5Z6+r8hVzFeeBzBjFFgv/O5Sqvu/d3TgBWQI5RXpD7t3ARsOW8D5ToOcjjB2jtVYG1eSF1r1cbE440crudkD8yx9gfsc9eimbNmoUVK1ZUfPed73wH7e3tuOmmm+Dz+Qb9RggBIQQKhcKgbcNh8+bN6O7uVi86bAtu25UkmW3bcOnhdtxxxwEAVq1ahTFjpElgT08Purq6MH78+F0+9wAthYz/zq93sqeBwSfh4X3dAAMDg72IgYEBJJPJne/4KREMBtHa2oprt60bkeO1trZ+opzl8whL7OlX0k+Bk046CUcccQQeeOABfPzxx3jmmWdw6qmnoqmpCZs3b8b8+fOxdOlSrFy5Es3Ncv22vb0d99xzD77xjW8gnU7jjjvuwLnnnovW1lasXbsWN954IwYGBrBixQqEQiF0dXWhvb0dJ554Im699VZEIhE8+uijePDBB7Fs2TLMmDEDADBnzhysWbMGjzzyCBKJBObNm4ePP/4Y77zzDgKBwCd1Q8F1XaxatQqHHHIINm3apJgpg91DKpXC2LFjzZiOMMy47hmYcR15HKhjKoTAwMAARo0aNShwHynk83kUi8NXHvg0CAaDnyh/+Txin6fkD4dwOIxXX30VDzzwAHp7e9HS0oITTjgBf/7zn9ULESDZnP5+KV7z+Xx477338MQTT6Cvrw+jRo3CqaeeijvvvFMtazU2NmLRokX4wQ9+gK997WsolUo49NBD8fvf/169EAHAk08+ieuvvx5nnnkmbNvGiSeeiEWLFu3yCxEg2afRo6WIMpFIHFA37/4AM6Z7BmZc9wzMuI48DsQx3RMMkRfhcPiAe5EZSexXTNGBiFQqhWQyif7+/gPu5t1XMGO6Z2DGdc/AjOvIw4ypwZ7CPvcpMjAwMDAwMDDYH2BeivYwQqEQbrvttoqsNIPdgxnTPQMzrnsGZlxHHmZMDfYUzPKZgYGBgYGBgQEMU2RgYGBgYGBgAMC8FBkYGBgYGBgYADAvRQYGBgYGBgYGAMxLkYGBgYGBgYEBAPNSNCxeeeUVnH322Rg1ahQsy8K///u/7/Jvly5dCr/fjyOOOKLi+1/+8peYPn26MhybOXMm/vCHP1Tsc9JJJ8GyrIp/V1xxxQj0aP/AnhhXL+bPnw/LsnDddddVfJ/P53HVVVehoaEBsVgM5557LrZv3/7ZOrEfYl+Nq5mvw2O4cb399tsHjVl7e3vFPgfyfN1XY3qgz1WDkYF5KRoGmUwGM2bMwC9+8YtP9bu+vj5cdNFFmDVr1qBtY8aMwfz587F8+XK89dZb+NrXvoZzzjkHH3zwQcV+l112GTo6OtS/++67b7f6sj9hT4wrY9myZXj44Ycxffr0Qduuv/56PPfcc/i3f/s3vPzyy9i6dSu++c1vfur276/YV+MKmPk6FHY2roceemjFmL322msV2w/k+bqvxhQ4sOeqwchgvy3zsa9x+umn4/TTT//Uv7viiivwrW99Cz6fb1AEdPbZZ1f8fffdd+OXv/wl3njjDRx66KHq+2g0itbW1s/U7v0de2JcASCdTuPCCy/Eo48+irvuuqtiW39/Px577DE8/fTT+NrXvgYAWLBgAaZNm4Y33ngDxx577Gfqy/6EfTGuDDNfB2Nn4+r3+4cdswN9vu6LMWUcyHPVYGRgmKIRxIIFC/Dxxx/jtttu2+m+5XIZv/nNb5DJZDBz5syKbU899RQaGxtx2GGHYd68echms3uqyZ8L7Mq4XnXVVTjzzDNx8sknD9q2fPlylEqlim3t7e0YN24cXn/99T3S5s8DdndcGWa+VmJXxnX16tUYNWoUJk2ahAsvvBAbN25U28x8HYzdHVOGmasGO4NhikYIq1evxs0334xXX30Vfv/ww7pixQrMnDkT+XwesVgMCxcuxCGHHKK2f+tb38L48eMxatQovPfee7jpppuwatUqPPvss3ujG/sddmVcf/Ob3+Dtt9/GsmXLhty+bds2BINB1NbWVnzf0tKCbdu2jXSTPxcYiXEFzHytxq6M65e//GU8/vjjmDp1Kjo6OnDHHXfgb/7mb/D+++8jHo+b+VqFkRhTwMxVg12DeSkaAZTLZXzrW9/CHXfcgYMPPvgT9506dSreeecd9Pf343e/+x0uvvhivPzyy+rF6PLLL1f7Hn744Whra8OsWbOwdu1aTJ48eY/2Y3/Drozrpk2bMHfuXCxevNhUft5FjOS4mvmqsavPAe/S0fTp0/HlL38Z48ePx29/+1tceumle6OpnxuM5JiauWqwSxAGOwUAsXDhwmG39/b2CgDC5/Opf5Zlqe/++Mc/DvvbWbNmicsvv3zY7el0WgAQixYt2p0u7JcYiXFduHDhoH0ACMuyhM/nE47jiD/+8Y8CgOjt7a04/rhx48T999+/Zzu5D7C3xnUomPn62Z4DRx99tLj55puFEOILNV/31pgOhQN5rhp8dhimaASQSCSwYsWKiu8eeughvPTSS/jd736HiRMnDvtb13VRKBSG3f7OO+8AANra2kakrZ8n7Mq4uq47aJ/vfOc7aG9vx0033QSfz4ejjjoKgUAAf/zjH3HuuecCAFatWoWNGzcO0nN9ETBS4zoUzHz99M+BdDqNtWvX4tvf/jYAmPnqwUiN6VD4Is9Vg+FhXoqGQTqdxpo1a9Tf69atwzvvvIP6+nqMGzcO8+bNw5YtW/Dkk0/Ctm0cdthhFb9vbm5GOByu+H7evHk4/fTTMW7cOAwMDODpp5/GkiVL8MILLwAA1q5di6effhpnnHEGGhoa8N577+H666/HCSecMGw69OcNe2Jcq/epqalBQ0OD+j6ZTOLSSy/FDTfcgPr6eiQSCVxzzTWYOXPm5z6Th7EvxtXM1882rt/97ndx9tlnY/z48di6dStuu+02+Hw+XHDBBQAO/Pm6L8b0izBXDUYG5qVoGLz11lv46le/qv6+4YYbAAAXX3wxHn/8cXR0dAyZ3fBJ6OzsxEUXXYSOjg4kk0lMnz4dL7zwAk455RQAQDAYxIsvvogHHngAmUwGY8eOxbnnnotbbrll5Dq2j7EnxnVX8NOf/hS2bePcc89FoVDA7Nmz8dBDD434efYV9sW4mvn62cZ18+bNuOCCC9Dd3Y2mpiYcf/zxeOONN9DU1KT2OZDn674Y0y/CXDUYGVhCCLGvG2FgYGBgYGBgsK9hfIoMDAwMDAwMDGBeigwMDAwMDAwMAJiXIgMDAwMDAwMDAOalyMDAwMDAwMAAgHkpMjAwMDAwMDAAYF6KDAwMDAwMDAwAmJciAwMDAwMDAwMA5qXIwOATcdJJJ+G66647oM57ySWXYM6cObt1jAkTJsCyLFiWhb6+vmH3e/zxxwdVezcYOVxyySXqOvz7v//7vm6OgcHnHualyMBgP8Szzz6LO++8U/09YcIEPPDAA/uuQUPghz/8oXJnN9izWLJkyZAvoA8++CA6Ojr2TaMMDA5AmDIfBgb7Ierr6/d1E3aKeDyO1tbWfd0MAECpVEIgENjXzdjrSCaT5qXUwGAEYZgiA4NPgd7eXlx00UWoq6tDNBrF6aefjtWrV6vtvFz0wgsvYNq0aYjFYjjttNMqonnHcXDttdeitrYWDQ0NuOmmm3DxxRdXLGl5l89OOukkbNiwAddff71aKgGA22+/HUcccURF+x544AFMmDBB/V0ul3HDDTeoc914442oruzjui7uueceTJw4EZFIBDNmzMDvfve7zzQ+jz/+OMaNG4doNIpvfOMb6O7uHrTP73//exx55JEIh8OYNGkS7rjjDjiOo7Z/+OGHOP744xEOh3HIIYfgxRdfrFgeWr9+PSzLwjPPPIMTTzwR4XAYTz31FADgn//5nzFt2jSEw2G0t7cPqhe2adMmnHfeeaitrUV9fT3OOeccrF+/Xm1fsmQJjjnmGNTU1KC2thbHHXccNmzYsEt931m/7r//fhx++OGoqanB2LFj8b/+1/9COp1W2zds2ICzzz4bdXV1qKmpwaGHHor//M//xPr161WtsLq6OliWhUsuuWSX2mRgYPDpYF6KDAw+BS655BK89dZb+H//7//h9ddfhxACZ5xxBkqlktonm83ixz/+Mf71X/8Vr7zyCjZu3Ijvfve7avu9996Lp556CgsWLMDSpUuRSqU+UQ/y7LPPYsyYMWq56tMsl/zkJz/B448/jn/5l3/Ba6+9hp6eHixcuLBin3vuuQdPPvkkfvWrX+GDDz7A9ddfj//xP/4HXn755V0fGABvvvkmLr30Ulx99dV455138NWvfhV33XVXxT6vvvoqLrroIsydOxf//d//jYcffhiPP/447r77bgDyJW7OnDmIRqN488038cgjj+AHP/jBkOe7+eabMXfuXKxcuRKzZ8/GU089hVtvvRV33303Vq5ciR/96Ef4P//n/+CJJ54AINmk2bNnIx6P49VXX8XSpUvVS2uxWITjOJgzZw5OPPFEvPfee3j99ddx+eWXq5fQT8LO+gUAtm3jZz/7GT744AM88cQTeOmll3DjjTeq7VdddRUKhQJeeeUVrFixAvfeey9isRjGjh2L//t//y8AYNWqVejo6MCDDz74qa6NgYHBLkIYGBgMixNPPFHMnTtXCCHERx99JACIpUuXqu1dXV0iEomI3/72t0IIIRYsWCAAiDVr1qh9fvGLX4iWlhb1d0tLi/jH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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], "source": [ "NDVI.plot(cmap=\"RdYlGn\", center=False)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -717,7 +772,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.8.10" }, "widgets": { "application/vnd.jupyter.widget-state+json": { diff --git a/docs/notebooks/api_user_guide/data/download_search_results.geojson b/docs/notebooks/api_user_guide/data/download_search_results.geojson index ebbd10841..940875766 100644 --- a/docs/notebooks/api_user_guide/data/download_search_results.geojson +++ b/docs/notebooks/api_user_guide/data/download_search_results.geojson @@ -1 +1 @@ -{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.49965161310688, 44.137996748197], [1.8719187041001, 44.159796633711], [1.8525926183827, 45.148073182871], [0.45686051699677, 45.125513562024], [0.49965161310688, 44.137996748197]]]]}, "id": "S2B_MSIL1C_20201231T105349_N0209_R051_T31TCK_20201231T120402", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.0, 45.13429248227053], [1.5, 45.14237412660063], [1.5, 45.0], [1.0, 45.0], [1.0, 45.13429248227053]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2B", "processingLevel": "LEVEL1C", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2B_MSIL1C_20201231T105349_N0209_R051_T31TCK_20201231T120402", "productType": "S2MSI1C", "uid": "714ffd9f-51a8-550d-8034-3f9847b67ea0", "keyword": {"12ea3ae8c42bdf2": {"name": "Winter", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Winter"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "56bf819406cae6b": {"name": "s2B", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2B"}, "f841767ba5c92d4": {"name": "msi", "type": "instrument", "parentHash": "56bf819406cae6b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "aca78422271631a": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "f841767ba5c92d4", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "c6134d71cb5682d": {"name": "December", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=December"}, "aa7c259e6121803": {"name": "31", "type": "day", "parentHash": "c6134d71cb5682d", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=31"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2020-12-31T14:55:42.503Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 19954, "orbitDirection": "descending", "cloudCover": 95.0772, "snowCover": null, "creationDate": "2020-12-31T14:53:59.450Z", "modificationDate": "2020-12-31T14:55:42.503Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-12-31T10:53:49.024Z", "completionTimeFromAscendingNode": "2020-12-31T10:53:49.024Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/12/31/S2B/S2B_MSIL1C_20201231T105349_N0209_R051_T31TCK_20201231T120402_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/714ffd9f-51a8-550d-8034-3f9847b67ea0/download", "storageStatus": "ONLINE", "thumbnail": null, "resourceSize": 691445023, "resourceChecksum": "968D851D76A1AC54DA8093B6F313D0EB", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 51, "s2TakeId": "GS2B_20201231T105349_019954_N02.09", "mgrs": "31TCK", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/12/31/S2B/S2B_MSIL1C_20201231T105349_N0209_R051_T31TCK_20201231T120402", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/714ffd9f-51a8-550d-8034-3f9847b67ea0/download", "mimeType": "application/zip", "size": 691445023, "checksum": "968D851D76A1AC54DA8093B6F313D0EB"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for 714ffd9f-51a8-550d-8034-3f9847b67ea0", "href": "https://peps.cnes.fr/resto/collections/S2ST/714ffd9f-51a8-550d-8034-3f9847b67ea0.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for 714ffd9f-51a8-550d-8034-3f9847b67ea0", "href": "https://peps.cnes.fr/resto/collections/S2ST/714ffd9f-51a8-550d-8034-3f9847b67ea0.atom?&lang=en"}], "storage": {"mode": "disk"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.46078579300118, 45.037023116804], [1.8543654645203, 45.059513600049], [1.8341080897223, 46.047627622959], [0.41593487960282, 46.02435339629], [0.46078579300118, 45.037023116804]]]]}, "id": "S2B_MSIL1C_20201231T105349_N0209_R051_T31TCL_20201231T120402", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.5, 45.053794622723714], [1.0, 45.04572530178547], [1.0, 45.5], [1.5, 45.5], [1.5, 45.053794622723714]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2B", "processingLevel": "LEVEL1C", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2B_MSIL1C_20201231T105349_N0209_R051_T31TCL_20201231T120402", "productType": "S2MSI1C", "uid": "71bf7c30-8731-527f-b109-9c7996bcccce", "keyword": {"12ea3ae8c42bdf2": {"name": "Winter", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Winter"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "56bf819406cae6b": {"name": "s2B", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2B"}, "f841767ba5c92d4": {"name": "msi", "type": "instrument", "parentHash": "56bf819406cae6b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "aca78422271631a": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "f841767ba5c92d4", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "c6134d71cb5682d": {"name": "December", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=December"}, "aa7c259e6121803": {"name": "31", "type": "day", "parentHash": "c6134d71cb5682d", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=31"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2020-12-31T14:57:36.632Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 19954, "orbitDirection": "descending", "cloudCover": 94.4653, "snowCover": null, "creationDate": "2020-12-31T14:55:07.504Z", "modificationDate": "2020-12-31T14:57:36.632Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-12-31T10:53:49.024Z", "completionTimeFromAscendingNode": "2020-12-31T10:53:49.024Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/12/31/S2B/S2B_MSIL1C_20201231T105349_N0209_R051_T31TCL_20201231T120402_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/71bf7c30-8731-527f-b109-9c7996bcccce/download", "storageStatus": "ONLINE", "thumbnail": null, "resourceSize": 713287452, "resourceChecksum": "C908DB954B2230C8DE13AAE6E6BA5564", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 51, "s2TakeId": "GS2B_20201231T105349_019954_N02.09", "mgrs": "31TCL", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/12/31/S2B/S2B_MSIL1C_20201231T105349_N0209_R051_T31TCL_20201231T120402", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/71bf7c30-8731-527f-b109-9c7996bcccce/download", "mimeType": "application/zip", "size": 713287452, "checksum": "C908DB954B2230C8DE13AAE6E6BA5564"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for 71bf7c30-8731-527f-b109-9c7996bcccce", "href": "https://peps.cnes.fr/resto/collections/S2ST/71bf7c30-8731-527f-b109-9c7996bcccce.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for 71bf7c30-8731-527f-b109-9c7996bcccce", "href": "https://peps.cnes.fr/resto/collections/S2ST/71bf7c30-8731-527f-b109-9c7996bcccce.atom?&lang=en"}], "storage": {"mode": "disk"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.46078579300118, 45.037023116804], [0.91969626625447, 45.044429308586], [0.93069645357946, 45.071193706467], [0.9912186038617, 45.216659905948], [1.0515138502719, 45.362296880747], [1.1122490079428, 45.50784519021], [1.1731146861119, 45.6532784559], [1.2345223114039, 45.798522155396], [1.2953881694194, 45.943886695821], [1.3357998611711, 46.039449680674], [0.41593487960282, 46.02435339629], [0.46078579300118, 45.037023116804]]]]}, "id": "S2A_MSIL1C_20201229T110451_N0209_R094_T31TCL_20201229T131620", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.1089753260558688, 45.5], [1.0515138502719, 45.362296880747], [1.0, 45.237870466385765], [1.0, 45.5], [1.1089753260558688, 45.5]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2A", "processingLevel": "LEVEL1C", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2A_MSIL1C_20201229T110451_N0209_R094_T31TCL_20201229T131620", "productType": "S2MSI1C", "uid": "86440880-7f7d-50f0-87a7-ac1bc2bd8fbd", "keyword": {"12ea3ae8c42bdf2": {"name": "Winter", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Winter"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "afe9ad14455c260": {"name": "s2A", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2A"}, "503f8f6199f3e44": {"name": "msi", "type": "instrument", "parentHash": "afe9ad14455c260", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "3f85bb5d775e1fc": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "503f8f6199f3e44", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "c6134d71cb5682d": {"name": "December", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=December"}, "77ddbc33a771bb6": {"name": "29", "type": "day", "parentHash": "c6134d71cb5682d", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=29"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2020-12-29T15:16:03.449Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 28834, "orbitDirection": "descending", "cloudCover": 64.6826, "snowCover": null, "creationDate": "2020-12-29T15:15:16.799Z", "modificationDate": "2020-12-29T15:16:03.449Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-12-29T11:04:51.024Z", "completionTimeFromAscendingNode": "2020-12-29T11:04:51.024Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/12/29/S2A/S2A_MSIL1C_20201229T110451_N0209_R094_T31TCL_20201229T131620_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/86440880-7f7d-50f0-87a7-ac1bc2bd8fbd/download", "storageStatus": "ONLINE", "thumbnail": null, "resourceSize": 411431555, "resourceChecksum": "BDB12215C4319C95BA8ADEF9FD5B7187", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 94, "s2TakeId": "GS2A_20201229T110451_028834_N02.09", "mgrs": "31TCL", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/12/29/S2A/S2A_MSIL1C_20201229T110451_N0209_R094_T31TCL_20201229T131620", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/86440880-7f7d-50f0-87a7-ac1bc2bd8fbd/download", "mimeType": "application/zip", "size": 411431555, "checksum": "BDB12215C4319C95BA8ADEF9FD5B7187"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for 86440880-7f7d-50f0-87a7-ac1bc2bd8fbd", "href": "https://peps.cnes.fr/resto/collections/S2ST/86440880-7f7d-50f0-87a7-ac1bc2bd8fbd.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for 86440880-7f7d-50f0-87a7-ac1bc2bd8fbd", "href": "https://peps.cnes.fr/resto/collections/S2ST/86440880-7f7d-50f0-87a7-ac1bc2bd8fbd.atom?&lang=en"}], "storage": {"mode": "disk"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.49965161310688, 44.137996748197], [1.8719187041001, 44.159796633711], [1.8525926183827, 45.148073182871], [0.45686051699677, 45.125513562024], [0.49965161310688, 44.137996748197]]]]}, "id": "S2A_MSIL1C_20201226T105451_N0209_R051_T31TCK_20201226T130209", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.0, 45.13429248227053], [1.5, 45.14237412660063], [1.5, 45.0], [1.0, 45.0], [1.0, 45.13429248227053]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2A", "processingLevel": "LEVEL1C", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2A_MSIL1C_20201226T105451_N0209_R051_T31TCK_20201226T130209", "productType": "S2MSI1C", "uid": "c51639e0-18ab-55a4-bc7c-7757a64911fa", "keyword": {"12ea3ae8c42bdf2": {"name": "Winter", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Winter"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "afe9ad14455c260": {"name": "s2A", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2A"}, "503f8f6199f3e44": {"name": "msi", "type": "instrument", "parentHash": "afe9ad14455c260", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "3f85bb5d775e1fc": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "503f8f6199f3e44", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "c6134d71cb5682d": {"name": "December", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=December"}, "abf10088ef239c7": {"name": "26", "type": "day", "parentHash": "c6134d71cb5682d", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=26"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2020-12-26T14:56:15.644Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 28791, "orbitDirection": "descending", "cloudCover": 64.8374, "snowCover": null, "creationDate": "2020-12-26T14:53:37.755Z", "modificationDate": "2020-12-26T14:56:15.644Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-12-26T10:54:51.024Z", "completionTimeFromAscendingNode": "2020-12-26T10:54:51.024Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/12/26/S2A/S2A_MSIL1C_20201226T105451_N0209_R051_T31TCK_20201226T130209_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/c51639e0-18ab-55a4-bc7c-7757a64911fa/download", "storageStatus": "ONLINE", "thumbnail": null, "resourceSize": 833322393, "resourceChecksum": "34EE3454B4CC166370FF07E9D8FC66F4", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 51, "s2TakeId": "GS2A_20201226T105451_028791_N02.09", "mgrs": "31TCK", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/12/26/S2A/S2A_MSIL1C_20201226T105451_N0209_R051_T31TCK_20201226T130209", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/c51639e0-18ab-55a4-bc7c-7757a64911fa/download", "mimeType": "application/zip", "size": 833322393, "checksum": "34EE3454B4CC166370FF07E9D8FC66F4"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for c51639e0-18ab-55a4-bc7c-7757a64911fa", "href": "https://peps.cnes.fr/resto/collections/S2ST/c51639e0-18ab-55a4-bc7c-7757a64911fa.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for c51639e0-18ab-55a4-bc7c-7757a64911fa", "href": "https://peps.cnes.fr/resto/collections/S2ST/c51639e0-18ab-55a4-bc7c-7757a64911fa.atom?&lang=en"}], "storage": {"mode": "disk"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.46078579300118, 45.037023116804], [1.8543654645203, 45.059513600049], [1.8341080897223, 46.047627622959], [0.41593487960282, 46.02435339629], [0.46078579300118, 45.037023116804]]]]}, "id": "S2A_MSIL1C_20201226T105451_N0209_R051_T31TCL_20201226T130209", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.5, 45.053794622723714], [1.0, 45.04572530178547], [1.0, 45.5], [1.5, 45.5], [1.5, 45.053794622723714]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2A", "processingLevel": "LEVEL1C", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2A_MSIL1C_20201226T105451_N0209_R051_T31TCL_20201226T130209", "productType": "S2MSI1C", "uid": "e4c316d9-e9cd-5a39-804d-8dc9a7bce3d5", "keyword": {"12ea3ae8c42bdf2": {"name": "Winter", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Winter"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "afe9ad14455c260": {"name": "s2A", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2A"}, "503f8f6199f3e44": {"name": "msi", "type": "instrument", "parentHash": "afe9ad14455c260", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "3f85bb5d775e1fc": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "503f8f6199f3e44", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "c6134d71cb5682d": {"name": "December", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=December"}, "abf10088ef239c7": {"name": "26", "type": "day", "parentHash": "c6134d71cb5682d", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=26"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2020-12-26T14:55:20.794Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 28791, "orbitDirection": "descending", "cloudCover": 62.8463, "snowCover": null, "creationDate": "2020-12-26T14:53:58.318Z", "modificationDate": "2020-12-26T14:55:20.794Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-12-26T10:54:51.024Z", "completionTimeFromAscendingNode": "2020-12-26T10:54:51.024Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/12/26/S2A/S2A_MSIL1C_20201226T105451_N0209_R051_T31TCL_20201226T130209_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/e4c316d9-e9cd-5a39-804d-8dc9a7bce3d5/download", "storageStatus": "ONLINE", "thumbnail": null, "resourceSize": 853363488, "resourceChecksum": "9F127017F0AAEB0443A671D91629D663", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 51, "s2TakeId": "GS2A_20201226T105451_028791_N02.09", "mgrs": "31TCL", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/12/26/S2A/S2A_MSIL1C_20201226T105451_N0209_R051_T31TCL_20201226T130209", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/e4c316d9-e9cd-5a39-804d-8dc9a7bce3d5/download", "mimeType": "application/zip", "size": 853363488, "checksum": "9F127017F0AAEB0443A671D91629D663"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for e4c316d9-e9cd-5a39-804d-8dc9a7bce3d5", "href": "https://peps.cnes.fr/resto/collections/S2ST/e4c316d9-e9cd-5a39-804d-8dc9a7bce3d5.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for e4c316d9-e9cd-5a39-804d-8dc9a7bce3d5", "href": "https://peps.cnes.fr/resto/collections/S2ST/e4c316d9-e9cd-5a39-804d-8dc9a7bce3d5.atom?&lang=en"}], "storage": {"mode": "disk"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.46078579300118, 45.037023116804], [0.91207634858946, 45.044306333463], [0.93041140897056, 45.08920443333], [0.99079764248874, 45.234641359532], [1.0510493648603, 45.380267169591], [1.1121787713241, 45.525762117989], [1.1729911310435, 45.671262353077], [1.2343697794714, 45.816597803105], [1.2951147635028, 45.962104119282], [1.3281631011078, 46.039324350648], [0.41593487960282, 46.02435339629], [0.46078579300118, 45.037023116804]]]]}, "id": "S2A_MSIL1C_20201119T110341_N0209_R094_T31TCL_20201119T131255", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.1013548698810762, 45.5], [1.0510493648603, 45.380267169591], [1.0, 45.25688306008897], [1.0, 45.5], [1.1013548698810762, 45.5]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2A", "processingLevel": "LEVEL1C", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2A_MSIL1C_20201119T110341_N0209_R094_T31TCL_20201119T131255", "productType": "S2MSI1C", "uid": "22d0e655-47c0-5fc4-9550-752d08473d00", "keyword": {"f3221bcc6ca49ca": {"name": "Autumn", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Autumn"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "afe9ad14455c260": {"name": "s2A", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2A"}, "503f8f6199f3e44": {"name": "msi", "type": "instrument", "parentHash": "afe9ad14455c260", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "3f85bb5d775e1fc": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "503f8f6199f3e44", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "d212fdc821d78a2": {"name": "November", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=November"}, "451a5e6ed3d50de": {"name": "19", "type": "day", "parentHash": "d212fdc821d78a2", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=19"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2020-11-19T15:18:38.550Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 28262, "orbitDirection": "descending", "cloudCover": 0.0473, "snowCover": null, "creationDate": "2020-11-19T15:17:08.901Z", "modificationDate": "2020-11-19T15:18:38.550Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-11-19T11:03:41.024Z", "completionTimeFromAscendingNode": "2020-11-19T11:03:41.024Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/11/19/S2A/S2A_MSIL1C_20201119T110341_N0209_R094_T31TCL_20201119T131255_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/22d0e655-47c0-5fc4-9550-752d08473d00/download", "storageStatus": "OFFLINE", "thumbnail": null, "resourceSize": 457122780, "resourceChecksum": "AC6D641DEF64CFF792ECD1C562A7DACD", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 94, "s2TakeId": "GS2A_20201119T110341_028262_N02.09", "mgrs": "31TCL", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/11/19/S2A/S2A_MSIL1C_20201119T110341_N0209_R094_T31TCL_20201119T131255", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/22d0e655-47c0-5fc4-9550-752d08473d00/download", "mimeType": "application/zip", "size": 457122780, "checksum": "AC6D641DEF64CFF792ECD1C562A7DACD"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for 22d0e655-47c0-5fc4-9550-752d08473d00", "href": "https://peps.cnes.fr/resto/collections/S2ST/22d0e655-47c0-5fc4-9550-752d08473d00.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for 22d0e655-47c0-5fc4-9550-752d08473d00", "href": "https://peps.cnes.fr/resto/collections/S2ST/22d0e655-47c0-5fc4-9550-752d08473d00.atom?&lang=en"}], "storage": {"mode": "tape"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.49965161310688, 44.137996748197], [1.8719187041001, 44.159796633711], [1.8525926183827, 45.148073182871], [0.45686051699677, 45.125513562024], [0.49965161310688, 44.137996748197]]]]}, "id": "S2A_MSIL1C_20201116T105331_N0209_R051_T31TCK_20201116T130215", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.0, 45.13429248227053], [1.5, 45.14237412660063], [1.5, 45.0], [1.0, 45.0], [1.0, 45.13429248227053]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2A", "processingLevel": "LEVEL1C", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2A_MSIL1C_20201116T105331_N0209_R051_T31TCK_20201116T130215", "productType": "S2MSI1C", "uid": "0b57ac26-d487-5367-aa86-9101dac07271", "keyword": {"f3221bcc6ca49ca": {"name": "Autumn", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Autumn"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "afe9ad14455c260": {"name": "s2A", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2A"}, "503f8f6199f3e44": {"name": "msi", "type": "instrument", "parentHash": "afe9ad14455c260", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "3f85bb5d775e1fc": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "503f8f6199f3e44", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "d212fdc821d78a2": {"name": "November", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=November"}, "77879d0e3f2a12a": {"name": "16", "type": "day", "parentHash": "d212fdc821d78a2", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=16"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2020-11-16T14:58:45.542Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 28219, "orbitDirection": "descending", "cloudCover": 34.4195, "snowCover": null, "creationDate": "2020-11-16T14:55:26.086Z", "modificationDate": "2020-11-16T14:58:45.542Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-11-16T10:53:31.024Z", "completionTimeFromAscendingNode": "2020-11-16T10:53:31.024Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/11/16/S2A/S2A_MSIL1C_20201116T105331_N0209_R051_T31TCK_20201116T130215_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/0b57ac26-d487-5367-aa86-9101dac07271/download", "storageStatus": "OFFLINE", "thumbnail": null, "resourceSize": 837165245, "resourceChecksum": "F4CAE0299ECF0562571A69723405C110", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 51, "s2TakeId": "GS2A_20201116T105331_028219_N02.09", "mgrs": "31TCK", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/11/16/S2A/S2A_MSIL1C_20201116T105331_N0209_R051_T31TCK_20201116T130215", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/0b57ac26-d487-5367-aa86-9101dac07271/download", "mimeType": "application/zip", "size": 837165245, "checksum": "F4CAE0299ECF0562571A69723405C110"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for 0b57ac26-d487-5367-aa86-9101dac07271", "href": "https://peps.cnes.fr/resto/collections/S2ST/0b57ac26-d487-5367-aa86-9101dac07271.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for 0b57ac26-d487-5367-aa86-9101dac07271", "href": "https://peps.cnes.fr/resto/collections/S2ST/0b57ac26-d487-5367-aa86-9101dac07271.atom?&lang=en"}], "storage": {"mode": "tape"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.46078579300118, 45.037023116804], [1.8543654645203, 45.059513600049], [1.8341080897223, 46.047627622959], [0.41593487960282, 46.02435339629], [0.46078579300118, 45.037023116804]]]]}, "id": "S2A_MSIL1C_20201116T105331_N0209_R051_T31TCL_20201116T130215", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.5, 45.053794622723714], [1.0, 45.04572530178547], [1.0, 45.5], [1.5, 45.5], [1.5, 45.053794622723714]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2A", "processingLevel": "LEVEL1C", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2A_MSIL1C_20201116T105331_N0209_R051_T31TCL_20201116T130215", "productType": "S2MSI1C", "uid": "342f1704-8931-5411-8812-d96b343e2da5", "keyword": {"f3221bcc6ca49ca": {"name": "Autumn", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Autumn"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "afe9ad14455c260": {"name": "s2A", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2A"}, "503f8f6199f3e44": {"name": "msi", "type": "instrument", "parentHash": "afe9ad14455c260", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "3f85bb5d775e1fc": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "503f8f6199f3e44", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "d212fdc821d78a2": {"name": "November", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=November"}, "77879d0e3f2a12a": {"name": "16", "type": "day", "parentHash": "d212fdc821d78a2", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=16"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2020-11-16T14:58:49.743Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 28219, "orbitDirection": "descending", "cloudCover": 50.1264, "snowCover": null, "creationDate": "2020-11-16T14:56:10.889Z", "modificationDate": "2020-11-16T14:58:49.743Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-11-16T10:53:31.024Z", "completionTimeFromAscendingNode": "2020-11-16T10:53:31.024Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/11/16/S2A/S2A_MSIL1C_20201116T105331_N0209_R051_T31TCL_20201116T130215_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/342f1704-8931-5411-8812-d96b343e2da5/download", "storageStatus": "OFFLINE", "thumbnail": null, "resourceSize": 830097382, "resourceChecksum": "41E495D10BEC35D0E0A131370A1A7B93", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 51, "s2TakeId": "GS2A_20201116T105331_028219_N02.09", "mgrs": "31TCL", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/11/16/S2A/S2A_MSIL1C_20201116T105331_N0209_R051_T31TCL_20201116T130215", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/342f1704-8931-5411-8812-d96b343e2da5/download", "mimeType": "application/zip", "size": 830097382, "checksum": "41E495D10BEC35D0E0A131370A1A7B93"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for 342f1704-8931-5411-8812-d96b343e2da5", "href": "https://peps.cnes.fr/resto/collections/S2ST/342f1704-8931-5411-8812-d96b343e2da5.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for 342f1704-8931-5411-8812-d96b343e2da5", "href": "https://peps.cnes.fr/resto/collections/S2ST/342f1704-8931-5411-8812-d96b343e2da5.atom?&lang=en"}], "storage": {"mode": "tape"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.46078579300118, 45.037023116804], [0.92686549873344, 45.044545010261], [0.9855118372795, 45.186830499832], [1.0455599133477, 45.332202069459], [1.1053542321723, 45.477739671316], [1.1660499943469, 45.623214588641], [1.2276510869025, 45.768523878405], [1.2888259367862, 45.914009349165], [1.3419162474929, 46.039550059218], [0.41593487960282, 46.02435339629], [0.46078579300118, 45.037023116804]]]]}, "id": "S2B_MSIL1C_20201114T110319_N0209_R094_T31TCL_20201114T120840", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.114641796245727, 45.5], [1.1053542321723, 45.477739671316], [1.0455599133477, 45.332202069459], [1.0, 45.22190517821634], [1.0, 45.5], [1.114641796245727, 45.5]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2B", "processingLevel": "LEVEL1C", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2B_MSIL1C_20201114T110319_N0209_R094_T31TCL_20201114T120840", "productType": "S2MSI1C", "uid": "f9001443-7e8b-501b-8e99-c9a83167c018", "keyword": {"f3221bcc6ca49ca": {"name": "Autumn", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Autumn"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "56bf819406cae6b": {"name": "s2B", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2B"}, "f841767ba5c92d4": {"name": "msi", "type": "instrument", "parentHash": "56bf819406cae6b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "aca78422271631a": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "f841767ba5c92d4", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "d212fdc821d78a2": {"name": "November", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=November"}, "8537cb03801d45c": {"name": "14", "type": "day", "parentHash": "d212fdc821d78a2", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=14"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2020-11-14T14:38:23.900Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 19282, "orbitDirection": "descending", "cloudCover": 48.4795, "snowCover": null, "creationDate": "2020-11-14T14:36:48.124Z", "modificationDate": "2020-11-14T14:38:23.900Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-11-14T11:03:19.024Z", "completionTimeFromAscendingNode": "2020-11-14T11:03:19.024Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/11/14/S2B/S2B_MSIL1C_20201114T110319_N0209_R094_T31TCL_20201114T120840_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/f9001443-7e8b-501b-8e99-c9a83167c018/download", "storageStatus": "OFFLINE", "thumbnail": null, "resourceSize": 444964290, "resourceChecksum": "68ACE28DCA6330D608262CF5FDA318AF", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 94, "s2TakeId": "GS2B_20201114T110319_019282_N02.09", "mgrs": "31TCL", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/11/14/S2B/S2B_MSIL1C_20201114T110319_N0209_R094_T31TCL_20201114T120840", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/f9001443-7e8b-501b-8e99-c9a83167c018/download", "mimeType": "application/zip", "size": 444964290, "checksum": "68ACE28DCA6330D608262CF5FDA318AF"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for f9001443-7e8b-501b-8e99-c9a83167c018", "href": "https://peps.cnes.fr/resto/collections/S2ST/f9001443-7e8b-501b-8e99-c9a83167c018.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for f9001443-7e8b-501b-8e99-c9a83167c018", "href": "https://peps.cnes.fr/resto/collections/S2ST/f9001443-7e8b-501b-8e99-c9a83167c018.atom?&lang=en"}], "storage": {"mode": "tape"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.49965161310688, 44.137996748197], [1.8719187041001, 44.159796633711], [1.8525926183827, 45.148073182871], [0.45686051699677, 45.125513562024], [0.49965161310688, 44.137996748197]]]]}, "id": "S2B_MSIL1C_20201111T105259_N0209_R051_T31TCK_20201111T130651", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.0, 45.13429248227053], [1.5, 45.14237412660063], [1.5, 45.0], [1.0, 45.0], [1.0, 45.13429248227053]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2B", "processingLevel": "LEVEL1C", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2B_MSIL1C_20201111T105259_N0209_R051_T31TCK_20201111T130651", "productType": "S2MSI1C", "uid": "0396e3b1-a4ae-50e0-acb0-ff251b592191", "keyword": {"f3221bcc6ca49ca": {"name": "Autumn", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Autumn"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "56bf819406cae6b": {"name": "s2B", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2B"}, "f841767ba5c92d4": {"name": "msi", "type": "instrument", "parentHash": "56bf819406cae6b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "aca78422271631a": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "f841767ba5c92d4", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "d212fdc821d78a2": {"name": "November", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=November"}, "ecf087f9e6cee99": {"name": "11", "type": "day", "parentHash": "d212fdc821d78a2", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=11"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2020-11-11T15:02:39.283Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 19239, "orbitDirection": "descending", "cloudCover": 27.6803, "snowCover": null, "creationDate": "2020-11-11T14:59:33.653Z", "modificationDate": "2020-11-11T15:02:39.283Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-11-11T10:52:59.025Z", "completionTimeFromAscendingNode": "2020-11-11T10:52:59.025Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/11/11/S2B/S2B_MSIL1C_20201111T105259_N0209_R051_T31TCK_20201111T130651_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/0396e3b1-a4ae-50e0-acb0-ff251b592191/download", "storageStatus": "OFFLINE", "thumbnail": null, "resourceSize": 843767054, "resourceChecksum": "6D9640A05F1169987EC1C83E2B2DEC80", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 51, "s2TakeId": "GS2B_20201111T105259_019239_N02.09", "mgrs": "31TCK", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/11/11/S2B/S2B_MSIL1C_20201111T105259_N0209_R051_T31TCK_20201111T130651", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/0396e3b1-a4ae-50e0-acb0-ff251b592191/download", "mimeType": "application/zip", "size": 843767054, "checksum": "6D9640A05F1169987EC1C83E2B2DEC80"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for 0396e3b1-a4ae-50e0-acb0-ff251b592191", "href": "https://peps.cnes.fr/resto/collections/S2ST/0396e3b1-a4ae-50e0-acb0-ff251b592191.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for 0396e3b1-a4ae-50e0-acb0-ff251b592191", "href": "https://peps.cnes.fr/resto/collections/S2ST/0396e3b1-a4ae-50e0-acb0-ff251b592191.atom?&lang=en"}], "storage": {"mode": "tape"}}}]} +{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.49965161310688, 44.137996748197], [1.8719187041001, 44.159796633711], [1.8525926183827, 45.148073182871], [0.45686051699677, 45.125513562024], [0.49965161310688, 44.137996748197]]]]}, "id": "S2B_MSIL1C_20201231T105349_N0500_R051_T31TCK_20230328T212259", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.5, 45.14237412660063], [1.5, 45.0], [1.0, 45.0], [1.0, 45.13429248227053], [1.5, 45.14237412660063]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2B", "processingLevel": "LEVEL1C", "keywords": "MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L1,L1C,SAFE", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2B_MSIL1C_20201231T105349_N0500_R051_T31TCK_20230328T212259", "productType": "S2MSI1C", "uid": "b36059c1-41c4-5d30-83b8-f1a0b74fb933", "keyword": {"bce097de57d1ab7": {"name": "Europe", "normalized": "europe", "type": "continent", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Europe"}, "936bcbcf5c43fbd": {"name": "France", "normalized": "france", "type": "country", "parentHash": "bce097de57d1ab7", "value": 100, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=France"}, "fa018f4f7b20706": {"name": "Midi-Pyr\u00e9n\u00e9es", "normalized": "midi-pyrenees", "type": "region", "parentHash": "936bcbcf5c43fbd", "value": 44.6, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Midi-Pyr%C3%A9n%C3%A9es"}, "bdd4a95707b0459": {"name": "Lot", "normalized": "lot", "type": "state", "parentHash": "fa018f4f7b20706", "value": 33.95, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Lot"}, "db06f1d6088ec4f": {"name": "Aquitaine", "normalized": "aquitaine", "type": "region", "parentHash": "936bcbcf5c43fbd", "value": 50.56, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Aquitaine"}, "1eb8a6dcbdf3b74": {"name": "Dordogne", "normalized": "dordogne", "type": "state", "parentHash": "db06f1d6088ec4f", "value": 31.73, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Dordogne"}, "4b1f69fd85f2eff": {"name": "Lot-et-Garonne", "normalized": "lot-et-garonne", "type": "state", "parentHash": "db06f1d6088ec4f", "value": 18.83, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Lot-et-Garonne"}, "c6319beaa1b6cdd": {"name": "Tarn-et-Garonne", "normalized": "tarn-et-garonne", "type": "state", "parentHash": "fa018f4f7b20706", "value": 10.47, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Tarn-et-Garonne"}, "595a2a0433fc5be": {"name": "Limousin", "normalized": "limousin", "type": "region", "parentHash": "936bcbcf5c43fbd", "value": 4.89, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Limousin"}, "2b6fe1d663541d5": {"name": "Corr\u00e8ze", "normalized": "correze", "type": "state", "parentHash": "595a2a0433fc5be", "value": 4.86, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Corr%C3%A8ze"}, "a507bd46cbf5398": {"name": "Aveyron", "normalized": "aveyron", "type": "state", "parentHash": "fa018f4f7b20706", "value": 0.11, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Aveyron"}, "a0e4a10aa754ab4": {"name": "Northern", "type": "location", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Northern"}, "12ea3ae8c42bdf2": {"name": "Winter", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Winter"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "56bf819406cae6b": {"name": "s2B", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2B"}, "f841767ba5c92d4": {"name": "msi", "type": "instrument", "parentHash": "56bf819406cae6b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "aca78422271631a": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "f841767ba5c92d4", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "c6134d71cb5682d": {"name": "December", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=December"}, "aa7c259e6121803": {"name": "31", "type": "day", "parentHash": "c6134d71cb5682d", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=31"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2023-08-23T12:22:40.359Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 19954, "orbitDirection": "descending", "cloudCover": 98.8337961718773, "snowCover": null, "creationDate": "2023-07-14T19:51:40.806Z", "modificationDate": "2023-08-23T12:22:40.359Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-12-31T10:53:49.024Z", "completionTimeFromAscendingNode": "2020-12-31T10:53:49.024Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/12/31/S2B/S2B_MSIL1C_20201231T105349_N0500_R051_T31TCK_20230328T212259_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/b36059c1-41c4-5d30-83b8-f1a0b74fb933/download", "tileIdentifier": "31TCK", "storageStatus": "ONLINE", "thumbnail": null, "resourceSize": 685446310, "resourceChecksum": "54982412b12dd7384e666080d7d77f7a", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 51, "useDatalake": 1, "bucket": "sentinel2-l1c", "prefix": "31/T/CK/2020/12/31", "s2TakeId": "GS2B_20201231T105349_019954_N05.00", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "isRefined": 1, "nrtResource": "/data/NRT/2020/12/31/S2B/S2B_MSIL1C_20201231T105349_N0500_R051_T31TCK_20230328T212259.zip", "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/12/31/S2B/S2B_MSIL1C_20201231T105349_N0500_R051_T31TCK_20230328T212259", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/b36059c1-41c4-5d30-83b8-f1a0b74fb933/download", "mimeType": "application/zip", "size": 685446310, "checksum": "54982412b12dd7384e666080d7d77f7a"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for b36059c1-41c4-5d30-83b8-f1a0b74fb933", "href": "https://peps.cnes.fr/resto/collections/S2ST/b36059c1-41c4-5d30-83b8-f1a0b74fb933.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for b36059c1-41c4-5d30-83b8-f1a0b74fb933", "href": "https://peps.cnes.fr/resto/collections/S2ST/b36059c1-41c4-5d30-83b8-f1a0b74fb933.atom?&lang=en"}], "storage": {"mode": "tier2"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.46078579300118, 45.037023116804], [1.8543654645203, 45.059513600049], [1.8341080897223, 46.047627622959], [0.41593487960282, 46.02435339629], [0.46078579300118, 45.037023116804]]]]}, "id": "S2B_MSIL1C_20201231T105349_N0500_R051_T31TCL_20230328T212259", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.0, 45.04572530178547], [1.0, 45.5], [1.5, 45.5], [1.5, 45.053794622723714], [1.0, 45.04572530178547]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2B", "processingLevel": "LEVEL1C", "keywords": "MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L1,L1C,SAFE", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2B_MSIL1C_20201231T105349_N0500_R051_T31TCL_20230328T212259", "productType": "S2MSI1C", "uid": "d29ac1a1-84e8-5bfc-af28-718b2841d4f9", "keyword": {"bce097de57d1ab7": {"name": "Europe", "normalized": "europe", "type": "continent", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Europe"}, "936bcbcf5c43fbd": {"name": "France", "normalized": "france", "type": "country", "parentHash": "bce097de57d1ab7", "value": 99.99, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=France"}, "db06f1d6088ec4f": {"name": "Aquitaine", "normalized": "aquitaine", "type": "region", "parentHash": "936bcbcf5c43fbd", "value": 33.63, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Aquitaine"}, "1eb8a6dcbdf3b74": {"name": "Dordogne", "normalized": "dordogne", "type": "state", "parentHash": "db06f1d6088ec4f", "value": 33.57, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Dordogne"}, "595a2a0433fc5be": {"name": "Limousin", "normalized": "limousin", "type": "region", "parentHash": "936bcbcf5c43fbd", "value": 56.57, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Limousin"}, "44d2e150997e6d7": {"name": "Haute-Vienne", "normalized": "haute-vienne", "type": "state", "parentHash": "595a2a0433fc5be", "value": 31.63, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Haute-Vienne"}, "2b6fe1d663541d5": {"name": "Corr\u00e8ze", "normalized": "correze", "type": "state", "parentHash": "595a2a0433fc5be", "value": 21.01, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Corr%C3%A8ze"}, "f0e6a6daa0e9f47": {"name": "Poitou-Charentes", "normalized": "poitou-charentes", "type": "region", "parentHash": "936bcbcf5c43fbd", "value": 9.76, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Poitou-Charentes"}, "b2da689507e17c1": {"name": "Charente", "normalized": "charente", "type": "state", "parentHash": "f0e6a6daa0e9f47", "value": 9.85, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Charente"}, "73fa6c0cfc7e3f4": {"name": "Creuse", "normalized": "creuse", "type": "state", "parentHash": "595a2a0433fc5be", "value": 3.89, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Creuse"}, "a0e4a10aa754ab4": {"name": "Northern", "type": "location", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Northern"}, "12ea3ae8c42bdf2": {"name": "Winter", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Winter"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "56bf819406cae6b": {"name": "s2B", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2B"}, "f841767ba5c92d4": {"name": "msi", "type": "instrument", "parentHash": "56bf819406cae6b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "aca78422271631a": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "f841767ba5c92d4", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "c6134d71cb5682d": {"name": "December", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=December"}, "aa7c259e6121803": {"name": "31", "type": "day", "parentHash": "c6134d71cb5682d", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=31"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2023-08-23T12:21:51.868Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 19954, "orbitDirection": "descending", "cloudCover": 97.8857535310102, "snowCover": null, "creationDate": "2023-07-14T19:51:49.000Z", "modificationDate": "2023-08-23T12:21:51.868Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-12-31T10:53:49.024Z", "completionTimeFromAscendingNode": "2020-12-31T10:53:49.024Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/12/31/S2B/S2B_MSIL1C_20201231T105349_N0500_R051_T31TCL_20230328T212259_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/d29ac1a1-84e8-5bfc-af28-718b2841d4f9/download", "tileIdentifier": "31TCL", "storageStatus": "ONLINE", "thumbnail": null, "resourceSize": 707321428, "resourceChecksum": "1a61d1be6c919d8c740cc8da8742c32d", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 51, "useDatalake": 1, "bucket": "sentinel2-l1c", "prefix": "31/T/CL/2020/12/31", "s2TakeId": "GS2B_20201231T105349_019954_N05.00", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "isRefined": 1, "nrtResource": "/data/NRT/2020/12/31/S2B/S2B_MSIL1C_20201231T105349_N0500_R051_T31TCL_20230328T212259.zip", "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/12/31/S2B/S2B_MSIL1C_20201231T105349_N0500_R051_T31TCL_20230328T212259", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/d29ac1a1-84e8-5bfc-af28-718b2841d4f9/download", "mimeType": "application/zip", "size": 707321428, "checksum": "1a61d1be6c919d8c740cc8da8742c32d"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for d29ac1a1-84e8-5bfc-af28-718b2841d4f9", "href": "https://peps.cnes.fr/resto/collections/S2ST/d29ac1a1-84e8-5bfc-af28-718b2841d4f9.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for d29ac1a1-84e8-5bfc-af28-718b2841d4f9", "href": "https://peps.cnes.fr/resto/collections/S2ST/d29ac1a1-84e8-5bfc-af28-718b2841d4f9.atom?&lang=en"}], "storage": {"mode": "tier2"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.46078579300118, 45.037023116804], [0.91969450031862, 45.044429280086], [0.93069339972467, 45.071186480163], [0.99121383401521, 45.216652925507], [1.0514980565527, 45.362292517481], [1.1122397342795, 45.507838975481], [1.1730891538639, 45.653276179583], [1.2345095957032, 45.798516427628], [1.2953848618124, 45.943878389353], [1.3357983683859, 46.039449656175], [0.41593487960282, 46.02435339629], [0.46078579300118, 45.037023116804]]]]}, "id": "S2A_MSIL1C_20201229T110451_N0500_R094_T31TCL_20230328T144935", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.0514980565527, 45.362292517481], [1.0, 45.2378792692364], [1.0, 45.5], [1.108968252933144, 45.5], [1.0514980565527, 45.362292517481]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2A", "processingLevel": "LEVEL1C", "keywords": "MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L1,L1C,SAFE", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2A_MSIL1C_20201229T110451_N0500_R094_T31TCL_20230328T144935", "productType": "S2MSI1C", "uid": "6f9f68b8-b278-55fb-8cb7-df0e983a5ce2", "keyword": {"bce097de57d1ab7": {"name": "Europe", "normalized": "europe", "type": "continent", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Europe"}, "936bcbcf5c43fbd": {"name": "France", "normalized": "france", "type": "country", "parentHash": "bce097de57d1ab7", "value": 100, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=France"}, "db06f1d6088ec4f": {"name": "Aquitaine", "normalized": "aquitaine", "type": "region", "parentHash": "936bcbcf5c43fbd", "value": 50.34, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Aquitaine"}, "1eb8a6dcbdf3b74": {"name": "Dordogne", "normalized": "dordogne", "type": "state", "parentHash": "db06f1d6088ec4f", "value": 50.29, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Dordogne"}, "595a2a0433fc5be": {"name": "Limousin", "normalized": "limousin", "type": "region", "parentHash": "936bcbcf5c43fbd", "value": 29.59, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Limousin"}, "44d2e150997e6d7": {"name": "Haute-Vienne", "normalized": "haute-vienne", "type": "state", "parentHash": "595a2a0433fc5be", "value": 29.52, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Haute-Vienne"}, "f0e6a6daa0e9f47": {"name": "Poitou-Charentes", "normalized": "poitou-charentes", "type": "region", "parentHash": "936bcbcf5c43fbd", "value": 19.94, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Poitou-Charentes"}, "b2da689507e17c1": {"name": "Charente", "normalized": "charente", "type": "state", "parentHash": "f0e6a6daa0e9f47", "value": 20.13, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Charente"}, "a0e4a10aa754ab4": {"name": "Northern", "type": "location", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Northern"}, "12ea3ae8c42bdf2": {"name": "Winter", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Winter"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "afe9ad14455c260": {"name": "s2A", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2A"}, "503f8f6199f3e44": {"name": "msi", "type": "instrument", "parentHash": "afe9ad14455c260", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "3f85bb5d775e1fc": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "503f8f6199f3e44", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "c6134d71cb5682d": {"name": "December", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=December"}, "77ddbc33a771bb6": {"name": "29", "type": "day", "parentHash": "c6134d71cb5682d", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=29"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2023-08-22T12:56:18.691Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 28834, "orbitDirection": "descending", "cloudCover": 50.9891472754777, "snowCover": null, "creationDate": "2023-07-13T21:00:31.426Z", "modificationDate": "2023-08-22T12:56:18.691Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-12-29T11:04:51.024Z", "completionTimeFromAscendingNode": "2020-12-29T11:04:51.024Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/12/29/S2A/S2A_MSIL1C_20201229T110451_N0500_R094_T31TCL_20230328T144935_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/6f9f68b8-b278-55fb-8cb7-df0e983a5ce2/download", "tileIdentifier": "31TCL", "storageStatus": "ONLINE", "thumbnail": null, "resourceSize": 407689407, "resourceChecksum": "86d550c56e9ad86ff1afcc7feb465d16", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 94, "useDatalake": 1, "bucket": "sentinel2-l1c", "prefix": "31/T/CL/2020/12/29", "s2TakeId": "GS2A_20201229T110451_028834_N05.00", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "isRefined": 1, "nrtResource": "/data/NRT/2020/12/29/S2A/S2A_MSIL1C_20201229T110451_N0500_R094_T31TCL_20230328T144935.zip", "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/12/29/S2A/S2A_MSIL1C_20201229T110451_N0500_R094_T31TCL_20230328T144935", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/6f9f68b8-b278-55fb-8cb7-df0e983a5ce2/download", "mimeType": "application/zip", "size": 407689407, "checksum": "86d550c56e9ad86ff1afcc7feb465d16"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for 6f9f68b8-b278-55fb-8cb7-df0e983a5ce2", "href": "https://peps.cnes.fr/resto/collections/S2ST/6f9f68b8-b278-55fb-8cb7-df0e983a5ce2.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for 6f9f68b8-b278-55fb-8cb7-df0e983a5ce2", "href": "https://peps.cnes.fr/resto/collections/S2ST/6f9f68b8-b278-55fb-8cb7-df0e983a5ce2.atom?&lang=en"}], "storage": {"mode": "tier2"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.46078579300118, 45.037023116804], [1.8543654645203, 45.059513600049], [1.8341080897223, 46.047627622959], [0.41593487960282, 46.02435339629], [0.46078579300118, 45.037023116804]]]]}, "id": "S2A_MSIL1C_20201226T105451_N0500_R051_T31TCL_20230328T002707", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.0, 45.04572530178547], [1.0, 45.5], [1.5, 45.5], [1.5, 45.053794622723714], [1.0, 45.04572530178547]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2A", "processingLevel": "LEVEL1C", "keywords": "MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L1,L1C,SAFE", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2A_MSIL1C_20201226T105451_N0500_R051_T31TCL_20230328T002707", "productType": "S2MSI1C", "uid": "d0cc77dd-d4bb-5b9c-8be6-e9e454ca5924", "keyword": {"bce097de57d1ab7": {"name": "Europe", "normalized": "europe", "type": "continent", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Europe"}, "936bcbcf5c43fbd": {"name": "France", "normalized": "france", "type": "country", "parentHash": "bce097de57d1ab7", "value": 99.99, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=France"}, "db06f1d6088ec4f": {"name": "Aquitaine", "normalized": "aquitaine", "type": "region", "parentHash": "936bcbcf5c43fbd", "value": 33.63, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Aquitaine"}, "1eb8a6dcbdf3b74": {"name": "Dordogne", "normalized": "dordogne", "type": "state", "parentHash": "db06f1d6088ec4f", "value": 33.57, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Dordogne"}, "595a2a0433fc5be": {"name": "Limousin", "normalized": "limousin", "type": "region", "parentHash": "936bcbcf5c43fbd", "value": 56.57, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Limousin"}, "44d2e150997e6d7": {"name": "Haute-Vienne", "normalized": "haute-vienne", "type": "state", "parentHash": "595a2a0433fc5be", "value": 31.63, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Haute-Vienne"}, "2b6fe1d663541d5": {"name": "Corr\u00e8ze", "normalized": "correze", "type": "state", "parentHash": "595a2a0433fc5be", "value": 21.01, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Corr%C3%A8ze"}, "f0e6a6daa0e9f47": {"name": "Poitou-Charentes", "normalized": "poitou-charentes", "type": "region", "parentHash": "936bcbcf5c43fbd", "value": 9.76, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Poitou-Charentes"}, "b2da689507e17c1": {"name": "Charente", "normalized": "charente", "type": "state", "parentHash": "f0e6a6daa0e9f47", "value": 9.85, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Charente"}, "73fa6c0cfc7e3f4": {"name": "Creuse", "normalized": "creuse", "type": "state", "parentHash": "595a2a0433fc5be", "value": 3.89, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Creuse"}, "a0e4a10aa754ab4": {"name": "Northern", "type": "location", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Northern"}, "12ea3ae8c42bdf2": {"name": "Winter", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Winter"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "afe9ad14455c260": {"name": "s2A", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2A"}, "503f8f6199f3e44": {"name": "msi", "type": "instrument", "parentHash": "afe9ad14455c260", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "3f85bb5d775e1fc": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "503f8f6199f3e44", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "c6134d71cb5682d": {"name": "December", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=December"}, "abf10088ef239c7": {"name": "26", "type": "day", "parentHash": "c6134d71cb5682d", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=26"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2023-08-24T18:34:17.160Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 28791, "orbitDirection": "descending", "cloudCover": 47.1324315446863, "snowCover": null, "creationDate": "2023-07-19T20:47:48.317Z", "modificationDate": "2023-08-24T18:34:17.160Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-12-26T10:54:51.024Z", "completionTimeFromAscendingNode": "2020-12-26T10:54:51.024Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/12/26/S2A/S2A_MSIL1C_20201226T105451_N0500_R051_T31TCL_20230328T002707_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/d0cc77dd-d4bb-5b9c-8be6-e9e454ca5924/download", "tileIdentifier": "31TCL", "storageStatus": "ONLINE", "thumbnail": null, "resourceSize": 846995879, "resourceChecksum": "2c7cb19ff178e117af74c3073f195a1f", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 51, "useDatalake": 1, "bucket": "sentinel2-l1c", "prefix": "31/T/CL/2020/12/26", "s2TakeId": "GS2A_20201226T105451_028791_N05.00", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "isRefined": 1, "nrtResource": "/data/NRT/2020/12/26/S2A/S2A_MSIL1C_20201226T105451_N0500_R051_T31TCL_20230328T002707.zip", "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/12/26/S2A/S2A_MSIL1C_20201226T105451_N0500_R051_T31TCL_20230328T002707", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/d0cc77dd-d4bb-5b9c-8be6-e9e454ca5924/download", "mimeType": "application/zip", "size": 846995879, "checksum": "2c7cb19ff178e117af74c3073f195a1f"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for d0cc77dd-d4bb-5b9c-8be6-e9e454ca5924", "href": "https://peps.cnes.fr/resto/collections/S2ST/d0cc77dd-d4bb-5b9c-8be6-e9e454ca5924.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for d0cc77dd-d4bb-5b9c-8be6-e9e454ca5924", "href": "https://peps.cnes.fr/resto/collections/S2ST/d0cc77dd-d4bb-5b9c-8be6-e9e454ca5924.atom?&lang=en"}], "storage": {"mode": "tier2"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.49965161310688, 44.137996748197], [1.8719187041001, 44.159796633711], [1.8525926183827, 45.148073182871], [0.45686051699677, 45.125513562024], [0.49965161310688, 44.137996748197]]]]}, "id": "S2A_MSIL1C_20201226T105451_N0500_R051_T31TCK_20230328T002707", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.5, 45.14237412660063], [1.5, 45.0], [1.0, 45.0], [1.0, 45.13429248227053], [1.5, 45.14237412660063]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2A", "processingLevel": "LEVEL1C", "keywords": "MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L1,L1C,SAFE", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2A_MSIL1C_20201226T105451_N0500_R051_T31TCK_20230328T002707", "productType": "S2MSI1C", "uid": "f1e4498e-347f-5d40-943c-fa565952ad12", "keyword": {"bce097de57d1ab7": {"name": "Europe", "normalized": "europe", "type": "continent", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Europe"}, "936bcbcf5c43fbd": {"name": "France", "normalized": "france", "type": "country", "parentHash": "bce097de57d1ab7", "value": 100, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=France"}, "fa018f4f7b20706": {"name": "Midi-Pyr\u00e9n\u00e9es", "normalized": "midi-pyrenees", "type": "region", "parentHash": "936bcbcf5c43fbd", "value": 44.6, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Midi-Pyr%C3%A9n%C3%A9es"}, "bdd4a95707b0459": {"name": "Lot", "normalized": "lot", "type": "state", "parentHash": "fa018f4f7b20706", "value": 33.95, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Lot"}, "db06f1d6088ec4f": {"name": "Aquitaine", "normalized": "aquitaine", "type": "region", "parentHash": "936bcbcf5c43fbd", "value": 50.56, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Aquitaine"}, "1eb8a6dcbdf3b74": {"name": "Dordogne", "normalized": "dordogne", "type": "state", "parentHash": "db06f1d6088ec4f", "value": 31.73, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Dordogne"}, "4b1f69fd85f2eff": {"name": "Lot-et-Garonne", "normalized": "lot-et-garonne", "type": "state", "parentHash": "db06f1d6088ec4f", "value": 18.83, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Lot-et-Garonne"}, "c6319beaa1b6cdd": {"name": "Tarn-et-Garonne", "normalized": "tarn-et-garonne", "type": "state", "parentHash": "fa018f4f7b20706", "value": 10.47, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Tarn-et-Garonne"}, "595a2a0433fc5be": {"name": "Limousin", "normalized": "limousin", "type": "region", "parentHash": "936bcbcf5c43fbd", "value": 4.89, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Limousin"}, "2b6fe1d663541d5": {"name": "Corr\u00e8ze", "normalized": "correze", "type": "state", "parentHash": "595a2a0433fc5be", "value": 4.86, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Corr%C3%A8ze"}, "a507bd46cbf5398": {"name": "Aveyron", "normalized": "aveyron", "type": "state", "parentHash": "fa018f4f7b20706", "value": 0.11, "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Aveyron"}, "a0e4a10aa754ab4": {"name": "Northern", "type": "location", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Northern"}, "12ea3ae8c42bdf2": {"name": "Winter", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Winter"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "afe9ad14455c260": {"name": "s2A", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2A"}, "503f8f6199f3e44": {"name": "msi", "type": "instrument", "parentHash": "afe9ad14455c260", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "3f85bb5d775e1fc": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "503f8f6199f3e44", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "c6134d71cb5682d": {"name": "December", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=December"}, "abf10088ef239c7": {"name": "26", "type": "day", "parentHash": "c6134d71cb5682d", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=26"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2023-08-24T18:28:52.968Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 28791, "orbitDirection": "descending", "cloudCover": 52.2788079667951, "snowCover": null, "creationDate": "2023-07-19T20:47:48.082Z", "modificationDate": "2023-08-24T18:28:52.968Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-12-26T10:54:51.024Z", "completionTimeFromAscendingNode": "2020-12-26T10:54:51.024Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/12/26/S2A/S2A_MSIL1C_20201226T105451_N0500_R051_T31TCK_20230328T002707_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/f1e4498e-347f-5d40-943c-fa565952ad12/download", "tileIdentifier": "31TCK", "storageStatus": "ONLINE", "thumbnail": null, "resourceSize": 826484898, "resourceChecksum": "1db924da7dc735ed62758db7465202fa", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 51, "useDatalake": 1, "bucket": "sentinel2-l1c", "prefix": "31/T/CK/2020/12/26", "s2TakeId": "GS2A_20201226T105451_028791_N05.00", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "isRefined": 1, "nrtResource": "/data/NRT/2020/12/26/S2A/S2A_MSIL1C_20201226T105451_N0500_R051_T31TCK_20230328T002707.zip", "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/12/26/S2A/S2A_MSIL1C_20201226T105451_N0500_R051_T31TCK_20230328T002707", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/f1e4498e-347f-5d40-943c-fa565952ad12/download", "mimeType": "application/zip", "size": 826484898, "checksum": "1db924da7dc735ed62758db7465202fa"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for f1e4498e-347f-5d40-943c-fa565952ad12", "href": "https://peps.cnes.fr/resto/collections/S2ST/f1e4498e-347f-5d40-943c-fa565952ad12.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for f1e4498e-347f-5d40-943c-fa565952ad12", "href": "https://peps.cnes.fr/resto/collections/S2ST/f1e4498e-347f-5d40-943c-fa565952ad12.atom?&lang=en"}], "storage": {"mode": "tier2"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.46078579300118, 45.037023116804], [1.8543654645203, 45.059513600049], [1.8341080897223, 46.047627622959], [0.41593487960282, 46.02435339629], [0.46078579300118, 45.037023116804]]]]}, "id": "S2B_MSIL1C_20201201T105419_N0209_R051_T31TCL_20201201T115506", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.0, 45.04572530178547], [1.0, 45.5], [1.5, 45.5], [1.5, 45.053794622723714], [1.0, 45.04572530178547]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2B", "processingLevel": "LEVEL1C", "keywords": "MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L1,L1C,SAFE", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2B_MSIL1C_20201201T105419_N0209_R051_T31TCL_20201201T115506", "productType": "S2MSI1C", "uid": "0b7526d3-46a0-52b1-996c-e4145f438d0f", "keyword": {"f3221bcc6ca49ca": {"name": "Autumn", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Autumn"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "56bf819406cae6b": {"name": "s2B", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2B"}, "f841767ba5c92d4": {"name": "msi", "type": "instrument", "parentHash": "56bf819406cae6b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "aca78422271631a": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "f841767ba5c92d4", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "c6134d71cb5682d": {"name": "December", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=December"}, "47bb896c892e01b": {"name": "01", "type": "day", "parentHash": "c6134d71cb5682d", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=01"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2020-12-02T00:51:35.960Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 19525, "orbitDirection": "descending", "cloudCover": 92.66790000000002, "snowCover": null, "creationDate": "2020-12-01T17:20:40.140Z", "modificationDate": "2020-12-02T00:51:35.960Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-12-01T10:54:19.025Z", "completionTimeFromAscendingNode": "2020-12-01T10:54:19.025Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/12/01/S2B/S2B_MSIL1C_20201201T105419_N0209_R051_T31TCL_20201201T115506_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/0b7526d3-46a0-52b1-996c-e4145f438d0f/download", "tileIdentifier": "31TCL", "storageStatus": "OFFLINE", "thumbnail": null, "resourceSize": 743210965, "resourceChecksum": "BD75889D042DF816CA9990A4C57759B0", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 51, "useDatalake": null, "bucket": "sentinel2-l1c", "prefix": "31/T/CL/2020/12/01", "s2TakeId": "GS2B_20201201T105419_019525_N02.09", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "isRefined": null, "nrtResource": "/data/NRT/2020/12/01/S2B/S2B_MSIL1C_20201201T105419_N0209_R051_T31TCL_20201201T115506.zip", "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/12/01/S2B/S2B_MSIL1C_20201201T105419_N0209_R051_T31TCL_20201201T115506", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/0b7526d3-46a0-52b1-996c-e4145f438d0f/download", "mimeType": "application/zip", "size": 743210965, "checksum": "BD75889D042DF816CA9990A4C57759B0"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for 0b7526d3-46a0-52b1-996c-e4145f438d0f", "href": "https://peps.cnes.fr/resto/collections/S2ST/0b7526d3-46a0-52b1-996c-e4145f438d0f.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for 0b7526d3-46a0-52b1-996c-e4145f438d0f", "href": "https://peps.cnes.fr/resto/collections/S2ST/0b7526d3-46a0-52b1-996c-e4145f438d0f.atom?&lang=en"}], "storage": {"mode": "tape"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.49965161310688, 44.137996748197], [1.8719187041001, 44.159796633711], [1.8525926183827, 45.148073182871], [0.45686051699677, 45.125513562024], [0.49965161310688, 44.137996748197]]]]}, "id": "S2B_MSIL1C_20201201T105419_N0209_R051_T31TCK_20201201T115506", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.5, 45.14237412660063], [1.5, 45.0], [1.0, 45.0], [1.0, 45.13429248227053], [1.5, 45.14237412660063]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2B", "processingLevel": "LEVEL1C", "keywords": "MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L1,L1C,SAFE", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2B_MSIL1C_20201201T105419_N0209_R051_T31TCK_20201201T115506", "productType": "S2MSI1C", "uid": "2e5a5258-8b84-5a77-a04c-264429706c93", "keyword": {"f3221bcc6ca49ca": {"name": "Autumn", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Autumn"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "56bf819406cae6b": {"name": "s2B", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2B"}, "f841767ba5c92d4": {"name": "msi", "type": "instrument", "parentHash": "56bf819406cae6b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "aca78422271631a": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "f841767ba5c92d4", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "c6134d71cb5682d": {"name": "December", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=December"}, "47bb896c892e01b": {"name": "01", "type": "day", "parentHash": "c6134d71cb5682d", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=01"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2020-12-02T00:49:26.617Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 19525, "orbitDirection": "descending", "cloudCover": 99.90409999999999, "snowCover": null, "creationDate": "2020-12-01T17:21:50.135Z", "modificationDate": "2020-12-02T00:49:26.617Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-12-01T10:54:19.025Z", "completionTimeFromAscendingNode": "2020-12-01T10:54:19.025Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/12/01/S2B/S2B_MSIL1C_20201201T105419_N0209_R051_T31TCK_20201201T115506_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/2e5a5258-8b84-5a77-a04c-264429706c93/download", "tileIdentifier": "31TCK", "storageStatus": "OFFLINE", "thumbnail": null, "resourceSize": 647548145, "resourceChecksum": "5C28F5EC15C432ABD4433F0190C32BAE", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 51, "useDatalake": null, "bucket": "sentinel2-l1c", "prefix": "31/T/CK/2020/12/01", "s2TakeId": "GS2B_20201201T105419_019525_N02.09", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "isRefined": null, "nrtResource": "/data/NRT/2020/12/01/S2B/S2B_MSIL1C_20201201T105419_N0209_R051_T31TCK_20201201T115506.zip", "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/12/01/S2B/S2B_MSIL1C_20201201T105419_N0209_R051_T31TCK_20201201T115506", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/2e5a5258-8b84-5a77-a04c-264429706c93/download", "mimeType": "application/zip", "size": 647548145, "checksum": "5C28F5EC15C432ABD4433F0190C32BAE"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for 2e5a5258-8b84-5a77-a04c-264429706c93", "href": "https://peps.cnes.fr/resto/collections/S2ST/2e5a5258-8b84-5a77-a04c-264429706c93.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for 2e5a5258-8b84-5a77-a04c-264429706c93", "href": "https://peps.cnes.fr/resto/collections/S2ST/2e5a5258-8b84-5a77-a04c-264429706c93.atom?&lang=en"}], "storage": {"mode": "tape"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.49965161310688, 44.137996748197], [1.8719187041001, 44.159796633711], [1.8525926183827, 45.148073182871], [0.45686051699677, 45.125513562024], [0.49965161310688, 44.137996748197]]]]}, "id": "S2B_MSIL1C_20201111T105259_N0209_R051_T31TCK_20201111T130651", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.5, 45.14237412660063], [1.5, 45.0], [1.0, 45.0], [1.0, 45.13429248227053], [1.5, 45.14237412660063]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2B", "processingLevel": "LEVEL1C", "keywords": "MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L1,L1C,SAFE", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2B_MSIL1C_20201111T105259_N0209_R051_T31TCK_20201111T130651", "productType": "S2MSI1C", "uid": "0396e3b1-a4ae-50e0-acb0-ff251b592191", "keyword": {"f3221bcc6ca49ca": {"name": "Autumn", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Autumn"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "56bf819406cae6b": {"name": "s2B", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2B"}, "f841767ba5c92d4": {"name": "msi", "type": "instrument", "parentHash": "56bf819406cae6b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "aca78422271631a": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "f841767ba5c92d4", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "d212fdc821d78a2": {"name": "November", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=November"}, "ecf087f9e6cee99": {"name": "11", "type": "day", "parentHash": "d212fdc821d78a2", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=11"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2020-11-11T15:02:39.283Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 19239, "orbitDirection": "descending", "cloudCover": 27.680299999999995, "snowCover": null, "creationDate": "2020-11-11T14:59:33.653Z", "modificationDate": "2020-11-11T15:02:39.283Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-11-11T10:52:59.025Z", "completionTimeFromAscendingNode": "2020-11-11T10:52:59.025Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/11/11/S2B/S2B_MSIL1C_20201111T105259_N0209_R051_T31TCK_20201111T130651_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/0396e3b1-a4ae-50e0-acb0-ff251b592191/download", "tileIdentifier": "31TCK", "storageStatus": "OFFLINE", "thumbnail": null, "resourceSize": 843767054, "resourceChecksum": "6D9640A05F1169987EC1C83E2B2DEC80", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 51, "useDatalake": null, "bucket": "sentinel2-l1c", "prefix": "31/T/CK/2020/11/11", "s2TakeId": "GS2B_20201111T105259_019239_N02.09", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "isRefined": null, "nrtResource": "/data/NRT/2020/11/11/S2B/S2B_MSIL1C_20201111T105259_N0209_R051_T31TCK_20201111T130651.zip", "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/11/11/S2B/S2B_MSIL1C_20201111T105259_N0209_R051_T31TCK_20201111T130651", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/0396e3b1-a4ae-50e0-acb0-ff251b592191/download", "mimeType": "application/zip", "size": 843767054, "checksum": "6D9640A05F1169987EC1C83E2B2DEC80"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for 0396e3b1-a4ae-50e0-acb0-ff251b592191", "href": "https://peps.cnes.fr/resto/collections/S2ST/0396e3b1-a4ae-50e0-acb0-ff251b592191.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for 0396e3b1-a4ae-50e0-acb0-ff251b592191", "href": "https://peps.cnes.fr/resto/collections/S2ST/0396e3b1-a4ae-50e0-acb0-ff251b592191.atom?&lang=en"}], "storage": {"mode": "tape"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.46078579300118, 45.037023116804], [1.8543654645203, 45.059513600049], [1.8341080897223, 46.047627622959], [0.41593487960282, 46.02435339629], [0.46078579300118, 45.037023116804]]]]}, "id": "S2B_MSIL1C_20201111T105259_N0209_R051_T31TCL_20201111T130651", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.0, 45.04572530178547], [1.0, 45.5], [1.5, 45.5], [1.5, 45.053794622723714], [1.0, 45.04572530178547]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2B", "processingLevel": "LEVEL1C", "keywords": "MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L1,L1C,SAFE", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2B_MSIL1C_20201111T105259_N0209_R051_T31TCL_20201111T130651", "productType": "S2MSI1C", "uid": "355abad7-7367-5ef5-b5d7-231972929365", "keyword": {"f3221bcc6ca49ca": {"name": "Autumn", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Autumn"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "56bf819406cae6b": {"name": "s2B", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2B"}, "f841767ba5c92d4": {"name": "msi", "type": "instrument", "parentHash": "56bf819406cae6b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "aca78422271631a": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "f841767ba5c92d4", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "e8f96b7c46c0d54": {"name": "Descending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Descending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "d212fdc821d78a2": {"name": "November", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=November"}, "ecf087f9e6cee99": {"name": "11", "type": "day", "parentHash": "d212fdc821d78a2", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=11"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2020-11-11T15:02:55.154Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 19239, "orbitDirection": "descending", "cloudCover": 61.713300000000004, "snowCover": null, "creationDate": "2020-11-11T14:57:23.256Z", "modificationDate": "2020-11-11T15:02:55.154Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-11-11T10:52:59.025Z", "completionTimeFromAscendingNode": "2020-11-11T10:52:59.025Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/11/11/S2B/S2B_MSIL1C_20201111T105259_N0209_R051_T31TCL_20201111T130651_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/355abad7-7367-5ef5-b5d7-231972929365/download", "tileIdentifier": "31TCL", "storageStatus": "OFFLINE", "thumbnail": null, "resourceSize": 828383740, "resourceChecksum": "6F805167ED2A440F849C8E02DFEB4ABC", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 51, "useDatalake": null, "bucket": "sentinel2-l1c", "prefix": "31/T/CL/2020/11/11", "s2TakeId": "GS2B_20201111T105259_019239_N02.09", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "isRefined": null, "nrtResource": "/data/NRT/2020/11/11/S2B/S2B_MSIL1C_20201111T105259_N0209_R051_T31TCL_20201111T130651.zip", "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/11/11/S2B/S2B_MSIL1C_20201111T105259_N0209_R051_T31TCL_20201111T130651", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/355abad7-7367-5ef5-b5d7-231972929365/download", "mimeType": "application/zip", "size": 828383740, "checksum": "6F805167ED2A440F849C8E02DFEB4ABC"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for 355abad7-7367-5ef5-b5d7-231972929365", "href": "https://peps.cnes.fr/resto/collections/S2ST/355abad7-7367-5ef5-b5d7-231972929365.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for 355abad7-7367-5ef5-b5d7-231972929365", "href": "https://peps.cnes.fr/resto/collections/S2ST/355abad7-7367-5ef5-b5d7-231972929365.atom?&lang=en"}], "storage": {"mode": "tape"}}}, {"type": "Feature", "geometry": {"type": "MultiPolygon", "coordinates": [[[[0.49965161310688, 44.137996748197], [1.8719187041001, 44.159796633711], [1.8525926183827, 45.148073182871], [0.45686051699677, 45.125513562024], [0.49965161310688, 44.137996748197]]]]}, "id": "S2B_MSIL1C_20200902T104629_N0209_R051_T31TCK_20200902T121149", "properties": {"eodag_product_type": "S2_MSI_L1C", "eodag_provider": "peps", "eodag_search_intersection": {"type": "Polygon", "coordinates": [[[1.5, 45.14237412660063], [1.5, 45.0], [1.0, 45.0], [1.0, 45.13429248227053], [1.5, 45.14237412660063]]]}, "abstract": null, "instrument": "MSI", "platform": "S2ST", "platformSerialIdentifier": "S2B", "processingLevel": "LEVEL1C", "keywords": "MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L1,L1C,SAFE", "sensorType": "OPTICAL", "license": "proprietary", "missionStartDate": "2015-06-23T00:00:00Z", "title": "S2B_MSIL1C_20200902T104629_N0209_R051_T31TCK_20200902T121149", "productType": "S2MSI1C", "uid": "593c44f4-9155-55bb-8eb3-ca756e3d6bd3", "keyword": {"6278eea013ff0d3": {"name": "Summer", "type": "season", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Summer"}, "45038f3c2322ea3": {"name": "S2ST", "type": "collection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2ST"}, "6219554ecf5905c": {"name": "S2MSI1C", "type": "productType", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=S2MSI1C"}, "44b15c0a6e62129": {"name": "LEVEL1C", "type": "processingLevel", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=LEVEL1C"}, "56bf819406cae6b": {"name": "s2B", "type": "platform", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=s2B"}, "f841767ba5c92d4": {"name": "msi", "type": "instrument", "parentHash": "56bf819406cae6b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=msi"}, "aca78422271631a": {"name": "INS-NOBS", "type": "sensorMode", "parentHash": "f841767ba5c92d4", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=INS-NOBS"}, "8f43f01f9586bac": {"name": "Ascending", "type": "orbitDirection", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Ascending"}, "a56dfb1210d361d": {"name": "Nominal", "type": "realtime", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=Nominal"}, "6414a4147122d1b": {"name": "2020", "type": "year", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=2020"}, "c08b78d876494c9": {"name": "September", "type": "month", "parentHash": "6414a4147122d1b", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=September"}, "ff8d7191eec3e60": {"name": "02", "type": "day", "parentHash": "c08b78d876494c9", "href": "https://peps.cnes.fr/resto/api/collections/S2ST/search.json?&lang=en&q=02"}}, "resolution": null, "organisationName": "ESA", "publicationDate": "2020-09-04T06:23:41.093Z", "parentIdentifier": "urn:ogc:def:EOP:ESA::SENTINEL-2:", "orbitNumber": 18238, "orbitDirection": "ascending", "cloudCover": 1.4875, "snowCover": null, "creationDate": "2020-09-04T06:20:56.306Z", "modificationDate": "2020-09-04T06:23:41.093Z", "sensorMode": "INS-NOBS", "startTimeFromAscendingNode": "2020-09-02T10:46:29.024Z", "completionTimeFromAscendingNode": "2020-09-02T10:46:29.024Z", "quicklook": "https://peps.cnes.fr/quicklook/2020/09/02/S2B/S2B_MSIL1C_20200902T104629_N0209_R051_T31TCK_20200902T121149_quicklook.jpg", "downloadLink": "https://peps.cnes.fr/resto/collections/S2ST/593c44f4-9155-55bb-8eb3-ca756e3d6bd3/download", "tileIdentifier": "31TCK", "storageStatus": "OFFLINE", "thumbnail": null, "resourceSize": 862670822, "resourceChecksum": "5CCD10736403B50D4A0DA21EEDB80E91", "visible": 1, "newVersion": null, "isNrt": 0, "realtime": "Nominal", "relativeOrbitNumber": 51, "useDatalake": null, "bucket": "sentinel2-l1c", "prefix": "31/T/CK/2020/09/02", "s2TakeId": "GS2B_20200902T104629_018238_N02.09", "bareSoil": null, "highProbaClouds": null, "mediumProbaClouds": null, "lowProbaClouds": null, "snowIce": null, "vegetation": null, "water": null, "isRefined": null, "nrtResource": "/data/NRT/2020/09/02/S2B/S2B_MSIL1C_20200902T104629_N0209_R051_T31TCK_20200902T121149.zip", "services": {"browse": {"title": "Display full resolution product on map", "layer": {"type": "WMS", "url": "https://peps.cnes.fr/cgi-bin/mapserver?map=WMS_S2ST&data=2020/09/02/S2B/S2B_MSIL1C_20200902T104629_N0209_R051_T31TCK_20200902T121149", "layers": ""}}, "download": {"url": "https://peps.cnes.fr/resto/collections/S2ST/593c44f4-9155-55bb-8eb3-ca756e3d6bd3/download", "mimeType": "application/zip", "size": 862670822, "checksum": "5CCD10736403B50D4A0DA21EEDB80E91"}}, "links": [{"rel": "alternate", "type": "application/json", "title": "GeoJSON link for 593c44f4-9155-55bb-8eb3-ca756e3d6bd3", "href": "https://peps.cnes.fr/resto/collections/S2ST/593c44f4-9155-55bb-8eb3-ca756e3d6bd3.json?&lang=en"}, {"rel": "alternate", "type": "application/atom+xml", "title": "ATOM link for 593c44f4-9155-55bb-8eb3-ca756e3d6bd3", "href": "https://peps.cnes.fr/resto/collections/S2ST/593c44f4-9155-55bb-8eb3-ca756e3d6bd3.atom?&lang=en"}], "storage": {"mode": "tape"}}}]} diff --git a/docs/notebooks/tutos/tuto_burnt_areas_snappy.ipynb b/docs/notebooks/tutos/tuto_burnt_areas_snappy.ipynb index adbeddea8..5ef7e0f13 100644 --- a/docs/notebooks/tutos/tuto_burnt_areas_snappy.ipynb +++ b/docs/notebooks/tutos/tuto_burnt_areas_snappy.ipynb @@ -209,7 +209,7 @@ } ], "source": [ - "products_before, _ = dag.search(\n", + "products_before = dag.search(\n", " productType=product_type,\n", " start='2018-05-21', \n", " end='2018-05-25',\n", @@ -249,7 +249,7 @@ } ], "source": [ - "products_after, _ = dag.search(\n", + "products_after = dag.search(\n", " productType=product_type,\n", " start='2018-06-06',\n", " end='2018-06-10',\n", diff --git a/docs/notebooks/tutos/tuto_cds.ipynb b/docs/notebooks/tutos/tuto_cds.ipynb index fd9b7acd9..d8792a2be 100644 --- a/docs/notebooks/tutos/tuto_cds.ipynb +++ b/docs/notebooks/tutos/tuto_cds.ipynb @@ -4,9 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# CDS API plugin for EODAG\n", + "# Copernicus Atmosphere using BuildSearchResult plugin\n", "\n", - "In this tutorial we will show you how to use eodag to download data from providers using [CdsApi](https://eodag.readthedocs.io/en/latest/plugins_reference/generated/eodag.plugins.apis.cds.CdsApi.html) `eodag` plugin. You can currently find two providers that uses it, `cop_ads` and `cop_cds`. For this tutorial we will use `cop_ads`, but `cop_cds` is used the same way. The API plugin and this tutorial have been developed in the context of DOMINO-X." + "In this tutorial we will show you how to use eodag to download data from providers using [BuildSearchResult](https://eodag.readthedocs.io/en/latest/plugins_reference/generated/eodag.plugins.search.build_search_result.BuildSearchResult.html) `eodag` plugin. You can currently find two providers that uses it, `cop_ads` and `cop_cds`. For this tutorial we will use `cop_ads`, but `cop_cds` is used the same way." ] }, { @@ -17,7 +17,7 @@ "source": [ "from eodag import EODataAccessGateway, setup_logging\n", "\n", - "setup_logging(0) # 0: nothing, 1: only progress bars, 2: INFO, 3: DEBUG\n", + "setup_logging(1) # 0: nothing, 1: only progress bars, 2: INFO, 3: DEBUG\n", "dag = EODataAccessGateway()\n", "dag.set_preferred_provider(\"cop_ads\")" ] @@ -30,28 +30,65 @@ "\n", "There are two use case, a search for a product already configured in EODAG, or a search for a dataset not already configured, where you will have a little more to do.\n", "\n", - "For performance purpose, we can add a `variable` (Temperature, `temperature`) and one `model_level` to the request because `CAMS_EAC4` is configured to request for some pre-configured values. Check the dataset available values to make your selection.\n", + "We can add a `variable` (Temperature, `temperature`) and one `model_level` to the request because `CAMS_EAC4` is configured to request for some pre-configured values. Check the dataset available values to make your selection.\n", "\n", "> Note: specifying your own variables will completely overwrite default values configured for `CAMS_EAC4` product type.\n", "\n", - "### Search from an existing product type:" + "### Check available queryables and default values:\n", + "\n", + "Available queryables parameters and associated values can be checked using [list_queryables()](https://eodag.readthedocs.io/en/latest/notebooks/api_user_guide/4_search.html#Queryables) method, or through [cop_ads](https://ads.atmosphere.copernicus.eu/cdsapp#!/dataset/cams-global-reanalysis-eac4?tab=form) or [cop_cds](https://cds.climate.copernicus.eu/cdsapp#!/search?type=dataset) websites:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "typing.Annotated[typing.Literal['10m_u_component_of_wind', '10m_v_component_of_wind', '2m_dewpoint_temperature', '2m_temperature', 'acetone', 'acetone_product', 'aldehydes', 'amine', 'ammonia', 'ammonium', 'black_carbon_aerosol_optical_depth_550nm', 'carbon_monoxide', 'dimethyl_sulfide', 'dinitrogen_pentoxide', 'dust_aerosol_0.03-0.55um_mixing_ratio', 'dust_aerosol_0.55-0.9um_mixing_ratio', 'dust_aerosol_0.9-20um_mixing_ratio', 'dust_aerosol_optical_depth_550nm', 'ethane', 'ethanol', 'ethene', 'formaldehyde', 'formic_acid', 'fraction_of_cloud_cover', 'geopotential', 'high_cloud_cover', 'high_vegetation_cover', 'hydrogen_peroxide', 'hydroperoxy_radical', 'hydrophilic_black_carbon_aerosol_mixing_ratio', 'hydrophilic_organic_matter_aerosol_mixing_ratio', 'hydrophobic_black_carbon_aerosol_mixing_ratio', 'hydrophobic_organic_matter_aerosol_mixing_ratio', 'hydroxyl_radical', 'isoprene', 'lake_cover', 'land_sea_mask', 'lead', 'leaf_area_index_high_vegetation', 'leaf_area_index_low_vegetation', 'lifting_threshold_speed', 'low_cloud_cover', 'low_vegetation_cover', 'mean_altitude_of_maximum_injection', 'mean_sea_level_pressure', 'medium_cloud_cover', 'methacrolein_mvk', 'methacrylic_acid', 'methane_chemistry', 'methane_sulfonic_acid', 'methanol', 'methyl_glyoxal', 'methyl_peroxide', 'methylperoxy_radical', 'near_ir_albedo_for_diffuse_radiation', 'near_ir_albedo_for_direct_radiation', 'nitrate', 'nitrate_radical', 'nitric_acid', 'nitrogen_dioxide', 'nitrogen_monoxide', 'olefins', 'organic_ethers', 'organic_matter_aerosol_optical_depth_550nm', 'organic_nitrates', 'ozone', 'paraffins', 'particulate_matter_10um', 'particulate_matter_1um', 'particulate_matter_2.5um', 'pernitric_acid', 'peroxides', 'peroxy_acetyl_radical', 'peroxyacetyl_nitrate', 'potential_vorticity', 'propane', 'propene', 'radon', 'relative_humidity', 'sea_ice_cover', 'sea_salt_aerosol_0.03-0.5um_mixing_ratio', 'sea_salt_aerosol_0.5-5um_mixing_ratio', 'sea_salt_aerosol_5-20um_mixing_ratio', 'sea_salt_aerosol_optical_depth_550nm', 'sea_surface_temperature', 'skin_reservoir_content', 'skin_temperature', 'snow_albedo', 'snow_depth', 'soil_clay_content', 'soil_type', 'specific_cloud_ice_water_content', 'specific_cloud_liquid_water_content', 'specific_humidity', 'specific_rain_water_content', 'specific_snow_water_content', 'stratospheric_ozone_tracer', 'sulphate_aerosol_mixing_ratio', 'sulphate_aerosol_optical_depth_550nm', 'sulphur_dioxide', 'surface_geopotential', 'surface_pressure', 'surface_roughness', 'temperature', 'terpenes', 'total_aerosol_optical_depth_1240nm', 'total_aerosol_optical_depth_469nm', 'total_aerosol_optical_depth_550nm', 'total_aerosol_optical_depth_670nm', 'total_aerosol_optical_depth_865nm', 'total_cloud_cover', 'total_column_acetone', 'total_column_aldehydes', 'total_column_carbon_monoxide', 'total_column_ethane', 'total_column_ethanol', 'total_column_ethene', 'total_column_formaldehyde', 'total_column_formic_acid', 'total_column_hydrogen_peroxide', 'total_column_hydroxyl_radical', 'total_column_isoprene', 'total_column_methane', 'total_column_methanol', 'total_column_methyl_peroxide', 'total_column_nitric_acid', 'total_column_nitrogen_dioxide', 'total_column_nitrogen_monoxide', 'total_column_olefins', 'total_column_organic_nitrates', 'total_column_ozone', 'total_column_paraffins', 'total_column_peroxyacetyl_nitrate', 'total_column_propane', 'total_column_sulphur_dioxide', 'total_column_water', 'total_column_water_vapour', 'type_of_high_vegetation', 'type_of_low_vegetation', 'u_component_of_wind', 'uv_visible_albedo_for_diffuse_radiation', 'uv_visible_albedo_for_direct_radiation', 'v_component_of_wind', 'vertical_velocity', 'vertically_integrated_mass_of_dust_aerosol_0.03-0.55um', 'vertically_integrated_mass_of_dust_aerosol_0.55-9um', 'vertically_integrated_mass_of_dust_aerosol_9-20um', 'vertically_integrated_mass_of_hydrophilic_black_carbon_aerosol', 'vertically_integrated_mass_of_hydrophilic_organic_matter_aerosol', 'vertically_integrated_mass_of_hydrophobic_black_carbon_aerosol', 'vertically_integrated_mass_of_hydrophobic_organic_matter_aerosol', 'vertically_integrated_mass_of_sea_salt_aerosol_0.03-0.5um', 'vertically_integrated_mass_of_sea_salt_aerosol_0.5-5um', 'vertically_integrated_mass_of_sea_salt_aerosol_5-20um', 'vertically_integrated_mass_of_sulphate_aerosol'], FieldInfo(annotation=NoneType, required=False, default='2m_dewpoint_temperature')]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "queryables = dag.list_queryables(provider=\"cop_ads\", productType=\"CAMS_EAC4\")\n", + "queryables[\"variable\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we can see the list of available values for `variable`, and that the default value configured for `CAMS_EAC4` is `2m_dewpoint_temperature`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Search from an existing product type:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "1 product built EOProduct(id=CAMS_EAC4_20210101_9fa1614f23014d2fb17c38927a5e87ecb3dcf6aa, provider=cop_ads),\n", - " having variable=['dust_aerosol_0.03-0.55um_mixing_ratio', 'dust_aerosol_0.55-0.9um_mixing_ratio', 'dust_aerosol_0.9-20um_mixing_ratio', 'dust_aerosol_optical_depth_550nm', 'hydrophilic_black_carbon_aerosol_mixing_ratio', 'hydrophilic_organic_matter_aerosol_mixing_ratio', 'hydrophobic_black_carbon_aerosol_mixing_ratio', 'hydrophobic_organic_matter_aerosol_mixing_ratio', 'sea_salt_aerosol_0.03-0.5um_mixing_ratio', 'sea_salt_aerosol_0.5-5um_mixing_ratio', 'sea_salt_aerosol_5-20um_mixing_ratio', 'sea_salt_aerosol_optical_depth_550nm', 'sulphate_aerosol_optical_depth_550nm']\n", - "and model_level=['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60']\n", + "1 product built EOProduct(id=CAMS_EAC4_20210101_e86a2b26cd2bcf90eaa14d1b9f58592169b10a36, provider=cop_ads),\n", + " having variable = 2m_dewpoint_temperature\n", + "and model_level=None\n", "\n", - "1 product built EOProduct(id=CAMS_EAC4_20210101_63a610e702b9132d1fca308e390ebd89f336f812, provider=cop_ads),\n", - " having variable=temperature\n", + "1 product built EOProduct(id=CAMS_EAC4_20210101_5cc16f9d5dbf711e31cda8c77c6efc5414a1c4f1, provider=cop_ads),\n", + " having variable = temperature\n", "and model_level=1\n", "\n" ] @@ -59,22 +96,22 @@ ], "source": [ "# Request for all parameters\n", - "products_from_product_type, total_count = dag.search(\n", + "products_from_product_type = dag.search(\n", " start=\"2021-01-01\",\n", " end=\"2021-01-02\",\n", " productType=\"CAMS_EAC4\",\n", ")\n", "print(\n", - " \"%s product built %s,\\n having variable=%s\\nand model_level=%s\\n\"\n", + " \"%s product built %s,\\n having variable = %s\\nand model_level=%s\\n\"\n", " % (\n", - " total_count,\n", + " products_from_product_type.number_matched,\n", " products_from_product_type[0],\n", - " products_from_product_type[0].properties[\"variable\"],\n", - " products_from_product_type[0].properties[\"model_level\"],\n", + " products_from_product_type[0].properties.get(\"variable\"),\n", + " products_from_product_type[0].properties.get(\"model_level\"),\n", " )\n", ")\n", "# Request for temperature on one model level\n", - "products_from_product_type, total_count = dag.search(\n", + "products_from_product_type = dag.search(\n", " start=\"2021-01-01\",\n", " end=\"2021-01-02\",\n", " productType=\"CAMS_EAC4\",\n", @@ -82,12 +119,12 @@ " model_level=\"1\",\n", ")\n", "print(\n", - " \"%s product built %s,\\n having variable=%s\\nand model_level=%s\\n\"\n", + " \"%s product built %s,\\n having variable = %s\\nand model_level=%s\\n\"\n", " % (\n", - " total_count,\n", + " products_from_product_type.number_matched,\n", " products_from_product_type[0],\n", - " products_from_product_type[0].properties[\"variable\"],\n", - " products_from_product_type[0].properties[\"model_level\"],\n", + " products_from_product_type[0].properties.get(\"variable\"),\n", + " products_from_product_type[0].properties.get(\"model_level\"),\n", " )\n", ")" ] @@ -98,12 +135,12 @@ "source": [ "### Search using a custom request:\n", "\n", - "Here we use a set of custom parameters corresponding to `CAMS_EAC4`, which should result to the same request sent to ads." + "Here we will use a set of custom parameters corresponding to `CAMS_EAC4`, which should result to the same request sent to ads." ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -111,39 +148,36 @@ "output_type": "stream", "text": [ "Request using productType or directly ADS parameters result to the\n", - " same downloadLink https://ads.atmosphere.copernicus.eu/cdsapp#!/dataset/cams-global-reanalysis-eac4?date=2021-01-01/2021-01-01&area=90.0/-180.0/-90.0/180.0&class=mc&dataset=cams-global-reanalysis-eac4&expver=0001&format=netcdf&model_level=1&step=0&stream=oper&time=00:00&variable=temperature\n" + " same orderLink https://ads.atmosphere.copernicus.eu/api/v2/resources/cams-global-reanalysis-eac4?{\"date\": \"2021-01-01/2021-01-01\", \"format\": \"grib\", \"model_level\": 1, \"time\": \"00:00\", \"variable\": \"temperature\"}\n" ] } ], "source": [ "ads_req_params = {\n", " \"dataset\": \"cams-global-reanalysis-eac4\",\n", - " \"stream\": \"oper\",\n", - " \"class\": \"mc\",\n", - " \"expver\": \"0001\",\n", - " \"step\": 0,\n", " \"variable\": \"temperature\",\n", " \"model_level\": \"1\",\n", " \"time\": \"00:00\",\n", - " \"format\": \"netcdf\",\n", + " \"format\": \"grib\",\n", "}\n", "\n", - "products_from_ads_req, total_count = dag.search(\n", + "products_from_ads_req = dag.search(\n", + " provider=\"cop_ads\",\n", " start=\"2021-01-01\",\n", " end=\"2021-01-02\",\n", " **ads_req_params,\n", ")\n", - "# downloadLink property must be the same with the two request methods,\n", + "# orderLink property must be the same with the two request methods,\n", "# as they are built from the same ADS request arguments\n", "if (\n", - " products_from_ads_req[0].properties[\"downloadLink\"]\n", - " == products_from_product_type[0].properties[\"downloadLink\"]\n", + " products_from_ads_req[0].properties[\"orderLink\"]\n", + " == products_from_product_type[0].properties[\"orderLink\"]\n", "):\n", " print(\n", " \"Request using productType or directly ADS parameters result to the\\n\",\n", - " \"same downloadLink %s\"\n", + " \"same orderLink %s\"\n", " % (\n", - " products_from_ads_req[0].properties[\"downloadLink\"],\n", + " products_from_ads_req[0].properties[\"orderLink\"],\n", " )\n", " )" ] @@ -158,8 +192,9 @@ "```yaml\n", " cop_ads:\n", " priority:\n", - " api:\n", - " outputs_prefix: /data/eodag_data\n", + " download:\n", + " outputs_prefix: /my/path/to/data/eodag_data\n", + " auth:\n", " credentials:\n", " username: my-ads-uid\n", " password: my-ads-api-key\n", @@ -170,22 +205,36 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "93a91be8c0b64d7686f2ec1ff3a2570b", + "version_major": 2, + "version_minor": 0 + }, "text/plain": [ - "'/data/eodag_data/CAMS_EAC4_20210101_63a610e702b9132d1fca308e390ebd89f336f812.nc'" + "0.00B [00:00, ?B/s]" ] }, - "execution_count": 4, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "'/data/eodag_data/CAMS_EAC4_20210101_5cc16f9d5dbf711e31cda8c77c6efc5414a1c4f1'" + ] + }, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "product_path = dag.download(products_from_product_type[0])\n", + "product_path = dag.download(products_from_product_type[0], wait=0.2)\n", "product_path" ] }, @@ -193,17 +242,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Open dataset with `xarray` and plot using `matplotlib`" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "import xarray as xr\n", - "import matplotlib.pyplot as plt" + "### Open dataset with xarray and [cfgrib](https://github.com/ecmwf/cfgrib), then plot using matplotlib" ] }, { @@ -245,6 +284,7 @@ "}\n", "\n", "html[theme=dark],\n", + "body[data-theme=dark],\n", "body.vscode-dark {\n", " --xr-font-color0: rgba(255, 255, 255, 1);\n", " --xr-font-color2: rgba(255, 255, 255, 0.54);\n", @@ -474,6 +514,11 @@ " grid-column: 4;\n", "}\n", "\n", + ".xr-index-preview {\n", + " grid-column: 2 / 5;\n", + " color: var(--xr-font-color2);\n", + "}\n", + "\n", ".xr-var-name,\n", ".xr-var-dims,\n", ".xr-var-dtype,\n", @@ -495,14 +540,16 @@ "}\n", "\n", ".xr-var-attrs,\n", - ".xr-var-data {\n", + ".xr-var-data,\n", + ".xr-index-data {\n", " display: none;\n", " background-color: var(--xr-background-color) !important;\n", " padding-bottom: 5px !important;\n", "}\n", "\n", ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n", - ".xr-var-data-in:checked ~ .xr-var-data {\n", + ".xr-var-data-in:checked ~ .xr-var-data,\n", + ".xr-index-data-in:checked ~ .xr-index-data {\n", " display: block;\n", "}\n", "\n", @@ -512,13 +559,16 @@ "\n", ".xr-var-name span,\n", ".xr-var-data,\n", + ".xr-index-name div,\n", + ".xr-index-data,\n", ".xr-attrs {\n", " padding-left: 25px !important;\n", "}\n", "\n", ".xr-attrs,\n", ".xr-var-attrs,\n", - ".xr-var-data {\n", + ".xr-var-data,\n", + ".xr-index-data {\n", " grid-column: 1 / -1;\n", "}\n", "\n", @@ -556,7 +606,8 @@ "}\n", "\n", ".xr-icon-database,\n", - ".xr-icon-file-text2 {\n", + ".xr-icon-file-text2,\n", + ".xr-no-icon {\n", " display: inline-block;\n", " vertical-align: middle;\n", " width: 1em;\n", @@ -566,42 +617,67 @@ " fill: currentColor;\n", "}\n", "
<xarray.Dataset>\n",
-       "Dimensions:    (longitude: 480, latitude: 241, time: 1)\n",
+       "Dimensions:     (latitude: 241, longitude: 480)\n",
        "Coordinates:\n",
-       "  * longitude  (longitude) float32 -180.0 -179.2 -178.5 ... 177.8 178.5 179.2\n",
-       "  * latitude   (latitude) float32 90.0 89.25 88.5 87.75 ... -88.5 -89.25 -90.0\n",
-       "  * time       (time) datetime64[ns] 2021-01-01\n",
+       "    time        datetime64[ns] 2021-01-01\n",
+       "    step        timedelta64[ns] 00:00:00\n",
+       "    hybrid      float64 1.0\n",
+       "  * latitude    (latitude) float64 90.0 89.25 88.5 87.75 ... -88.5 -89.25 -90.0\n",
+       "  * longitude   (longitude) float64 0.0 0.75 1.5 2.25 ... 357.8 358.5 359.2\n",
+       "    valid_time  datetime64[ns] 2021-01-01\n",
        "Data variables:\n",
-       "    t          (time, latitude, longitude) float32 257.2 257.2 ... 243.7 243.7\n",
+       "    t           (latitude, longitude) float32 257.2 257.2 257.2 ... 243.7 243.7\n",
        "Attributes:\n",
-       "    Conventions:  CF-1.6\n",
-       "    history:      2022-09-13 14:38:48 GMT by grib_to_netcdf-2.25.1: /opt/ecmw...
" + " GRIB_edition: 2\n", + " GRIB_centre: ecmf\n", + " GRIB_centreDescription: European Centre for Medium-Range Weather Forecasts\n", + " GRIB_subCentre: 0\n", + " Conventions: CF-1.7\n", + " institution: European Centre for Medium-Range Weather Forecasts\n", + " history: 2024-04-08T21:46 GRIB to CDM+CF via cfgrib-0.9.1..." ], "text/plain": [ "\n", - "Dimensions: (longitude: 480, latitude: 241, time: 1)\n", + "Dimensions: (latitude: 241, longitude: 480)\n", "Coordinates:\n", - " * longitude (longitude) float32 -180.0 -179.2 -178.5 ... 177.8 178.5 179.2\n", - " * latitude (latitude) float32 90.0 89.25 88.5 87.75 ... -88.5 -89.25 -90.0\n", - " * time (time) datetime64[ns] 2021-01-01\n", + " time datetime64[ns] 2021-01-01\n", + " step timedelta64[ns] 00:00:00\n", + " hybrid float64 1.0\n", + " * latitude (latitude) float64 90.0 89.25 88.5 87.75 ... -88.5 -89.25 -90.0\n", + " * longitude (longitude) float64 0.0 0.75 1.5 2.25 ... 357.8 358.5 359.2\n", + " valid_time datetime64[ns] 2021-01-01\n", "Data variables:\n", - " t (time, latitude, longitude) float32 257.2 257.2 ... 243.7 243.7\n", + " t (latitude, longitude) float32 257.2 257.2 257.2 ... 243.7 243.7\n", "Attributes:\n", - " Conventions: CF-1.6\n", - " history: 2022-09-13 14:38:48 GMT by grib_to_netcdf-2.25.1: /opt/ecmw..." + " GRIB_edition: 2\n", + " GRIB_centre: ecmf\n", + " GRIB_centreDescription: European Centre for Medium-Range Weather Forecasts\n", + " GRIB_subCentre: 0\n", + " Conventions: CF-1.7\n", + " institution: European Centre for Medium-Range Weather Forecasts\n", + " history: 2024-04-08T21:46 GRIB to CDM+CF via cfgrib-0.9.1..." ] }, "execution_count": 6, @@ -610,7 +686,11 @@ } ], "source": [ - "ds = xr.load_dataset(product_path)\n", + "import os\n", + "import xarray as xr\n", + "\n", + "# the product ouput file to load is the only one located in \"product_path\" directory\n", + "ds = xr.load_dataset(os.path.join(product_path, os.listdir(product_path)[0]), engine=\"cfgrib\")\n", "ds" ] }, @@ -622,7 +702,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -631,14 +711,12 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEXCAYAAAC3c9OwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAADViUlEQVR4nOz9ebh121UXCP/GXPu896aFQCCQENovAcEKAWlFURoVqoDgp1IgFaSRgIQPEEQlUIpAbEBBqSqgwhdprKCGByIRQ9FYgNJDAgSSgNKEJuQDA5iEe+/7nr3XHN8fc4wxxxhrrr33OWe/9773zRnPc87ee625ZrfmHL/RzTmJmXFN13RN13RN15SpPNQVuKZruqZruqY7k64B4pqu6Zqu6ZqGdA0Q13RN13RN1zSka4C4pmu6pmu6piFdA8Q1XdM1XdM1DekaIK7pmq7pmq5pSNcAcU2BiOjtieiPiGh6qOtyTdd0TQ8tXQPEmzgR0auJ6MP1NzP/JjM/mpnnh7Jea0RE9xDR84noN4jojUT0c0T0kSnNhxHRLxHR/UT0g0T0Du7ePyWi/yrP/hIRfVJ69nlE9MtEVInok4+oz9OJ6KVS1kuJ6Onu3odI+a8nolcfkRcR0T8hot+Xv39CRHTZul3TNV2VrgHimh5utAHwWwD+DIA3A/AlAF5IRO8IAET0eADfCeB/BfAWAH4GwL91z98H4KPl2b8G4F8Q0Z90938ewGcBeNmhihDRDQDfBeD/AvA4AN8C4Lvkupb1LwF84ZFtexaAjwXwngCeJvX8jMvU7Zqu6STEzNd/b6J/AP4VgArgAQB/BOBvA3hHAAxgI2l+CMBXAPgxSfPvAbwlgBcAeAOAnwbwji7PdwPw/QD+AMAvA/i4B6EdLwfwl+T7swD8mLv3KGnfu608+2IAXzC4/iMAPvlAuX8ewGsAkLv2mwA+IqX7cACvPqIdPwbgWe73pwH4icvU7frv+u8Uf9caxJswMfMz0RjaR3MzK33lStKPB/BMAE8C8C4AfhzAN6FJ6K8C8PcBgIgehQYO3wbgreW5ryOidx9lSkRfR0T/feXv5ce0gYieAOCpAF4hl94DTdLWNt4H4Fflen72EQDe1z17UXoPAC9nZr9fzctHZV0gv593v3/+Cnld0zVdma4B4pqOoW9i5l9l5tcD+B4Av8rMP8DMOwDfDuC9JN1HoUnK38TMO2b+WQDfAeCvjDJl5s9i5jdf+XvaoUoR0RmaJvMtzPxLcvnRAF6fkr4ewGMGWXwDGhP+3kNlrdBFyrpMfq8H8Gjvh7ima3ow6RogrukY+l33/YHB70fL93cA8P5eEwDwiQDe5tQVIqKCZiI7B/DZ7tYfAXhsSv5YAG9Mz38VgD+OZgI7asdKie7Sv7c/tqyVvJ7j8vqGlbo/FsAfHVu/a7qmU9M1QFzTKZnPbwH44aQJPJqZ/8YoMRF9Q2K6/m/V7CMS9fMBPAHN97B1t1+B5uTVtI9CM4u9wl37BwA+EsCfZ+Y3HNs4aYv+/abk+bQk4T8NR5ismPkfurw+c1R3+X5Z89c1XdOV6Rogrul3AbzzifL6bgBPJaJnEtGZ/L0vEf2xUWJm/szEdP3fPtv71wP4Y2i+kwfSvRcB+ONE9JeI6F4Afw/NT/BLAEBEXwTgrwL4cGb+/ZwxEd2Q5wjAGRHdK9rKiH4IwAzgcyT8VjWZ/0fyKpLXWftJ97oIpxF9K4DPJ6InEdETAXwBgG++ZN2u6ZquTg+1l/z676H9A/AMNEf1fwfwtzCOYvrrLv1XAPhm9/vDAfyK+/2uAP4DgP8G4PfRmOXTT1jfd5D63UQzyejfJ6Y6/RKa+euHEKOsGMCt9Oxz3P0fkjT+78/uqc97AXiplPUyAO/l7v3ZQV4/tCcvAvCVaBFgfyDf6bJ1u/67/rvqHzFfmzev6Zqu6ZquaUnX6uk1XdM1XdM1DekaIK7pmq7pmq5pSNcAcU3XdE3XdE1DugaIa7qma7qmaxrS5qGuwKnoUY+7wW/xpEc81NW4pmu6pocB/fYr3vA6Zn6rq+TxFz7kUfz7f3Dcpscvffmt72Xmj7hKeQ8F3TUA8WZPfBQ++V//2Qs9M1G9VFnlAmvLDpVRDtyfDpS17/mrPXu4bwod1w/H5DV87pLv53bRzBdTuOcjFfTK6ztp7Muj7qnPjHGel3nm4HNH9kvdk/9V874ofcXT/t1vXDWP1/3BjJ/83rc7Ku3Z2/7q469a3kNBdw1AzEx4w+7eg+mOYWrTnjRlhdmN8h0xxmE6xwgz+GyxZJSesc88LYBA7+uE9/czKOQ65vqN2jBi3CPQHKfbA0rHvJtLgs0p6BDDn1cYfR085xlfTVst+XtnmEO5AUzc1zUG7q97AMjpQ31cusygM5jlPhmB3aj9Le/DgLEPPB96Ysx8Zwkxp6a7CCDKAiCOYTj7tIGRhL1koGPmvJre/fbM0qeb0vUtT/KsXOcp1Lt6gKG6BA25P4GNMXQQKVbeWh3WACxe9+nH+fhyPY1BaPxe9gHMqF6noENS7BgAxozUGDNF5qrpKwrOaA5lav/MXDD557i/w0IVlYuBgJaz+C2fCgL2W8rv9ez1WdSRx0ATAWgAFIN+PFarOAZMHmxiAPWkO9XceXTXAEQF4f7dPeHaIfNNTLvGkDIA7AeEzNj0+UJrYDCW7jXNCFDs3oixU0UBR82Dp8ZAfFmgXrbOPe75eeDIpPmOQKHXyd0bpMuMPjP1BbCsTMR9YHDIxHY0DXjTyBwTgISSJI7MoPW3MGbqADIbSHQmPXMxoAcrKHBn5F4DEKDwoOABoTIFIGj5R+YfwSaWETWMMVhkgDgEBKfQFPaZwW4X1YdQo30w6K4BCGbCeW2S9kUH2yGz0+h+CYx9HTQW9wwwlsAQwSACSweFleuO8Y4ApDN1TV97ucwoVLFF0zyUeVdQAwt2YEEV4IKJKipKBIkEDhPqAhAmd2/Ul1MAllG/7weWfc9aHkf6To6hbPKZV8wzBgjkGDXINAkDDmrMuoGEMur2TgJQ8NK8o6Bgn1LGVubFjBIAobJPTwEA5gwKTIHJj4Bp2Ccnoov6Lx4M0xSDMd/lO1HcNQBRQTifp/B7keYKg+YQSIzSHfU9AcYIXHyaDCYeSDyIeABZAw8FjgwaATDku4JFY0wCHmCAxmafDA4eGDIgBC1qxbSl7fJ0rN9nCDQHQOKQ9mFAEPwAFO+Tfu9MVp+b29vADEJhxhnNjTGjoKBgAjcmTWi2DCqo3PqkchSElMlveVoAgweFbS0LQFAwqFwMBBYag2ky+01Ia3Ssdr43j5T2mPkdTWGnBwwGsL3WIB4+FAf3yF4aBwmfYNDQCDgWGsX4936gWPkEB6BYuz4RL8BDgcNrHQoaGTCUOZ/RjILGYMAtrzOahWk1ZnVGaOYpWpqlRuDgQWGpWaxrZprH8trhd5DTLMFmkcXe/IGBmYmAyst7M2obe6JhNO2gGmBksPCgAK7JD6C+hdLNVgIO27oRhl+w5Qk7njAzYVcnAwV/DQB2XAI4AMfNnd5vy/e1b1y370vTqE+baR8YeBDT/JQPeBPcoXZclq59EA8jqhwBojIZCOTBD3SAWBs0hwBkBA6e/ATIaUeTiAagsA4QMU3WMvSa/p7st9MsHGBMxCi8BItZzElnNEv5vT+9n8KDBHjsU/DgoMAxJQYS/BUHw3TX7+8DhAwGUYM5npZSLTDRMp+JGTM1MCjg9htkfaUmI6BgRuuDWcx3M8Q85LUTZehOc9jWDW7VTdMiRFvY8oRdnUxL2NVpAQg6T/zcaW2JnTRm9GksuvGWr7X0daj5HkvHmMC8ZpTbcGpwYODaxPRwIj/Q2Q2YubZBxHZP0ssAGgFFfu+n1jZ8ZKNOIEqTh6jd88BBDhDITVAPFGvXNmUegsamNOZ/RrOBxQYztjx104cARQeIgjPsjMmpuWlCXDg0UcUZZgODM9rhjGozQUldJrADiv3AECNlxtcz5fwqR5CYncP+sgaDXH6uW3b4hmdTxJFpFEzY8gbnPGHLG9zkM1S5dpM3uFXPMHPBLQcO53WDmQnndWOAsKtFtIeyAINcHy94bEr3W21KY/obFT6o2vczGT8bHT9Z8FjxiyllYSL4bgbRVWs+lJ2Y3rZ1cu2VNhNhV6PJ7BR0dxuY7iaAYCzAYZaJ4YHBg4IOFAUDDgCxzzR1tapmcJjRwaF/RuBogBBBAgCmUlfBYiMTbyNp6kwdJJhQZXLvqkY5FUB8B15Fn1x9s5MciFFNTfuIv0fgcCbX2nU2iXsiYFph9jMYZ2DMCvCkjtler2F00TDiKLbpkBN0DYBG1xe+CPteHMMj8RX0aKEtN5+BgkLlEsBhy5P93apnuFnPsOMJt+aNgcR5lefqhF0tASCy4KTkBY7KZGDghY1NaYCwMTCoOJOxpNcm+a6goHm3ezWAArAfGHw/roGDT9cjtpYWg4WmdIkFeyNiMOZrE9PDgxhogAAKoDDXEjSGrEWwM0MBWICG5X/Af3HsMMlDsw6AAWgTy98L4ODAQhm51ywmmeCVhMnPfdKjdjPUBhXbOjUJkAu2aEefzcxm/1ZwyNFFZoYS09EZ7RpjMACYuz9DTUry3BlV3EBFIeAMjImAM13UR2RaSqYqUSNtLQBLp7N12ppGcUhi9OeVjgFmPXzzYLir1T1qCZpOTXX624PEzIRbfIZz0RYUHG7WM9yqGzww38AMwgPzGc7rBufzZgEMs3znxFSVCnFj5QQUjmZODw5qnlz6wCKT70xd1u6YZkYXOtzWhwFnf8MxTvbKZaEx+d+nIGZge3fjw90EEG0AqDlJgSGDAhsAdAnDg8GaFtHKSGWOBtqBAZMfIXeD0CdoBQVgABqY6LWpVMwsNu3SrrOASq0kEUnORizAgALTIFBgIFGoNnCgdm+0UK1IlJOaD27QrvsVqIHEDZrNv3CGGTdobuCBFqmj4KBaww0iFABnVDChgcNEI6bLqMKcKhiFAVAHiSipk2NUUQoF9jP5xToFt35A30t/bn018hqNFp41zaJIuKtEHPFkgHGTz0xjqEy4v94QgDhD5YKb8xnO64Sb86aBQ22RTLMAxEjo0S5magJFxbpPJzuA1V8CVMy8WfgVgCVwHIoa03L69/Gai1HYbR0CRNQYDCRqOYm5uBGtapZ3C909AMHAbp6CKSkDw0h78J/A5UHg6EHH0RfBTB0liMECFP6BmakBhb8mQIhSgQoQEZg6UKC042SrSIA7FGxQsavFpMLKBTs0kABKAxdT40WLwHIzsklNSQIOZwICCgYAFuDgfQ1F2jLJ5xkVnKGI9lCGGkQhxpZ7XWYwJhBmAYfKGs1TLDII6KGleU3CSJJv+ZYAEromoeXlIocuyGT2bbfhF7HNAg5qW1fNQbWGXZ0MHM7rBjsuuLlrmsN2nsz+PtdW95HmUIhBaNpmBYG4gXQlQnGm2h0KCvfxUysNou32A8FFQln3rbPIobY5GCWnGflaWLSIUxEjaq13I901AAEQ5koHgcGblPTdBuZ+AeZ/EV+EF4qZaRgBpdcZEukYyhU7uUhzRRyIcy1NCkTTKKbSHGckwKMTHmgMQNunktW+8E6gMcwzBxJqMmhaQzU/g2kOAhxZc8ggob6GEThM1L4BgK5UrTxjIkJ1nT6jmUc8OJxjCqCgYDACAW/GGEnxZgKS69kmfhkabU0RTSfFNIfmkJ7Mv3CrbhYaQ2XCrd2mrXmoLXpJx3utUQDSMcfUBYoJtQkbpdqYQdXtWERjGwBDpmNDu5f9QcPfIyf6KBJxNS3HCEZvdj4lXWsQDxNirGsNs5sozBSBYeigXinjgoPrUBjsPvIgQaJZQHwPsS5s2zoUiE9C71OXEIFkKuAW2VG5aQ5giMnKbengqKSQ1GKhqs20VFBxg3YdDFKUUv8U7QEU2OwIHPS6gsTMLKDA2IKxZeAmF9Matjw1py6mYN83oDgABOe8EXBpaZo/IK5KbvVYAsS+DRdHm98dcsAqQOy4aQXndZLIpOaAPhdtYa4F23kSfwOhmol1qR1nXxYTgFJAYECAhdTk5EBhX4j22vW175nWmP2he55G8zKDSecLp2PojGuAuK1ERO8K4N+6S+8M4O8BeHMAnw7gv8n15zDzS/ZmdkFePAKHNV9Eu7AcCBlIsumc7Tpb2oF5/WhSkKjCXMkx+2YigC20qiymAwWXZEPeN2ln0OrAiNFLbCumFw5pck5si2RZljmJz0HNSgWR+VZUzFxRUbFFxS2umMG4yYSbXHCTNw0guGCLSUBiEwBBHb6HwED/gBYqqb+9uSMzBB/VFUM3Oe1TtMzDO1qBbmP3IZrqbFZQqNxWSO/mybSF3Sy+htoFoBEjJOKmIBCjFNEmuKKUZpZsINfMUz68eh+N1vqM1vj4+0przPqiUUbHrLK+XXRqjeROo4cUIJj5lwE8HQCIaALwGgAvAvApAL6Gmf/p0ZlRGyiV1H1GgSkvmTmDhVmqhD5K1yq6BJB2IbcHIUxJvQkZKFo5zszknvPmAMveX0sgYRmQ0xq4OZlbSGOPdlpoEOxCHtM41zxGFHebjeGutjL6SMSewSisEViEvsNTta2Ud5hxk2fc4oqbzNgy4SZPuI/PbE2ADw/NgKCMvmsPceWxBwNddbyrE7ZcbKFZ77MS2jxakDhsp2P+YUEXZ2drjLjRSCTVFubaTF4KCsxA1XDuugy4iGtv5DcRmEWL4IJJfFUzUQiKOIbW1u4s7l9Bm855HcpP66LbwygT14itU2kRFYRzTIcTPozpTjIxfRiAX2Xm36CriNmO+uBF2+ZA57UOEAUJAN3wRMLEGQuzUzZHDcxTvmyWcgHqgKRF6yODydRcBX1yW3WRzE5iS26TRRrnTQYqBUrkkiUhxgY1mJmA2rZfKECR7R22FSilrabe1g1QdtjyZGsbmoS8Eb9Dk+BBDRzOuQGJX3FdQThD1Ua0EFquovE0gJhAFrG0RcXMjPuZcR9PuL/eg/v4hkT23MDNeoab3KJ71Eew5U0wDW3FRHOLz2wvoi0XWz9QBQxUQs/hobOz6SsVMcMALZpsotrXDhAPJVpl9mYLT3bxvFbH+xHmWjDP4gNhNE1Bw7e5a8NrjM8YK8l3kvEn40O1iaHg7ZtiY5f7eHSahjdfjcK2Q120L1cEieFzTEdrNsv8+GTA4Olag3jw6OMB/Gv3+7OJ6JMA/AyAL2DmP8wPENGzADwLAG689WP3OqgzBTXcTa4Q4eSvuYnY71tNlvknH4Fn+Bop2H6TuyZaDCDA0UNdLQ31ycJMKKUxXtQCIsZcgan02KMCmBOyoPdFAwa/cKjYuovKpYW7okXfBH8FGDOpSWcDYCefnWawOJQLZnFcVxBm9XWAocvy/PdJGj9z9zFsmXAfn+G+egNv5HtxX72naQ0CDhrlkwHBbzlxq26GgKDrBdSev50n7OZm8tnNpUvmbnz4MONmr5cw38J2zYOEmY8GizZ1y4y8JmdWU5GmrSSgIEAg9+HGb/j0JOOqf2dQEf+DjK9KnSH38euycMIM2bhUsCEzXXmhBYi7AJiQ4wpqi0R7v9p1dE1btV6vDalmrHmsmZS8/0F/n9JRfe2DeJCIiG4A+BgAXySXvh7Al6O9gy8H8M8AfGp+jpmfB+B5APCop7wth0Vxg8kd7LMJFDpYRFBATu9BQdPsG3Aq9gNgmxycfmMwkfTZFm2i1/S6AkUVYNCJOZUaQIK5fWdh8t5hbaaOEN0UgQKoFsk0cz+YZosJE1VsuQ8h3SICAM6w66Gw6rDm2kIpwZIri29BTFLcQ1bPMeH+eoYZhDfWBgz31Xtwf70nrA1QQOgaxGShoBWEW3MLBW0LyZoNP4eEngsw7ObJJHWuhDqXMA685F1Kl75LaQBRSjXwAKKpI0cW6VjNUXXK/GttL5mrXKsOENSU5AFhbQwG7QHOFKkjcY807jUGeZ7FDMUClGE8AiBWoUbDsyNYqHau/aKk5lJyDL8wG0homprSq59nzb+xdFKvN/fiRMOAhbuJ7giAAPCRAF7GzL8LAPoJAET0jQC++1AGLKYhH8Wx0CBsQnYN4aDpaAUQwgTVQcrhpz3mP0kkN29aMimPeuFMzozUZ8/BiQkUMzlNpTmuieU+k9j5fRRTr2y2h6ujdUMIB9a0TecKznlj2kFFQeGKLbUhNeEMhST8lXW7jYotZkzM2NIOYLgIp3462s26wRaTaAuTAUP7uzE0G3m/gd+H6HyeFlE/u1ls+rPY9GvBvCuoc0HdlQ76mRFrvxdu2hABZaqgSQBDQcPMLDqOOhBkAWU0Fg0QQIAABBig2scnhbG5h7QSUl+A2vgk1yg/Tv1jKrQUAsBtTBYJwy6Hx2PLhzvTT9rACCw8u62tWANaDzjs5o9q1JmWINHB+hTUZtk1QDwY9Alw5iUieltmfq38/IsAfvGYTKo48fS7SmQWD65Sm5toHQQcOCTGb0yCqQtkXnNIE5Xs3+DTHnMTV34G8BBpzVYL64SV2bg2MVE1f3HVE8liutK332C3wEgltMGc0Wgmf1/NTLo9RTszouKcNsbk/ZbhNzXKCdW24dC9evLhQRqS6kFhK76H++uNsFhM/Qhb26GUFqCwE+fu+a6Fh253skZibhE/825qTGNXgJnAM4HmBgyojSEbZuurLty6tjC4AHMpoIkxO4BozHMFJGws0nL8OYCApCOpR/OuOkHkKHBI4001AWBpU3LpbfyV/pjyQa5iShLJg4qCHlAKQM2I1U2oAoxRq0AAC2haNAbetYGW1sylMhd8VGB7tmspSh4UNN/boUWcwsRERE8G8K0AnoD2Zp/HzP9C7v1/ADwbrRv+AzP/bbn+RQA+Ta5/DjN/75UrMqCHHCCI6FEA/hyAz3CXv5KIno7WWa9O94bEvNQahrZbVdWzJpC0gHDNfrt76PeXjepMv89Id9v+6X1GmMzy16RVNUWxaRWyaY75LEhMG+KKaNCgUiZ6mKuGvoJgsRdRg2hagmoNnlq6YtLcGYBbrAuqamBYPvTT79mUDydS8msMzsXJfH+9gfvne2yh2ANzBwf1I6hDeSd7cI18CdvdhO1OtIW5tDEwE3gu4Fkk812zxxUFCBZliaOi17qAGuMUOz5PAhgTo04CCFMbLFT6w6tA4MeZgABVRIDQNHn87SMnmLTx1lBuVXgmN5w9MFADRQJB9jeBRevZQGvjsFaTX8wprKZQBQqgg0GsS/8x2ukYgNtqxptdWxQcsAxvHW3OGczJVyQWk+YJaIfmZ30ZET0GwEuJ6PvRAOMZAN6TmW8R0VsDABG9O5rP9j0APBHADxDRU5l5ue3BFekhBwhmvg/AW6Zrz7xcXj0ixGzIFaizmA0UIKpoAvq5x1y010TL4RF3g/p11QCGGbgvBgpsv7m0idX9EcIn1Jwk+TMXkV5lzoqxtjifxzETY3T0qafurygL22s3EfRnbZfXPceIziBs9RwDmXAeFPzKYV0PYOGfab8hXSzmfQnzrgFB0xLaeKCZgJlQFAxmAs0A7UgkdizAQYmL/E2Ng/JE4EmAYpJ3MjG4qF9ooIHm7w4M2ieZsT3UJZmV1sdfT2D3yAk7Ln0USCQ9Uxt7Mg5FzGh1FuEEaNoECM3sxDB0CNqtgoyvo47fPeNR7+hOxzov+r5j6ONdEpcDqkH2+VyVGFdbVW/5NGvJa+X7G4noVQCehLYW7B8z8y2593vyyDMA/Bu5/utE9CsA3g/Aj1+5MokecoA4JbEHh0odHAQUugkBMJuuNxkBi0nYrq0UKOOM8oR0CgRjPBgXkqleNJuxk+D8JC56zWkVFqYo6wikCepHaJ/jJhyKT2+gUPq2xi5UVu8DcSvrYT5uW4uc/5YnPDCfSXTRJiwO2+lKYRYnsmynolFGunrYO5armIuABgTYtU/aNaZMVQBhRhMSavte2lmqkgbL964APan5pYFD3QC8aaDBhds4K10rJMCAwJuHjOk7MAhahAGD+36A+lhCFFSsIvG3gQIBXMh8LKZdCyMnFmDURws3bcoDlvon0M1O6NUImsHavPDUo/56pBSzBAYoaIjGrH4OL6CMtvY/LV3ISf14IvoZ9/t5EmQTcyR6RwDvBeAnAXwVgD9NRM8FcBPA32Lmn0YDj59wj/22XDs53V0AAXRwmMnAgcWu3CTHDgyqRYTJxynDTBS/ZzWZ4KQ2xngapHz7xKc4iVWI8xpEWy7drxWR5DQjFVk1H4dYeVGTPxxm3147jalPsnxtCm3IjN+vGN5yX3cAwMxDukhM01eQbTh3a95gO09hszldFKa+A+akHaoJcab2bk0IILPhGyCwfPeagoADZYDI78oDxKSaBMyRXDdik58QxsZinHmGn8Gg9jTD3wPyDD8CBEzSXqTX8VE0Kgk9/FX2QyFuAgiH+nYZippDoI8/K5djoQpU4+qvk/PjMBroElqfKDBU9z1EQLnS2hb5F99g8RC113M0QLyOmd9nXwIiejSA7wDwecz8BiLaAHgLAB8A4H0BvJCI3vkKVb4w3V0AYT4F52tQYNDJtgYOCSCG5gWnHRztm1qZFcHJvbgh+VcaaxAV0YE4AeDmHKRUoD9cCNi/iVpxANI1hFag+iA81SQ9+X36NZpIzyjQ1cEaaur3JGIm209ouxP/AevK4KQViJlQzUSYqdvp1VTk3qsx38yEE0CoFkEHpHYFBTU11U1Lp+MOBPAkmp1/pU57WIKE+9R61XhtNC4XwBAYf7qO/l0BAWh5s4wrC39lljaJj4ubU5on0Saot1k12ia8xDrEDhjT/sV9ZGG1IAZxc4SrCZWphXB7kNBn19ZGnFqbOBXoENEZGji8gJm/Uy7/NoDvZGYG8FNEVAE8Hm3HiSe7x99Orp2c7hqAaIxEJUsBCI1McWBg6UViyiGrZtc9VN5oXDAAUJwPg+8jQNLrujaC9J9NcuqO0UKgSaS3TUWPT+/gEsMt24Iuf3KYHgIDREAAYE5gAKhUsatn2NbujBv5KvSYy5tzO7Pg5rzBA9sz3L+9gVu7CdVFEfk1Buw0PLC8L3XSKvOfCWUHlB2Bdp3xq1Zg1/Rzdjxpz4scMef2mwOA9AeAOqH7HQpQzxpI1DMHHKSMdlnGYgxoW5y2kP0gVo9UFw8GbVy4MaPmoNKBwYNI/t4c732sKQCq6Ymn5m8JY9BHdBFMs2X1j0k9l2stskqzfDd2ieSXjOlaWpSYBmbsBqHFo9XWfh3K6XwQFNYBXZaohWE9H8CrmPmr3a1/B+BDAPwgET0VwA0ArwPwYgDfRkRfjeakfgqAn7pyRQZ01wAEgAgOyviBwM1VSFJVmdQOxE4NPoK5BEogsBCY1rQTrZcHifxF7KxwarZJrG4SkgMDwP/2++TE40qBZWig7k1kjmW3aVzf06bIvlfx2ZvzGe7fneF8bqaiB7ZnuHl+hu1WnMbiMG6cFh0QxE9AVSKJjPm77zugbJ2U7z+dBlB23HwJ6T2MJOlF3weNw4EEusZAc2OWddOYpDHuCuebGLzvgQbgtQiv2XhfiNUlazKeAReJTlIHunxvWkGvDzmwCFK+LnFxYEE+r0kK5AYS5CYQc9IqNL+gPdCwv2NDMAw/pfDeCFwFLApZSDGV2pRt8cWNtvXIa1BOQYzTOKkBfBCAZwL4BSL6Obn2HAD/EsC/JKJfBHAO4K+JNvEKInohgFeiRUA9+3ZEMAF3EUAwo4Uv2gIjGjNrpcybdVCxu2mZhyTxwUMSKhDVjX15jepXCFQ5MjW9r5Ka+9MQQ9sKQZM7YPAnzcWV1O0AITBQ+UzS1sWmcn5zOtVKmtZR8MC2aRsPbM/wwK0znJ9vMN+aGjPZlq4dCPMrYi6ibWO+ZSv+gF1i/AoSyvzVTDR3Rl523J7f8YKpsoSnmoSc+lOtZQY8AhCymssYpzqlqTaHdJP+CSR+iWzWWXu/Iw3CTEsVKDMvNRDNKwEdy5oMZX7qhmKGMWsm9GXIyq/lupqZzPyk2sPk8pL8mXukEwqcsCJAoVq5jc890jprI1yf5P6Sivr8qIjJS66RBmpI/eeBBgFo/5xGe2jVpJOYmJj5R7BgOkb/y8ozzwXw3CsXfoDuGoBo0mhfBcvO3xD9Bn2DPruEnsa0ivTixyaCpQaQaU2b2AsQXhrzmkJvagAEgAMomPBm6nZ/duSENubPAOTAnTU7re6NE/4EIM6rnF2wmxo43Dpr4HCrLUQrO1q8E6oA7QjTuTDGW8B0y4GEAUFjmt6noEy87AAwY9oyaMsNKHY1vPcWYaSMXjiknJbkTTDdn9EBRk0mvKEW6y8O6bZspAE4TbQAiOAwzuSZf2pTmd21JvYONQhSoLOxyTqAB2lhwODrZUPM19lpH+Z6mrQM3fWYW3uZojO76vNdc9jnajOQyOAQ5qziBPU1QKItUGlhtQ3g2RKvbeh36g37rldSP1xINIg+wKgPPrlv5FVPGYEeKAJIePXfDeZDNu5VzeUYzUFBwU/aMIFZVvLK6l0NqXSqdVazh7uMSt/4T9UEDh3WoseW6vfK7WSz893UTjjbTphvTsADE8qWBCDQAwa0uizMf9sY/XQT2NwEplssjL8DQbfNs7PVM2inQFFRzitoW0G7ChKbBROBN6UvcjMNQhkYNfs60J6p8invgafmLOVZgGDTgI6p+R6oNp9Qt9lLnso7dBWy68JVv8fs2pXShDEiq7W7s6pnzGLCs6sq6StIpHFHfoxBNAp5xjQKRjOhmeAi71HCXUFofeCBIggxiQJAQIAmtTOTvKvm6yAb8w3wRbvQ6b46AU9HuuHi3Ux3D0AAfcHRgUEWSZlI+0f90pKYQvjjwQG9LGa1foH/yoQ1tdrsypyciQiT0BbPJco+B38AvYJB5bYn0eh4xvi95TMl5yAz4Xw34f7zGy0S6eYGeGDC9EABbckkfe9wXQDE3MBhcz9j8wBHU5EBtQCfAEWZGTQzUBllW1HOZ9B2Bua5ry+YCDxNCItBiITZANz2iFi8J+kwAQiAJzl/gWWpQGl14gLQBh18ClBl0VzQWIYA0dtXPDh4P8roZCoVIkxyljIq+joGTa+3941XN45UKyGvQeizXruoAp6ljT2Ww1jUf6H52jj2NAAESoEky/rJ+K4RfJv/hPp9eeDEysKwUg/m4UQPBd09AKGSVrjmZ+TKcyqxSyayqUBXu4HloF0Dh8HgvpAgM9IYfDSJ0x6gmsPQZjXIeuW+7lfkt6cAOijoBoh+GxPdxVR3LVWA2M2l+Ry2E3D/BtN9BdPNHoZqDmXH/NTu3qKUgOkm4+x+xuamaAPVSfS+j1nAY26fmBm0nUHnO9BubrGPumd0KaCpgpMoqxvOoZTFPSiz37S4SiKAK4NrAW0kGqZQWyBXWHwSslBuasyumg2/r/w18gDpo5dmFi2CwxgzZq0/BHjUuWy+AN9H+ygPG3KfJEzeFac+DR2LdZI0FnLdI5+aZtsd520x3nICeo38oMAl2oOZypwvJPg79k35E/NyRtsa5m6mu6h11NfcH0g2vKYSmcR8E9zE18lNPb6dfVac8tGfR4LDwoREfaKN9v3xNuVsb/XRTF5z0Bj3vHurnWk8F9x/fiMcdM8AuLbN7XimEAFCk9ucjtAXJ24n8LZgc1/B2Rub09mqUb2UjM4cTYNgbG4yplsV0/0zynbuAJClaAWN2sxJ4AYQ2O6A3c40jbboa2ohs7nj+8ZBIPFHeM0CpYnKbQFZeylU25qQUgtQOAKFhrmKj6KoFCuSd6iAA0gzm5mWxU5T5QETp242krxiu7oG6k1HTHFMejMp2fh3n9yVFd19QNtRxNdg60JU+yiwgACbM24xXqimBwQDiFEidNeKzQ95n7Zinfr82UcnND0xbtcK7TuH7h6AYLSFU2EGrH1y/K3P68uWKIlmPojLzwjcGaX+efXdqech71wnV1zQFuy7OAGzOUk1CJEivVlpLWBEN+nbcQFq3x2zoi1Q0/MQtrsJ83aydSHMskZhLm27CoYt3qsTy1oMmcC6eO28YJqBzf2Es/vEgQzHnBQkRIsoIjGXnQOImxXTrRnl1q4BwDwACBFpaWZgN7ffu137XqusngIwTcKFqeehmoV22KQhTAWY5HTszdSYHGBhn8QM3pS2ZSFXcCGUCvDGBQjVJl23bdVlXYBoYp5ZR4BonN7AYe7aA+WxQ4Dui2TtcPdZJO3gw3Jm8mw+sqmgYKPf1XSjddUhn8N+C8BzL2ep8fYIsH2+iFWzqyBDAzA2QFRA08V8wQQ1oK6BnZahnyjM9Y6luwogyjn1yBSRLMwso+NCF/X4wWTgoFEy7TsjgYRNcIaq9CEqh7E0cwFhTA61Bamjn1x9QRL6JnCFwSK5a5tskz6V5l2xVUXIUsFzOwfhAUmhW1dsdxO22wk8E+abG9B5CSvOy0wo54Ry3hkaO8nR+n4H0A4tGmlukUjTTWDaOs4DWJy/mlLKLL6GbdMUplsV080dyv3noJvb5kvIGkFrHMT+1dIwg+e5p9O02y2IGkO359x9oiJOVmpgUoqctlRBm6kt2y2laxS70nwaco2ngnpWQJNoWYVAG6DWZHayd6viPDuzGxtQlBk9gipvZlSkTWr+0S0sin8nZCu8+8I9IAOT+RVEgxH+29/T3AUYUgBI2kgYx+5aXGSHuD4jC2uOFtrOYp5Q1yI0G/Ih4E5L9OBqDXHb4JyAGMvdBO42umsAwpgXYBKHfveJPDiYUClSlZGX3pIUl9V0FU3suuSV03ltIUweCJjppCrsJhrDnz1gfgd53kcvZQd1O5WsTaDdXMJ1299oLthtp2YW2hFIIo78Vg80N3CYbsGuw5kVAGH62/Zn4apblqglkZC124UhFrWzb5ujuWxrczSf1+ZH2M7A+Xk7SHy7XUrLgGgKAgwKFkqlALNoN3AahWe63M7tBhNommD7VVcZTBr0IC+QazscCFwaaIuXmqoMEi1iRrPBs7bdczTVYmA+hyJH/xk4eP8DtXu2KK9yB0mtnK7TSFK8vqPF4j0XKGB1cT+9VtEHTmpGFnqkLiGSC+jg4LUKxLzsWTcn/EI9UjBTIGCXjwhxi8nm5m8o5KT8nK6PHH04kV/1uuTkPmH67SeEmY/ITaCuJaxm6SabZRvACXESKAAEKStpPQYOXVvQ8EZv/+9HQvbCTXvQujCc47ltg113BXw+AeelrUW4SQ0g5t6XVGEAYaG+PmtuGsF0DpRzxrTVa9zzEaYc4vwlQqlsmwmJds0hTec70M0dcL41fwKrBqESP9A0gspde3DgQKW06/4Ve/Cwd6agM0GjxVxnibbh8p0ax+KJQZhanrZISw/RgZnS9MzmBXfV/GrvE6oAZnYL5DqQsEoyCSANEAwYaAkOeXU3ABYtLjBPt+4iA8WhOAjHq6MWMfg+NLGip7M5IuZVXX+hQME9ueufltnCp+LmrFMiTqZFXGsQDyditA3RZAgZPnCcB+ERr1LvY/xJo9DywsZ/e8Ajm5S8dhCc0PLd+xtY9p4xBqbgIKYlOyzIkR67ar8F4NoW6LIL6q60lc23Csp5aeahW2TbWVjbVTvYwcwR2hY1F5VzxnQuaxeUwQ2icCD29TKzAQTtKmiuTWOoaABxvgVunQO3zpt2sBNHBolppzWyA0PyTwQwsCPFXJpyJIfg2neG07xKAaGAqTYgYjkLgRm6dkLXAbTT1oQjmROi90cDBgGHqs74plUEmiLjbhks/4bgoCu84eYEiSspYaatqOblvZaBSzsQiLRaUTuOjH+kOWjdfJqqda/tM2j7FJ8jTvVJc1WVawsYOBVA8MkODLpj6e4BCDQmxpNK/rJgiBj9YGZZ9enFENUWABtcIyezSYV6fWV3TiA+O7bPOnDwWoVqCEAEh9JHv99jSQuyE7o47uWqx1tqhBELQKACvCsoNwvKLcJ0q2kN5byBgWcOYVO8sLoXzXcwA5tbjOmmrGTeqeTLyz5U88lcm0mJBSB2FdjOjcEqOJyfg88FIGapkPoKLE+OjN8XtrjkGlXLEiTy7yrvgucuvvp8J2X6DRgYMu4q+h5I3IcY0KVX8y/YuNItO5rmQA7wWMfsni0r+vhJIKFnVagGoYpIBTC36yZKOPONLZSr/ZZ9D1K6a0MS7b3fwJdv91xe2USlDnKeBSg2vX1hjYUrbzHW/FhNbdy3+8dF6Xqh3MOFGD2+vkDi+Rmm4lNbkt9FCXloD6nJycBhpDGsAEPMaPk7+BmU2bvPrm1wzyP8KTg0YLDoKijfapn0PapKODynbAnlFmHzgDig3WK1haSoIOFAspmHGkhMGnm0rQ0gBruukQLELICgK53nWQBCzEjbrYDD1kxLLOYiMkaNxtAVHDzzpzRheSQKJ1JwKO5ZWVHdrqNxKyI94sx8MZqWapfUR5SjhvRaF0rYAKblKWlU0PFNckJFYMQEi3ozkNBgAo+rpTWBqix4pvbeTbgmREDQG2Gsx21PLK3UzzSJPJ7RQc+30+5p1JPuebURZdGBHhzghJ5x83K0A25wep+A2us6IdrcgXTXAASxahBtrjUBSDUHqFIhDH8QzaCaxPATsueOk66zRDWgHLVhDnL5rd/HqrfbQ4m0goMyTGCnAApg2HkKqNSc0Du3qvlW8zlMt9ABQp3KfqJb++EmX3NAN42hfU7binJrNg3Cb3NhTdpVkALCroJqbWGpPjxVgIHPz8HbHcAVXGXhVS2gotFIasNIADAABHZahl/vYIvoqCw1E0+zEzQ2F5MYgwbpyDuC+/dupjqa3MaDwdbvNImFeUfzd4y2UhewgI4HumXGYgi6cREFJoEzjbDyTJncw166dyChgFIntJ1zZ4DOWltqhZmcRow+mINrzzdoKifVIC50otzDku4agABgtnNzaql5Wjmd2oIP5eMH7mjQZdX1whW94HW76Qo1bUE+1UyuoOAAjucODuW8Hb2pwODNSgoQnkmYImbtdvsi7cTMtGPQtpmNdNGaOlXJz8ZdBe12AhBiOtrtLJSV57bQjXe7AA7ts4FD+6QhEIyIhyYoNP+BhrRm01Xr2MFDDlz28IXgkE2re9fKUO2s+7h4zMlyBJMvE057cEw5R82ZRiA+h7apo6SpvcrF5YvaJfCsYfaABq8VcK+i1SWCcPAT+AATAmhqmyBWPS2wADhDtyoWBGPAIq8MQOTSn1KDOJU6cofS3QMQMlBtkzGGSdL7n1NfQtcWshkpO8GuBA4DCnVNguwiCEY0A9M+FAR0m3NrQ9ck7LyFnQCEmpO2WGyr7TePa91DUscu9fXwzL4XUgMKZzqSyofn5xl0Pve1DQoQu1nMSTWCg49E4grIcaeqUSw7ckWrsNvU0ti6hwPaQwiJXWHYmlSl8dLSh91jhTmuBtZlrWEATlEbXRGDKX1P2qvlwe6+KmSarfgn7NqiIk5wkHpRvu+BzlUZ4OA/MG3V+auM4ev6Rm6FmdNbxnT2awBxzgZzGNyrTK6kqxDj2kl924mIXg3gjWjDcsfM70NEbwHg3wJ4RwCvBvBxzPyHBzNzg4MHTJ1zOlu01P9Inc/+gPmLSAleupLfOonaQJUZyrBVoDzJoion6qi0Y5Ebra+6TVdBQH0jeWtzwICvrUtoPgeNSNLPMQCysyuzMRVv27VzF7YcVjobOKgDF0BY8bzd9k/mBgYJFDiFqLaMi/vqGH2myrBNgjStPl9kvcM0gTYbt4Ja0uRQ2KLG+g4o2Ezt0zNp+V43pZlCzgh1k3eOje/GxqA7t8L6zidTkBUxfzgU165lYCBAt8lmIIzzsPZFhQV/Up+eyVH0PrXdgWXogaWvbZyIQGEgANPqYwMVGXQcym8xeVYpmydgrm1tD2QRoJmOc/86YPDdwdbwQX9dkq63+35w6EOY+XXu998F8B+Z+R8T0d+V33/nYC4joSoJZ8bw/Y2kPfR0WEzqBWVJKaU3CWt2371TRKXL4kBCRDQ9l9dLa5aDAzTvQB/Wpfa1DV66CyYIIGz8ltsYNpRzIZmWZJItswWsAlBUBNCwjfRkNTSLcblthrdHvKOy1AJCPbk7r7OzulADhTWz0mLV8gAcpgnwDFsfJV0xDfts/ZrEa+3boKXIrX3aSsrDgwSP3pfm6wWmQT2az78FN6ipya7rXzVsso1iW327sGPTyd0jPeqX2DQSv8Or1dE2e+I+nl0bbCsSEEppCwa1LtDIrT1DRouxclP/XYWYT3cm9Z1KdwpAZHoGgD8r378FwA/hGIBQYjdgnd/BMEHFDvNL5OePC2FdveZ+G0/3Uo6lEWCA+64nZSmTGPEJy6PvlBrO3HYSP4A2m9J9jXhxzejXZMbvM4cErUMZ41QkzFOYfqXmiB5xsMqy2E3XMzBW/QoCDFSoMWkAbYFaBwFdtKb1ic93zcG0iLJH8vPgYNqC+Cyc1mJAYe+XADUtCTiYKUSl9NCXCHlZkLJ/7/qOvDaA+N3nR/opwoCZXCuiXET2iL1rPcuh723kMBcNHFSjZRUmRGvwb5iYu6ZRScw6vW3eb8CFDWxoRgvhznOotppSJZSZUXXzP21G6fWCti3V6dTgoHTtg7j9xAC+j5q4/H8y8/MAPIGZXyv3/38AnjB6kIieBeBZAHD22MddouQorfTZBwcO1JlhAoJFFMYonVVW/nIMN/tARrIJA9EcvN06RBVpfZ1WoHhnJqnMkLy2UDqjMC3fOfntRmZs5hTpkiYL825rUGS2zgRSruS9nZW7KWe0S2uob6ssTVPXHDww+AipDBb++tTMQiQagEYvGWl6ve7BoUzRFKUOaovSIahWERzDhLgdCRD8YyPw9SDBLv/g9Eb6Lr9HgRWmMcprMal/oVZrvTtQeIFGI3rZYbitVdBkAVTIyu+nAC4lnWYGpm4OpjZu2lqNWMEQulphvgQT+DKfpuX3UzqoW7F0vZL6QaA/xcyvIaK3BvD9RPRL/iYzM60cZiBg8jwAeMTbPrmfJrgyCIb31xi6PsCH0vTPNa1Dy7TVoP56aTcNJMxhIR4Jx0zsvpssNvlskqHbATy6KDhImuokRTsAR+y6XdOS87CLu6btMMDTzeGKFFv7wsQdgKlrRfvmpg9jZQlhVVAwzUHBITN4T7U2IACM2ZMAhOaxoCIxlGvgoGWVpXkpvMcROLhwT2N6DmRzHrq4sa1nECHBH1pUyJmxeqfqq1bNmSQkVLWIHMChz/QX0O6198TmYNe0FTEPDyB+Xtn+SYIqc1EtN4KS1cHXuXRtQ8PKM/k22hwbgIFSbuOpBf436b2YiOjFR+TxB8z8yZetADO/Rj5/j4heBOD9APwuEb0tM7+WiN4WwO8dlZlOzkMDYSRxZE3BMfvA+AdlLkAiLzJydSP/XMing4QyFvKM3tdBfQ5wUlWqjkqEfSLrd+qLsTRiRaREcDfhm8RIJOHCbOVbVE4BmLidDcAAbwhAARc5LlR9Ep4hFmXuc/QDkA9jrR0YgA4OahoyU9LgJbt7JNt3Iz+n5LWXoF1QA4fN1MECwrCd9mDZjLBKmHm0t/eu8GNBvzOonz2hjL9Q60eXX9BSBmPdXreNlQ4SzTzU8vHb0izwSqQNvafbmJNu+1F6vW1MSF7mg3FCiEpvERg4bO9h/cLaXg55Wz8u6tr/1oTEQ8LjZYhB2NU37SimPwbgr++5TwD+j8sWTkSPAlCY+Y3y/c8D+DIALwbw1wD8Y/n8ruMyHPz520vNutGadrDvPjne7yWqDA5JalIp3MzN1T8nIKGTrBrnkO0udBY6sEpaijGM0ieqzrIW4y7bTBe1+YrCIRO67hpvrL4N1BYdUmWRTpsprMrJaXqolpoiUKn5F9itg8iMtRColra3kjJeWwinfobuTCa/FTcA8iuqPel8NU0gPhdIAcLvkFqmDmLifzBg0HwT2S63A63RRzARt34zX4GNUy8ctPzZtq3XPxcVNfnf7m/Rvv5ngouODa0gOlBEM1AfZHYAUPH1iWWaFsBeQOn94IUo+6sy+Nil0Z8CFMGfP2qnzkOdM74Zg7Snpjf1ldRfzMw/vC8BEf2DK5T/BAAvEiayAfBtzPx/E9FPA3ghEX0agN8A8HHHZDbUHII+vYIE+VYeiJ0vx2xHE4AwXFCng9iH4eaJATfBFmG5Enq4NujbhGW3JQE7BsWWB6YmQdLEbV0E0G3LrCvQxfeoz1j7CMwMPW+gNDE07Dqh8fRcScJyHUj4qCAVpcVsxLUaSADowKAA4h3MPi9P3jeRo4/0uqfs//D1VHCYUt1TPm1vr7YCehEYp1Kt2st9f8r9ti24HkrFlnfbe6hHRtXJaRCOQbOaojAY+1ZH11QdZ/DjuUs7XWInBPHdCx4TwDvYlh39SNhWPyr9MdvTyWfn+sGO42IsQMW0IDe3wqevfnHPr/TDqc1Lb/JRTMz8wkMZHJNmz7O/BuA9B9d/H8CHXTZfb5ddFoo4gHSmkG7uhx7FUfr+RtnEZEEZ3i6rE4+kiIxHDhBC+GHmU8pM9JGBLVYBQdtpceGTLEaaGLozrNq/WbQINTuQibGwVefK7KumKw2YgpbhT0yr+l1Agtu/IHUGkHB2/kK2t5GBxNRfjoHBNIkGQc4f4PKxB+T7JAVr+qS5LGhxxoLTGjK4jYhhDndKzlhvignaHQG6rsV8OvrsRPZcCJ/d5GsJhCSfoRik49M7mZOAYuNb89Ox4Zi0gZ3utKqnA0LGmJokveWlT6H+U8dlZv5aXVevcD0BgTe3hdMXR+2/Dbz82kkNgIieCuALAbyDf4aZP/Q21etq5KUhdju45pmjNn7H4Fns8lwAkh07hxt/iYrc9/Rv+VjEhzDgUGQa0MZLVCLUg4F8Wv1eAL4hDH9SIBCRX06aA6EdaKPbgRc98lLbJpv2MVBlbybeEqqcAVE21BYnVbTFUfJZZKFSm/gE2gE8c4t1rxCfQ+OChaX/GG1r8YlBk6DoVORYWGHczKBpapJxjbuYKoAs/AhqKlJTUGbgpZ/2tgYgwWRkJkEvZg9oZFqSNRxlK+/orKASo2wobDLLhcRs0riUAb7DyZawXauTc0pv1gHBnNi6KV82Obl8SdpqvoiBUNJ/ICoPOsb12gTUs/TsTHYyHuYYuKZ5Zk19ER5ugh3Z98Ux89Leqsfx6o61uj24mzOeD2QB7xTUophuA+rcQXRsFNO3A/gGAN+IfqTxHUlhrUP+A7poYvZVDtdNmvNSu472kA+cCJbKJ1gYqbfjB9+ANxE4cAiLiWzCdE0BBPCGwRsBAjkXuhgoAGWq8IcINc2BZNtv0YqonWlgBulCqCQLkbYd5MzkpMwLeq2vpG0bBbYDc1gS8ixcyYWBNslROKI6r80XITYHfzDQ6ChQDwylBJDgiUxjCKYhezkOIJQmmJkI+RwGIIJWBjCgO2sYjUEW3dLcSQcG9tRNf0yy9gMSFtr7S014INiKbD82zD+RpGhnKRoT9/lxDFszxjryryhznkWpY61QT0vu0lCbRurfnCQBnTrAw5kX/rfTorymzkDwEZ0SKN7UfRBKO2b++ttak9tBOkC4D/YgtMhAanOdJWoHgEhZpk7byuD2XI8nl0K8Dp3NTQ4gPCCEv4n7ANcjRwE32CUzSUubdvQlFUaZGFRq+yRGEbAobhZUbuAw14JKbTO/hn9yVjMX8NwlWR30pn2ghzkWuLBYAVUzgQjA6EltehYAE0VTk0n7XYwn9T2oaULNQ35TPV0JDQBT6ZqCXONSxDxTVp3KBg5emtVFfajIWoS9e7vAoWP0HVOtzcm+44WEHqR+lUcEBIqAa7D1q8YwUT84R53SWij6I2FzPne/3YygoDg0QpJ9kT55fQ/rvNF2uLL884sopBEFocsXCqctYTx/3KFIwUmt+dSelYX/HqjOscTAm3YUk+yJBAD/nog+C8CLANzS+8z8B7exbhejkTrrpInhBBL7r5qaLAuRhu2AIP2tIMMtoqeZkFRUSbNANYmsQVAfzOFzo4yWQ/3V8azaQpkqyoYxbeYGEAIIU2laQ/Ov1ibdozF7PYOaZsZMpR8kBDRw4AY2FbKWQdtL3elc5AHVJmznDOprJXiCmOeom78sQomc2UcQ2K9lyGKdag7qMPbbZKiGUBxIEDmAcFrFHhOx2ePNo1Jk5Tc6Jy8rIOHJtjsRDmnnSlPnfWLzryDxz3MDhw13DULa3RgeWZ82kxMiQGTtxJuXgG7Dz8x5xB21aGXE/rr/Q3xNXoKvk0wjdcK7NJehEDbrwUE0B9WwPDh4x73lU1ydtQ0Dn95lK/mmbmJ6KeIw+0J3jwG88+2o1GWI0QeITRJhrMEeq+cHF/TT2lRCd0RFOLyozly5b4oHbquOq8aeKBL4mYE+kb2SodLeBNRNY6L1THwIFn3EXbMxXwIbMGw2MzZiRpoKY6Iq1pquRahpCQDmWqAn0WGHLkUzYa5NI+HZ+2q6ycib6qkKOIgTkqs00Ut42telry4OGsPELVLJi9NeVbEXoBoEiVmpgQNvit3jTQKIqZjtHl5T0PcRBkxX8dqrc0DvtQSL0EFHxUTqv6C5vbtw3Gpi5DYkJs2OUDfc99JKUrKBQz5b2lcjS9kDTWBVkncml7BdxTGkgpdK7q6twAFwyPNNp1swCaIzfNdGOziI4DSsDh4qWGklbNea2eV7Amp4+CYMEMz8TgBARPcy801/j4juvZ0VuzBRHzRAclxNTTLnibuZRsHBMeCsmttW2kwtOmWG2I1lL5i5FUzQIyEVjGRQ5oPhEcGBz6ReZ82nQJP4FKAAIWakTW1awlRxtplxtpkxCRCo5qAmpYIOEirdbKmrwczN1MTM4Kk2HshF+CGbrbaKltR8Da6PZYVuj2aCaQwWucT+jG2R6DelAUOtIDskWTqpVSIyXws1Fa1BwWGaWl9vBAwEFJoGIWUVx2ictG2MXh2utQVZGvMu3D1sGQj8b5VAS7ov2pd36maJ23xPTKhTe0b9O1pP2ybcM0Zlgv1V9HzR03XtGFcnr6l40nZpvRNQHHJyaH2l69s1n97nSViUoafKjXwRpnH70kwAkLxOpUHgei8mpR8D8N5HXHtIKTiq1K7vTTcbFhu+MODSbflqnvGSt0p4LfpHHK21SZY8k5s/okEQCYPhHn7hXfoJHOpZbTb3GxU0VYs8Uu1BfQtTaQBxtplxY5pxNs1mRjK/gwKE/kZj7pUp+CN4ImmjSECyJoIrGjgJ828SnbTVxU566ZZGkislwJioMfZdbSajDQDsmi9i1lAvbmdEaKcDCCam4sBBtAbeNO2ibqhrKxsy5pop+KIUyxlgsPmcFmRbRLi/Gu97extxe+9thbDueEthgaR9TmjSbWHZBde3XfuTouSszNLGnXxP/W9jzaf3wJH6x/Ia8bpB+vCQSP46FhaVW8myawck76K3PTinvRaR/Q8KiPabl0BpiCr3dBv/ExDjTRwgiOhtADwJwCOI6L3Qu/2xAB55m+t2MSKg3uBo59c1ARLxo+BARZjx1KRykh1VzQwDAQaxIXMlzHOz3fPcrmu0U49hR9t7SLgAyczhtDUBb5rGUM8YfEMASpzOLfoIps0U6lrDVGoHB6rYlBrAAHDgIG2ozkZaeQYzYaoEmsjaN01txTOLxtGYKMleTY2bMutW5Ajx77b+I0t3kIk/KQARmIpFFbfKtjUPNJcGFBL2GgBCI6A2UzcpnTUNgs9KA4NN1xxYz2AQCj4gRtMAgca4q9tOfcTR9oCD90eE86J9OlGOaHLlA2YTb2tVenIi2PYpwZ4+ktBHTB8uPdz1lMcojbPGhGdy6GvupnzfB3jsIwaS9tUb4x3NXjPoGmkCCbvO8IASB5sILeIn2hfNfBFqW23scXLdBXRIg/gLAD4ZwNsB+GfoQ/ENAJ5z+6p1cWKS2OziQYKBScw3pZtraJJIn6liKtXs+dnPXGXC7uaCUtrxh3PpQNFiShlMxRaaAYiB7QoyAlYKEHyjgs6qOJ1rD1NFB6rJaQ1EjHumnQHFRmbhQntABIgdlwYUhTBzxWZqJqa5tD6ozLK9hWxzMZVmeuHOSFgOamnmJEQpzSYxiXrfOAnXBjKlEupZEXOVdE0BsJMHdwoU0nmz4y4W5tq0EN4UMynVTengsBGTjFtgpkQM20uKqEvzzQzWI66GYqUHB8tvhbtotUUabocoQTQJRIe19oG8Iw0XNsYv/Tla27BPSxhJ+kNwyBoELdP3BvfrakXVdg6jmtBBsN9Mlcog5QE09EFPO4r+M+3BA6iAw6IdzC7C8HRS/5u6D+JbiOhfAfgEZn7Bg1SnyxEB9UYNEgQXNOncwKE5eUthFAGGzdSk8UkkcqUqEnZlwrxpUUC7ebIDVupMqDtGnSUCZhY/hS4t0HpwBwYQwDcqcENA4awaUOXwVCLGZhIwEEA4m2ZsSsWN0j4BBEAoVINGsePSIo9KA4qJKqqA1yTaDbMwVqpgjWialItSX1wl7VZTgi4CJAcSVaRlKspJOieg2kNcaW4rp4m5aRK1tjUIzLLBn7wEcz5P8ldQRXOoZ2SHFCkwqEPXhoSay0hWOBPagrwqDE0YRmNumQNiv+aQpYksSBo4UFxHkKX4qUc26eaMzTQ3YIojoFhh+r2e/V4wvayl82AC9HU9x0jdpP3de3GwVKiX6bW9FW0kRyep/6ELJhBfol53/q9B8Ekr53Q2pjdpExMAMHMlor8J4M4GiImBx+z6AjEBhWmqBggqjd8Qk8090w43ymwSeQYIlb7P64TzecKteYPz3QYzE863G5zvJuy2E+bzqYUIimE/qvDcTFxnzcxVzmZMZxXT1P4aMFSTvrQOEzXwumfaBWBo4DAvtIVCtTmuZfBvBRzK1LUJJe/QtvZSi3SaSdwmRBIOW+x5IjE1VYA3za9sJ+VJaGbdtCaXHUBnQNmV9r1Czq5uawWKSNhlV9sCs11tDHUngCF1aCamBgz1bEK90TSHquVNZKuNqwtS8GGZjUlzO4O7dl5e0cCMdoyKisIk2oxkkKKrDBRKr5uu97AtPXRLcC1bjuqsclxn8EOU3nfdc+sYYZKeTfDwjBOO0SZ8Q8+yp8v8zDFwb97R+lse5MpxZZim6QCQ3bO2DmiFLH5iRcsIfSEBJxq5pFaCEIiigDH1702I8VraaQCCcQ0QSj9ARH8L7Zzo+/TinbQOggrj7N4OEMp4VUuYqOLGZsaNaWeAcO9mh3unLW6UHc7MZFNRuaCCsK0TdlxwPm9wkzbGWHfzhHmqKHOxSCOeIQMTfaLKAKZNNT/D5mzGJHUqogVoiKq1xa1nIOLmbwAHv0MDtPa8Bwa7hrYyGtzy3pSKHRcpp2kSzISJGVUC2FnMTGUCKk/Nj6KamJ4c5pnT1Jc3gGRxtNigmfoRkWpyKNv2XClozsKZwaW0Q2VESiUNBJCOMefzprSzns90pbFqD/JdGUhibirRFrhV3lJ3ZWpUuK/sltBcKhhHuxQYGPj9mvyxo8iM2GkTXGR4eIndJ3XSM3I6iumG2kOWmNc0Dd6TPv02LQLoPhRN4BcFelNRApEhqaI6AhEHEN6kGdoTNKwEDhoRWFpBPRhlX4UuTtcA0eh/ls9nu2uMO2gdBBHj3nu2wX4/UcVU2Ew092yaxnDvtMOmzLh32uIR0xb3lB3OqIcbVRTMTLhVN9jVKZhsNLTU1hwUYbCMNjCB7iAjmBN6OptDqGpe7ezbETUD7uAAxqbMBg4jYFBqeTR7V5FtXHO+ZG1o6dqZOdzVc4lGIl34xt0u3lYBA7r/FM1t3tousKX9IM2LBTRkIV2ZGdi0T94yCslePgT4w2KaBFmaz8GZk1Rb0dXGXSIXKVz7U9Y76DoOzROM5jyfZfU3aTQRRcAoyhE5ag1T0iCsbgockXEoE8yH7nhzzoIRDgd6v7eIUho948sYAMQiDDc9GzQMvZSYtLbNaw4904G8ni6EQIJcd6c5Lf1eDhQItkGlRSqK+da2n5EFpaei672YhHQ9xJ1MpTAedc95WCi2oWpO3QLGvZsdbpSmNZxRxSOmczxi2uLesjWAmEV7uCm7kU1gbLmg1E1jsGCLXFX7uy5o48pwSw4AkjUMm4pp00DlzC1y88RpoPnw1fAnjH9y3wGEdQ97+ymla6GyMLBQUV61IiokE5Bk8sFWldcz2K6wRfpCd4H12y3pDp/qxC4FLW9hlvosTc0/UXY1LLqqm4K6adpDdaassBUFxQim3rFNIyjMqFNzCGv9bZtthoCDnsVRDDDIv2yvNZRi31kW9LU1GN1RnhmyZ4TcqxcZYHayZ342EH69xrG4HqRu/3AE0lUihxHUNQPbsTUBw1Gy+QBEDEDTvaxFdJMbm9+haY9qVpJIxan5+DRKsVkSZky65ulENA8H3cWIiJ4M4FvRjj9gAM9j5n9BRF8K4NMB/DdJ+hxmfok880UAPg3NIvw5zPy9V67IgI7dzfUMwN8A8MFy6YfQzo/e3o5KXYYKMR5141aQkNWvoABxY9rhEdMWjyhbbMqMR5ZzPHI6xz1li8ls9xO2PGGmgh1NLXIVEjIKsrUFWkYzMUkU0MRuBjX7f5m6v0EjpiY36/dFQajE3/+6n8T7DzzT1+2HR/mWYBvQ+kt1nUZhYFHQFgZSN89gAiq3zSmg51OohE6iSRS0g4fQJm9pFUYlcj6ixnlUo+DS/BK0EwYtWzY0hkDgMzKQ6CYmcUzrHB0xydYZFp5bhcvpinBzeJLbJwoCDuLItzUtzvfgF+fZ7+K0CDU9jfwD7Mw0nvHpAjB9JyMTDKVPzWOgQXhgYP+cZGoO5BXBwhdpSXI9sklppIUgtinkI9/z9YVmQ72PYrgrd3BQM9JUMd2YMW2aWblo5N/UAj3KcTB2kNr6zpNoEDsAX8DMLyOixwB4KRF9v9z7Gmb+pz4xEb07gI8H8B4AnojmAngqM884MR1rYvp6AGcAvk5+P1Ou7Ttt7kGliSoefXZuv73ErU7dR4i/4RHTOc5oxiOnczyynOOMdiEvPWd2WwtmEM7rxhzVbRVyHxSEpr3UtpORXGwDUB3kk0gvXVJvyY6Jx46aw/iBXZ2GgFA1xFVBg6NK7IFulgglQteMtIFmZgKL7V7OghDNgObuhwChr8ZGu143XdMgYZrqpFaNQhll26OvbW2iZpoqfobogwBCKCiwZE7o1/VEvIYP1NZxTK2uNKFFURG61kDUgErDI4WC1iDpVXOoG3EwBJBYr18wFRXH/JSJOyAJj2aQyJqCpRuEe7rnDHzM0xyfNS1j0K+rYzeVv/Z8B4ReGa9FLPI3YQHBtKT+pL4AllHOKjabihtnO9yz2YVgjxvCC05FWfO/XB78WgCvle9vJKJXoa0/W6NnAPg3zHwLwK8T0a+gHdX841euTKJjAeJ9mfk93e//h4h+/tSVuQoVYtw77RbROoWqaRIbms3fcFbm9km7sG5gBmFbN7jl/s7nBhBzLQsmq2aZUhhM1V2DrYD2qu2x0ov5OBIwtJXRXUOoEte5lV0l1eRk4CAaz+K7tGGvFCTSJxVq9l3ZQgSbboqyo1KzZFj6bdUkDEDmpk0AkP2LWh40wbQVPXiHhQnXDRpAbNL+RCMGmEnqVKtGYqFFPkn4jWkpYmbC1LgRITEqNTG1joatV9A9oPS3SreyC2vQEjwz1z72jn9JZ0yS0XcgHQCB5tlAhiMz3tc3wv8DSPjbtLy2yGtpsYpty8+47328tC+hvawNS9glwgoUHLSORZ3QLRBk2jQ/3z2bHR5xY4sz8TuOohWvRhfyQTyeiH7G/X4eMz9vkSPROwJ4LwA/CeCDAHw2EX0SgJ9B0zL+EA08fsI99tsYAAoRfe0R9XoDM3/J2s1jAWImondh5l+Vgt8Zd9i5EARgU+bVF+aduN6Wr9TAoWDLE27VDR6Yb+CB+QZuzme4f3eGm7sNtlU1CAxAAtClUMrcp9JDWJXZe+1BmbyXQnyaTFVCSXZ1ahFK7rrmVVxeLUy3LICB3Z9S+53mPMkeU8Qm2RIA3qmIqxfchFclqrRrqlAIBsiaA7gDaNRmL1E+JIcPOZOF+hvmM8jWGuh7bbm+Wp33ygzFDlZ1C4y53WBhNm1bctFe7GQ7X4C8L4tcQgQHNTPpn0m8AhQpIsekYgeePtTUHNpwjHLlOZOmHXCskVMOrHtCGdrslMcQjH1eDlQuLFg7UGir+dl9d+Vrf1q73ZjS0HYJab/nbIdHbLYWmHJj2p3MvGTVPr6hr2Pm99mXgIgeDeA7AHweM7+BiL4ewJej9c6Xoy1W/tQLVO8ZAP7egTR/F8CVAeILAfwgEf0a2mt5BwCfcuSzDwqROJBBCGYVAKjEq0cDziiYufse7p/vwR/N9+CP5hv4o909OJ8n3JybFjHXFt2kzFRBwuaH2e97mK2Gq+rA7PvF0dGDS/dTam2o1kZ/377DX29axK4W7LhgJ+axrn2Q1AMBNOKeeRLlI95Is0goMshaAdsevchc10gd6R9m9PBPZXJoTBDiG7BzJArEHNTDV+vUNYi8/7/SWsy99ojFzuuGg2lbEK7ie9BsdB2EAgPBvkMAxYODrujOZzis/iVg8NcUHJSZs5WZ+jDluTA/Wef0z+APyEAx0gRWACAw7lGHj+6tESNpEzKevPDh2w/fFw1FqEDWPLWovzOLWKwtvL3sluVegZiBeXHk3eVI/LzfAeAFzPydLX/+XXf/GwF8t/x8DYAnu8ffTq5l+hpm/pYD5T5u3/1jo5j+IxE9BcC7yqVfFvvXHUUVZAd46CI3QBhhmVFogzOquEUbVOqMclsn3F9v4Fbd4L7dPfij3T34o+0N3Le9gbkW7ObSoptYTmVjwlwJVfZh8cAwOpfBr7eauYRn8/NAwYRqkv65todael0LsdoHvs3y19ZyTFJ2a4eCna4QV8BjaR+5yUdl7tcljJMKNU2CADDZLre6ZbQHGW8y0VXMmBzfqQBtWsKyQ3N0m5NanNFn8icA0XwQ8rw3TdT+u1dA1l4U2BoNY5JTf5aogHcM2ghA5W42BkWBeWr4bRVQqGfokVYlAlv1ETkFbcHhBl0ydiG7xoBL1CBUkrbwXlkslg+b0rZbH+nLkOuc0vh29pfDQwBgAy0nBXg6JKhn7cR9McGhoAUIJFOW+SCCeakHhJxtZtx7tsWjz87xyM15C3EX7eHUW2OcIj9qB7Y/H8CrmPmr3fW3Ff8EAPxFAL8o318M4NuI6KvRnNRPAfBTg6y/Y0+ZH8XM383M/3xf3Y7VIADgTwB4R3nm6UQEZv7WCzx/W0ljklUq3tUOEBDBeyfgUKhiSxMmZlvv8MB8hvO6wR9tGzjc3J3hfDcZQ1fp2n9PAphbW9DNWCpwqsag4OAlDyKyZzXkZ2LGjtseRpp3IUad++6sI6AIACF9YppDMDG1cyJqLQZ6QaORvEkNZ9S0NDsdjuE+2UwoxoRLZ/ILW7VcM55VYGYnNqbY310VQGh+iA4QZrJSHiXaiJqvZGD0fHUbFM+MIUy6okVmSXV1q/bcxd20QZ1hlx5+q4f9mK8kS/guYilcGzmppb4Gqlq+goOaxhR0snStP73WkMOQ8iC2dzQwFQXJncfaSgDmfcyTIxDlu/pes5pjL5uH5qUimoNuaLmh2oJUXMXmC9u/VltwEic1mq/hmQB+gYh+Tq49B8AnENHTpahXA/gMAGDmVxDRCwG8Ei0C6tkrEUzfT0Qfwcyv9heJ6FMBfDG6RrJKx4a5/isA7wLg5+B2zEeL3b00XSb+dx9VLqY57Grp6C4TbcelbUEx3+jPgPDAfIb7dzdwPk+4b3sD92/bd2Wcustp2OHV6el5iHigAGDMmLmtwq6VgnmKREprgkTbC2IrGgZz22SvoC/Q032YwD0U1vshNG/daXIWE5NGYM2VmkZUBbC0XTWalwC0EN7aRNhuVrKKy/qPBg4GFMDqjp4LCRfOjEDdqW1MkRoDV1BQgLCD6+E0iNpBwjt4ta8wQU68gzFljaTiCRaZ1drttJ4BSJivwDmrNbKqavht3k+J0m9/2I2BhYyFOljXQa5sXZNC2hbH0JV5KzAw9cVsgfG6FzEQNlbBAcvr8cFY5oIIfSzlPPSyBH+0YdERzvse9DwXMy+J30/3MNNtac5kYWnlpjWvmZsvTqdZKMfMP4JxT67yPGZ+LoDnHsj68wF8HxH9T8z8XwHo+om/CuDPHFO3YzWI9wHw7syn2ijX6ELxv/uIAbOzq1llV2VriYIgeZ+7qKXzusHN3Qb3bW9gW6fmjN5N2M0lmIEMFLI0rF8JBgrqkPZmJTsTWj4tfpxUYCOUUvthPgJIUyVsJvFBoC30Up9EvpbNSwpiGRwq2uduluu1axX6TFhMlKU4f11jY1UiN+dzb9sqeabD/c87apVx1qkDhZmYpsYIWcusslJbmaBWW3FN0cc7jpnDJoO6sR4xmZlJtThvc7foJPnO4kgPjF+ZfzrUZqE1WDrVIAEmVbEo9hM1MOib1rndiwnwq/g7D9ZTDxG3yZBGBef0Gq0MgWzKA9BPx3N9tshKgHkIEiNypi4WYOACO2TLrzc6G4AD0E3QpzQznZwjnpCY+SVEdAvA9xDRx6ItS3g/AB8s0VAH6ViA+EUAbwOJ1T0VXSL+d09m3RlbmczmDgCVZXO7mcP+7btacHPe4Na8wa1ti1I6307GNJf1jdeI+vbc+juEpKKDwm5WBl2CpE5ucnNtRo4qET21tNW/CgJTKdhMc3PqUl9Al8FBHdF6baE5MIkmU2Qr7wMOcwWbkalIGJZJjW7X1xFlxyZ7RiZmFQ8Q2fxim7VtuO/cqqauym0x3gxAtv5QLYGKy9czahCYWdZJKLA0pkkzGbB4baKbdcjViRyYUddwMiDId39UZpU4fmP6bfAIM+8c3UxJTtPopiXuQQBrHc9NcicgvMujhWBnVWKk8QAEjcFAIjNQ0jHPtrpyYbJy9crgxQV93YMApC5I3UwSvh424Oxh31sBh1Nuj3EiE9NtI/Effwra4uYfA/Ch+XTQfXQsQDwewCuJ6KcAmHOamT/mAnXdS0fG/+ZnngXgWQDwiCc8GrvanLGVyUJSgcY0N1RdNBBZmt3ctIbz7WT2+HkuroyxiOAZoPocVHsAluCgTLrOymxVZdbnZNJpmQQwVzvLQRfjAQAmiIbCFu7qB6pOAtuuXMxb3kFeBRhqJXA+9IQ45KfmGvZGbsgE1g3wNEprJtgmd8dqEcroNArKWT+sq7IZxplVpMrCtBpHaRqFlK310PzgmDxa6CyJJN00iPZ823iQgZkMgNTaYRpEilaqE0UAcHX32ksAvo0u+OpScgtsoGgqchqDOWld/wUma12Te5/N7KT9ZukXzw5oRTOw37WD6jAvEypEmMBAm1grWvqoHRPcvpv2IKulb2yW4AC03Y2bVWE6GUCo6fhOJSJ6I/qbvQfAhwH4PXGKMzM/9lAexwLEl162ksfQZeN/ZaHJ8wDgzd7tCXxeJwOG7TyZM+qMCTMVTNwGzFwbw97Vgu1uwnY3dYY5d/NPY1a0mA1eY/B7P/V6kUU8KTjUuTFpFmbtJ3A+W8AkLNnWwqJ/Jl0nUYBSTbPw5IHBAIK7g1wjlhS8uBawY+jtI4KDmqC8f5PU1KE8iakveChskUKmISFJmK4Lul0c8Rn9KwjSsuEU9WdZ3pdpISS/3XYgvYPRTWKeYVU4sxJs5beCBwT8uqkn1idK+PH36HwHFK85sOXXrUtsQGE+BrW9J1DIPM+9QfcCfIIOdmAKt0ZAMZSTDG0ljZnn+j3/HPs6i8Bhmzl6bWLcEGjUku3UGrSHtjGnRg7qfmW6DmhXJ+zqhPMTAgTghJk7kJj5MVfN49gw1x/ed5+IfpyZP/AyFbhg/O+eOqKf11CbdqArZ5vJg1FmGSxi7tnuZHX03IHBTEsNYxemkgAO+umAwkc6eXCotc1iZbg2QQYaAInTbeYJZXKb8VE7CU4Fo+aDQHg+AsQyekod5OzAwfwOqgX4SS1pzR5uICF9w21xG6FJ7Fyoe5qFEdqBOXCfvYvbZdU0XFHRjBWBwUezmNmEJMpKfSN7Jq9J9qSagta1PVd0hXeoFHfHsYGXi1TSdRsO2LqWsQSJavsKqVagmmOrYDevcPcvKAArY/WdaY2DObpjZ6d0htLShyOTkBZjNsFehg8OCIDgNQifj4GpAovonUQmcKy5uzwIkzmm2+ppPWxrKm2fMzXz6u4C5mucNzF45QR0p5uYrkoXCXPdR/de5qFLxP+uEoOwnXW/pC4pA5DzDhrjnWvBPMuaBgGGxiwjQ6Ey5i62Tqr01dLqnDamLGGsHhwUeHpZ8ttL5ibstXUFzZ7fOBLrVh16MlstYp6KmgvQ66H+hlwnMKTdCL4WM2loXUL9EsM1zZr7yW2686tjmsoUgkkOsKglAEsnqfKiBBILM4olOoJ83T2zEWk9h+XqKW9+gWPbe0qBiWJevo6petmHAjhgWABf76AwAr3foTjBZSGiw0Cmv06n+h3TP4t7XVPwJqkWMeZ9Ny7NKD+pTw8iks7WdwHq/qzloyECTs9h0YVxuv5IqUU0skQ0Ns3BAOJUJiYcv9j1oSAiehkzv/dV0pwKIC6raF0o/ncf1Uq4//wM59tNk6BdZI5VUiXn2TFpLx0Bpsb6ueSjk/Tc6FJq2DpYmfBuFgDyErp3AospxgCJB5KbSpNT20IciIDFTGDRLCYXoeHvjxb1qX9FQSqDYqyAZra8pYzajsgUCRC1OdXJR+BAAmsIwS5NrdIdQPSWSPZqrjIGCpeAudm61fSjZMd7pnblvtUy/C15B0XNJAUoMzDr2RXCEINUDq8R9HURAHRxL9THPIpYqhuIs101A+2s2FwN4wyno4VE/kuX5EVIdx0Yn7NxJ32ZwdY7ms18JO3XkGJb1Mj92sI5nUBUd9Y1/w1BQqQbCPt+tHdWeLwI0tEsUYs3542BgJqUtnXCdp5sbpyKLsv4HiT6Y0T08j33CcCb7cvgVABxKbpM/O9qXugmI4vM0cms0rBeU3OPV4N1YgdgANSUohpDXuPQ2hFNSmMm3Ceb1iEwM/2TyWF2dULQPioVzApWBDhRPmzAZxFTAlzV98lwkrkGab0kr9AvMkNtS3CpgtrJm+NR1gBUBu+oS+pek9B8NWrJSYeBoaSq2bPs8uR4fSTFBkG7YNl+eab2Jpp/RbUoYmdi8t02qicP/oBofiopD/IrodnukW5Qp30+mjGav7WLupVtJdCCleEnZhz6L4OD3FNgUJA4BiD61uryW4QAQhvbzVnNZtXzmmTTLqTSMt9QYULgXAtmaacP+9bdA2bVoPl0GoSaie9gercj0uzdU+9UAPGQ95IuQpt3xZh/dK62zxZlQ13C01techMGrBNyBA763Uvrcy2Yd8U0lJGWwiqFyt5FCy3CMUZdN6cAUWvb4qII0yfPUBxV3U5jbgaSDpgl+D+8lN8q1+tj4CkcWMFK+ycwRpZ/RLLrK3r/byDnMACTOow9QwfCSmGrSgYJVz9TUFj3iBKpdsD0M3O2Ko9ARzUaoEdTMfpq5tLL9/VkovEMUGbq65wp96k2RMGUHDiU/QDB0h+2dJPMOxMAp/e/pJaXG8G2g0EAB5HiFxqEA4ehlK/lWrsQQKKb1qin18pMOm9kTNW22y9XiOBTMM+MWRZ1bqkdFcxMojVgsSPCqWgUDn+nEDP/xlXzOHYl9aMAPMDMlYieioZM3+MODHrmVStyVbIQUgkj5VlGnEjDbauFgQmCACiT8ZNPQKKsgIOV6Rixlt8c3q5sJ5Gr3RYVQSKzdqBLxhbf7wFPtAigQrfoyGQmJWlniFYK4IBYMGJ9PbNgDUnU7hmUqyupCbLKl9HOXSgqHS6ZrHV/YrrGK1bmH9kzsS3etBN+h4eXABE2x0PvfwOk0h6kGkFZwWHEc5r2gQBU3uwUyMajgIMKLB4c1kxMWmHZNJEgizR1S3atDPz3ll5P1PNO5eh8jr9JgNQANWkQewECMF+PjQONOPNCEfTd9zUSGqHGFW19iq6HqCqcSfCJRtZR21IjaNHO7HoqupOjmE5Bx2oQ/wnAn5ad/74PwE+jnVP9iQDAzAedyLebGEDdlR6myk1KD8zOS+1K2bwBdCDQ/V0G4ADABpxGBdVZylcpfaZYtk0u79ijvm4AcGF/UvcKQA7P0clAhYCkQYRtxGUy6II8Da1dSk/6UO9Ei6BJGoTEQ3ZpXKV3nxWhbxWhEt4GoJ0IihPsqNFsjgmMWT8zE1dmrX4Ijnnk34FRpfwXwKPNU2XASbXG1AhAycKFq6sHilwXk4AlqXxXEPL1CRK2BwcXEOFJu4LENqmrpmPGqpWwPWNtEGYc/BAOYIOwoBqEAoI3KXmQiM0P/eADAnhaAkp4B6XVjeXlaL+xLYQkzKW0vpkB5ooq272MgEGFplMQA3e6ienKdCxAEDPfT0SfBuDrmPkrnVP5ziBGZM4jO3+SjNlEPMDCNuWPSpvJbe6MwcHWE8wioQsgKHM3U9IIGKxuCAynCcUyWZ1aTZC1BapFFOUfGsorbWIHWIPQ2lG/2ac31QRG0bbiDsyP0U0Z2gaVfJma41UZwqblYU5aNUm4Opgk6YrWPlnWEwYAS0l8RTsa4aKCqwKDvn+2ZjvgQ9QIsMxv7ZppO1pnjf7RMw/yc6bJdl9P2MolObI1/1oBkAA3yfuxhSroJiqgmS5BLiAgdtIIXIPikoEig4OXHbQaCmQCjF5z4dRf1hdWLTEtEcCzLLIjyFxrfzOaIDTJZBgBw0k1CD9P7nAioncA8BRm/gEiegSADTO/8dBzRwMEEX0gmsbwaXJt2pP+wSdhzKjJnGRawzhaaPm9q/JrmgPQpRPVHHRdAcTMFDSW2iVyqrIVRDIxsUjfALqpw2kRDDS7uJRXhMMGu7pMAoviSk769b478N2Ycme+a2cvQByJyiTqRMBGVn7vUvhrkjSNgWB93nnnaQ6VXTUrBUaDhXbCQAw6IPdbNQP5vqhWem7NJAaghwPr9xCk0CpsIKUSv6waJjmd0GsBvf4NFEg0AQM3BW3SvCNYNC0XLWz6QN2tDRk4HPB5cFiYTd371p11yfdrAiNoG2R/L+u/Ima+Sn0djgpDBLT91NsD3swa5sSh+XABejiYmIjo09F2nHgLtE1X3w7AN6CtrN5LxwLE5wH4IgAvkq1m3xnAD16qtreTvElpYOsfkmoMTnLr0hovJqNfV+Ajg/TAHHWmgantB2TOPfnU6I/Zm3HQJCp0sw1nLQIEVF2hzKgo7YhFN7Ftwz23WvvK0lJiwlxhjGiVoQjY8QTQxG07bRCKahCyo6rf3jubbRb5+foYWKUwV5+PvyQaQPjtsx+VLQzN/BB6ba2O/vqgvt6OzyuiVTZvGUN32m3e/0tX+nOq1MKZ7cc59LW6EwOJDJj9pz2b+tUDdWzESt+sPbtHU7GFhopf2SxnQpRo8FQFH1JwRosk2K9JX4qcEHZn07PRNun7SQBg5v9KRG99zIMXWUn9w0T0SPn9awA+53J1vU2kzMutL8hSb7ZzKyCwm4y6SjMzgbzlt6mvojGoJBPMStzBwRx5M4UQwUUzdDGWY8LNbi1Sk2gRiiq6l5NfZ2GroweMTyOvLtq33QdBYIlGotSPwbZAzQyAiZtGNXHb82hG34YCDTCtDMHEVSbs3qOZLNxkH/puS0qXmbdec9qFNUPTFgQgG5VjWeb8yX3fl4fvS7jxmIQVBYcguDB1KZ2643mkRVgZwabj+0FXo8MAUYFkFRe99oA9/cPpuwImYQg4ZvqziDIxdfp2i5DAFahEdsYQ4IIzVFgyrfqETP1hoEEAuMXM57aVPbXjuY558Ngopg9EW/H8aABvT0TvCeAzmPmzLlff20O0K32Q6YBS9dSDAzmpUk6k8tEiGrmkjNSAATCJoVZqTvFdAWSfJZqp7dcjJiZbaTp3jSGAgwIE9ToTo21XwVKwzNIWCcRgrsCmbQlOleWIT63nQIUmmE1ay1mAhH3ldlKcpAkgK07FoD0YwJJsoMbNiauNKQRs2uythYDKBpCFYRHYC7OFY1hM/Z15STY4q6361D+mnnYxEzyDdsxNTUsMdCnVS6wu/T5adK06ZEfrL6wD4iepOUlMSzlYIjQmFxry7uDgI6AsnFcAAbrWQsClMWKyPmiRURR9R4NqjMy4GY8UGEIf6XX/OksbQsrwhxqnjM86l1Znt8q8zk7Cl7qfVIPQMXjn0w8T0XMAPIKI/hyAzwLw7495MC/7WaN/DuAvAPh9AGDmnwfwwRev520kZWIrE9gYDZThCHNTjQFx8ikg+KM7VWXtkknjWurzyOYEc0oP/ryTT5/xZoiuQiNEjHQNpZu24qI8z1E7mdS5bzxbv8QO1PLD+g0z4VFo70L8JzZTgW0tkfcm8gDgHh1ep0X24VPT5I3xRmcxjPKz51257NPlvGn5F2iFGQUtNpVtX6/Ie9Z2Il6WFwM0mhaB2OY0rBaakv9cu6ZFunGe11MsFtsNgDmCO4VPrhoS7vNQ3iDj9ZRmIT7y76Glv4N2+NovoO1K8RIAX3LMg0cvlGPm36I4YveuwHtIKAxQFTvSdQcOwTTiB79K8m4WhAN11IyTw2ZtsLr68Ph6kLQoPSNV0y0Q2tbSbHlY9EcRn4s9n8o5Zh6M0oTJT8t6u/h0NZo3Cdz5BBa7HMIc8UzUGbTa43O9R8xpT5uaaYgB0OHAEsc8vGZJmj/3T9Mq5Noia72QmcCoviOwu1NITUuFm12/AICYb0A5yMk/FimP/5U2LjSNkdaR88vp7Fp7QayOap3H1Q0cmbOLcq9Md9JLXBIRTQBewczvBuAbL/r8sQDxW0T0JwGw7L76uQBeddHCHhQacYeRVOqiabKNtkU8wGkTDiwCULgiPBiE34iAMJAqTAUXfqvf8/NWpoKCrI+IaalnOmj/WC3WgrFg7F2z6fmyZm/bM3fuaVnkzQ6Fw/RtrhEZgQdakdLt033PWiAv3u1IZO3NtN8SWRaaPAKH1H9D8GGM2YTLN0jkKU/v3/Emsxzl1a7RQjPwplBfwUPmDx9FZJoDZAtuiImpwkBjUe9DtNJXe3/7d3AkqUCnDfLbjWj+1jepj65MD712sJeYeSaiXyait2fm37zo88cCxGcC+Bdop729Bm2x3LMvWtiDRk4sNAcYHAPZMz7apBR/Q5Bc/CSEk9hpPOC4b+exMCMdogwerPlxcM4SqIGEK1NXkY7bNp6xFldPiFEZHnRMKqS+SZ/WT2a19Zs4SkFse+z0UJTI9KvWVwFSwTKbhpJGsZDMM3kg8Ze171gEhKQH23hxoKJVN4l2VCa5ez4/DOq7uMlOiBBpmHVFNHUnK2BrXlSr6YKLyzbVQ0HFxowMQvU19a05JCPxRYC5b99uQtQRzHXUF1pn/b7SHfbdA+qeIrumQQ5RU5/I+O39e7gJRxGjA+edTY8D8Ao58O0+vXjMgW/HRjG9DrJq+o6nQbRGsPc6aclzbFsZrBMxjcqFc+zIKhxOvJ7HIhsPTrWFu5JbNXpx6s7QWAjFiWSAKCSqfItuQQ/DFZBoIbuOmbjnWQCiRWOhmZgcQFg69VEoICyAItnJkcDAS+peYABEW2kOc21qWCSXhIog1Hr8dGASpH29luqx5qOwVdoGXsKcxbRjkTrkG+mCKPSKgol8DxqZ1zxSJdRRTaUBup3LUFQASUKDr772nWXmO2tJikHjG+77nr+FNqbljcA7d3gey1ekh8M6CAD/62UfPDaK6akAvh7AE5j5jxPR0wB8DDN/xWULvq0UBg7HQWLgsHzMdu0EHxxDw/2MLlNHDJhGumZaBGBSp0aZ8JEjtJshcl8AIabeHuhlm/QVbwHKwOQQIwUJ1Z4600/Mamq7bVKe/L6dHhC8g1nrKtdDXyVQWPSrRvCgS8UeXAwAnNag7Q28Gf0Z66fqpOMBOPgqmDnRtZf81ipFQ5pZfExdizChJ5mSFu/OaRcWxWZayIixtYp3kMByS5TUFs+wF76clL8XeLIA5d9fOIVvFAiwElazT3Nerf8p6GEAEIcOfNtHx0YxfSPaQrmtFPhyAB9/2UJvG3mpAu67aQuDZ8wuiTixjnnxPv+rUpaOXPXW6rvq18htHWk/Agx9MRYWtu01W+3Cv1J7WK8P9YXsnBuiy7SdctRmOGVtwuJaBgdjEso41FwlIcstUooXTMciqZyAsACWYWNdHo5JDRmZ1is/v9qHbldh907ZR6lxj56zbVZEE2LArRSGjQ0DDDee/dbz3ky6109xqF/S79V2O2FjMWZ9EjcHQp+qMBCOWl2pV9YQLMxN59YKH7gsBfTa8/cQEhG9kYjeIH83iWgmojcc8+yxPohHMvNPpSim3YVrerspx5lfiG83EctvmWyS1yg1iYqvzldal2DMTEHL7Ib29KMmgRd1+yRYqPv+mVT/DgySJGgpnYmNaGECM42ArbFZC9IvbcdXgF0UVDYxRQ1ixZzkGb6vamD+/R0aE3XvgfN3p/loHtYMX3buC10ZDvSzsQ/xB+PyXXL353oDZNuuE8ECJ0rhoQYRgie8CiOqjTqd87gYr4lJNLru3oFqJlpc0CDhPnMXpHfmAWERouwApD3j1ZY0F0K9ZTaTqhmnE/tPIRvebvJnU8spns8A8AHHPHusBvE6InoX6LAj+ssAXrv/kQeZvJawxnCBxUBfOp0PlROeHuYZUoyY5ODe0HyR7DojJ/dwgK4B1cD23Jm6cfDxw6NitE5+4V8lWQxHKH5RoJvLth7CtAZu5zPr3wbyu522FjQJZSIFQVvwgMG+TRlwPZjsa6rPL2sJBKe19GuBgR0CBdd3BhK21gW22aRqEtXOGHEnFjIttnsJ62HsncCQarF2JmvLl2B4oe+171baPNIeVvs5R68V9HVLozJ8fkBPpwti5fk1M9WFaa1d+9r6EBM3+ndo69oO0rEaxLMBPA/AuxHRawD8Ou5ApzVv2BaWLWzflghOWvWiomP21CXskVbQpESR4ooKL50ZMdG6ZOEZpStvZApZMBqmhmge0FRyskikpcgWIl0W5Y7SJVTTDeDG2dt3H9na6i6nmoU2ijYwsT3LE1k0ltnoXf1WJfBcXYrv0JuT7H0PtjdZA98grY7K0yJdsbpGxaRobZN+ajm6upoINOvYIWB2Q1Q0Ed1eRcdYODhINIAACuz2JOPUP5Q0Pat4avqI4Wp3ybwIiw11GAK2NiecDwFXxgBMqxMOmOTTCRB2nnd6r6tmQjOfunFGslX+yTg2PSyimIjo/+1+FgDvA+DmMc8eBAhZaPFZzPzhcnBQOWab2AeddNAqQ2E9YH4EEo2x6uQJDi6K+ZljM0Q79e0ozMy0Yl8Kdtd0fcSP7fc+3ZXHg3xRhX3zwCYtxWuJyRPQ+2QEtr6qDojCPk1OEswxA9pWb57Y5xsYgoUHBv08ggkGYBhItWOTVXw+mKVGVfLyB3eQ8OVDACRKnTJ+xXREKlGjM2CrhqpQFf0MErdT7GJn2pKAwrUnfA7IwMGBcN+2o98PgpjL00yTGXgJ0axEiFqmSf99PA07m1phXcCTeQvn9L+AlnyQToU1t5c+2n3fAXg1mpnpIB0ECFlo8afk+32H0j+kRH0voT4z3OwdTGRAgQA2oLzpZbT3DetD1MsJETmHq7nnZvq+lp+feMM0fnYGbhJuW1UYZm7wgDYy63pm50EBWEqLTHqWxaBtLv8RaAzNCPuuBUbYKz00TSdgWIB4Bodcf88AnQQ9fLcc/5YnqgnzMgChvkBE+0e7g7itoPflMPUzSOxMklF7qGu8Behh0q6vs8DgPo35j/4w+O7Kp/zdAYXXJsxcZyZHFs2BndlpcHb3gML25nAHKZ0yNvXhARD/X2b+UX+BiD4IwO8devBYE9PPEtGLAXw74kKL77xILW876VinLom28cH+hw2qPvG75OGlT920z+cdCiHZ6EzyDDtejsTKY+ovtGpW2UPLUL/IvNsl6ZEak2iH2cI27Jl7Hhw4pcu/C+IaE9Z+0/ITeIyY/KgzBtgX3u+h/nPMGoxumkzFLXwb2NMve+poACTgYCeqOVAgXSBXlZnpePQgq8ET5Bh421GYKlrkGCNuce/AGMzAFMOkh37bFW1C+0Pxxv+27x4wR3mNXqcHB9McWExN0g/yaeHOLp+DIa4EaNBJ3hr90uQFpDub/jcA733EtQUdCxD3om3U96HuGgO4rQBBRB+BtoJ7QkPBf7z/AURxlDQaCYjiDOz+4oAWiseNhi04oGuFe0QEFZbtr3VCjwfM0IzhaGTrDqaNfc0WCXM47nOZNkl1p0s3a90GfKsFKwA4IFlIiv63AFHboZZjXZzfxgP1smhegFDnSL5gLPpgtf+4141qrLcJmRm0LklmVnG2edvZdWVcKACzMkYxGy3capKO5vb+aO4JnPm910MXvylTBzBU44YNccV6MJAi2xYrXfgIufGyPpZIngsmJg2DLi1Qoafh5nAezPWhVqP10nIVKE5ERwsLDwHJLtx/EsBbEdHnu1uPxZEHvh27kvpTLl69q5H4Pv4PAH8OwG8D+GkiejEzv3L/g4Bn5XCqZZAQSQ5Cl6gIcjHWVKptr9zq0n0N+fSuoEWs0WgQsZug6Exkn/19mO+aXSMwVAp2b1O7/UQSx+bioPph3ePpfAvmPZJG83Wd0E4a9KYl36WsAGjMQMrUTvMS8iGSNln70u66lxII9/WV0JoGoczV8snfdZBoGYBth2LlVYqHU2lfSd9oXxkOWF+6/pOG5/2crA57/ryvitO703oOhyilv8V6GAEHixxrv/1cDSbT3IkGYDKP0efwyegOBggAN9COaNgAeIy7/gYAf/mYDI5dSf21g8uvB/AzzPxdx+RxCXo/AL8ihxOBiP4NmmNlDBCqBeSXb9cHzJc6OPT995tpqRCjlBTywtSlEELTIi4w2EYS9z4aahV2c6VonfjGWPoq3LzNcTDtKNN325aPK9U/h+1JzED5uOYZzL9ea7DjNLHY6M+kaaeBaCBCMEUN+2JUd3LtdSChdfLt0DpnHHbgGLTDNYBEv0ejvtCyeSkYs3uXzbrkOkHb4I+5zWVKX1Hxh+30tu5dhezmSjtIyB0ohA4IfthdiFTrUMe0AAMUHCa4dTB65gj6ywhSlnwkh0d3VKP5XGru+MvTnaxBuIPevpmZf+MyeVzExPRuaD4IAPhLaKGu70lEH8LMn3eZwg/QkwD8lvv92wDe3ycgomehnbWK6S3ffJHBIjLJbshbLYiaA3XTUtHjPBEn8uiwneEpbdxn0MJBN6jOquRKKeG+9F4a9AyoJubvsw6iOvqZE/soA8Oe9nWJFY7TuXaNwMGBuufYJJpgPx2uF5Y1jo5MetFxNO6g4LUHbYs+yloNyw+BIXlgyKa1pca0zNN+p/5YJdva3YEAR3AIx9gmrIimJI7XDpAHAh/FpJpD6J/VTNJ9pz10E1NfI+PXuqjw1uZs7RtGcm5kJB9kQsRtsWE5pQZxwrxuH91PRF8F4D3QeDkAgJk/dP2RRscCxNMAfBAzzwBARF8P4D8D+FNoh1A8JMTMz0Nbn4F73vlJ7HhJpwXHQtIgIL4GmLRxzCvXgbdIPWISeyRLGlxedbLuMyepCWxRfjyfWwd0ABknkQ5NSwNNadXEhH492IF51E731WkT+h6YPefpGR+y6HXzIpbvQz79ojS/kC+8k4RV7L6Hfkp9EQQCzVaaEUBihbyma5pSqATiu7Kz18f5ekxZ3uShIJTrY20yjY2so3z8h6UflZfaxXpNAKFOCECBSU6IU41BwWFyTB9sAkEGC18HKq3jvW//yjSa03cmvQDAvwXwUWg7c/81tAOEDtKxAPE4NFvW6+X3owC8hYTA3rpYXY+m1wB4svv9dnJtTMLoeSYErmuA0JluiJG+gADAgIWC+v1u7BhDH9WTpNSFtAk3aZOkuSh0DSzAsrmbnmOdtAFvgqgOKHQC+X9rdXG2a7s8AocMKpok8/hRMzI4FAWCNqm7lD3siFhh4b4WT+Y1Dn0nc/srO/STzKQcY+DVVdm2u14Waz6b5LvJ4GIb5LnrvV2DZqVrlExH3s+gbQgebH13ftWw6+PgR9B7IxSx9H2MGACoRpGZpN5LQ1Kf9WeC8Aao8ucd0xBTE23YBAYqjLKpKJMzG7kV5Rray+g71xbRPooTBvmUi9seHgDxlsz8fCL6XGd2+uljHjwWIL4SwM8R0Q+hvf4PBvAPZeHcD1ymxkfQTwN4ChG9ExowfDyAv7qWmNAYCg+5UQSEBTAoc4DsaYMuvY4Wn/U9+nUXTQ8M1KV2Tir/skpRwKX46dMav+P+s++eCquDTXTPqBQcNBSSHT/wTCLVwzoWLl9/awQOSXoeSq5HzM8eGCBSYuD0WLy/XpGEdL4Cqj3V2D+rk1yBQTo8+mwiGOQ+8ODg67nXnJiTj8YB3DgTYLOzz3nwrA4Wctcc8PcMU7vWSIccpde4rx99nSh+X9tI0c44R48mpIlRJsZUqo0PLnJuFtrGhdHH1QUN/au1LA+zugLdyT4IR1v5fC0R/U8AfgfAWxzz4LFRTM8nopegOY4B4DnM/Dvy/QsvUtNjiZl3RPTZAL4XzVX1L5n5FXsfOkIiylto2NGh0OSlDb6iTErrQ+4P7UxqfdZL64BjzP27TryFrVof8RNk2CGujfLbQIIHnIERz4sWkKCZwvNLZhEZ+4VMrLltx0jGSZK2HWbhQEK/o38H0E0KCRPW6kXcwYH8+0hpCXD2frlMaFteuHof815NW0xtN9v7EbQw+3lN1QkiQTPVAv271Xtunhy1RbY1YFy30IeDfsjAkFdKe/AN/SISv5qAS2ngsJk6QMyVgFqab564O6G9QAgdV3LtlH6D0dYtdx59BRG9GYAvQFv/8FgAf/OYB4/atkp2APwwAO8pUUsbInq/A49dmZj5Jcz8VGZ+F2Z+7sF62rqFKBGZdK3pHCPuWyEX8FxQZ9n8DJ0BNa0CbtvlBg51lpGue/nrRHXAsMaEwkTK43Xf+PVO74EUqyYlDw7kwEFNLGEjPTnIPdvTR/Xw3Rvmmbs+0ibijdymPe31jyt4UPy92KbcZ23SNoV3MmTmrj4qmY/CfhfmQp+fVm90D3t4E/VIndV0yj3dew71dHUdmn2knM6Q2X6vkvaffV9Ls/J6HSBFTaEDRNDMXFPV3EiFUaaKMjVwONvM2EwV01QxaUCJRB+2ZxCiEW1tE6XFr1ckL2Qc+tubD9GTiegHieiVRPQKIvrcdP8LiIiJ6PHym4joa4noV4jo5US0uuBNlgs8hZlfz8y/yMwfwsx/gplffEwbj93X8OsAfCCAT5Dfb0Rbo3DnkEqfPkYacJJ9OlQFEE1AGPxO/uaCOhdn2yymOdTaVqzWmVB3ReLPdf1A1CCo7mHkK/VfkyozU1oydMc05HeQOtXuniN35ng9mCkuKWTp8wEksnkD7t4eWkSGBQ3xiDqqpO0ilYJWN3wm/WVH9ggQBoC4BkJaLW/2Wbzz/HsgCPQx0YWSobCQ8/Vaqte8bAwdfvEjjWmh5SC2b6Eh5L9BIVSaWWma+rqkaarYlPZ3VmaUIiAh6Vvaar4HFSCK+ywnNDGFBu772087AF/AzO+Otg33s4no3YEGHgD+PIDfdOk/EsBT5O9ZaIe5javXAos+Ye3+ITrWB/H+zPzeRPSzUugfEtGNyxZ6u6gUbqdhuv3ymdFs74Tm+KpN7Sb0CcGyPTWg/LdgLo2bmK1TD2uZizFpBRdzEO6bpGnyHKvpBpCRz/6ctIVh5hd7hjtoBX+IryO5+hHanjfyPdiDgUWIbKhbKtco3R9LxWstH98PK9vVEM7o5igHkqx9IICqbfD1Nodr4plB6neg59twlCCq/WwPpT9Xj8hAW+bdOe2keP307ZVr2hQ/DjW/yJgPoXMvzyRhA0lfcSzrkEDCtAf/O4O9b5tLZ2HnxE17KDNubHZiXiqYmMGsTL/2MQEYKKiWsWjbKegEWMPMr4Ucn8DMbySiV6GF+b8SwNcA+NsAvss98gwA38rtOMmfIKI3J6K3lXxG9KNE9L+jRTL5rZJedqhuxwLEVlQVBgAieivcodY3NR+Zs1r9C9DJ0zdGY2XqMwG7lo6YgMKouyLSR7te59IipFTj8BujeYasp6ulSWPE+8GhMXso72+UYtuNnzFAkDOEXf6aT5A4EzjYXkDF5cuuqsl23etPCyDYJy33RPrHoZ4j8uGKdpaySIPBB0MczIDwoG+gTfFEOw+ICg6Evg33qOpy354n148uv96A1G733QNB7Be4E9O0jxyguboHE1fScLjI+BiBczAvxZvDFdR+/JqwQaEvgykl8WCrh185rtlmwXohCMBMS5OsSZrUxFRmGxfb2ubpZppRqbQT9uYieTRw8GshmGE7JJyCLpDV44noZ9zv50mYfsyP6B0BvBeAnySiZwB4DTP/fDqsbbRG7ElYP6Pn6fL5Ze4aI26dNKRjAeJrAbwIwFsT0XPRlml/yZHPPrhEDB0Nujd/XF3aHFpeM6DqNAgGUEqLjih9YLUDWzpI6N43mndkyFGaz4AxNLdIWjvRbkUiM2BIjI1TPnDaQ3DMurDMIFF6nuQmL5N75oLzyoNdYErWR9wBVipgG/sBgfkvggv6I7FzOJn8NMQ319+13QmdwzYyYFrGqFztK2ueA3KTTPyff47QF4fJ96DZaUJff/cuh5sNlv78QlLPDTxWml4Bha6huj+Xtb2vfcbs3OeSeZmqaQ5EjLMy42yacWOasavt0CSglzFN1QKUaiXzN6hzm5lQ0Y5sPRkdPydex8zvsy8BET0awHcA+Dw0s9Nz0MxLVyJm/pDLPntsFNMLiOilaI5qAvCxzPyqyxZ6u8j2xTeuBPMTEKPvYFr0OEyKk0vMMJUIXAgVxXwarPmoFjGjRwQhPu8n0mjijCvv06nI2vM16VEmuQmuFU0rytJYAqXAXJThy2+7NWBiwb5+TDvccx5kssRoZjELE1O0k5+uzSMbtZ1BgGhaMnDQXU1nNw4ck/V12ru8YgTiCVCtbdrvSVJ2is0CLO27Xz2sY2kIgMI/Z+d70HUQ6PeHrym9W8t2NE7sJgVAsDHl1394zdT3m4CjrYfYM3ai9tr6oaij2UUv3TPtcKPMAIC5dtSZSkUBo0J9jV2LuG3ECFrTVYiIztDA4QXM/J1E9D8AeCcAqj28HYCXSXDQhdaIEdETAPxDAE9k5o8U/8YHMvPzD9VrL0AQkY+V/T0A/9rfY+Y/OFTAg0YMzLsm4bM4nWlbQFsC7YRxE6HObaFM2wSMRdJU5i/S5rZFM/G9hKqbgzE1M9S2axw0ozNNmQAWMeQmkP6taQ42saq7L2Jtlt4bQyFLoqaXYd4DkFqsg4B7To9jDEfDxTatrdZVJmig4xihHvaildatv41BV9hhQs3cQamMeEZHv0ymBZovaVeAnQv7rBTeBbifH14n4ccKEh4Mffv1EvffdtufdOb6ZsFndXFYkui5AHwm/b5R8bczHi+lK9iVnfzWz1nep4JMfi85cMNVsGuqtBQGLBCCemScAkKVeuzaZ1RhXTt1UFS71aqRgE37kAuAiUESpXS2aRrD2TTj3s0Wj9xscaPM2HEEh7PSTFGmHewQghw0JHY3l7YW4lR0AvyRKNHnA3gVM381ADDzLwB4a5fm1QDeh5lfJ0cvfLbsT/f+AF6/x/8AAN8M4JsAfLH8/i9o/oirAQSAl6K/4rcH8Ify/c3RvOrvdKiAB4uY0cBhbtFFtJO/mWQAO3VUB+wGwUTUJLPGEHmDBjIMsKQjdXYKM28AESXdsHo6MVXq1TBqZiUE6dAz2iylkN30n9S/lw4Wqzb1ASPcq3Vb/cZbcXgTjQfLXqCrK/cHCNz8Ocp9VYvA4Pm9RAZk0KgsOxfB1XfQSO+HCAxt38TPdSs9a9vKO9c7aQ5+zJhpSa8HJ3BXR7y2oIzZwltdeauaigc4Nd/lsaLlJ+HCtIcUWrtYQZ7L1a+5T/0zWqTtvYSgOejfjWnGJm+gqU0Xh3TD4WUoa+UWkVhrOamJ6UQKygcBeCaAXyCin5Nrz2Hml6ykfwmA/xHArwC4H8CnHMj/8cz8QiL6IgC6xmw+pmJ7AYKZ3wkAiOgbAbxIK0xEHwngY48p4MGk7CPQCeXXBBQCamkTwOaol6JmNOa1A2gjpz/o4DZJtG9bkRcoLZzTWYIvcZ6A4kRUK4vVbcX+b0xZtQgoE6C422U2Vfi6JaAZzZvODGhcl1G9NO8s0XLPUzUhQ0TPmNVpKkkADr6JUFl5L2xaXdTuFsAwAi7q/Rnqv2/yK2OfZA8hCrdaUSNB1fVBazOnh9wl966okmkMWXI37cG3R5ltfqccGxYEDu0r9a0pMLgouOB38CCxr59i98S+GIAtXORSQf/cUDcj7WpBlVy9ptAXxMECUXQszbX5H0661cYJiJl/BAfEIGZ+R/edATz7AkXcR0RvCeltIvoA9G2T9tKxTuoPYOZPdxX8HiL6ygtU8EEg6j6C9Fm8KQgtigmTDK50cItNAGUycBMvTFgn0bFj2FhKWGaWIQcAWZJE/J0dkjltZmJBEgbAXqvwz6QuWzN7WdocteIjqvaQNzH5gk0K1XsFbtsSNulVOXVr5gq3Zlj4sb3vKqZC1SASplDqL61n92nE/tG0a9qAmZikPh380BeG6T0vTGTGqH3qx6HeFlDQvaPKFraGZVFXBxSLehsoZTTjRTpvolsIOenT8vZt0e9r48TlIdNSzpvmvshNopf8WgZAtAH5Y/mca7H7RdJ2f4SAQy222PVkdGAe3CH0+QBeDOBdiOhHAbwVTnkeBIDfIaIvAfB/ye9PRNvP484hRg89zc47NzExA7RTTt1G8EhNtOcI/ZB4Z2JZSFQLScxNoDSZLBQR6F80nbbFMbO9TNlJv+AOeIcE4JxHoCxxqySZ67NCQZJ1IORNFNrGxoBkLYea+zREVX0Xmp4VLNAXOTL1QAS1y6vPCYiAwINrXoMgV69D/eTAQTUF9TNZng4gFu/Qv5wAwB6VpL92FIChbBPYkMsul+363iTnrLUswCFuHx7+0js8hkbOdqJ4Xf0kunurNxF5YNhxMXCYa8EsC1rnQigS8mp5it/BL3St9YQahBeY7mBi5pcR0Z8B8K5ob/uXmXl74DEAxwPEJwD4+2ihrgzgP+EKq/NuF5FjFEGaTEy8iAOrEjdNInNTZYgVYCKxK3OPVMoStZOegplpkMYwxIGE+iG8NLWQ0rxU6cBoweRqz38hPYbOSp+evPTKy/YE08BaPisSbPPzUH9GAgW4OqZgi/L03bA9b13gFyru5L3vnMaYJi7luvh6FkQ/xL4uUdDzO5JO6HH+XnovEZh8v3nABTwwIKw1KLsGCOW8/ek2KWE8lJjX8L379BoGTloRqST3clFdEIYzL66Cw9o4ysLPsFN7n+nW3rb/EjEqEyZCc0xXmOagOx3MlcT/0NctKdVaWvEOHN7UdnMlonsBfBba8QwM4D8T0Tcw881Dzx4b5voHAD73SrW83aQD2Um73gxkE1MnMaMNJlpuZmZat0x6W5GbmHWwx+qzK2PPgEHytMgdJJDQtuinyz9MTM+YnQTMU08zMk2FLhvU1UDKEiGAIrn66P2Qj/I5vwmbr0Pt0j1I+kMYj9l5nKRrkUfqg1Cs0JXRKRhBzTCLto46QIrzAKtNYP/FgbGBnpxfMIwccv0QLjkmbfXhLoAAMs6cxF62hLIFplvAtG39VLzpUzNLAk4u15g/ubIY8axw86tFM53ft2sxBhOo5vedgTCYlRZ92m6OzmSZuWBXi20OpOsZ5to0Cezae9RwV6CbosDALPumnRIgFF8fBvStaNsj/W/y+68C+FcA/sqhBw+FuX4pM3/pVdM8aKTMRh1tnsHqwFTJurSBXzX2HP06lMHUxpSoSFgsep6ZievjYbwMJDmiVk+/mMnX0zNbcnVHmmjGzErnYax5OYFwjXKEi0q6bimC1WkRqeIZnQNUlZpz+81Ho+1RRlMg5gzuW6AoEAvfUt9Eq1uXssEE3rkw5l1jppSla1dH9vUi12/C5Mld9+mQn3NrFliOxMSA6QTf1Ujq1v7VaDi4vt41TaicN3Ao225aCm2i+F4WUnvt/WZaDlMPZdax6LaN8Wa6pvE5gHDCQXjfAxAABnXzlDWuAeAAkAVuwHae7NpcC2bRIKqsnJ7ntsB0M9W+9Tejm5XW6nEVengAxB+XfZ6UfpCIxkc3JzqkQfx1InrDnvuEdk7Dlx5T2G0nz8TQpZdg4qluUgFy/GDfSZMLxbQg+MN4bNKsTPiRqcW+yjMa88/uuWCicGk9QOj1YFbiJOhqGa4+QYrT5iWpedEOy4vipBr0cTYnZb+DSf9pGxJr2ywrpSUD8vUf9DGzrHPZEcq2oJyTOW29tqjt9f2TtR0Gln4IIDJ3pGsOJMz/MKirb8dQ0vQA4bXE2rSGMgPTTdEebknUktZjilkRHAMnZeR2koZpEboti22dXjw4w8LDLYQWvY6LNTDU2+/HRegLFThyH4xAIWsj3JzLikIsR4XqegfzK8wFzMCOGBvIGkkZJ7r7so2bhd3zCrT2Xu88ehkRfQAz/wQAENH7A/iZA88AOAwQ3wjgMUekeeiJAfJS0GK9giQrfXEUqElLTARsZLuDicMEodrUWVvZ7A7dWTB0qYdqKRVNUOPRSlcPCo55R7t0ksD0utsmWSXgoZqP+JzeM6l5MCl7PakzsOyMZywkSdVkwvwL6SQ/cbLau9gBIOqr3Knn1747JGWAZU8sulkwPVAwPdCZaVgP4BjQwh8D91uZSQEwDRQBD6xqUpr6n3WAB3LXbmPceTEZS523bUzZeJS0083WT5ubwHTOzW8maeYbtGiTRjrxto+3BmBk5QEATwTesI1fBjVlggnlVtdays71J/q4tLHl1n7YGM7byI+YpwfXTTPTVdXC3DivlbBTjUE0+qkw6oYwccX5PGG7mzDvJszbAiptaw0f8jpXtzOzvlg1TZ6KHh4A8ScA/BgR/ab8fnsAv0xEvwCAmflpaw8eWgfxD05Xx9tNSYX0DE3JM2fAHMPKg7wtVJ3TAMwswkmi1GJHVbFP/+c1DFeuSf4+i5E0ps3cMyiNKSZGvUgzqrvZmcjKHjrkB3XKtKZhZTOFSdCSiUaxLJsoIFLV30Ao52KfP4eZrcw5rP6dFV4QTHmQ9Gquc4BkCZSxKUik9ziM1KkIbV74DBjmL7Hq1NaezS0BinPupiUfUkv9dVmeah4qwtuTP8rGBjuBR8e4AHcACI5lmTbm+1T6JQhAFWM/kDPlekd/z7RNCHUoz6IZ2PNTxURt+/3dXLCbi23KyLWBCgjBvBTHaxvX++bPRenhEMUE4CMu++CxUUwPC/KLuZT22eEXTE4XmJX+kJmF1Ezi0+/L2k0mtdJkDcHnb/VJRYyipIbkJeV9WvQIHNjP0Q4Ovo7BSa31XNNaXL5AYxbGzARsrQ5ey6D2j6XwZZ66nQaBth0cyrbnacxx3/tJkq85+PVT2hy0DG9Scv3rw019u0P/qQapz2g/zD29Xqe5m5QaQAA0S3+UPY2SMssOXUtWzUjL0Pqn8UZq0tq25yeJljJZQTS6vCBw1KemMWXG2fm/tGUJtHo6HpjBtaBWRuVoS9tM7fpunjDLugYoeMqztbrzW7xZScDH76F2ZXoYaBDM/BtE9Di0/Zs27vrLDj179wCEDbClRBckHJc+R1NYRNM+BuuzIJcsS516P+UXxpMyIZ2oKUEwL2WpjdY/sw8g1Idd+pxfLje1a2Hu0npl0HHAADSp15I4Sd/8Q54R535PUreulNboHmVqWhcNhoJqIQMpmHOd9Vpx/ZPNVU7aXaxvGIG+Aw6/piY0y2uo8tsilm5xk+p37dP8Vv59IH1XbUTSVQGFRd3879qjv6ZziLM/AcTkgsxU8MljMo2PUUCFSyorptNF0QSotEO5gMkyImLM1LQGAG1PpbnvwwU05s+lL6BjBRAxAfoFlSehJNDdqUREXw7gkwH8KuLs/dBDz949AAGVXCi+OB+GuPIyA+MAFpKxB4/RituFSWKQt5qGFkNTmQgSiA2kUgMZDzqOeY00CNVcTHs5NDdGAKXXEwPIIOPJ4vUhfDA5c43JmBQ7YIKedK2EhF+SC2lVH5NFImke+X36PvPMenDdM3OvPVjEk6s30IEvaFr+nkYLaZ5eIJA609yY9HSLG7Ou3ExGHJ/Nwo2Woe9YndgFIvX7tntGrnVTs9K5mJgEdG28K/gSwlwyE+kBJhmCDvI4kXdlWkcl8NxeQLWKw9ZFbKk1qMrJj/bCpE21EojUeT0Ahx2d1AfxMHFSfxyAd2Hm84s+OIrgXhARPZWI/iMR/aL8fpqsrL5zSCdk0iDU1tnCEXGYQWp2OqG8KixAYfdd2QvzS8prEbGB5fPRXuooaQfhdxl/9hAuV17KYyhRa19y/LSqeOkwM1ZyxRozF8flYPFaflerjk2VLHWfJb+baTo2VaX1LMX69od+RRIMsmbhgdc9o/W3envHrP9z1/KKZOujnUQsiclsOgeK+B7KvIKYru/0HZW5b8mhQRarTmMZCOZ7yH87xrRl02BUo8ghzwutMo9VpD5HusaxT8yJXMkCEvSvzgXzXLATx7Qe+2vrKLlpFLMeGzwvNQdbSHkqGs3dQ/P5wadfRNtg9cJ0rAbxjQC+EMD/CQDM/HIi+jYAX3GZQm8HNfstLZkawRaPMfVVqAvKUrGXlgQogC5V+ee0/MVgyKBAK2WneoyYUQAGBQG3psM7Zz3jI82QUt4+37V6uLYNHbGpbt7P4PcKMlOc789cjlYzS8f2PvsE132yhrH5peM4o9eLR32pddF3zVJH13Z2/ZuFAmOYjgGvahIZaOWfajyk5qVzRtkyyszdsT2QunU8hz5SJivXyfc3xXpZXR1ATGJamra9bPssAE2SZ77n2sXofZm1HKu7a4Ot61BHXW2aAs+6yWQrgEGocwXzBDAaODBF7GTYegc7a152VPAr7U95FubDRIP4RwB+VgT8W3qRmT/m0IPHAsQjmfmn0jL23YWqmIiIvgrARwM4R7ONfQoz/3c5cu9VAH5Zkv4EM3/mUXl6aS0xam87XY08UEc0ow3KQsI8DoyCgcTgo0aChL1Wdy+BIT6jRfjVu/Aag2pIxux6fa1cz8CRylppE+V2jZIN8vDSMYAelbQHjIIZwn8CfWfRmaJW4pmvlssYm6hGmtIgTejvlecCKHkJeO6/UTtQeUa4KM+BSNk2cJjOGTTL1i6Fll0/eicGTgzd/l3NTnmltzrDUd1WHttWftfIZL1EIRSdC9ouBQk1tXlyEWjedGSgpl0p98w/qO3R/biAHjlIOj4KeG458E4Ahe2mrOcAGA4c7IAvtwjwVAAhoPwwoG8B8E8A/AIuWONjAeJ1RPQu0HlO9Jexfv7psfT9AL5I9ib/JwC+CMDfkXu/ysxPv1BuXoLKt3RyO+nQ+w10gjYm3BI3SZSX0vGgXC8tDpM4YNAJomA1BA1l/HCJ0YHBm71CdE3hJRNkV/8jNJisKQz9EPvIS6fKENQRzb0/tJ3+OesTbomN2XvpXNehJGCAPTtq1Eo9aZnG3pX7HdLV+L6D2ShrCqkvRnVTyb/MjElXS8+MMms39IquaXu9Ptw/bQ+x0PVxnnD3N+hnW0/BXbKfWl5VzFU8IWwX4+tlWi1jEWJrIFlSn7GbWzYPVQVCDziw/iO3N5RoF7q4VRtZ0Q+PklXqRTbptPFzAjokb9xBdD8zf+1lHjwWIJ4N4HkA3o2IXgPg1wH8L5cpUImZv8/9/Akcuf3sPvL74wOwCIwgxQNBAjM7sOxJo2NwtFVz+6Q40Z12AnQGazwiMRwrH45hs8tLF5wlTUFNZbbHkZq8JqBuAJaFfnB5dq2ElyGSmVk5oIObvGEF7RqDc+310rRJsK48NVcM85B75tTlBgjKjDS01cxLozYkZhz8R76dCSw9c2PEvH1EmIKT2bFrbLMCHbTv3Bgb9R1VNmf7dIuxuVVB21Z4c553gSWMy/Q6PdNVH5SGfZsGoSYl7n6h6Wb729xSzaUDBBOanYBld3wiE0Yq0E2GOha9Nit1KdQAJYCqvueCBiSU+niG23kWYHIr7ZnS+yXQhvsYkzFjYGBHzwJl5zYgPBWdMq/bR/+ZiP4R2pbf3sT0skMPHrtZ368B+HAiehSAwsxvvGxNV+hT0Y7AU3onIvpZAG8A8CXM/J9HDxHRswA8CwA2b/a4heoPN5lMGkf/7aUWL+UyDdKoZOsZb6gM4mBJ0u0iuWeqHtC0bOdY9z4HAwZJV6cm5TUgZOcH6EAWQErrSf1voU15sPBgugIS/lnf9kX/6O2B5G6MVd9FFTAmmfxp6+mLTsyF9O1AeVhHvZTft4JDTe1NfRP8EFmDkHdAzN0PMHe/g40Hy6yJ0l6bXfpD+oAyzcu/N4qAb6a6HaIj2vpYTEzUGCtPQK2yVxYac2fRCPx4sq1H5FnbKh97+sP1mZqJrA90F2XJxOah/qgCQKU9q2M/Hxyl4HAy85Kr88OA3ks+P8BdY1w1zJWIPn/leitBzk/d8/wPAHibwa0vZubvkjRfjCanvEDuvRbA2zPz7xPRnwDw74joPZj5DTkTZn4emmaDe5/4ZDbTA+IAXKyqdcw8TKZKfcl/UHspAg9cPl7yHGgo+xhrllLVZGTagtvaIdjCPZAIONi5w1KUj1m3Cczumu8PX5/E9IJ5wLfFAw3iMzHT2Mb8e2GeY/RV0RVAcRKj2xL7IGVAWKM99V0wMMdc8zGf4XH/7oNfLHF+E06UQTMwM6h2jS+Yb0SaXsQeemHEvxPt11wf9BDhvqUMu08G7VqmVGT/Jg0v9mstRmNAOsF8Cx7MXD393ygi0LLK9tkw/wiYWHwM6GfHp4OjgkYLHDd+jqWHAUAw84dc9tlDGoTuw/SuAN4XTUUBmnP5p46o2Ifvu09EnwzgowB8mByjB2a+BVGDmPmlRPSrAJ6KA5tLBenTSU1qnhgulkNPa4M5M8gstfoJmz4Nf4yhYf8A8hKlfAY/gwOJABDQayzpuP9GA7QmeVEo3xz1a/VYMLTxpz1DMS33Klh9VeBbC6n1z6g93qTAyh3UkpnCSIEw9+WIho0/Iq0bIwoOwXyWH3X17H+8SBx8GHNn0K3TGPHchsE48H1xoF02xvX7HNtCUmaODGNmlAJUCQ+tTtNe607zGw/et9V1+KADWKt4n2MjLUzttGwqS39PuiPuUMA5Bbk+vZOJiJ4A4B8CeCIzfyQRvTuAD2Tm5x969qi9mIjoPwF4bzUtEdGXAvgPV6z0RwD42wD+DDPf766/FYA/YOaZiN4ZwFMA/NrBDN1kCwAxo9k6GUir9jtV97wydkhetTtFiRFUaCuaEM6ZGJkcvElnzbzhF7zVpEF07YGtTDjtAqXPWM8wPXCNflvxrr4LE5NjGIE5Z+kvlRParLQi/WbNRbdi174N0TC+jNAIx5RG9+HqMmASgRH5R/z4CAwV3Uekefs+9L4bju/Et9U0k52amHQPVgBE9v6ZKIAE5ffl+mDo82K0+QBYJJiZtczXxIBbe6FgXea2hQXVvk/Z2nw6yuySxlHQdBD7itI7M62D0Feoz2RRVao9BFNgHtOnolPmdfvomwF8E4Avlt//Bc2kfzWAcPQEtHBUpXO5dhX63wHcA+D7xWSl4awfDODLiEh32PlMObDoIC0AQq+nePCowiIO0Or2XErgoGUcDJfcJ6l4lTtd804+YwrqY8iStzktuZmXPOM1o7PUgdw1x9SD5J4nkGeI+Z6vi2PsoVkZHDzzTtJv1gx0awlUEuDl7lNJ/aoMJHT1qI9deq1eqL/vOm2PlzzNL+L6Ym0MpOcoxd1mxm5mncqLtMEn5TUIX/8MmgIm3vbPkLrIM+qkzhpj8EFpfrUNGhIfhApcq32Q8hvSQKtQn5OpngS0Dctdv0njw+FRINDENk+bZkTL97VvXl6S7mQfBBFtmHkH4PHM/EIi+iIAkMjRo5YLHgsQ3wrgp4joRfL7Y9Fiay9NzPz/Wrn+HQC+4zJ57tUggIXkFQvuzzMoMgf9DsTtIHI+XsLJE8gxx7xdh/keFBy8H2LEGLw2IZpEECETY46d1Ouqpptc9xyyGXw7QDTDecB1VbCFZ7kuvj/8z8yYhYk1B/1yE8bQFtUYFGBzWVqeu8ZaZhIYjHx9RiDp0i3AJgHtKhk4OEam7yOsa6HldiquPmq+Wpjx3LsmwPaXihqDbxsv6qtj2fuiDChycjfmrS17+sBre33OkP1ubaLhwtQAFJA5q++yunUyzmdiY/yUZqE7GCDQ3ADvDeA+InpL6NQg+gAArz8mg2OjmJ5LRN8D4E/LpU9h5p+9eH1vI8nACIwNaHvSzG6HTydpZ8mCCRaauJA43ODyjDUwDkRwWEwgin8a4h40h5L/XPiq46ZmRtm3iM8apR/KRVz7te9SHwbJWftS25gldp+Xa2uOuDLmnEE69Z/WwUdf5X5WgGGJptF0C2DwJH1lNnKNesmU3vuqacIjXHp2JD2HdmsaXZQ2dw2CJWoJhQwcuFAPZKBUrO8TDxJ6mTsgLrREBYYV8qAataJxn9iYH/XDSFBIz+Y2meLrgCS0V9+hOzlLV0sPw6F1TJ+I7mQNAr2XPx/Nf/wuRPSjAN4KRy4rOAogiOjtAbwOwIv8NWb+zQtV9zZT8eYg/+JINi5TCSMNTpOSKhCOHHWgYBqEzF3LYyGFwQZhjhgi+bTQwBS+qn4HALbwzYfqemDQdg0paSv7yJt3rJ3enFL7PaXhnNB+ZdfepLllE9MwD7jylflr+gEIeW1l4ffwYDzSILwWM6hPYG5pPC20iJr6cJFZfManXWhHMi5GmwSGtS6IzJdF21BByK+gzhL0yPRlzbF+k85K29+bAFQB0m1sXB+NtFDLF1iuTUFMl+ubASW8E7vXX+ziXeR8TwUQozF5Z9FbuUjUFwF4CVpH3QLw4QBefiiDY01M/wG9Kx4B4J3QtsJ4j4vU9naSlzwXAKHSvjL+JGGBHEP3g9JNKJO2HMNZMFUHEn7CxIqim0AcQFTndwgrpUfg4CRxI/8jMDNxKqZ7Iwk5xMfP/d6CgY0ANjNNr2WMmLZ7NtQDCGshdOuGkYYyAoAARGvpQ+EOJfZNdv98ZjhA77+BWYWpnbttz1p/c9AedJwyETCJ9uAXTK4skvN19AvqstS9kPoXfaqDGn1hZcqrNyq1Ra7Z9Mk+Gzd2FyYw7T9fL47jaiHo6DgevRNvPssAsQbglyDC6fK6TTQBeDSWI+aRx2ZwrInpf/C/iei9AXzWsYU8KMR958qFSYhhYa5VtgsgN5mg0Q6a12Awkp8IPg2nwShlNpWlS3FB0ss+Bu+Qds7n4e6znvlppnsGaYgC0cVmCqbaR9JvZQvbWZQcQARmpz6YPLmz85562zm3wwNS0lT0XiGn8Y36UPKvpfM1v/2IgezIVKd1ANDtfJ3PEDpQW/21vhQB1Byj3qQh4yFokCCT2NW/0vc/6ltb1E1BPSPMZ4S66Z9VF01S7/+ujVLvj03s++ZT6wy8a7uea7ZDmtozZFyBRYto2i21FfsOdAKz9Yyc032tr/hV6sbtKabvldFXXMPloa9nDRh1DLvfVLHYCn7hbzkVnTKv09NrmfnLrpLBpc6DYOaXycHXdxTliAzIzzBhCY2hqhSemY/OphFD0zy9dpGl31yn0XWVygY+B7WTL0FKOYNjYGuhOplcXYM2lBib34XVnHsefKTdvklBytOi8oR2Ur7m6TWvUaRJ2FRxRSMwM5aAE8OBQwDS9Of6xBoB2/e2fUp+5rPy79tpm+T6daS9rvlbetSSY9jmiyI5O7qDnh8PwQeRBQ63qFJBM0jRa5qSBxzJvUdQqSZDw7lhPg5gsY5Ib4yAe5/pyI9Tb9bdN+RtTOtCxhrzyRGJp6A1M90dQkcyiHU61gfx+e5nQfOM/85VC78txPGTALNje2e17YHmJ74+lwZinvR5gI2Ywmr1bNIhSLxhs72VfBaS+0r5o2GRJT4/WfR6mZsfJzj3vNSOVI5VNBbNrq4Lp6n2d7a/+7J4+Ue5AK3TGhC576vvQ4UE6SBzXANdU/L1Afz6tWVdU74+SfD1sAPluSNuW+fQwKFu0KOXBuPA2o8GkmHtjKtH0OwyWGn9lHkLyuqRr7q9RwMeCmPW18Vbz8hdX+QfBKH0XpLAFTRyNycXpiY3roITfQAOIaz3FJTf+51HH3bVDI7VIB7jvu/QfBKXCkW9beRelo1vWXBkg1cdnmoCSkzJBqcISkPpDxjjMsXvI6bk/Qve/7BgbJKHMSjNP2kRi3oNfnfnOfWJp1JWmjjh+xzbbtuVuPy95BiKXWHI9l5W/DaWj0qOnPrA9SOl/tbri9XGuS7cr3O63Zgt29kE9rpdvymDC4EKa0xiJK0H4GPrE10Ex2JO4on6GdCeCbq82Y3hsLBSE4mmbOZUOCGDuskL6PftXGjfl4XMJKRhxwHw/bzL1/W3mAP9DgFD4HPg4OdjeG8rwLIACD+nPWickE5qrjoxHbt+bB8dCxCvZOZv9xeI6K8A+PaV9HcMBZDwjEclq5HkkhjfgvJNx6BGzMmbOqLGACdlp5E25F5ugqfki8cV3PQshWzv9yalfM/tW2Nhl7k87U+tm7ZPJe/MIHw7vGlJJzWW6fbmo5VIGoW/PnSspr4L5hpo37K0Xa4pYJSeR4gS8+/X18N/lS/dpOTemY4TH9JqQKc3l+208QZEc2UaN+TrV2K53XzTtmeJYNt+RFMoRUFmT9+GOq6ZVLUOSVALDnU39oegDx3r7jMJIB5ATin13+FO6itTOZwEQDur4ZhrdwR1Ru1Gkh8Y+dPd14FU5C9MaLjxmQZaAAc38M1EkJ2ma1JumhiLicIUmEvUEPof6dGNDhwCUPiDd7zWYG2WyBr97oF0T111guaJHkwse5zTo8m7MKFpf6dmt8TL5+ODg0v5XXhJVxzccE5ubz83QMjvewBSnQn2Slj9C/XIpU1q04hparm+nlP/C5pqGne9bhTq3TSF9tf8IN2hbNddnh70hn3rxz25+ritY/x7HI13SmMGeeyk60hCh/e13RaT0GJ+rvw9TOnQbq4fCeB/BPAkIvpad+uxuOKJcreNnMDVxhz165l50PKnMTifxEmq5mh1QrWXkuzT12UAHh5ENJFt8eFCRdS0o21qDaMuUdmNQVeYlkB9YrnoG92rpjjwWIATEBiVfapkyvGWaQOM6LCEm+gp2mdYlitnbZKZ9D8CBclzYa7SOg+eCWV75lx7t1s6J33be/VlaP39exrVX8HBpGyKYOXrIO3Nmmr3E6Cvo5H3EPY30jI45rkwtxpgwExf/lyS0F/7ANnLLH7reg8yltng8cF7p5V3txBS8r3bQaOy7jI6ZGL6HbRdVD8GwEvd9TcC+Ju3q1KXpjRwvFSSJ//Q/ICePkhp3CeDTVAdqHmy+oGfGIrdz+UHpIkN8KfaZT69eN43UUBAtyrP0UoBHBbMmuPA1/7wUl6N7bMuYamO2r+9vwcDqW9lknmmruWbtG6Jep2s+/y78+BQWyhneH85v1CB9D3V0Uxp2rbiGK6WrV/9uAHQw0qbtqB9axK603zbNhoU/TGSPo85dqGjVt/q6qZ+pNBHOsBj21g2CfRjdq2vFtqbG9/e75bX+VjfJKa/AIYjGf4IUG679P6mDBDM/PMAfp6IXiCbPt25RINB7CcVMDQBLCZ/lmiBxcTIgLOYqD7yZCB1LrQHOCbp60JoUTVyRoUBBcd8c8TIAhy8xJ6Yczg9LknymXHrBAw+HF8fQvRLuLSWR9okbjGpR8CdACqkWwF7/96NOaoU7u30WSLdJxFrv7j3TR4onSO4vbvUn3DjQI7urCAbTwsfAsc/BVt2+eRxlwHCdjIuWAZneMDy2oOMUXWS25hNfbwg/y5IkhREB3c2dWlV1hhtFiD2AftKnQ4KA5ckwp563yV0yMT0Qmb+OAA/S7TsCmZ+2m2r2SWonmEJFIlB2eB0A5WAoZS4oMFAs7x00jspLtQj1ctZkSKjzEyZYM5Cm6SWp5OI3S11Ttt2x7YoC+EYzLydRpfEneaijEa3oK6yVINiO835qeDoAU9+LzSZBEgKNr5vGPH9ZSZkn15rqGibNBLsjKEyozmbC8Dg4FxmDPLR7yOpVNsL9C2vZ/cYOeBYeZYnsoWA2j6TsLUdCnSV7RmwjAkv3fsIJt//JIqc9qsKAgTbIiPvV2TjODmRkeq11i/Z9KU+hzqhaUvAQtMhlv7zQo9rw0K7Dy8tjn97Huhnvms/nRggWmF3N0IcMjF9rnx+1O2uyJVJB7Z+d9KcmgFsrCUnMUMGETvp0OWL0Xf9nSZEdnhmZ9xioqH/Htk0jUFSm8xRSyIn0cYZM1rnQO531hzco9JPpCXEJifJHNKfumrc3w/Sb66HmrRSn6gpzezk/ruAx1Bjcl2gfWZag0rPyrghETuD4kPHa56DPspaqPfHhE/H6HUcEHR8tkEXbPFiXrK+9UBWYn57WZOOO30nymw139T/dl+ZqdMgslYeTH+pzMXYVw0inafu5+RaQ/Td+nc80mxDm31+vt/2lHNpSsLn3UhZcQzEzK+Vr5/FzL/h/3CHbbXBkIG3aZEXvGkaRT1zv0eSlpNaMlP3TD9Iq1g+NzJdBbVfImG6LafXfahFJMYaDjUahKZCo5bcdho5+iNHeoRJvsIAW8y7MC3WcwtinUbMVDErRN8MHNMjBpz7Ze3+XvLPemC0a24L8ZrSjerGhEMMxoaGa+uoj02QUKd0cX/U8wigyrC+H46RAcPODNqvQbC54KR7ntpaBS7xvkYz2W83x3ja/2fPhXyXc2Bvp+Y5uK/zfdu1S3R+uvafikYRVcMoq315ED2ZiH6QiF5JRK8gos+V619ORC8nop8jou8joifKdSKiryWiX5H77326FkXaCxCO/tzg2keesiJXJpJwvAwOZwDr5waOYWMZ9pfvjZi+/mF53+fXTVntQJ+F/VUpTezAGBLzzQ7etZC/7GuwdMBSq8iMZQ0YXX0NKDKDyuQZtCtrWO6+V5sk8r3k6hIY56hslrOLE3jYnwFaBN1D5Yc2259WCva5sMt73xWAtokYh/FgAQQevLy26PvIa7C+nAwOU7y3Bg41A4UCSwKLugdA4ObCwc7co40HJ/jgOcDNZUlffT+figZC3fBvP+0AfAEzvzuADwDwbDkW9KuY+WnM/HQA3w3g70n6j0Q7afMpAJ4F4OtP16BIh3wQfwNNU3hnInq5u/UYAD96uyp1KSI3IAndRovOKIuzc+ozQB8wao5gvTV6sSpIenU5D+QADuiDG+tzYijN64R3z6eqA4xuZkJ6LpmRvCS9l0F7zcozT5e/lSNp1iZCZmYjqZqwMtHl+RB1pOUfkj5zH8of+zJDgwF/SlnPhyJ4YOUdrgKDgIMHl6yMuLHBo/zdhoJZa+AK24/K9ojS8a9lqZnJOait/fqu1Q8iWodf6+AZKrk+1M/QjsTI4zoMjmOL0mvMefEynZ+bI99D6lJro42jwVy6Cp3CSS2WmtfK9zcS0asAPImZX+mSPQq9h54B4FuZmQH8BBG9ORG9rbP4nIwO+SC+DcD3APhHAP6uu/7GUyzjPjWpdBO0AaCZZEqzwOQtJIzcRDCmF0aZ+23mAZjaapJNSQMxSeKZASwYdQYJn85ztTzJcnovUQbTSv++YIaDCWTMW7ZmiLZgd3ay7x9PjiFlBqf57KOsbXnAWADjWh20bE2ijNjdY23oCGh5+Z5GWoo53sN2JRyf92NopJ2Jr6SlJSw2f3Jj0saEmjDEMW9A4MuKj/Z1G8UBhXsnCz8L+r1c51AvTaOCk5hXjxWUhmMSvY5UI0hY+9bAIj1/UoBg4NROaiJ6RwDvBeAn5fdzAXwS2glwHyLJngTgt9xjvy3XTg4Qh3wQr2fmVzPzJ4jf4QG0bnm0HCJ0xxATlmruGYM33P0Qaj9N2xJk9XuoSk8YquA+r756tZ8TvTbRRuRNKQv7fWL0o+0qAgh4UxOn+0kKzf2YTWpH24rRn1lMmwvMo4UAPSqf0nc38XlPf6/5e4bmqNGnq2B4X/qp70RPissOed8mgvkegoARzJ8UGXZux8i3VLFkwF5oGggvh8apD8AIf6N5FOZENK/6/EN/j/o112k0Lj3D12ul/w19I5faw3pM2We19gfg8UT0M+7vWYu8iB6Ntsfd5zHzGwCAmb+YmZ8M4AUAPvt0NT+Ojt3N9aMBfDWAJwL4PQDvAOBVuIMODPJSffvkbi6amxSmYE9A2OPH1G8gLAAbSvM6IHN0hkZ9ZGkpTzgbzJxuDMjVd2+SJGQGxuEk+AxAPv+g5QwE1iaFts7q0j+FSZp9Oot+9JmuMcwENB54hh0h6UJRR4Jb0GJGfZ1BA+PP4FsxBt3PePDlGIgVCoXZfleVY/8lKXmxfYzkb5FFMn69YBsif1y+dp1CdtYmvxI+j5HeifFnDNrgITAsJYDBtUzWb+hhwdo/lNLkcbOo14GyjiRCr8sR9Dpmfp/VvIjO0MDhBcz8nYMkL0A7Ee7vA3gNgCe7e28n105Ox7prvgLNefJfmPmd0LaR/YnbUaGrUHOOcQOHCcDEgHzniRcLdvKeSQYwF4nO8FqJlrVglElUD4xh/N3T0IF6QPL15qXs7N5LI4acAG41yiv95vSc/9ybLt8bfOa6jN7pkGHA9ZVmk7WDYxhWSps1vqFTO/VtlsCDhOx9XPbXAVnrHcpOUVnWdt/fo/5YaVteq7Iwh6a899r4R/2fI+5yf6W8F0w+9Vc3aY36DsEScBKSIIKj/vYQERGA5wN4FTN/tbv+FJfsGQB+Sb6/GMAnSTTTBwB4/e3wPwDH7+a6ZebfJ6JCRIWZf5CI/vlVCiaiLwXw6QD+m1x6DjO/RO59EYBPQ1s+8znM/L2H8uMC1BssZh4OA5XMs9ZWruoCshEjyDZvIEmaTpJhDwoEGZg8niAA9Egay0ftwIzmbITLX7+uMPaF09ozPI1e8gxrzxj1Ezszj1xXLdg7IEfhw14jI8gccf6hIAV6hpiY/QIABszefEd5Lh5iWimt+Tf00lqf5X71TFm0B593bAMFG32gCjCRrX7W7bhtU70UGBHaPAArxrK/dJyZ41rKtSRea2CA5q5Uh2dcvy36xrIhaBQWO99Ky5ei+W2fGW4ELuR+rwkE/lkdW6cECOyfVxegDwLwTAC/QEQ/J9eeA+DTiOhd0XrnNwB8ptx7Cdoeeb8C4H4An3KSWgzoWID472If+08AXkBEvwfgvhOU/zXM/E/9BQnv+ng089UTAfwAET2VmedRBoE8OBQ/UvukpMJt+wq9N2Ac2cGl6riVoZN0Yuek5gVz7Rn2fKOqL4BROqPJ5pLRAFwzB2ElfX6WEMs5SKPyyC2kSjbokF4nozKB7EBFBCb//Eg7GL0bA/CR5O8lzdARKc1gLIT3dSx5huSuqXlopBGFMaFVIyBvNLkX7FK9136rJcuaTO4H0ndJGEBoBUhXhSJ9NueL44WWhcDiAXEEDFg+6wUalIu+1D10gqyY+Ucwno4vWUnPAJ599ZIP07EA8QwAN9E26PtEAG8G4MtuU52eAeDfMPMtAL9ORL8C4P0A/PihB4Pm4LvbD079nScnlgPMrqNPgC7Fsduh0pe7FINIM4Hcd9ssty0tyIx9VPsksFXAnvENGHUoTq7l6B5tG6W+CKaNPWTPcwKDIvHlzhcT+pEHn87PY1XxJgKKeflVuKHt6GCnma0C6uD7hSiPodF9+WTd2yJdC23y7dE8nEYZ6rvGKPfUY3E/g6BjrvZukdJcoK8CSETZzO73yq/ns3hXK2PT5x3q6gF0BRzuQA3ijqWjAIKZvbbwLScs/7OJ6JPQdoz9Amb+Q7RwLe/f0BCuBUkkwLMAYHrc41pdlUlfkBFkO/hQSicHBgXNv2GTnZeDmdu/dmD9sjyT5txEMNMBYKaY4WQYMcsEIlbOoK22XfmIASUmYaDDDQy8VB8nX2R8Vp6aJgjOXhHrY3VIdmOvVQzzduCZwWLUF6s0YMKhK1YYgfal1U+1JL8ffG5betdBKh+YcNaEAZ/mGJDXd6n9pGX67WVyWy8FqHSJ57T+h7T68e3lDT8/pD4jE+qViNGOjL2L6dBCuTdiPDUIADPzYw88/wMA3mZw64vRVv99ueT/5QD+GYBPPaLORsz8PADPA4B73v7JYvY8Dhy8qaVXGIFRRJ+DAwYggoNfAORFKWWI4AXDiEy4axE6QW0iq/kp1X1tEqkGEkwHCYByvkNpM/WTfs9mH+8AHJ0ZYD4WIIBD9hVgkPeqDwLL/IEOFjlA7BgGu2a2811oGie5PvbPe8nUR7coc8oOdAdmq8C2wmyzlmFa7h4GaO8eCKamMC58tQb9scx0vbzVNIl55zr4e6P27zOPrmoge/K7Cr1JaxDM/Jh99w8RM3/4MemI6BvRlpIDpw7hOmQWGEiacRJzYFLeEW3g4DUIwHEsGBcJE3CPNjFyXI8G9IgRQ543jNJ8Fa+0HanpecLa99wXLk0GiMXWJb5eGRj9Nb2eAMKDsa2OzwCRG6L9tibSrNCaGceKyHVdqTf59g8YlQeR1feXylloj1apQfojGJ8x15R/9k3kehyb/wgIhnX2ptZUh2PIxvSRD1zWsnA447sbIU64ZORilJaG/0UAvyjfXwzg24hI1108BcBPHZ2xGfDXb+8ViMKE4AXT2gcOq+aeVR0MCVQoTFIqWDpeR0zclcdi4rAVuVlyUp+G3A+2Y0rt99fcRA5ag/s9ktBMe3BS/ihc0p5JWoPlTzDnopfkwWSvPADQqL89ub73woDd1jLQmVgIbJDv7AC9otdrYefO/ZjrNGL4vm6u3nmNgu/3BUAN3onPV8eJN2fSIN0hqXshuR9BCy1Mxy36tYvSwmF+RN2vQm/SGsRtpq8koqejjclXA/gMAGDmVxDRCwG8Em0Tq2cfFcGUiVe+w0/+IykzWS+NrEglBkR7yvH1aOkFJDyj41jXNVOIpXXM1RzehODnABD9Aj6vzBCUoZX+nF+QuACIQRtDHV1djQbAFHwQAg7Dtgun7GYmTZAqsgcg1iLQFLLb+RjxvoItcfv0R3xyGhJBCxi9u0EdQ32srdrGMcja6uEEGIu+9UWRG6ujrhv1yxoDHpQVHxxcIsP59jkwqY5okWZkCbjdtCaM3EX0kAEEMz9zz73nAnjuxTJsH01ipX5BRuyxgLAvZO+2igsqpbqRboxlBSCCxKuGaMCAggm2kZs9501YA9PJSMqNjBphzcPCru7y0rosvq9048LunMHBm2dSF/S28Gr+qzQAnmwlZJ+OEE2CWD67sDyMJNkVkMhgbRWB++7/nFAQFowlocCrtSaEqN9rRtCGhhoWlnUbmR99WXuldzfWvHa29vpWQSFdU8AZ0lieuxQRYGtV7lZ6KDWIkxPVdhAM2YiDG/A0XKlp5MWqNEFiIVkqlpFNHVysjKwFpLL3hWSSG8mc7w8ZMbuZJgxqA3AVHkbte9j+YR9AeGadIorC2cIuzT6m0PtkJKYO6lFc+wOziw+uTs+L2BUWKhrMLNbMLuwEj1hPVETnOK9mmcpcqe6IGSO9rxUNwsx+gO0TljUvy0CfrRQur0nF2XS1HCcc27CnrQBEw+3amV8vs0h+hJCRTaUGFJofQ4So0zJ0elOOYnpYU+aqA4kuAMKx/GQkoSSQsDwHnIHWJmH6va7FxLoGe7wWoDH3jODHsHorlozKPAYgkvYAWu7WaXVFLo9XmVB4JtUhMKBjaI+2t3dhl9c8pQ7ah9bP3jfkGFvQ9AbgO6Jhf+Xrmr//vgYQAbA7kPs8o9PdRdDp6vZRRXPdnFAw1HjW2uGSqg+CCd1n5so/6MfL6R5s2jeO7xK66wBitMrTk9lb0/eW2DGlRcZ7Jq3nvL4gm8gOoII3L30eohXpMvsy1ARidc4TTZjdAqMGALF0FKdNCYGhhJ/7qjuraX+7A7NZSqVLM806stJKOfuAJmhwChJSPMth3MbQNG/te1fOQQ0itGH8PZisXFmL4eb7JgA4D1efmzyhTdRXomPHty3VM2oOHMZMaOuBNquyqxp/AKmREEOx3h40hiB7EWHi0sS4jmJ6mFGejMHko1QYzLS6CC2rz8MJngFBH7b7/U/L9wxr+H1fe9akS51MFCePMgtbje3r5T9zWVnqdMCgtm3bYkTzLZGR9+99BttkTxNqD39f5nXMpHfIx8JJj+IVQ0Giq2bav0wszn+5nt+t5LXoXur3lnUeVMdfS2PFb3vh84iaHq8LPJQeV9XIj7Wc/xqluTJsz9pL9oClIKWar2v6ECT21MesmA8CSFxHMd0NpCGkhGYuqG3yc6EFg/Y21aMpSTR2zWkPtPiOBBQDkXtUhtxiP4PCcy0Bl+Zz4QwS3D+C1mHP9rQZGJTxhC1G5DmVKM3kEhgc94/c3jWA8ICwImEvaKES9TwvM5ENJARobNsTQkeG+GFVPyrzC9Qjaw4jnutNfl2j00r5xMtnvf8sCBv6uae6CyEmhQtnsmg9b9Yq3HyImo/bQDC0mVz1B+/1wQCFWODdjRB3F0D40eIYqE30QnZEI4s02ySyJXPOqvMqeXDITJspAkBgkFjei5WQ/8n2vjJZ1xze5D9TCOECm5wkuAgx9YvXnONT71tfubUKi7o5kNTSR9E+4XOtcbmh+swiP8ZVuIYHLAV5V31JlB9ayyz9SOnWAyhowRiHwFriuD1k7olapzDtffXYR66fDnW3ChMtqKSV34QY18cKxm6euGr2vNbqod8pvsOj5vSxxMAFzoN4WNLdAxBJzQ1aLLtBCQpRJwoUo/xCnsfMGo6f5Ad4utafoXgvZYVW437NSZN7SesPxFWye5hFAAZ1QJZ8nVeBwbSIVEZf1EU9LPBQdx4ziTWPEQisaWajNEcSu3Gw1yy4oh3538bo3JgZgmr40ROErKVeIx/S0WYi3vPbF5qFoWPyHlHi9nGhnv8/lr0GXdKzHvTDcA+sU1C91iAeVpTt3w0S9GZXZUGNcYUzgD2tTbJjB5cfhZlhGGj0NJnhGM9TVCANtUz1zTMnVcE0hzqe86OJtAoM6PeRzBkKHDQCU2knMwsg0/H9mKs7ZFwrDDk/c8RcPta5vJfJqLaxB5HD6xtwQBNwhkAhT2ZTzimlY08JuLp5s02iMC5XnhuBX/DzuD7YCxLyY+gC9OXKmM5mt6FP5gp0vQ7iYUQ+Ft+I2m6qgNMmVJVFsitnctrDgt+b5zlXAmOGdSyTcpxjL0ho2XukVK2r+SKy9uKBQbWAQ8BAWG4vQgkcFn0pUrfqQqMQqr19coEZ7dsYXtr+x0bAs1BMDlUjgQuZlKwXEN7vsSA/rFc+0yBLx/sk92Ou5TqO6jAa+zT+fVABV4wIeJFAQupD7plRuYsx7YWfEY+4Cl0DxMOIRsxp5f0F6WVFg9A8lzb6ERNcVsV/Xpi0amsgMWIw+ugeySxrQyGWPUfBwH33Euox4LDCXIjQD5A51P78bAbcgWYWOiE/sy8/94xPsAgI2Ks5jOu9jxYO9JzHoLwhXtLK9fBg/FyaOwf1OtAmNdN2Bt7EgNBne55d9nl6Rn0jDhwWeSdQ7IDQx23wnZ2KGHHX3ruQ7h6AUMnWk03oNsuzZcOk2X15IoHCmoSWJlqODIl6speQkL5dkciVLzNqKDT6iZMmlPkX0O955p9BcmxWSp+XoczkD4LCnuccLRjTKJ1yIupvZ69ZI1EEs1TnUEaU+rMT1j++XtjK9xFlcODYH8PpkMZuyMv1Sd/7y5l1D8wTS5bBqlepzw4dywMgD5f9uHagELTgExCBr01MDyvK3D9I2R0k9OfaQIlmhcwo03V9YFBWn1i9MF9shAcK11bbhTgRhrTCjzy4BUfemhkJwAIY9FomQ8RBfVyHHjWfhnkMvl9Qc+iAsQdkhnWQPHGcBLooZ60MzToNpWGa1cJGBTu6oMjsNZqg3eQxsHiwJ+PB9dUqrgBGrlN4PvteXP3C2B6BQxYir0r17lYh7iKA4DT6/v/tnXuwJcVdxz9fVgIICCS7AhIISwQiECQBUyQ8pJRCggZQiBBjAoklRjHGMhhJNmVRoWIFMVhSQAyJVEKCgBEhFIUhoLxECOGxLM8NLKwK4RGCQFAkPH7+MX3u7TPTPdNzzsw5597bn6pz75zunu7f9OnpX/9+3dPjDZ2HOmrmFUXMegiNyOo6x7JC8MMoWREDUYYlHxolzZ1UKm/oZogojYq7InSu+195jqH84iMvfe2ErTkroixE6aSRlUPlIloQy680Yo32rUNtSLVKImg11Mkwd2JDfF2akuDBznQMv0pZYQxkqUz2lssdyqThe0t5KniyVJTDnKw2v7CiK4zsYlpQ+EPzWI/sK4qYaV5uRLEJ6QH+jeiVM/d1aNRTtSTAa/i+gqmRLWZFRPsCr9Ov3Og17qTaPP0qHiiJyAmNyqHSiUQKrR2BJloPTaNaL7wy/2Dzy46jdOnojrXFhOKGJsrn/TUV5RgtN6AY5r67dlJRFATyTqzvkPyNMpbTh+Qpp+1wkjq7mBYi5ZHfgHKvHOpkYx0z1QY71OeX28lAM3hWRBHshJDXaTaMZIfKbpK57lzvvMq8im8htenfYkrCT1JrFbQoC6p1Har7WN6BUX1l4tvP1w+X/1/hOg/1aHXX16aeayyFVpQN7VCSOcVSDffbSbRD9n+ThLY9EqU2XackeyUriAVERQGUXD+hhjxIVwqrNKzKJKwCPtpqIbZBIcNgEm7QMQ/dgL6Pfu5PRFZPlqTGX7YEmuZUUvKMdZChpKmddwohV15bWnbYQyvGykoihZBCSyVSx607vVRrLGQ1+HGlFX2xe6WyKKPlb1V7fS3jgh62zrSGZQWxcBi01vroavhwxxicmyiPJgfnBSe9Q5rIPYvh9atDJUQ6gvI8eDVBU3zAGqr8j1tMfjZJk7NJyiUhTSqVztcTNHHk2qTrOulLaju19ApJ1kkBt9vwiqWa4iPtaNh6KFkTZTn9rDwlUZkfKYkYpOmaU3+fUZV0U55ZQSwgQnd7qHersxgCLpa5dw9V+v754dawWe6NdEtp5146UyOSfzkhfTPsMqpRZuXvsfMabphaa6pvE94vx/en+8qhYZRasfRKI9tQxxUcQdfKl6hFywUlUJdtdULYHzUM/4+602oyLVsMFbdSrKcP3QKluGq5NTLVpG2q9mJx3ThmZ03e+YVBC4zQcp6G1UoV1wvh0bAfZn4n41kT9UrCK6fqsaq/nvJ1xDr+WFiTIhkFX7RAfpXBVVf3UmjSNeTKqYyOa1yOqYqhVlmOdoEjWQaxDAJKYH6CPhIeyDxqMXiKITRwKLKZjxjcHvPuVNLaXpej/KpB3x3ZglhADI0SQ9ZEKXnEapAfHixH/htNhwo3VHI3uYJHbvAJDbCPzn9QemJewfukbnTbUoYhvzbMBwwp6qLQoa1VnBz+b12ZgI0Odf2yOrmUkUhaPhtTBuXjSFbzhc3/r8w3lJVCTMHOKYoiYGgxRtf1FpKnMl84aCIdWxFG3qxvQVHuLCIO5loXTQpBtxVDN8nwRF1seJpQTnLa+ug6L9vIDDmbA+GxwschZimUlUfZoot4Qoos0ipjkkphQKNyaHIfpVxaoJMtWxC1ymHwPVRWWZH3QZt8WyywSMgsWxB9IeliYFf3dUvgWTPbS9KOwP3AWhd3i5l9JDnjBCWR7C4OuasSe4n4qLeUx0gKKq38JPm6oC6fiQ61B2Uyd3Eha6JMZyJ27MpIVQ61ZbZ054RWKQXdSbF8Sk1cFR9TRM5UEi29kLzzK9K6NLGzgugFMztmcCzp88BzXvQ6M9urXYYElAPDSsJrp0ONpRRXWc/fdvIxZdYsOb/0pH30xbXLBGtccF3LEI0ILXttsiZg9A7KL2PUNG29hjG3Ul2ZwdF8RJygm2ZeiNYT9qW855WEl1lnSjnR/deXBZMVRL9IEvCbwC+NnZmVeooGJVE9fz6u/LtXJqjL5w3JkCrrIPPxGtko/XE3LqZ+rYOgjCkdZI3LaS7fURVFF5fcsSscAjo7IGfjyqGA67WLn3h4FVl/HWrSUuwuizeDV1/tMMPZY+oKAjgAeNLMHvTCVkq6E3ge+LSZ3Rg6UdIJwAkAy7baajjSv1HmGsWwkqiYnIM4L/lcdrGGNUqDK7fkuhF5hyOfUW+Otis4uy4/SqOlxngj7ljanqmtpyHF54U3TXOlhje4aUatg5TxUO/eyD6siGxBjI6ka4BtAlGrzOyb7vh9wIVe3OPADmb2Q0l7A5dJ2t3Mni9nYmbnAucCbLTD9sNDHn85adldVFISc6eFzm2D18KTliTG4gKrMIrw8GmxDrzLDrntNEz3yqDDrELzLyO4ZkYrfIRzyj9wSNYmGaMKItFF0yHTmOzvBSOvYhoHMzu4Ll7STwC/AeztnfMS8JI7vl3SOmAX4Lb2AtA8JwFxRQFpPV3XLT42g1wzAurRcp9OWXVlVCywhONUupqjCDFOniEN3bbZRX645AnopDIGmSamb0OTDKnWYpdkC6JXDgYeMLNHBwGSVgDPmNmrknYCdgYe7rxkvxMOTV776XwShtL1LoJEf80ISmJB0YlrribPce7bunxDVCbxxyibeo9jfUR63smM2tZiE8Ud5B+9JadxX2QF0SvHMuxeAjgQ+Iyklyl2W/+ImT2TlFvKA2NDE5QlJeHOqXh46hRGqIi6CUN/Rcco9HkTTKOtJ0/qJ4RVvg/nHXf7pYkQpad6m4grJsHjOYmyqmnTKzW6yq5v8iR1v5jZ8YGwS4BLWmdWmWyriRsqsKQRAiP0USdpgyPBWlkS03XJJJVC20pM7dAbFAP0qBwWAqk6uHEeYwYqK8WFNUk5F7kF0fUL+KaLvI8fVk4zStZjtANT9RMuhKr8fWF02zmGLjLpoiNyxSyGtu6fxY4SPiUafx5Z+DPNawjd14nX2ytmaZ8aJG0v6VpJ90m6V9LHXPjpkh6QtEbSpZK29M75pKSHJK2V9Ct9Xd7iUhA+ocYSajwtGn6X90hKf9pVn1stvAfBx6VrhZXKNDqVNrTs/AcktZkURdCm8x710zUTK9OKVUwpn3peAT5uZrsB+wInStoNuBrYw8z2BL4HfBLAxR0L7A4cCpwjaVlXV+Uz7TmIbqkbmQfD2/VIs7g8r3FCs3LCmAX1wVirewLnB3yCzRO/HcjSBS2qOW31UcIFtflpZ+UeGLfNdCSD2fgvpTazxymW92NmP5J0P7CdmX3bS3YLcLQ7PgK4yK34fETSQ8A7gJvHFqbE4lIQPnWNoO6m6arxpPbYk9Y6oQ61iVnUjE1ENkhMVhQwGWWRULXJ1d/U5pLzSUw3ynld1emsNMmOn4Nwe9G9DfhOKerDwMXueDsKhTHgURfWOYtLQTQ1mjEUQ6s+stVeS83LZlOIrYoNl0m7G7WrR6mj+ZMmTyxd3ei/QVGUkwXzLdO2T2hZdZ1YBo33Qqo0LdP2ldcsKpZ2q5iWS/Kf5TrXPeg7h6TNKBbo/LH/YLCkVRRuqAvGlLg1i0tB+HRgWo/UJ461hHW8jrh3JVEurEvGVRKDOCLxDYo4SWGUyxmDTgccXSiDSbf1AakVMSsWQ5n0VUxPm9k+sUhJG1IohwvM7J+88OOBXwN+2WyusMeA7b3T3+jCOmcRKYiElRaJjWwhelQGtFYScye2LCj4EN+YFZc6D9CUrum6EmSfaBtI/cG66ui7cll1wSwsnR0De238OQi3YenfAfeb2Rle+KHAJ4BfNLP/9U65HPh7SWcAP0PxMPGtYwsSYPEoiJrVCb3e7DPYwEfalym1jrpYf970g9RFt31WJFnpzMjv2Lattk4/joU7+qmLk+YlrInsB3wAuFvSahf2KeBMYCPg6kKHFO/GMbN7Jf0DcB+F6+lEM+vlib3FoyCY0VFfChMQvO32UlG68Ms3CVBXH6MqsoXSuY0r57jtcsbqaaateaOTSWoz+zfCNX9lzTmfBT47duENLCoFMVFSfTkz2MJb+dtTabrMLhVIMP/yRbXPYmbo+6G0CTGDTb9TDLC81UYmyiK5A3pRGGXGraqF4iLqkxlsbovkFhgNM+jgOYhZJiuITIXGKYJpPfGcmShLuvNPxPL7IDKZYXLHkck4FrkFIVskuxFK+gHwHz1lvxx4uqe8RyXLlMYsygSzKddSkulNZrZinAwkfYtCvhSeNrNDxylvGiwaBdEnkm6re8hlGmSZ0phFmWA25coyZcos3t1cM5lMJjMWWUFkMplMJkhWEGmc25xk4mSZ0phFmWA25coyZYbIcxCZTCaTCZItiEwmk8kEyQoik8lkMkGygvCQ9F730vDXJO3jhe8o6UVJq93nb724vSXd7V4gfqbbuncicrm44MvLJR3qwh6SdHLXMpVkOEXSY179HNYk3ySYZB00yLHetZHVg5fGSHq9pKslPej+bzUBOc6T9JSke7ywoBwqONPV3RpJb5+gTDPZnpYkZpY/7gP8HLArcB2wjxe+I3BP5JxbKV40LuCfgXdPUK7dgLsotgReCawDlrnPOmAn4HUuzW491tspwEmB8KB8E/otJ1oHDbKsB5aXwv4SONkdnwycNgE5DgTe7rflmBzAYa49y7Xv70xQpplrT0v1ky0IDzO738zWpqaXtC3wU2Z2ixUt+HzgyAnKNffycjN7BBi8vPwdwENm9rCZ/Ri4yKWdNDH5JsGs1EGMI4CvuuOv0kO7KWNmNwDPJMpxBHC+FdwCbOna+yRkijHN9rQkyQoinZWS7pR0vaQDXNh2FC8MH9Dby8MjbAf8V6D8WHif/KFzRZznuUumIceAaZZdxoBvS7pd0gkubGsze9wdPwFsPR3RonJMu/5mrT0tSZbcZn2SrgG2CUStMrNvRk57HNjBzH4oaW/gMkm7z4BcE6NOPuALwKkUHeGpwOeBD09OuplnfzN7TNJPU7wd7AE/0sxMmv5+5bMiB7k9zQxLTkGY2cEjnPMS8JI7vl3SOmAXiheFv9FLOvLLw0eRi/qXl3f6UvNU+SR9CbgiQb6+mWbZQ5jZY+7/U5IupXCLPClpWzN73LlunpqGbDVyTK3+zOzJwfEMtaclSXYxJSBphaRl7ngnipeEP+xM8+cl7etWL30QmORo/3LgWEkbSVrJ/MvLvwvsLGmlpNcBx7q0vVDyTf86MFiREpNvEky0DmJI2lTS5oNj4BCK+rkcOM4lO47JthufmByXAx90q5n2BZ7zXFG9MqPtaWky7VnyWfpQNMZHKayFJ4GrXPhRwL3AauAO4D3eOftQNOB1wFm4p9MnIZeLW+XKXou3gopiFcr3XNyqnuvta8DdwBqKm3jbJvkm9HtOrA5qZNiJYuXNXa4NrXLhbwD+BXgQuAZ4/QRkuZDCXfqya0+/E5ODYvXS2a7u7sZbPTcBmWayPS3FT95qI5PJZDJBsospk8lkMkGygshkMplMkKwgMplMJhMkK4hMJpPJBMkKIpPJZDJBsoLIZDKZTJCsIJYQkl7oIc/DB1tpSzpS0m4j5HFdeRvzhPRrJR0eiNvR3zp6sSPpU97xJm577B9LWj5NuTKLg6wgMmNhZpeb2efc1yMptmSeBO83s16fjB48PT/jzCkIM3vRzPYCvj89cTKLiawgliBu+4TTJd3jXmRzjAs/yI3O/1HSA5IucFuIIOkwF3a7e5HMFS78eElnSXoXcDhwuhvFvtm3DCQtl7TeHW8i6SJJ97u9iTbxZDtE0s2S7pD0DUmbJVzP3pLuknQXcKIXvsxd53fdzqC/58I3kHSOu56rJV0p6WgXt17SaZLuAN4bk8eVeb2rj6sG20NI+iNJ97nyLqqReVMVO5XeqmKX4CNc+I6SbnTl3eHqFUnbSrrB1e09kg6Q9DlgYDVckPTjZzJtmPaj3PkzuQ/wgvt/FHA1xUt1tgb+E9gWOAh4jmITtA2Am4H9gY0ptlle6c6/ELjCHR8PnOWOvwIc7ZV3HW6LBmA5sN4d/wlwnjveE3iFYsuS5cANwKYu7s+APw9cx1y+7vsa4EB3fDru5TPACcCn3fFGwG0UL5o5GrjSXeM2wH8P5KZ4uc8nPJkr8gAbAv8OrHDhx3jX831gI3e8Zc1v8RfAbw/SUWwJsinwk8DGLnxn4DZ3/HHmt+lYBmzu/6alvNdTekFR/uTPKJ8lt5trBig6/QvN7FWK3TyvB34BeB641cweBZC0muJtei9QbE74iDv/QorOd1QOBM4EMLM1kta48H0pXFQ3OcPldRRKKoqkLSk64htc0NeAd7vjQ4A9B9YBsAVFp7s/8A0zew14QtK1pWwvbpBnV2APiq27oeiwBxvZrQEukHQZcFmN6IcAh0s6yX3fGNiBQsGcJWkv4FWKXYOh2HzwPEkbApeZ2eqavDOZTsgKIlPmJe/4VcZrI68w78bcOCG9gKvN7H1jlFnO76NmdtVQoPeO4wj/UyePpLcC95rZOwPn/iqFAnwPsErSW83slYhsR1npTYGSTqHYkPHnKeru/6B485qkA13+X5F0hpmd33AdmcxY5DmIpcmNwDHOR7+CokOr2zZ5LbCTpB3d92Mi6X4EbO59Xw/s7Y6P9sJvAH4LQNIeFG4mgFuA/ST9rIvbVNIu1GBmzwLPStrfBb3fi74K+H036kbSLiq23L4JOMrNRWxN4VoLEZNnLbBC0jtd+IaSdpe0AbC9mV1L4Y7aAojNoVwFfNSb43mbC98CeNxZNx+gsE6Q9CbgSTP7EvBlivc4A7w8uL5MpmuygliaXErhCrkL+FcKn/sTscRm9iLwB8C3JN1OoQieCyS9CPhTN+n6ZuCvKDroOyn8+QO+AGwm6X7gM8DtrpwfUMxpXOjcTjcDb0m4ng8BZzuXmLzwLwP3AXeoWPr6RQqL6BKKraXvA75OsYV75Xpi8ljxjuujgdPcxPhq4F0UnfnXJd0N3Amc6RRYiFMp5jLWSLrXfQc4BzjO5fsW5q2Zg4C7XF0eA/yNCz/X5ZEnqTOdk7f7ziQhaTMze8GNeM8GHjSzv56SLNcBJ5nZbWPkMbieN1BYT/vVKcmFhFstto+ZPT1tWTILm2xBZFL5XTdCv5fCDfLFKcryDIUfvvKgXAuucNdzI3DqYlAOcg/KUVgmr01ZnMwiIFsQmUyPSPoQ8LFS8E1mdmIofSYzS2QFkclkMpkg2cWUyWQymSBZQWQymUwmSFYQmUwmkwmSFUQmk8lkgvw/jEgRB6vnX6oAAAAASUVORK5CYII=", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHHCAYAAAC/R1LgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOy9eZglRZU+/Ebkrd7ohmYVEGiQR0UW2dxwA0UBQVFgXKAFRAXUBgUdXEZHQEYRN3TccfyBC6AjHy6og4Ii7gKKMiiCIgMotI0gO11VN+N8f0ScEyciI2/dW129QZ7nqbq5RMaWmZFvvGcJQ0SETjrppJNOOumkk0eA2NVdgU466aSTTjrppJNVJR3w6aSTTjrppJNOHjHSAZ9OOumkk0466eQRIx3w6aSTTjrppJNOHjHSAZ9OOumkk0466eQRIx3w6aSTTjrppJNOHjHSAZ9OOumkk0466eQRIx3w6aSTTjrppJNOHjHSAZ9OOumkk0466eQRI49Y4LP11lvjVa961equRieddDIDcs4558AYg//7v/9b3VXpZBXIXnvthR133HHG8uPn56qrrpqxPDtZc+VhDXx+/vOf45RTTsHdd9+9uquySuXKK6/Ecccdhx122AHrrLMOttpqK7zsZS/DDTfcUEx/3XXXYb/99sP8+fOxwQYb4PDDD8cdd9yRpPnjH/+It771rdhll12wYMECbLbZZjjggAOKA8X111+PE088EU9/+tMxZ86caX+QPv/5z+MJT3gC5syZg8c+9rH4+Mc//rAoa1Q577zz8NGPfnSll7Mq5Vvf+hZ22203zJkzB1tttRVOPvlk9Pv91V2tlSbDvGMA4JzDBz7wAWyzzTaYM2cOnvjEJ+L8888fqaxh+/buu+/GMcccg4033hjrrLMOnvOc5+A3v/nN0OWMUtdh299JJ6tE6GEsH/zgBwkA3XTTTY1zy5cvp4mJiVVfqVUghxxyCG266aZ0/PHH0+c+9zk67bTT6FGPehSts8469L//+79J2ltvvZU22mgj2nbbbeljH/sYvfe976X111+fdt55ZxofH5d0b3nLW2jhwoX0mte8hj772c/SBz7wAdp2222pqiq65JJLkjzPPvtsstbSjjvuSLvsskvrPRgkn/nMZwgAHXLIIXTWWWfR4YcfTgDo/e9//1pd1nTkgAMOoEWLFq30claVfPe73yVjDD3nOc+hs846i44//niy1tLrXve6aed59tlnr7L7MaoM+44REb397W8nAHT00UfTWWedRQcccAABoPPPP3+osobt27qu6elPfzqts846dMopp9AnPvEJ2n777WnBggV0ww03DFXWsHUdpf3Dyp577kk77LDDtK4tCT8/V1555Yzl2cmaK49Y4PNwlp/97GeNAeWGG26g2bNn0+LFi5Pjr3/962nu3Ll08803y7FLLrmEANBnP/tZOXbVVVfRfffdl1z7j3/8gzbeeGN6xjOekRy/88476d577yWi6d2DBx98kDbccEM64IADkuOLFy+mddZZh+666661sqzpysMN+Gy//fa088470+TkpBx75zvfScYYuu6666aV55oMfIZ9x/7617/S2NgYLVmyRI455+hZz3oWbbHFFtTv96csa9i+/epXv0oA6Gtf+5ocW7ZsGS1cuJAOPfTQKcsZpa7Dtn8UWZOAj3OOHnzwwRmrSycrXx62wOfkk08mAI0/HhgXLVpERx55pKTnB/8nP/kJHX/88bTRRhvReuutR8cccwyNj4/TP//5Tzr88MNp4cKFtHDhQjrppJPIOZeUWdc1nXnmmbT99tvT7NmzaZNNNqFjjjkm+XiuTtltt91ot912S45tsskm9NKXvrSR9nGPexztvffeU+Z58MEH0wYbbNB6fjoA4Tvf+Q4BoO985zvJ8Z///OcEgL70pS+tlWWV5N5776U3velNtGjRIpo1axZtvPHG9LznPY9+/etfE5Ef4PNnWIOg5cuX07vf/W7adtttadasWbTFFlvQSSedRMuXL0/KAUBLliyhL3/5y/S4xz2OZs+eTbvtthtdfvnlK1T/UeX3v/89AaBPfvKTyfG//e1vBIBOO+20KfO49tpr6TnPeQ7NmTOHHv3oR9Npp51Gn//85xv34xvf+Abtv//+tNlmm9GsWbPoMY95DL3nPe9JPsrvfve7qdfr0bJlyxrlHH300bTeeuvRQw89REREV155Je2zzz604YYb0pw5c2jrrbemo446asr6DvuOffKTnyQA9Pvf/z5Jd95558nYxHL33XfTddddR3fffbccG6VvX/rSl9KjHvUoqus6SXvMMcfQvHnzkufntttuo+uuuy5hyEep64qOMSVh4PP73/+e9tprL5o7dy5tvvnmdMYZZ0ia++67j+bNm0dvfOMbG9ffeuutZK2l973vfUQUx//LL7+cjjnmGNpggw1owYIFdPjhhzfG70WLFtEBBxxAF198Me2+++40e/ZsOvPMM6fVjk5Wj/RmVnG25sjBBx+MG264Aeeffz7OPPNMbLTRRgCAjTfeeOB1xx9/PDbddFOceuqp+OUvf4mzzjoLCxcuxM9//nNstdVWeN/73ofvfve7+OAHP4gdd9wRRxxxhFx77LHH4pxzzsFRRx2FN77xjbjpppvwiU98AldffTV+9rOfYWxsrLXc8fFx3HfffUO1jdsyihAR/v73v2OHHXaQY3/729+wbNkyPOlJT2qkf8pTnoLvfve7U+a7dOnSadVnkFx99dUA0KjX7rvvDmstrr76arzyla9c68oqyete9zpccMEFOO6447D99tvjzjvvxE9/+lNcd9112G233fDOd74T99xzD/7617/izDPPBADMnz8fgLexOPDAA/HTn/4UxxxzDJ7whCfgf//3f3HmmWfihhtuwDe+8Y2krMsvvxxf/epX8cY3vhGzZ8/Gpz71Key333644oorpjQU/cc//jFUexYsWIDZs2e3nm/r78033xxbbLGFnG+TpUuX4jnPeQ76/T7e/va3Y5111sFZZ52FuXPnNtKec845mD9/Pt785jdj/vz5+OEPf4h3v/vduPfee/HBD34QAHD44YfjPe95D7761a/iuOOOk2snJiZwwQUX4JBDDsGcOXOwbNky7LPPPth4443x9re/HQsXLsT//d//4cILLxxY31HesauvvhrrrLMOnvCEJzTS8flnPvOZAICvf/3rOOqoo3D22WeLk8YofXv11Vdjt912g7WpmedTnvIUnHXWWbjhhhuw0047AQDe8Y534Atf+AJuuukmbL311iPVdSbGmDb55z//if322w8HH3wwXvayl+GCCy7A2972Nuy00054wQtegPnz5+Oggw7CV7/6VXzkIx9BVVVy7fnnnw8iwuLFi5M8jzvuOCxcuBCnnHIKrr/+enz605/GzTffjB/96Ecwxki666+/HoceeiiOPfZYHH300Xj84x8/7XZ0shpkdSOvlSmDZuVtjM++++6bMDl77LEHGWMSHXm/36ctttiC9txzTzn2k5/8hADQueeem5Rz8cUXF4/nwuUP8zcd+dKXvkQA6POf/7wcu/LKKwkAffGLX2ykP+mkkwhAgznQ8uMf/5iMMfTv//7vrWmmw4wsWbKEqqoqntt4443pFa94xVpZVknWW2+9RF1QkjZV15e+9CWy1iaza6Jos/Szn/1MjvGzc9VVV8mxm2++mebMmUMHHXTQlPUc9tk8++yzB+bD/XbLLbc0zj35yU+mpz3taQOvP+GEEwgA/epXv5Jjy5Yto/XWW69xP0rqh2OPPbbBaOyxxx701Kc+NUl34YUXEgC67LLLiIjo61//+rRUIaO8YwcccAA95jGPaaR74IEHCAC9/e1vl2M8Xuj+HqVv11lnHXr1q1/dSMcM6MUXXyzHjjzyyEbfDlvXFR1j2oSZUJ3v+Pg4bbrppnTIIYfIse9973sEgP7nf/4nuf6JT3xiMn5zf+6+++4Js/WBD3yAANA3v/lNObZo0aJGH3WydsnDlvGZrrzmNa9JkP1Tn/pU/OIXv8BrXvMaOVZVFZ70pCfh17/+tRz72te+hvXWWw/Pf/7zk9nx7rvvjvnz5+Oyyy7DYYcd1lruvvvui0suuWSGW+Plj3/8I5YsWYI99tgDRx55pBx/6KGHAKA4Q58zZ46kKZ1ftmwZDjvsMGyzzTZ461vfOqP1feihhzBr1qziuTlz5ki917aySrJw4UL86le/wm233YbNN998pGu/9rWv4QlPeAK222675Jl77nOfCwC47LLL8PSnP12O77HHHth9991lf6uttsKLX/xiXHTRRajrOpkR5zLss6kZxZJM9czde++9A6//7ne/i6c97WnCLACexV28eDE+9alPJWk1C3TfffdhfHwcz3rWs/DZz34Wf/zjH7HzzjsDAI444gi8/vWvx4033ohtt90WAHDuuediyy23xJ577gnA3ycA+Pa3v42dd955IHs7Sns5zezZs1vfNZ2O5VWvelUjHMcofTtKWeeccw7OOeecRlnDXL8iY8xUMn/+/ISNnTVrFp7ylKfgL3/5ixx73vOeh8033xznnnsu9ttvPwDAtddei2uuuQaf+9znGnkec8wxyb19/etfj3/7t3/Dd7/7XRx44IFyfJtttsG+++47cp07WTOkAz6ZbLXVVsn+euutBwDYcsstG8f/+c9/yv6f/vQn3HPPPdhkk02K+S5btmxguZttthk222yz6VR5oCxduhQHHHAA1ltvPVxwwQXJx40/DOPj443rli9fnqTR8sADD+CFL3wh7rvvPvz0pz8V1cuocscd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N2r//fcnYwy94hWvoI9//OP00Y9+lF73utfRBhtskDzLAGjHHXekjTbaiN7znvfQGWecQYsWLaI5c+bQ7373u6H6aabkoosuImMMPfe5z6WzzjqL3vjGN5K1lo4++ugpr73ttttoww03pPXXX59OOeUU+uAHP0iPfexj6YlPfGLS3//4xz9o/fXXp0WLFtGHP/xh+shHPkK77ror7bzzzkXgQ0R03HHHEQCqqqoB4M4880x67GMfS29961vps5/9LH3oQx+ixz/+8bTuuuvSX/7yl4F1HvYdI4qeTscccwx97nOfk2jIuVdoyatrlL7t9/v0tKc9jebPn0+nnnoqffKTn6QddtiBFixYQH/84x+TtG3P8rB1HaX9ixYtGipY56jAZ+nSpdTr9QgAvf71r2+c5/7caaed6FnPehZ9/OMfp+OOO46stfTMZz4zAb0l4HPZZZcRADr55JOT4wAS7zGu+8Occ1jj5WHf+6eddho9+tGPJmtt8vKuDOBDRHTWWWfR7rvvTnPnzqUFCxbQTjvtRG9961uHmgnPlJSC3um/XK699lraZ599aN68ebRw4UJavHgxLV26NEnDg1/bnx4Ub7rpptZ0o0QgPuuss+jxj388zZo1i7bddls688wzG7PuNbWsQw45hObOnTuQ6RsfH6eTTjqJdt55Z1qwYAGts846tPPOO9OnPvWpJN39999Phx12GC1cuLBR1sTEBJ1xxhm0ww470OzZs2n99den3XffnU499VS65557JB0QAxg+9rGPpdmzZ9Ouu+5aBACrQr7+9a/TLrvsQrNnz6YtttiC3vWudw29hMw111xDe+6555QBDH/2s5/R0572NAlu99a3vlXcm0vt5onSPvvs0zj3m9/8hg499FDaaqutJDjpC1/4wiQ8wCAZ5h0j8mD2fe97nwS03GGHHejLX/5yI10b8CEavm/vuusues1rXkMbbrghzZs3j/bcc8+iu34b8Bm2rqO0f6ONNpoypAHR6MCHiGj//fcnAPTzn/+8cS4PYLj++uvT/PnzafHixQ3WtwM+a78YoiEMRjrppJOR5FGPepQYVa4JYozBkiVL8IlPfGJ1V2WNld/97nfYZZdd8MUvfhGHH3746q7OI07+8Ic/YIcddsC3v/1tHHDAATOe/0EHHYT//d//xZ///OcZz7uTtUse1quzd9LJ6pDf//73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tt9+e33/o48+wrRp0zBw4ED06dMHX/rSl/DGG290oMT5eOSRR/C5z30OW265JYQQ+P3vf2/cl1LiwgsvxLBhw9CzZ08cfPDB+Ne//mWEefvtt3HUUUehqakJ/fv3x3HHHYf333+/HXPhRqW8TZ061arLSZMmGWE6Y95mzZqFPffcE3379sWQIUNwxBFHYMmSJUaYIu1wxYoVOPzww9GrVy8MGTIEZ511FlpaWtozKxaK5O2AAw6w6u3EE080wnTGvAHAjTfeiJ133llv3Dd+/Hjcc889+n5XrTegct66cr0FVIeg+KS44447MGPGDHz3u9/F008/jV122QUTJ07Em2++2dGiVY1PfOITWLlypf489thj+t7pp5+OP/zhD/jNb36Dhx9+GK+//jq++MUvdqC0+fjggw+wyy674IYbbnDev/LKK/HDH/4Qs2fPxqJFi9C7d29MnDgRH32UHTJ71FFH4fnnn8eCBQtw991345FHHsEJJ5zQXlnwolLeAGDSpElGXf7yl7807nfGvD388MOYNm0a/vKXv2DBggXYuHEjJkyYgA8++ECHqdQOy+UyDj/8cGzYsAFPPPEEbr31Vtxyyy248MILOyJLGkXyBgDHH3+8UW9XXnmlvtdZ8wYAw4cPxxVXXIGnnnoKTz75JD7zmc9g8uTJeP755wF03XoDKucN6Lr1FlAlZICUUsq99tpLTps2Tf8ul8tyyy23lLNmzepAqarHd7/7XbnLLrs477377ruye/fu8je/+Y2+9uKLL0oAcuHChe0kYe0AIOfNm6d/x3Esm5ub5VVXXaWvvfvuu7KxsVH+8pe/lFJK+cILL0gA8m9/+5sOc88990ghhHzttdfaTfZK4HmTUsopU6bIyZMne5/pKnl78803JQD58MMPSymLtcM//elPMooiuWrVKh3mxhtvlE1NTXL9+vXtm4Ec8LxJKeX+++8vTz31VO8zXSVvCgMGDJA33XTTJlVvCipvUm569RbgR2B8AGzYsAFPPfUUDj74YH0tiiIcfPDBWLhwYQdKVhv+9a9/Ycstt8TWW2+No446CitWrAAAPPXUU9i4caORz+233x5bbbVVl8znsmXLsGrVKiM//fr1w7hx43R+Fi5ciP79+2OPPfbQYQ4++GBEUYRFixa1u8zV4qGHHsKQIUMwZswYnHTSSVi9erW+11XytmbNGgDAFltsAaBYO1y4cCF22mknDB06VIeZOHEi1q5da8zQOxo8bwq33XYbBg0ahB133BHnnXce1q1bp+91lbyVy2X86le/wgcffIDx48dvUvXG86awKdRbQGWEQ0oB/Pe//0W5XDYaNAAMHToUL730UgdJVRvGjRuHW265BWPGjMHKlSsxc+ZMfPrTn8Zzzz2HVatWoaGhAf379zeeGTp0KFatWtUxArcCSmZXval7q1atwpAhQ4z73bp1wxZbbNHp8zxp0iR88YtfxOjRo/Hyyy/j29/+Ng499FAsXLgQpVKpS+QtjmOcdtpp2GeffbDjjjsCQKF2uGrVKme9qnudAa68AcDXv/51jBw5EltuuSX+8Y9/4JxzzsGSJUswd+5cAJ0/b88++yzGjx+Pjz76CH369MG8efMwduxYLF68uMvXmy9vQNevt4DiCIrPJoZDDz1Uf995550xbtw4jBw5Er/+9a/Rs2fPDpQsoFoceeSR+vtOO+2EnXfeGdtssw0eeughHHTQQR0oWXFMmzYNzz33nOFntqnAlzfqY7XTTjth2LBhOOigg/Dyyy9jm222aW8xq8aYMWOwePFirFmzBr/97W8xZcoUPPzwwx0tVl3gy9vYsWO7fL0FFEcwdQEYNGgQSqWStTrhjTfeQHNzcwdJVR/0798fH//4x7F06VI0Nzdjw4YNePfdd40wXTWfSua8emtubrYc1FtaWvD22293uTxvvfXWGDRoEJYuXQqg8+dt+vTpuPvuu/Hggw9i+PDh+nqRdtjc3OysV3Wvo+HLmwvjxo0DAKPeOnPeGhoasO2222L33XfHrFmzsMsuu+AHP/jBJlFvvry50NXqLaA4guKDpDPsvvvuuP/++/W1OI5x//33G/bfroj3338fL7/8MoYNG4bdd98d3bt3N/K5ZMkSrFixokvmc/To0Whubjbys3btWixatEjnZ/z48Xj33Xfx1FNP6TAPPPAA4jjWA1tXwX/+8x+sXr0aw4YNA9B58yalxPTp0zFv3jw88MADGD16tHG/SDscP348nn32WUOxW7BgAZqamrRpoiNQKW8uLF68GACMeuuMefMhjmOsX7++S9ebDypvLnT1egvIQUd7V3cW/OpXv5KNjY3ylltukS+88II84YQTZP/+/Q0P/q6AM844Qz700ENy2bJl8vHHH5cHH3ywHDRokHzzzTellFKeeOKJcquttpIPPPCAfPLJJ+X48ePl+PHjO1hqP9577z35zDPPyGeeeUYCkNdee6185pln5PLly6WUUl5xxRWyf//+8s4775T/+Mc/5OTJk+Xo0aPlhx9+qOOYNGmS3HXXXeWiRYvkY489Jrfbbjv5ta99raOypJGXt/fee0+eeeaZcuHChXLZsmXyvvvuk7vttpvcbrvt5EcffaTj6Ix5O+mkk2S/fv3kQw89JFeuXKk/69at02EqtcOWlha54447ygkTJsjFixfL+fPny8GDB8vzzjuvI7KkUSlvS5culRdffLF88skn5bJly+Sdd94pt956a7nffvvpODpr3qSU8txzz5UPP/ywXLZsmfzHP/4hzz33XCmEkPfee6+UsuvWm5T5eevq9RZQHYLiQ3D99dfLrbbaSjY0NMi99tpL/uUvf+lokarGV7/6VTls2DDZ0NAgP/axj8mvfvWrcunSpfr+hx9+KP/v//5PDhgwQPbq1Ut+4QtfkCtXruxAifPx4IMPSgDWZ8qUKVLKZEn7d77zHTl06FDZ2NgoDzroILlkyRIjjtWrV8uvfe1rsk+fPrKpqUl+85vflO+9914H5MZEXt7WrVsnJ0yYIAcPHiy7d+8uR44cKY8//nhLEe+MeXPlCYCcM2eODlOkHb7yyivy0EMPlT179pSDBg2SZ5xxhty4cWM758ZEpbytWLFC7rfffnKLLbaQjY2Nctttt5VnnXWWXLNmjRFPZ8yblFIee+yxcuTIkbKhoUEOHjxYHnTQQVrpkbLr1puU+Xnr6vUWUB2ElFK2H78UEBAQEBAQENBxCD4+AQEBAQEBAZsNguITEBAQEBAQsNkgKD4BAQEBAQEBmw2C4hMQEBAQEBCw2SAoPgEBAQEBAQGbDYLiExAQEBAQELDZICg+AQEBAQEBAZsNguITsMnhgAMOwGmnnbZJpTt16lQcccQRrYpj1KhREEJACGGdt0Rxyy23WCdwB9QPU6dO1fXw+9//vqPFCQjY7BAUn4CAOmHu3Lm45JJL9O9Ro0bhuuuu6ziBHLj44ouxcuVK9OvXr6NF2eTx0EMPOZXMH/zgB1i5cmXHCBUQEIBuHS1AQMCmgi222KKjRaiIvn37dpqTpDdu3Iju3bt3tBjtjn79+gXFMyCgAxEYn4BNHu+88w6OOeYYDBgwAL169cKhhx6Kf/3rX/q+Mu38+c9/xg477IA+ffpg0qRJxqy8paUFp5xyCvr374+BAwfinHPOwZQpUwzzEzV1HXDAAVi+fDlOP/10bdYAgIsuugif/OQnDfmuu+46jBo1Sv8ul8uYMWOGTuvss88GP1kmjmPMmjULo0ePRs+ePbHLLrvgt7/9bU3lc8stt2CrrbZCr1698IUvfAGrV6+2wtx5553Ybbfd0KNHD2y99daYOXMmWlpa9P2XXnoJ++67L3r06IGxY8fivvvuM0w5r7zyCoQQuOOOO7D//vujR48euO222wAAN910E3bYYQf06NED22+/PX70ox8Zab/66qv4yle+gv79+2OLLbbA5MmT8corr+j7Dz30EPbaay/07t0b/fv3xz777IPly5cXynulfF177bXYaaed0Lt3b4wYMQL/93//h/fff1/fX758OT73uc9hwIAB6N27Nz7xiU/gT3/6E1555RUceOCBAIABAwZACIGpU6cWkikgIKBtERSfgE0eU6dOxZNPPom77roLCxcuhJQShx12GDZu3KjDrFu3DldffTV+8Ytf4JFHHsGKFStw5pln6vvf+973cNttt2HOnDl4/PHHsXbt2lz/jLlz52L48OHatFSNaeOaa67BLbfcgptvvhmPPfYY3n77bcybN88IM2vWLPz85z/H7Nmz8fzzz+P000/H0UcfjYcffrh4wQBYtGgRjjvuOEyfPh2LFy/GgQceiEsvvdQI8+ijj+KYY47BqaeeihdeeAE//vGPccstt+Cyyy4DkChqRxxxBHr16oVFixbhJz/5Cc4//3xneueeey5OPfVUvPjii5g4cSJuu+02XHjhhbjsssvw4osv4vLLL8d3vvMd3HrrrQASVmjixIno27cvHn30UTz++ONaMd2wYQNaWlpwxBFHYP/998c//vEPLFy4ECeccIJWNPNQKV8AEEURfvjDH+L555/HrbfeigceeABnn322vj9t2jSsX78ejzzyCJ599ll873vfQ58+fTBixAj87ne/AwAsWbIEK1euxA9+8IOq6iYgIKCN0LFnpAYE1B/777+/PPXUU6WUUv7zn/+UAOTjjz+u7//3v/+VPXv2lL/+9a+llFLOmTNHAjBOsb/hhhvk0KFD9e+hQ4fKq666Sv9uaWmRW221lZw8ebIzXSmlHDlypPz+979vyPbd735X7rLLLsa173//+3LkyJH697Bhw+SVV16pf2/cuFEOHz5cp/XRRx/JXr16ySeeeMKI57jjjpNf+9rXvOXikudrX/uaPOyww4xrX/3qV2W/fv3074MOOkhefvnlRphf/OIXctiwYVJKKe+55x7ZrVs345TuBQsWSABy3rx5Ukoply1bJgHI6667zohnm222kbfffrtx7ZJLLpHjx4/X6YwZM0bGcazvr1+/Xvbs2VP++c9/lqtXr5YA5EMPPeTNtw+V8uXCb37zGzlw4ED9e6eddpIXXXSRM+yDDz4oAch33nnHeZ+WT0BAQPsh+PgEbNJ48cUX0a1bN4wbN05fGzhwIMaMGYMXX3xRX+vVqxe22WYb/XvYsGF48803AQBr1qzBG2+8gb322kvfL5VK2H333RHHcV3lXbNmDVauXGnI261bN+yxxx7a3LV06VKsW7cOhxxyiPHshg0bsOuuu1aV3osvvogvfOELxrXx48dj/vz5+vff//53PP744wYTUi6X8dFHH2HdunVYsmQJRowYYfgO0bKi2GOPPfT3Dz74AC+//DKOO+44HH/88fp6S0uL9oH5+9//jqVLl6Jv375GPB999BFefvllTJgwAVOnTsXEiRNxyCGH4OCDD8ZXvvIVDBs2rGLeK+WrV69euO+++zBr1iy89NJLWLt2LVpaWoz7p5xyCk466STce++9OPjgg/GlL30JO++8c8W0AwICOg5B8QkIACwnWyGE5VdTD0RRZMVLTW5FoHxM/vjHP+JjH/uYca+xsbF1AnrSmzlzJr74xS9a93r06FFVXL179zbiBYCf/vSnhqIHJIqlCrP77rtrfyCKwYMHAwDmzJmDU045BfPnz8cdd9yBCy64AAsWLMCnPvWpVuXrlVdewWc/+1mcdNJJuOyyy7DFFlvgsccew3HHHYcNGzagV69e+Na3voWJEyfij3/8I+69917MmjUL11xzDU4++eSqyiUgIKD9EBSfgE0aO+ywA1paWrBo0SLsvffeAIDVq1djyZIlGDt2bKE4+vXrh6FDh+Jvf/sb9ttvPwAJM/D0009bjsoUDQ0NKJfLxrXBgwdj1apVkFJqP5TFixcbaQ0bNgyLFi3SabW0tOCpp57CbrvtBgAYO3YsGhsbsWLFCuy///6F8uDDDjvsgEWLFhnX/vKXvxi/d9ttNyxZsgTbbrutM44xY8bg1VdfxRtvvIGhQ4cCAP72t79VTHvo0KHYcsst8e9//xtHHXWUM8xuu+2GO+64A0OGDEFTU5M3rl133RW77rorzjvvPIwfPx633357RcWnUr6eeuopxHGMa665BlGUuEP++te/tsKNGDECJ554Ik488UScd955+OlPf4qTTz4ZDQ0NAGC1gYCAgI5FUHwCNmlst912mDx5Mo4//nj8+Mc/Rt++fXHuuefiYx/7GCZPnlw4npNPPhmzZs3Ctttui+233x7XX3893nnnnVwn2lGjRuGRRx7BkUceicbGRgwaNAgHHHAA3nrrLVx55ZX48pe/jPnz5+Oee+4xXuqnnnoqrrjiCmy33XbYfvvtce211xp7wfTt2xdnnnkmTj/9dMRxjH333Rdr1qzB448/jqamJkyZMqVwvk455RTss88+uPrqqzF58mT8+c9/NsxcAHDhhRfis5/9LLbaait8+ctfRhRF+Pvf/47nnnsOl156KQ455BBss802mDJlCq688kq89957uOCCCwCgopPxzJkzccopp6Bfv36YNGkS1q9fjyeffBLvvPMOZsyYgaOOOgpXXXUVJk+ejIsvvhjDhw/H8uXLMXfuXJx99tnYuHEjfvKTn+Dzn/88ttxySyxZsgT/+te/cMwxx1TMe6V8bbvttti4cSOuv/56fO5zn8Pjjz+O2bNnG3GcdtppOPTQQ/Hxj38c77zzDh588EHssMMOAICRI0dCCIG7774bhx12GHr27Ik+ffoUrpuAgIA2Qse6GAUE1B/cyfjtt9+W3/jGN2S/fv1kz5495cSJE+U///lPfX/OnDmGM6+UUs6bN0/S7rFx40Y5ffp02dTUJAcMGCDPOecc+T//8z/yyCOP9Ka7cOFCufPOO8vGxkYjrhtvvFGOGDFC9u7dWx5zzDHysssuM5ybN27cKE899VTZ1NQk+/fvL2fMmCGPOeYYw5E6jmN53XXXyTFjxsju3bvLwYMHy4kTJ8qHH37YWy4u52YppfzZz34mhw8fLnv27Ck/97nPyauvvtoqj/nz58u9995b9uzZUzY1Ncm99tpL/uQnP9H3X3zxRbnPPvvIhoYGuf3228s//OEPEoCcP3++lDJzbn7mmWes9G+77Tb5yU9+UjY0NMgBAwbI/fbbT86dO1ffX7lypTzmmGPkoEGDZGNjo9x6663l8ccfL9esWSNXrVoljzjiCDls2DDZ0NAgR44cKS+88EJZLpe95VBNvq699lo5bNgw3W5+/vOfGw7L06dPl9tss41sbGyUgwcPlt/4xjfkf//7X/38xRdfLJubm6UQQk6ZMsVIG8G5OSCgQyCkbANHhoCATRxxHGOHHXbAV77yFWO35s6MUaNG4bTTTmuX4zwef/xx7Lvvvli6dKnhNB6QQQiBefPmtfookoCAgOoQ9vEJCCiA5cuX46c//Sn++c9/4tlnn8VJJ52EZcuW4etf/3pHi1YVzjnnHPTp0wdr1qypa7zz5s3DggUL8Morr+C+++7DCSecgH322ScoPQ6ceOKJweQVENCBCIxPQEABvPrqqzjyyCPx3HPPQUqJHXfcEVdccYV2QO4KWL58uV5BtvXWW2uH3Xrg5z//OS699FKsWLECgwYNwsEHH4xrrrkGAwcOrFsa1eITn/iEdwfnH//4x16H6rbGm2++ibVr1wJItk2gK90CAgLaHkHxCQgI2CRBFT2OoUOHWnsDBQQEbB4Iik9AQEBAQEDAZoPg4xMQEBAQEBCw2SAoPgEBAQEBAQGbDYLiExAQEBAQELDZICg+AQEBAQEBAZsNguITEBAQEBAQsNkgKD4BAQEBAQEBmw2C4hMQEBAQEBCw2SAoPgEBAQEBAQGbDf5/E6xerQkaSdYAAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -673,11 +751,115 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.10.12" }, "widgets": { "application/vnd.jupyter.widget-state+json": { - "state": {}, + "state": { + "2c9a68fccd954c5c999f81cd837d0e33": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "406eb32c4fe6444a9621ffde1e743ff6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "flex": "2" + } + }, + "41720f6c17054e9281e677ec7a65f830": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "layout": "IPY_MODEL_e8f1658daf544fcb88b821f99b8e134d", + "style": "IPY_MODEL_8157a6b420c7451ab497beb5dabedaa0", + "value": " 232k/232k [00:00<00:00, 515kB/s]" + } + }, + "629d7aab1f814acfaa3689ad128e05f1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "bar_style": "success", + "layout": "IPY_MODEL_406eb32c4fe6444a9621ffde1e743ff6", + "max": 232080, + "style": "IPY_MODEL_9ad072d8b10f493294a7f3651e076f3a", + "value": 232080 + } + }, + "8157a6b420c7451ab497beb5dabedaa0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "93a91be8c0b64d7686f2ec1ff3a2570b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "children": [ + "IPY_MODEL_ac558f4bb88f4a5e927f7f622e8aed2f", + "IPY_MODEL_629d7aab1f814acfaa3689ad128e05f1", + "IPY_MODEL_41720f6c17054e9281e677ec7a65f830" + ], + "layout": "IPY_MODEL_ce767a9867e24d7c8b21afab9f77c204" + } + }, + "9ad072d8b10f493294a7f3651e076f3a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "description_width": "" + } + }, + "ac558f4bb88f4a5e927f7f622e8aed2f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "layout": "IPY_MODEL_fe17f29f0d544049a81c9ed73775afbe", + "style": "IPY_MODEL_2c9a68fccd954c5c999f81cd837d0e33", + "value": "CAMS_EAC4_20210101_5cc16f9d5dbf711e31cda8c77c6efc5414a1c4f1: 100%" + } + }, + "ce767a9867e24d7c8b21afab9f77c204": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "display": "inline-flex", + "flex_flow": "row wrap", + "width": "100%" + } + }, + "e8f1658daf544fcb88b821f99b8e134d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": {} + }, + "fe17f29f0d544049a81c9ed73775afbe": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": {} + } + }, "version_major": 2, "version_minor": 0 } diff --git a/docs/notebooks/tutos/tuto_cop_dem.ipynb b/docs/notebooks/tutos/tuto_cop_dem.ipynb index 05f6d515a..9e762416c 100644 --- a/docs/notebooks/tutos/tuto_cop_dem.ipynb +++ b/docs/notebooks/tutos/tuto_cop_dem.ipynb @@ -131,7 +131,7 @@ ], "source": [ "search_geom = [0.25, 43.2, 2.8, 43.9]\n", - "search_result, count = dag.search(productType=product_type, geom=search_geom)\n", + "search_result = dag.search(productType=product_type, geom=search_geom)\n", "search_result" ] }, @@ -177,7 +177,7 @@ " <meta name="viewport" content="width=device-width,\n", " initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />\n", " <style>\n", - " #map_bb529a40614b71994d4f3b84c24ff3c6 {\n", + " #map_84ab30d78c52ea1611de8ac88326b1de {\n", " position: relative;\n", " width: 100.0%;\n", " height: 100.0%;\n", @@ -207,14 +207,14 @@ "<body>\n", " \n", " \n", - " <div class="folium-map" id="map_bb529a40614b71994d4f3b84c24ff3c6" ></div>\n", + " <div class="folium-map" id="map_84ab30d78c52ea1611de8ac88326b1de" ></div>\n", " \n", "</body>\n", "<script>\n", " \n", " \n", - " var map_bb529a40614b71994d4f3b84c24ff3c6 = L.map(\n", - " "map_bb529a40614b71994d4f3b84c24ff3c6",\n", + " var map_84ab30d78c52ea1611de8ac88326b1de = L.map(\n", + " "map_84ab30d78c52ea1611de8ac88326b1de",\n", " {\n", " center: [43.5, 1.5],\n", " crs: L.CRS.EPSG3857,\n", @@ -228,19 +228,19 @@ "\n", " \n", " \n", - " var tile_layer_f202a5440eb73c205c8aeab90cc160cf = L.tileLayer(\n", + " var tile_layer_31b1cc1e3471d62bb5b24aa3ac5434a5 = L.tileLayer(\n", " "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",\n", " {"attribution": "Data by \\u0026copy; \\u003ca target=\\"_blank\\" href=\\"http://openstreetmap.org\\"\\u003eOpenStreetMap\\u003c/a\\u003e, under \\u003ca target=\\"_blank\\" href=\\"http://www.openstreetmap.org/copyright\\"\\u003eODbL\\u003c/a\\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}\n", - " ).addTo(map_bb529a40614b71994d4f3b84c24ff3c6);\n", + " ).addTo(map_84ab30d78c52ea1611de8ac88326b1de);\n", " \n", " \n", - " var rectangle_91153f824feb5444e8e5b34d6f066e06 = L.rectangle(\n", + " var rectangle_931ab6873b8224d56c615214fb24e8e5 = L.rectangle(\n", " [[43.2, 0.25], [43.9, 2.8]],\n", " {"bubblingMouseEvents": true, "color": "red", "dashArray": null, "dashOffset": null, "fill": false, "fillColor": "red", "fillOpacity": 0.2, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "noClip": false, "opacity": 1.0, "smoothFactor": 1.0, "stroke": true, "weight": 3}\n", - " ).addTo(map_bb529a40614b71994d4f3b84c24ff3c6);\n", + " ).addTo(map_84ab30d78c52ea1611de8ac88326b1de);\n", " \n", " \n", - " rectangle_91153f824feb5444e8e5b34d6f066e06.bindTooltip(\n", + " rectangle_931ab6873b8224d56c615214fb24e8e5.bindTooltip(\n", " `<div>\n", " Search extent\n", " </div>`,\n", @@ -249,25 +249,25 @@ " \n", " \n", "\n", - " function geo_json_a1a84a7e944c3478f83d093c02ad9c6e_onEachFeature(feature, layer) {\n", + " function geo_json_1cafae43389544b0a95bbbb978333112_onEachFeature(feature, layer) {\n", " layer.on({\n", " });\n", " };\n", - " var geo_json_a1a84a7e944c3478f83d093c02ad9c6e = L.geoJson(null, {\n", - " onEachFeature: geo_json_a1a84a7e944c3478f83d093c02ad9c6e_onEachFeature,\n", + " var geo_json_1cafae43389544b0a95bbbb978333112 = L.geoJson(null, {\n", + " onEachFeature: geo_json_1cafae43389544b0a95bbbb978333112_onEachFeature,\n", " \n", " });\n", "\n", - " function geo_json_a1a84a7e944c3478f83d093c02ad9c6e_add (data) {\n", - " geo_json_a1a84a7e944c3478f83d093c02ad9c6e\n", + " function geo_json_1cafae43389544b0a95bbbb978333112_add (data) {\n", + " geo_json_1cafae43389544b0a95bbbb978333112\n", " .addData(data)\n", - " .addTo(map_bb529a40614b71994d4f3b84c24ff3c6);\n", + " .addTo(map_84ab30d78c52ea1611de8ac88326b1de);\n", " }\n", - " geo_json_a1a84a7e944c3478f83d093c02ad9c6e_add({"features": [{"geometry": {"coordinates": [[[2.0, 43.0], [3.0, 43.0], [3.0, 44.0], [2.0, 44.0], [2.0, 43.0]]], "type": "Polygon"}, "id": "DEM1_SAR_DGE_30_20110216T174143_20140906T174215_ADS_000000_jSLP", "properties": {"abstract": "The Copernicus DEM is a Digital Surface Model (DSM) that represents the surface of the Earth including buildings, infrastructure and vegetation. Data were acquired through the TanDEM-X mission between 2011 and 2015 [https://spacedata.copernicus.eu/collections/copernicus-digital-elevation-model].", "accessConstraint": {"description": {"shortName": "No license"}, "grantedCountries": null, "grantedFlags": null, "grantedOrganizationCountries": null, "hasToBeSigned": "never", "licenseId": "unlicensed", "signatureQuota": -1, "viewService": "public"}, "centroid": {"coordinates": [2.5, 43.5], "type": "Point"}, "completionTimeFromAscendingNode": "2014-09-06T17:42:15.000Z", "downloadLink": "https://zipper.creodias.eu/download/e2d2e6dd-198f-53b0-9b93-f898ab28cf8c", "eodag_product_type": "COP_DEM_GLO30_DGED", "eodag_provider": "creodias", "eodag_search_intersection": {"coordinates": [[[2.0, 43.9], [2.8, 43.9], [2.8, 43.2], [2.0, 43.2], [2.0, 43.9]]], "type": "Polygon"}, "gmlgeometry": "\\u003cgml:Polygon srsName=\\"EPSG:4326\\"\\u003e\\u003cgml:outerBoundaryIs\\u003e\\u003cgml:LinearRing\\u003e\\u003cgml:coordinates\\u003e2,43 3,43 3,44 2,44 2,43\\u003c/gml:coordinates\\u003e\\u003c/gml:LinearRing\\u003e\\u003c/gml:outerBoundaryIs\\u003e\\u003c/gml:Polygon\\u003e", "instrument": null, "keywords": "TerraSAR,TanDEM-X,COP-DEM,DEM,surface,GLO-30,DSM,GDGED", "license": "proprietary", "links": [{"href": "https://datahub.creodias.eu/resto/collections/COP-DEM/e2d2e6dd-198f-53b0-9b93-f898ab28cf8c.json", "rel": "self", "title": "GeoJSON link for e2d2e6dd-198f-53b0-9b93-f898ab28cf8c", "type": "application/json"}], "missionStartDate": "2010-06-21T00:00:00Z", "modificationDate": "2021-06-21T22:01:44.918Z", "orbitNumber": 0, "organisationName": "ESA", "parentIdentifier": null, "platform": "COP-DEM", "platformSerialIdentifier": "", "polarizationMode": "HH", "processingLevel": null, "productIdentifier": "/eodata/auxdata/CopDEM/COP-DEM_GLO-30-DGED/DEM1_SAR_DGE_30_20110216T174143_20140906T174215_ADS_000000_jSLP.DEM", "productType": "DGE_30", "publicationDate": "2021-06-21T22:01:44.918Z", "quicklook": null, "resolution": 30.0, "sensorMode": null, "sensorType": "ALTIMETRIC", "services": {"download": {"mimeType": "application/octet-stream", "size": 0, "url": "https://datahub.creodias.eu/download/e2d2e6dd-198f-53b0-9b93-f898ab28cf8c"}}, "snowCover": 0, "startTimeFromAscendingNode": "2011-02-16T17:41:43.000Z", "storageStatus": "ONLINE", "thumbnail": "https://datahub.creodias.eu/get-object?path=/auxdata/CopDEM/COP-DEM_GLO-30-DGED/DEM1_SAR_DGE_30_20110216T174143_20140906T174215_ADS_000000_jSLP.DEM/DEM1_SAR_DGE_30_20110216T174143_20140906T174215_ADS_000000_jSLP-ql.jpg", "title": "DEM1_SAR_DGE_30_20110216T174143_20140906T174215_ADS_000000_jSLP", "uid": "e2d2e6dd-198f-53b0-9b93-f898ab28cf8c"}, "type": "Feature"}, {"geometry": {"coordinates": [[[1.0, 43.0], [2.0, 43.0], [2.0, 44.0], [1.0, 44.0], [1.0, 43.0]]], "type": "Polygon"}, "id": "DEM1_SAR_DGE_30_20110417T175032_20140906T174215_ADS_000000_PIJx", "properties": {"abstract": "The Copernicus DEM is a Digital Surface Model (DSM) that represents the surface of the Earth including buildings, infrastructure and vegetation. Data were acquired through the TanDEM-X mission between 2011 and 2015 [https://spacedata.copernicus.eu/collections/copernicus-digital-elevation-model].", "accessConstraint": {"description": {"shortName": "No license"}, "grantedCountries": null, "grantedFlags": null, "grantedOrganizationCountries": null, "hasToBeSigned": "never", "licenseId": "unlicensed", "signatureQuota": -1, "viewService": "public"}, "centroid": {"coordinates": [1.5, 43.5], "type": "Point"}, "completionTimeFromAscendingNode": "2014-09-06T17:42:15.000Z", "downloadLink": "https://zipper.creodias.eu/download/6aead0d1-5def-5c1d-a20d-f1597e1e4b6c", "eodag_product_type": "COP_DEM_GLO30_DGED", "eodag_provider": "creodias", "eodag_search_intersection": {"coordinates": [[[2.0, 43.2], [1.0, 43.2], [1.0, 43.9], [2.0, 43.9], [2.0, 43.2]]], "type": "Polygon"}, "gmlgeometry": "\\u003cgml:Polygon srsName=\\"EPSG:4326\\"\\u003e\\u003cgml:outerBoundaryIs\\u003e\\u003cgml:LinearRing\\u003e\\u003cgml:coordinates\\u003e1,43 2,43 2,44 1,44 1,43\\u003c/gml:coordinates\\u003e\\u003c/gml:LinearRing\\u003e\\u003c/gml:outerBoundaryIs\\u003e\\u003c/gml:Polygon\\u003e", "instrument": null, "keywords": "TerraSAR,TanDEM-X,COP-DEM,DEM,surface,GLO-30,DSM,GDGED", "license": "proprietary", "links": [{"href": "https://datahub.creodias.eu/resto/collections/COP-DEM/6aead0d1-5def-5c1d-a20d-f1597e1e4b6c.json", "rel": "self", "title": "GeoJSON link for 6aead0d1-5def-5c1d-a20d-f1597e1e4b6c", "type": "application/json"}], "missionStartDate": "2010-06-21T00:00:00Z", "modificationDate": "2021-06-21T19:59:05.813Z", "orbitNumber": 0, "organisationName": "ESA", "parentIdentifier": null, "platform": "COP-DEM", "platformSerialIdentifier": "", "polarizationMode": "HH", "processingLevel": null, "productIdentifier": "/eodata/auxdata/CopDEM/COP-DEM_GLO-30-DGED/DEM1_SAR_DGE_30_20110417T175032_20140906T174215_ADS_000000_PIJx.DEM", "productType": "DGE_30", "publicationDate": "2021-06-21T19:59:05.813Z", "quicklook": null, "resolution": 30.0, "sensorMode": null, "sensorType": "ALTIMETRIC", "services": {"download": {"mimeType": "application/octet-stream", "size": 0, "url": "https://datahub.creodias.eu/download/6aead0d1-5def-5c1d-a20d-f1597e1e4b6c"}}, "snowCover": 0, "startTimeFromAscendingNode": "2011-04-17T17:50:32.000Z", "storageStatus": "ONLINE", "thumbnail": "https://datahub.creodias.eu/get-object?path=/auxdata/CopDEM/COP-DEM_GLO-30-DGED/DEM1_SAR_DGE_30_20110417T175032_20140906T174215_ADS_000000_PIJx.DEM/DEM1_SAR_DGE_30_20110417T175032_20140906T174215_ADS_000000_PIJx-ql.jpg", "title": "DEM1_SAR_DGE_30_20110417T175032_20140906T174215_ADS_000000_PIJx", "uid": "6aead0d1-5def-5c1d-a20d-f1597e1e4b6c"}, "type": "Feature"}, {"geometry": {"coordinates": [[[-0.0, 43.0], [1.0, 43.0], [1.0, 44.0], [-0.0, 44.0], [-0.0, 43.0]]], "type": "Polygon"}, "id": "DEM1_SAR_DGE_30_20110428T174952_20140831T175054_ADS_000000_Q3FX", "properties": {"abstract": "The Copernicus DEM is a Digital Surface Model (DSM) that represents the surface of the Earth including buildings, infrastructure and vegetation. Data were acquired through the TanDEM-X mission between 2011 and 2015 [https://spacedata.copernicus.eu/collections/copernicus-digital-elevation-model].", "accessConstraint": {"description": {"shortName": "No license"}, "grantedCountries": null, "grantedFlags": null, "grantedOrganizationCountries": null, "hasToBeSigned": "never", "licenseId": "unlicensed", "signatureQuota": -1, "viewService": "public"}, "centroid": {"coordinates": [0.5, 43.5], "type": "Point"}, "completionTimeFromAscendingNode": "2014-08-31T17:50:54.000Z", "downloadLink": "https://zipper.creodias.eu/download/2f73582e-a3ea-53c9-8578-73f333d9e14b", "eodag_product_type": "COP_DEM_GLO30_DGED", "eodag_provider": "creodias", "eodag_search_intersection": {"coordinates": [[[1.0, 43.2], [0.25, 43.2], [0.25, 43.9], [1.0, 43.9], [1.0, 43.2]]], "type": "Polygon"}, "gmlgeometry": "\\u003cgml:Polygon srsName=\\"EPSG:4326\\"\\u003e\\u003cgml:outerBoundaryIs\\u003e\\u003cgml:LinearRing\\u003e\\u003cgml:coordinates\\u003e0,43 1,43 1,44 0,44 0,43\\u003c/gml:coordinates\\u003e\\u003c/gml:LinearRing\\u003e\\u003c/gml:outerBoundaryIs\\u003e\\u003c/gml:Polygon\\u003e", "instrument": null, "keywords": "TerraSAR,TanDEM-X,COP-DEM,DEM,surface,GLO-30,DSM,GDGED", "license": "proprietary", "links": [{"href": "https://datahub.creodias.eu/resto/collections/COP-DEM/2f73582e-a3ea-53c9-8578-73f333d9e14b.json", "rel": "self", "title": "GeoJSON link for 2f73582e-a3ea-53c9-8578-73f333d9e14b", "type": "application/json"}], "missionStartDate": "2010-06-21T00:00:00Z", "modificationDate": "2021-06-21T19:39:33.821Z", "orbitNumber": 0, "organisationName": "ESA", "parentIdentifier": null, "platform": "COP-DEM", "platformSerialIdentifier": "", "polarizationMode": "HH", "processingLevel": null, "productIdentifier": "/eodata/auxdata/CopDEM/COP-DEM_GLO-30-DGED/DEM1_SAR_DGE_30_20110428T174952_20140831T175054_ADS_000000_Q3FX.DEM", "productType": "DGE_30", "publicationDate": "2021-06-21T19:39:33.821Z", "quicklook": null, "resolution": 30.0, "sensorMode": null, "sensorType": "ALTIMETRIC", "services": {"download": {"mimeType": "application/octet-stream", "size": 0, "url": "https://datahub.creodias.eu/download/2f73582e-a3ea-53c9-8578-73f333d9e14b"}}, "snowCover": 0, "startTimeFromAscendingNode": "2011-04-28T17:49:52.000Z", "storageStatus": "ONLINE", "thumbnail": "https://datahub.creodias.eu/get-object?path=/auxdata/CopDEM/COP-DEM_GLO-30-DGED/DEM1_SAR_DGE_30_20110428T174952_20140831T175054_ADS_000000_Q3FX.DEM/DEM1_SAR_DGE_30_20110428T174952_20140831T175054_ADS_000000_Q3FX-ql.jpg", "title": "DEM1_SAR_DGE_30_20110428T174952_20140831T175054_ADS_000000_Q3FX", "uid": "2f73582e-a3ea-53c9-8578-73f333d9e14b"}, "type": "Feature"}], "type": "FeatureCollection"});\n", + " geo_json_1cafae43389544b0a95bbbb978333112_add({"features": [{"geometry": {"coordinates": [[[2.0, 43.0], [3.0, 43.0], [3.0, 44.0], [2.0, 44.0], [2.0, 43.0]]], "type": "Polygon"}, "id": "DEM1_SAR_DGE_30_20110216T174143_20140906T174215_ADS_000000_jSLP", "properties": {"abstract": "The Copernicus DEM is a Digital Surface Model (DSM) that represents the surface of the Earth including buildings, infrastructure and vegetation. Data were acquired through the TanDEM-X mission between 2011 and 2015 [https://spacedata.copernicus.eu/collections/copernicus-digital-elevation-model].", "accessConstraint": {"description": {"shortName": "No license"}, "grantedCountries": null, "grantedFlags": null, "grantedOrganizationCountries": null, "hasToBeSigned": "never", "licenseId": "unlicensed", "signatureQuota": -1, "viewService": "public"}, "centroid": {"coordinates": [2.5, 43.5], "type": "Point"}, "completionTimeFromAscendingNode": "2014-09-06T17:42:15.000Z", "downloadLink": "https://zipper.creodias.eu/download/e2d2e6dd-198f-53b0-9b93-f898ab28cf8c", "eodag_product_type": "COP_DEM_GLO30_DGED", "eodag_provider": "creodias", "eodag_search_intersection": {"coordinates": [[[2.0, 43.9], [2.8, 43.9], [2.8, 43.2], [2.0, 43.2], [2.0, 43.9]]], "type": "Polygon"}, "gmlgeometry": "\\u003cgml:Polygon srsName=\\"EPSG:4326\\"\\u003e\\u003cgml:outerBoundaryIs\\u003e\\u003cgml:LinearRing\\u003e\\u003cgml:coordinates\\u003e2,43 3,43 3,44 2,44 2,43\\u003c/gml:coordinates\\u003e\\u003c/gml:LinearRing\\u003e\\u003c/gml:outerBoundaryIs\\u003e\\u003c/gml:Polygon\\u003e", "instrument": null, "keywords": "TerraSAR,TanDEM-X,DEM,surface,GLO-30,DSM,GDGED", "license": "proprietary", "links": [{"href": "https://datahub.creodias.eu/resto/collections/COP-DEM/e2d2e6dd-198f-53b0-9b93-f898ab28cf8c.json", "rel": "self", "title": "GeoJSON link for e2d2e6dd-198f-53b0-9b93-f898ab28cf8c", "type": "application/json"}], "missionStartDate": "2010-06-21T00:00:00Z", "modificationDate": "2021-06-21T22:01:44.918Z", "orbitNumber": 0, "organisationName": "ESA", "parentIdentifier": null, "platform": "COP-DEM", "platformSerialIdentifier": "", "polarizationMode": "HH", "processingLevel": null, "productIdentifier": "/eodata/auxdata/CopDEM/COP-DEM_GLO-30-DGED/DEM1_SAR_DGE_30_20110216T174143_20140906T174215_ADS_000000_jSLP.DEM", "productType": "DGE_30", "publicationDate": "2021-06-21T22:01:44.918Z", "quicklook": null, "resolution": 30.0, "sensorMode": null, "sensorType": "ALTIMETRIC", "services": {"download": {"mimeType": "application/octet-stream", "size": 0, "url": "https://datahub.creodias.eu/download/e2d2e6dd-198f-53b0-9b93-f898ab28cf8c"}}, "snowCover": 0, "startTimeFromAscendingNode": "2011-02-16T17:41:43.000Z", "storageStatus": "ONLINE", "thumbnail": "https://datahub.creodias.eu/get-object?path=/auxdata/CopDEM/COP-DEM_GLO-30-DGED/DEM1_SAR_DGE_30_20110216T174143_20140906T174215_ADS_000000_jSLP.DEM/DEM1_SAR_DGE_30_20110216T174143_20140906T174215_ADS_000000_jSLP-ql.jpg", "title": "DEM1_SAR_DGE_30_20110216T174143_20140906T174215_ADS_000000_jSLP", "uid": "e2d2e6dd-198f-53b0-9b93-f898ab28cf8c"}, "type": "Feature"}, {"geometry": {"coordinates": [[[1.0, 43.0], [2.0, 43.0], [2.0, 44.0], [1.0, 44.0], [1.0, 43.0]]], "type": "Polygon"}, "id": "DEM1_SAR_DGE_30_20110417T175032_20140906T174215_ADS_000000_PIJx", "properties": {"abstract": "The Copernicus DEM is a Digital Surface Model (DSM) that represents the surface of the Earth including buildings, infrastructure and vegetation. Data were acquired through the TanDEM-X mission between 2011 and 2015 [https://spacedata.copernicus.eu/collections/copernicus-digital-elevation-model].", "accessConstraint": {"description": {"shortName": "No license"}, "grantedCountries": null, "grantedFlags": null, "grantedOrganizationCountries": null, "hasToBeSigned": "never", "licenseId": "unlicensed", "signatureQuota": -1, "viewService": "public"}, "centroid": {"coordinates": [1.5, 43.5], "type": "Point"}, "completionTimeFromAscendingNode": "2014-09-06T17:42:15.000Z", "downloadLink": "https://zipper.creodias.eu/download/6aead0d1-5def-5c1d-a20d-f1597e1e4b6c", "eodag_product_type": "COP_DEM_GLO30_DGED", "eodag_provider": "creodias", "eodag_search_intersection": {"coordinates": [[[2.0, 43.2], [1.0, 43.2], [1.0, 43.9], [2.0, 43.9], [2.0, 43.2]]], "type": "Polygon"}, "gmlgeometry": "\\u003cgml:Polygon srsName=\\"EPSG:4326\\"\\u003e\\u003cgml:outerBoundaryIs\\u003e\\u003cgml:LinearRing\\u003e\\u003cgml:coordinates\\u003e1,43 2,43 2,44 1,44 1,43\\u003c/gml:coordinates\\u003e\\u003c/gml:LinearRing\\u003e\\u003c/gml:outerBoundaryIs\\u003e\\u003c/gml:Polygon\\u003e", "instrument": null, "keywords": "TerraSAR,TanDEM-X,DEM,surface,GLO-30,DSM,GDGED", "license": "proprietary", "links": [{"href": "https://datahub.creodias.eu/resto/collections/COP-DEM/6aead0d1-5def-5c1d-a20d-f1597e1e4b6c.json", "rel": "self", "title": "GeoJSON link for 6aead0d1-5def-5c1d-a20d-f1597e1e4b6c", "type": "application/json"}], "missionStartDate": "2010-06-21T00:00:00Z", "modificationDate": "2021-06-21T19:59:05.813Z", "orbitNumber": 0, "organisationName": "ESA", "parentIdentifier": null, "platform": "COP-DEM", "platformSerialIdentifier": "", "polarizationMode": "HH", "processingLevel": null, "productIdentifier": "/eodata/auxdata/CopDEM/COP-DEM_GLO-30-DGED/DEM1_SAR_DGE_30_20110417T175032_20140906T174215_ADS_000000_PIJx.DEM", "productType": "DGE_30", "publicationDate": "2021-06-21T19:59:05.813Z", "quicklook": null, "resolution": 30.0, "sensorMode": null, "sensorType": "ALTIMETRIC", "services": {"download": {"mimeType": "application/octet-stream", "size": 0, "url": "https://datahub.creodias.eu/download/6aead0d1-5def-5c1d-a20d-f1597e1e4b6c"}}, "snowCover": 0, "startTimeFromAscendingNode": "2011-04-17T17:50:32.000Z", "storageStatus": "ONLINE", "thumbnail": "https://datahub.creodias.eu/get-object?path=/auxdata/CopDEM/COP-DEM_GLO-30-DGED/DEM1_SAR_DGE_30_20110417T175032_20140906T174215_ADS_000000_PIJx.DEM/DEM1_SAR_DGE_30_20110417T175032_20140906T174215_ADS_000000_PIJx-ql.jpg", "title": "DEM1_SAR_DGE_30_20110417T175032_20140906T174215_ADS_000000_PIJx", "uid": "6aead0d1-5def-5c1d-a20d-f1597e1e4b6c"}, "type": "Feature"}, {"geometry": {"coordinates": [[[-0.0, 43.0], [1.0, 43.0], [1.0, 44.0], [-0.0, 44.0], [-0.0, 43.0]]], "type": "Polygon"}, "id": "DEM1_SAR_DGE_30_20110428T174952_20140831T175054_ADS_000000_Q3FX", "properties": {"abstract": "The Copernicus DEM is a Digital Surface Model (DSM) that represents the surface of the Earth including buildings, infrastructure and vegetation. Data were acquired through the TanDEM-X mission between 2011 and 2015 [https://spacedata.copernicus.eu/collections/copernicus-digital-elevation-model].", "accessConstraint": {"description": {"shortName": "No license"}, "grantedCountries": null, "grantedFlags": null, "grantedOrganizationCountries": null, "hasToBeSigned": "never", "licenseId": "unlicensed", "signatureQuota": -1, "viewService": "public"}, "centroid": {"coordinates": [0.5, 43.5], "type": "Point"}, "completionTimeFromAscendingNode": "2014-08-31T17:50:54.000Z", "downloadLink": "https://zipper.creodias.eu/download/2f73582e-a3ea-53c9-8578-73f333d9e14b", "eodag_product_type": "COP_DEM_GLO30_DGED", "eodag_provider": "creodias", "eodag_search_intersection": {"coordinates": [[[1.0, 43.2], [0.25, 43.2], [0.25, 43.9], [1.0, 43.9], [1.0, 43.2]]], "type": "Polygon"}, "gmlgeometry": "\\u003cgml:Polygon srsName=\\"EPSG:4326\\"\\u003e\\u003cgml:outerBoundaryIs\\u003e\\u003cgml:LinearRing\\u003e\\u003cgml:coordinates\\u003e0,43 1,43 1,44 0,44 0,43\\u003c/gml:coordinates\\u003e\\u003c/gml:LinearRing\\u003e\\u003c/gml:outerBoundaryIs\\u003e\\u003c/gml:Polygon\\u003e", "instrument": null, "keywords": "TerraSAR,TanDEM-X,DEM,surface,GLO-30,DSM,GDGED", "license": "proprietary", "links": [{"href": "https://datahub.creodias.eu/resto/collections/COP-DEM/2f73582e-a3ea-53c9-8578-73f333d9e14b.json", "rel": "self", "title": "GeoJSON link for 2f73582e-a3ea-53c9-8578-73f333d9e14b", "type": "application/json"}], "missionStartDate": "2010-06-21T00:00:00Z", "modificationDate": "2021-06-21T19:39:33.821Z", "orbitNumber": 0, "organisationName": "ESA", "parentIdentifier": null, "platform": "COP-DEM", "platformSerialIdentifier": "", "polarizationMode": "HH", "processingLevel": null, "productIdentifier": "/eodata/auxdata/CopDEM/COP-DEM_GLO-30-DGED/DEM1_SAR_DGE_30_20110428T174952_20140831T175054_ADS_000000_Q3FX.DEM", "productType": "DGE_30", "publicationDate": "2021-06-21T19:39:33.821Z", "quicklook": null, "resolution": 30.0, "sensorMode": null, "sensorType": "ALTIMETRIC", "services": {"download": {"mimeType": "application/octet-stream", "size": 0, "url": "https://datahub.creodias.eu/download/2f73582e-a3ea-53c9-8578-73f333d9e14b"}}, "snowCover": 0, "startTimeFromAscendingNode": "2011-04-28T17:49:52.000Z", "storageStatus": "ONLINE", "thumbnail": "https://datahub.creodias.eu/get-object?path=/auxdata/CopDEM/COP-DEM_GLO-30-DGED/DEM1_SAR_DGE_30_20110428T174952_20140831T175054_ADS_000000_Q3FX.DEM/DEM1_SAR_DGE_30_20110428T174952_20140831T175054_ADS_000000_Q3FX-ql.jpg", "title": "DEM1_SAR_DGE_30_20110428T174952_20140831T175054_ADS_000000_Q3FX", "uid": "2f73582e-a3ea-53c9-8578-73f333d9e14b"}, "type": "Feature"}], "type": "FeatureCollection"});\n", "\n", " \n", " \n", - " geo_json_a1a84a7e944c3478f83d093c02ad9c6e.bindTooltip(\n", + " geo_json_1cafae43389544b0a95bbbb978333112.bindTooltip(\n", " function(layer){\n", " let div = L.DomUtil.create('div');\n", " \n", @@ -294,7 +294,7 @@ "</html>\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen>" ], "text/plain": [ - "" + "" ] }, "execution_count": 6, @@ -359,12 +359,12 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "fd6a84d656e0487a8486add5d0649b64", + "model_id": "bceae7c481814fa3af1325f55e2d32f0", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "Downloaded products: 0%| …" + "Downloaded products: 0%| | 0/3 [00:00
    • latitude
      PandasIndex
      PandasIndex(Float64Index([70.0, 69.5, 69.0, 68.5, 68.0, 67.5, 67.0, 66.5, 66.0, 65.5, 65.0,\n",
      +       "              64.5, 64.0, 63.5, 63.0, 62.5, 62.0, 61.5, 61.0, 60.5, 60.0, 59.5,\n",
      +       "              59.0, 58.5, 58.0, 57.5, 57.0, 56.5, 56.0, 55.5, 55.0, 54.5, 54.0,\n",
      +       "              53.5, 53.0, 52.5, 52.0, 51.5, 51.0, 50.5, 50.0, 49.5, 49.0, 48.5,\n",
      +       "              48.0, 47.5, 47.0, 46.5, 46.0, 45.5, 45.0, 44.5, 44.0, 43.5, 43.0,\n",
      +       "              42.5, 42.0, 41.5, 41.0, 40.5, 40.0, 39.5, 39.0, 38.5, 38.0, 37.5,\n",
      +       "              37.0, 36.5, 36.0, 35.5, 35.0, 34.5, 34.0, 33.5, 33.0, 32.5, 32.0,\n",
      +       "              31.5, 31.0, 30.5, 30.0],\n",
      +       "             dtype='float64', name='latitude'))
    • longitude
      PandasIndex
      PandasIndex(Float64Index([230.0, 230.5, 231.0, 231.5, 232.0, 232.5, 233.0, 233.5, 234.0,\n",
      +       "              234.5,\n",
      +       "              ...\n",
      +       "              295.5, 296.0, 296.5, 297.0, 297.5, 298.0, 298.5, 299.0, 299.5,\n",
      +       "              300.0],\n",
      +       "             dtype='float64', name='longitude', length=141))
  • GRIB_edition :
    2
    GRIB_centre :
    ecmf
    GRIB_centreDescription :
    European Centre for Medium-Range Weather Forecasts
    GRIB_subCentre :
    0
    Conventions :
    CF-1.7
    institution :
    European Centre for Medium-Range Weather Forecasts
    history :
    2023-10-20T17:58 GRIB to CDM+CF via cfgrib-0.9.10.4/ecCodes-2.32.0 with {"source": "../../../../../../../data/eodag_data/TIGGE_CF_SFC_20211101_8c0c3dd73cd23760892e6c5920d1302386a7a1c0/TIGGE_CF_SFC_20211101_8c0c3dd73cd23760892e6c5920d1302386a7a1c0.grib", "filter_by_keys": {}, "encode_cf": ["parameter", "time", "geography", "vertical"]}
  • " ], "text/plain": [ "\n", @@ -599,45 +624,46 @@ " GRIB_subCentre: 0\n", " Conventions: CF-1.7\n", " institution: European Centre for Medium-Range Weather Forecasts\n", - " history: 2022-05-11T09:27 GRIB to CDM+CF via cfgrib-0.9.1..." + " history: 2023-10-20T17:58 GRIB to CDM+CF via cfgrib-0.9.1..." ] }, - "execution_count": 6, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "ds = xr.load_dataset(product_path, engine=\"cfgrib\")\n", + "import os\n", + "\n", + "# the product ouput file to load is the only one located in \"product_path\" directory\n", + "ds = xr.load_dataset(os.path.join(product_path, os.listdir(product_path)[0]), engine=\"cfgrib\")\n", "ds" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "92531254-85c0-49d0-a676-f2972efb42b5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 7, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ - "
    " + "
    " ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -659,7 +685,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "c060d3b3-3121-46ea-89ae-2a7b5f99ebe2", "metadata": {}, "outputs": [ @@ -668,8 +694,8 @@ "output_type": "stream", "text": [ "Request using productType or directly MARS parameters result to the \n", - " same product title TIGGE_CF_SFC_20211101_28b0b1a0da723aba1682661621bd7b21fe12f1ea \n", - " and downloadLink https://apps.ecmwf.int/datasets/data/tigge?date=2021-11-01/to/2021-11-01&area=70.0/-130.0/30.0/-60.0&class=ti&dataset=tigge&expver=prod&grid=0.5/0.5&levtype=sfc&origin=ecmf¶m=tcc&step=0&time=00:00&type=cf\n" + " same product title TIGGE_CF_SFC_20211101_8c0c3dd73cd23760892e6c5920d1302386a7a1c0 \n", + " and downloadLink https://apps.ecmwf.int/datasets/data/tigge?{\"area\": [\"70.0/-130.0/30.0/-60.0\"], \"class\": \"ti\", \"dataset\": \"tigge\", \"date\": [\"2021-11-01/to/2021-11-01\"], \"expver\": \"prod\", \"grid\": \"0.5/0.5\", \"levtype\": \"sfc\", \"origin\": \"ecmf\", \"param\": \"tcc\", \"step\": 0, \"time\": \"00:00\", \"type\": \"cf\"}\n" ] } ], @@ -687,7 +713,7 @@ " \"param\": \"tcc\",\n", "}\n", "\n", - "products_from_mars_req, total_count = dag.search(\n", + "products_from_mars_req = dag.search(\n", " geom={\n", " \"latmax\": 70,\n", " \"lonmax\": -130,\n", @@ -715,6 +741,14 @@ " )\n", " )" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "75ded78e", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/docs/notebooks/tutos/tuto_meteoblue.ipynb b/docs/notebooks/tutos/tuto_meteoblue.ipynb index 2413ec8f6..d6533e1cd 100644 --- a/docs/notebooks/tutos/tuto_meteoblue.ipynb +++ b/docs/notebooks/tutos/tuto_meteoblue.ipynb @@ -54,7 +54,7 @@ "after_tomorrow = (datetime.date.today() + datetime.timedelta(days=2)).isoformat()\n", "aoi_bbox = [-5, 40, 10, 45]\n", "\n", - "products_from_product_type, total_count = dag.search(\n", + "products_from_product_type = dag.search(\n", " start=tomorrow,\n", " end=after_tomorrow,\n", " geom=aoi_bbox,\n", @@ -63,7 +63,7 @@ "print(\n", " \"%s product built %s,\\n using queries=%s\\n\"\n", " % (\n", - " total_count,\n", + " products_from_product_type.number_matched,\n", " products_from_product_type[0],\n", " products_from_product_type[0].properties[\"queries\"],\n", " )\n", @@ -138,7 +138,7 @@ " \"timeIntervalsAlignment\": None,\n", "}\n", "\n", - "products_from_custom_req, total_count = dag.search(\n", + "products_from_custom_req = dag.search(\n", " start=tomorrow,\n", " end=after_tomorrow,\n", " geom=aoi_bbox,\n", diff --git a/docs/notebooks/tutos/tuto_search_location_tile.ipynb b/docs/notebooks/tutos/tuto_search_location_tile.ipynb index 5c1825042..d0de1d19a 100644 --- a/docs/notebooks/tutos/tuto_search_location_tile.ipynb +++ b/docs/notebooks/tutos/tuto_search_location_tile.ipynb @@ -49,7 +49,7 @@ "\n", "dag = EODataAccessGateway()\n", "dag.set_preferred_provider(\"peps\")\n", - "products, _ = dag.search(\n", + "products = dag.search(\n", " productType=\"S2_MSI_L1C\", \n", " start=\"2018-06-01\", \n", " end=\"2018-06-15\", \n", diff --git a/docs/notebooks/tutos/tuto_ship_detection.ipynb b/docs/notebooks/tutos/tuto_ship_detection.ipynb index d49fbd709..0932ddb61 100644 --- a/docs/notebooks/tutos/tuto_ship_detection.ipynb +++ b/docs/notebooks/tutos/tuto_ship_detection.ipynb @@ -181,7 +181,7 @@ } ], "source": [ - "products, estimated_nbr_of_results = dag.search(\n", + "products = dag.search(\n", " productType=product_type, \n", " start='2017-05-01', \n", " end='2017-05-02',\n", diff --git a/docs/notebooks/tutos/tuto_stac_client.ipynb b/docs/notebooks/tutos/tuto_stac_client.ipynb index 238a45f83..bce344b9e 100644 --- a/docs/notebooks/tutos/tuto_stac_client.ipynb +++ b/docs/notebooks/tutos/tuto_stac_client.ipynb @@ -109,8 +109,6 @@ " productType: '{productType}'\n", " download:\n", " type: AwsDownload\n", - " base_uri: https://tamn.snapplanet.io\n", - " flatten_top_dirs: True\n", " auth:\n", " type: AwsAuth\n", " credentials:\n", @@ -146,7 +144,7 @@ } ], "source": [ - "prods_S2L1C, _ = dag.search(productType=\"S2_MSI_L1C\", locations=dict(country=\"LUX\"), start=\"2020-05-01\", end=\"2020-05-15\", items_per_page=50)" + "prods_S2L1C = dag.search(productType=\"S2_MSI_L1C\", locations=dict(country=\"LUX\"), start=\"2020-05-01\", end=\"2020-05-15\", items_per_page=50)" ] }, { @@ -270,7 +268,7 @@ } ], "source": [ - "prods_L8, _ = dag.search(productType=\"L8\", country=\"ESP\", start=\"2020-05-01\", end=\"2020-05-15\")" + "prods_L8 = dag.search(productType=\"L8\", country=\"ESP\", start=\"2020-05-01\", end=\"2020-05-15\")" ] }, { @@ -374,8 +372,6 @@ " productType: '{productType}'\n", " download:\n", " type: HTTPDownload\n", - " base_uri: https://fake-endpoint\n", - " flatten_top_dirs: True\n", " outputs_prefix: %s\n", "\"\"\" % os.path.abspath(workspace))\n", "\n", @@ -410,8 +406,8 @@ "search_polygon = Polygon([(-70, 45), (-75, 47), (-80, 47), (-80, 44)])\n", "query_args = {\"start\": \"2007-05-01\", \"end\": \"2007-05-06\" , \"geom\": search_polygon}\n", "\n", - "products, found = dag.search(**query_args)\n", - "print(\"%s product(s) found\" % found)" + "products = dag.search(**query_args)\n", + "print(\"%s product(s) found\" % products.number_matched)" ] }, { diff --git a/docs/notebooks/tutos/tuto_wekeo.ipynb b/docs/notebooks/tutos/tuto_wekeo.ipynb index 104353047..5be1ecbe7 100644 --- a/docs/notebooks/tutos/tuto_wekeo.ipynb +++ b/docs/notebooks/tutos/tuto_wekeo.ipynb @@ -15,13 +15,15 @@ "source": [ "## Registration\n", "\n", - "For both, searching and downloading data, authentication is required. Therefore, you first have to create an account on [https://www.wekeo.eu/](https://www.wekeo.eu/) to get a `username` and a `password` which have to be added to the EODAG configuration (see [Configure EODAG](https://eodag.readthedocs.io/en/stable/getting_started_guide/configure.html#configure)). After registration you also have to accept the Terms and Conditions to be able to retrieve data from EODAG. This has to be done once per user by executing the following:" + "For both, searching and downloading data, authentication is required. Therefore, you first have to create an account on [https://www.wekeo.eu/](https://www.wekeo.eu/) to get a `username` and a `password` which have to be added to the EODAG configuration (see [Configure EODAG](https://eodag.readthedocs.io/en/stable/getting_started_guide/configure.html#configure)). After registration you also have to accept the Terms and Conditions for the datasets you want to use to be able to retrieve data from EODAG. This has to be done once per user and licence by executing the following code where licence_name has to be set to the desired licence (see list below):" ] }, { "cell_type": "code", "execution_count": 1, - "metadata": {}, + "metadata": { + "tags": [] + }, "outputs": [], "source": [ "import requests\n", @@ -32,16 +34,31 @@ "\n", "# Authenticate on wekeo\n", "auth = dag._plugins_manager.get_auth_plugin(\"wekeo\").authenticate()\n", + "licence_name = \"EUMETSAT_Copernicus_Data_Licence\"\n", "\n", - "# Use your authentication to accept Copernicus Terms and Conditions\n", - "# (needed only once)\n", + "# Use your authentication to accept Terms and Conditions\n", "response = requests.put(\n", - " \"https://wekeo-broker.prod.wekeo2.eu/databroker/termsaccepted/Copernicus_General_License\",\n", - " data={\"accepted\": \"true\"},\n", + " f\"https://gateway.prod.wekeo2.eu/hda-broker/api/v1/termsaccepted/{licence_name}\",\n", " auth=auth,\n", ")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Depending on which data you want to use, different licences have to be accepted. If you want to use all the product types available in EODAG for the provider `wekeo`, the following licences have to be accepted:\n", + " \n", + "* EUMETSAT_Copernicus_Data_Licence\n", + "* Copernicus_Land_Monitoring_Service_Data_Policy\n", + "* Copernicus_Sentinel_License\n", + "* Copernicus_ECMWF_License\n", + "* Copernicus_DEM_Instance_COP-DEM-GLO-30-F_Global_30m\n", + "* Copernicus_DEM_Instance_COP-DEM-GLO-90-F_Global_90m\n", + "\n", + "To access the products of the provider `wekeo_cmems` the licence Copernicus_Marine_Service_Product_License has to be accepted." + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -59,12 +76,14 @@ { "cell_type": "code", "execution_count": 2, - "metadata": {}, + "metadata": { + "tags": [] + }, "outputs": [ { "data": { "text/plain": [ - "64" + "81" ] }, "execution_count": 2, @@ -80,12 +99,26 @@ { "cell_type": "code", "execution_count": 3, - "metadata": {}, + "metadata": { + "tags": [] + }, "outputs": [ { "data": { "text/plain": [ - "['CLMS_CORINE',\n", + "['CAMS_EAC4',\n", + " 'CAMS_EAC4_MONTHLY',\n", + " 'CAMS_EU_AIR_QUALITY_FORECAST',\n", + " 'CAMS_EU_AIR_QUALITY_RE',\n", + " 'CAMS_GAC_FORECAST',\n", + " 'CAMS_GLOBAL_EMISSIONS',\n", + " 'CAMS_GREENHOUSE_EGG4',\n", + " 'CAMS_GREENHOUSE_EGG4_MONTHLY',\n", + " 'CAMS_GREENHOUSE_INVERSION',\n", + " 'CAMS_GRF',\n", + " 'CAMS_GRF_AUX',\n", + " 'CAMS_SOLAR_RADIATION',\n", + " 'CLMS_CORINE',\n", " 'CLMS_GLO_DMP_333M',\n", " 'CLMS_GLO_FAPAR_333M',\n", " 'CLMS_GLO_FCOVER_333M',\n", @@ -93,9 +126,10 @@ " 'CLMS_GLO_LAI_333M',\n", " 'CLMS_GLO_NDVI_1KM_LTS',\n", " 'CLMS_GLO_NDVI_333M',\n", - " 'COP_DEM_GLO30',\n", - " 'EEA_DAILY_SSM_1KM',\n", - " 'EEA_DAILY_SWI_1KM',\n", + " 'COP_DEM_GLO30_DGED',\n", + " 'COP_DEM_GLO30_DTED',\n", + " 'COP_DEM_GLO90_DGED',\n", + " 'COP_DEM_GLO90_DTED',\n", " 'EEA_DAILY_VI',\n", " 'EFAS_FORECAST',\n", " 'EFAS_HISTORICAL',\n", @@ -110,44 +144,48 @@ " 'ERA5_SL_MONTHLY',\n", " 'FIRE_HISTORICAL',\n", " 'GLACIERS_DIST_RANDOLPH',\n", - " 'GLACIERS_ELEVATION_AND_MASS_CHANGE',\n", " 'GLOFAS_FORECAST',\n", " 'GLOFAS_HISTORICAL',\n", " 'GLOFAS_REFORECAST',\n", " 'GLOFAS_SEASONAL',\n", " 'GLOFAS_SEASONAL_REFORECAST',\n", + " 'GRIDDED_GLACIERS_MASS_CHANGE',\n", " 'S1_SAR_GRD',\n", + " 'S1_SAR_OCN',\n", + " 'S1_SAR_RAW',\n", " 'S1_SAR_SLC',\n", " 'S2_MSI_L1C',\n", " 'S2_MSI_L2A',\n", + " 'S2_MSI_L2AP',\n", " 'S3_EFR',\n", " 'S3_ERR',\n", - " 'S3_LAN',\n", + " 'S3_LAN_HY',\n", + " 'S3_LAN_LI',\n", + " 'S3_LAN_SI',\n", " 'S3_OLCI_L2LFR',\n", " 'S3_OLCI_L2LRR',\n", " 'S3_OLCI_L2WFR',\n", " 'S3_OLCI_L2WRR',\n", " 'S3_SLSTR_L1RBT',\n", " 'S3_SLSTR_L2',\n", - " 'S3_SLSTR_L2AOD',\n", - " 'S3_SLSTR_L2FRP',\n", - " 'S3_SLSTR_L2WST',\n", " 'S3_SRA',\n", " 'S3_SRA_A',\n", " 'S3_SRA_BS',\n", - " 'S3_SY_SYN',\n", " 'S3_WAT',\n", - " 'S5P_L1B2_IR_ALL',\n", + " 'S5P_L1B_IR_ALL',\n", + " 'S5P_L2_IR_ALL',\n", " 'SATELLITE_CARBON_DIOXIDE',\n", " 'SATELLITE_METHANE',\n", + " 'SATELLITE_SEA_ICE_EDGE_TYPE',\n", " 'SATELLITE_SEA_LEVEL_BLACK_SEA',\n", + " 'SATELLITE_SEA_LEVEL_GLOBAL',\n", + " 'SATELLITE_SEA_LEVEL_MEDITERRANEAN',\n", " 'SEASONAL_MONTHLY_PL',\n", " 'SEASONAL_MONTHLY_SL',\n", " 'SEASONAL_ORIGINAL_PL',\n", " 'SEASONAL_ORIGINAL_SL',\n", " 'SEASONAL_POSTPROCESSED_PL',\n", " 'SEASONAL_POSTPROCESSED_SL',\n", - " 'SIS_HYDRO_MET_PROJ',\n", " 'UERRA_EUROPE_SL']" ] }, @@ -175,7 +213,7 @@ { "data": { "text/plain": [ - "SearchResult([EOProduct(id=47ec0e9810aa8304e8204780c10dbc5a, provider=wekeo)])" + "SearchResult([EOProduct(id=4bd37b17b45d146f378e349ab3f90464, provider=wekeo)])" ] }, "execution_count": 4, @@ -184,7 +222,7 @@ } ], "source": [ - "products, total_count = dag.search(\n", + "products = dag.search(\n", " productType=\"GLOFAS_FORECAST\", \n", " start=\"2023-01-01\", \n", " end=\"2023-01-02\", \n", @@ -198,7 +236,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Download found product to `/tmp`:" + "Download found product to `/tmp`, changing wait time to 12s (0.2') between product order and download retries:" ] }, { @@ -209,7 +247,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "843e3800f88d4848917bb5aea70909fd", + "model_id": "9925bcf0ed804fd0bbec2f5efe4ea519", "version_major": 2, "version_minor": 0 }, @@ -221,16 +259,21 @@ "output_type": "display_data" }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "Downloaded product is not a Zip File. Please check its file type before using it\n" - ] + "data": { + "text/html": [ + "[Retry #1] Waiting 11.999954s until next download try for ordered product (retry every 0.2' for 20')" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" }, { "data": { "text/plain": [ - "'/tmp/47ec0e9810aa8304e8204780c10dbc5a'" + "'/tmp/4bd37b17b45d146f378e349ab3f90464'" ] }, "execution_count": 5, @@ -239,7 +282,7 @@ } ], "source": [ - "path = products[0].download(outputs_prefix=\"/tmp\")\n", + "path = products[0].download(outputs_prefix=\"/tmp\", wait=0.2)\n", "path" ] }, @@ -249,7 +292,7 @@ "source": [ "## The WEkEO data viewer\n", "\n", - "If you go to the WEkEO [homepage](https://www.wekeo.eu) and click on \"Data\" in the top menu, you can search for products online. You can choose a product type (called dataset in WEkEO) by clicking on the \"+\" button next to \"Layers\" on the left side. Then you can choose some filter parameters and create a data request job which will show up in the next tab. If you are logged in with the same user that is configured for EODAG, you can also see the jobs created by EODAG. You can use this functionality to check their status and to directly download the products that have been found." + "If you go to the WEkEO [homepage](https://www.wekeo.eu) and click on \"Data\" in the top menu, you can search for products online. You can choose a product type (called dataset in WEkEO) by clicking on the \"+\" button next to \"Layers\" on the left side. Then you can choose some filter parameters and create a data request job which will show up in the next tab where the products can be downloaded. The data viewer currently still uses the old version of the API where data requests have to be created to search product. In contrast, the latest version of EODAG already uses the new API (https://gateway.prod.wekeo2.eu/hda-broker/api/v1) where a direct search without data requests is possible." ] } ], @@ -270,6 +313,117 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": { + "21473516ad1d4c068c3a5e545c8dfcf1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "description_width": "" + } + }, + "36968842fea54ba98d0cfd6c58e526b4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "6aff6dba5b9d48bc8c1fc085987d5b44": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "display": "inline-flex", + "flex_flow": "row wrap", + "width": "100%" + } + }, + "7ddb60a045a6443ba92e17175e30656a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "flex": "2" + } + }, + "8769c5368c334dd69b0c04bdbcc06812": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "91cd62f3d8e941b9ac8b7750d43b9fcf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "layout": "IPY_MODEL_e0b39382c4764717b02317df3dfa7c87", + "style": "IPY_MODEL_8769c5368c334dd69b0c04bdbcc06812", + "value": "4bd37b17b45d146f378e349ab3f90464: " + } + }, + "9925bcf0ed804fd0bbec2f5efe4ea519": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "children": [ + "IPY_MODEL_91cd62f3d8e941b9ac8b7750d43b9fcf", + "IPY_MODEL_f6d232de7f064cc7885528a9b41acb3a", + "IPY_MODEL_f38e4e2ab3c149a680153e368eb198ab" + ], + "layout": "IPY_MODEL_6aff6dba5b9d48bc8c1fc085987d5b44" + } + }, + "c2ae4ebd11714f98b099dcd87ee08af6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": {} + }, + "e0b39382c4764717b02317df3dfa7c87": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": {} + }, + "f38e4e2ab3c149a680153e368eb198ab": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "layout": "IPY_MODEL_c2ae4ebd11714f98b099dcd87ee08af6", + "style": "IPY_MODEL_36968842fea54ba98d0cfd6c58e526b4", + "value": " 1.08k/? [00:00<00:00, 809kB/s]" + } + }, + "f6d232de7f064cc7885528a9b41acb3a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "bar_style": "success", + "layout": "IPY_MODEL_7ddb60a045a6443ba92e17175e30656a", + "max": 1, + "style": "IPY_MODEL_21473516ad1d4c068c3a5e545c8dfcf1", + "value": 1 + } + } + }, + "version_major": 2, + "version_minor": 0 + } } }, "nbformat": 4, diff --git a/docs/plugins.rst b/docs/plugins.rst index 5f9c5c040..1980b33ae 100644 --- a/docs/plugins.rst +++ b/docs/plugins.rst @@ -29,47 +29,57 @@ EODAG currently advertises 5 types of plugins: *Search*, *Download*, *Crunch*, * The providers are implemented with a triplet of *Search/Authentication/Download* plugins or with an *Api* plugin: -+--------------------+-----------------------+--------------------------+----------------+ -| Provider | Search | Authentication | Download | -+====================+=======================+==========================+================+ -| aws_eos | PostJsonSearch | AwsAuth | AwsDownload | -+--------------------+-----------------------+--------------------------+----------------+ -| theia | QueryStringSearch | TokenAuth | HTTPDownload | -+--------------------+-----------------------+--------------------------+----------------+ -| peps | QueryStringSearch | GenericAuth | HTTPDownload | -+--------------------+-----------------------+--------------------------+----------------+ -| creodias | QueryStringSearch | KeycloakOIDCPasswordAuth | HTTPDownload | -+--------------------+-----------------------+--------------------------+----------------+ -| onda | ODataV4Search | GenericAuth | HTTPDownload | -+--------------------+-----------------------+--------------------------+----------------+ -| astraea_eod | StacSearch | AwsAuth | AwsDownload | -+--------------------+-----------------------+--------------------------+----------------+ -| usgs_satapi_aws | StacSearch | AwsAuth | AwsDownload | -+--------------------+-----------------------+--------------------------+----------------+ -| earth_search | StacSearch | AwsAuth | AwsDownload | -+--------------------+-----------------------+--------------------------+----------------+ -| earth_search_cog | StacSearch | None | HTTPDownload | -+--------------------+-----------------------+--------------------------+----------------+ -| earth_search_gcs | StacSearch | AwsAuth | AwsDownload | -+--------------------+-----------------------+--------------------------+----------------+ -| usgs | UsgsApi | UsgsApi | UsgsApi | -+--------------------+-----------------------+--------------------------+----------------+ -| ecmwf | EcmwfApi | EcmwfApi | EcmwfApi | -+--------------------+-----------------------+--------------------------+----------------+ -| cop_ads | CdsApi | CdsApi | CdsApi | -+--------------------+-----------------------+--------------------------+----------------+ -| cop_cds | CdsApi | CdsApi | CdsApi | -+--------------------+-----------------------+--------------------------+----------------+ -| meteoblue | BuildPostSearchResult | HttpQueryStringAuth | HTTPDownload | -+--------------------+-----------------------+--------------------------+----------------+ -| cop_dataspace | QueryStringSearch | KeycloakOIDCPasswordAuth | HTTPDownload | -+--------------------+-----------------------+--------------------------+----------------+ -| planetary_computer | StacSearch | SASAuth | HTTPDownload | -+--------------------+-----------------------+--------------------------+----------------+ -| hydroweb_next | StacSearch | HTTPHeaderAuth | HTTPDownload | -+--------------------+-----------------------+--------------------------+----------------+ -| wekeo | DataRequestSearch | TokenAuth | HTTPDownload | -+--------------------+-----------------------+--------------------------+----------------+ ++--------------------+-----------------------+-------------------------------+----------------+ +| Provider | Search | Authentication | Download | ++====================+=======================+===============================+================+ +| aws_eos | PostJsonSearch | AwsAuth | AwsDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| theia | QueryStringSearch | TokenAuth | HTTPDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| peps | QueryStringSearch | GenericAuth | HTTPDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| creodias | QueryStringSearch | KeycloakOIDCPasswordAuth | HTTPDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| onda | ODataV4Search | GenericAuth | HTTPDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| astraea_eod | StacSearch | AwsAuth | AwsDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| usgs_satapi_aws | StacSearch | AwsAuth | AwsDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| earth_search | StacSearch | AwsAuth | AwsDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| earth_search_cog | StacSearch | None | HTTPDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| earth_search_gcs | StacSearch | AwsAuth | AwsDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| usgs | UsgsApi | UsgsApi | UsgsApi | ++--------------------+-----------------------+-------------------------------+----------------+ +| ecmwf | EcmwfApi | EcmwfApi | EcmwfApi | ++--------------------+-----------------------+-------------------------------+----------------+ +| cop_ads | BuildSearchResult | GenericAuth | HTTPDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| cop_cds | BuildSearchResult | GenericAuth | HTTPDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| cop_marine | CopMarineSearch | AwsDownload | AwsAuth | ++--------------------+-----------------------+-------------------------------+----------------+ +| meteoblue | BuildPostSearchResult | HttpQueryStringAuth | HTTPDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| cop_dataspace | QueryStringSearch | KeycloakOIDCPasswordAuth | HTTPDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| planetary_computer | StacSearch | SASAuth | HTTPDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| hydroweb_next | StacSearch | HTTPHeaderAuth | HTTPDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| wekeo | PostJsonSearch | TokenAuth | HTTPDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| wekeo_cmems | PostJsonSearch | TokenAuth | HTTPDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| dedt_lumi | BuildSearchResult | OIDCAuthorizationCodeFlowAuth | HTTPDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| dedl | StacSearch | OIDCTokenExchangeAuth | HTTPDownload | ++--------------------+-----------------------+-------------------------------+----------------+ +| eumetsat_ds | QueryStringSearch | TokenAuth | HTTPDownload | ++--------------------+-----------------------+-------------------------------+----------------+ .. _creating_plugins: diff --git a/docs/plugins_reference/api.rst b/docs/plugins_reference/api.rst index eebabf08e..00d6db6e9 100644 --- a/docs/plugins_reference/api.rst +++ b/docs/plugins_reference/api.rst @@ -16,4 +16,3 @@ This table lists all the api plugins currently available: eodag.plugins.apis.usgs.UsgsApi eodag.plugins.apis.ecmwf.EcmwfApi - eodag.plugins.apis.cds.CdsApi diff --git a/docs/plugins_reference/auth.rst b/docs/plugins_reference/auth.rst index 1a6cb2de4..baade6117 100644 --- a/docs/plugins_reference/auth.rst +++ b/docs/plugins_reference/auth.rst @@ -22,3 +22,4 @@ This table lists all the authentication plugins currently available: eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth eodag.plugins.authentication.keycloak.KeycloakOIDCPasswordAuth eodag.plugins.authentication.qsauth.HttpQueryStringAuth + eodag.plugins.authentication.sas_auth.SASAuth diff --git a/docs/plugins_reference/download.rst b/docs/plugins_reference/download.rst index 7d9c22051..a76af586e 100644 --- a/docs/plugins_reference/download.rst +++ b/docs/plugins_reference/download.rst @@ -17,6 +17,7 @@ This table lists all the download plugins currently available: eodag.plugins.download.http.HTTPDownload eodag.plugins.download.aws.AwsDownload eodag.plugins.download.s3rest.S3RestDownload + eodag.plugins.download.creodias_s3.CreodiasS3Download --------------------------- Download methods call graph diff --git a/docs/plugins_reference/search.rst b/docs/plugins_reference/search.rst index f661f90b3..ba01ff45f 100644 --- a/docs/plugins_reference/search.rst +++ b/docs/plugins_reference/search.rst @@ -15,10 +15,12 @@ This table lists all the search plugins currently available: :toctree: generated/ eodag.plugins.search.qssearch.QueryStringSearch - eodag.plugins.search.qssearch.AwsSearch eodag.plugins.search.qssearch.ODataV4Search eodag.plugins.search.qssearch.PostJsonSearch eodag.plugins.search.qssearch.StacSearch eodag.plugins.search.static_stac_search.StaticStacSearch + eodag.plugins.search.creodias_s3.CreodiasS3Search + eodag.plugins.search.build_search_result.BuildSearchResult eodag.plugins.search.build_search_result.BuildPostSearchResult + eodag.plugins.search.data_request_search.DataRequestSearch eodag.plugins.search.csw.CSWSearch diff --git a/docs/stac_rest.rst b/docs/stac_rest.rst index e5df4ee17..11b816086 100644 --- a/docs/stac_rest.rst +++ b/docs/stac_rest.rst @@ -120,7 +120,7 @@ available on `https://hub.docker.com/r/csspace/eodag-server None: if "unsupported pickle protocol" in str(ve): logger.debug("Need to recreate whoosh .index: '%s'", ve) create_index = True - shutil.rmtree(index_dir) # Unexpected error else: logger.error( @@ -261,13 +252,14 @@ def build_index(self) -> None: if self._product_types_index is None: logger.debug("Opening product types index in %s", index_dir) self._product_types_index = open_dir(index_dir) - try: - self.guess_product_type(md5=self.product_types_config_md5) - except NoMatchingProductType: - create_index = True - finally: - if create_index: - shutil.rmtree(index_dir) + + with self._product_types_index.searcher() as searcher: + p = QueryParser("md5", self._product_types_index.schema, plugins=[]) + query = p.parse(self.product_types_config_md5) + results = searcher.search(query, limit=1) + + if not results: + create_index = True logger.debug( "Out-of-date product types index removed from %s", index_dir ) @@ -284,9 +276,8 @@ def build_index(self) -> None: ) product_types_schema = Schema( - ID=fields.STORED, - alias=fields.ID, - abstract=fields.STORED, + ID=fields.ID(stored=True), + abstract=fields.TEXT, instrument=fields.IDLIST, platform=fields.ID, platformSerialIdentifier=fields.IDLIST, @@ -294,10 +285,11 @@ def build_index(self) -> None: sensorType=fields.ID, md5=fields.ID, license=fields.ID, - title=fields.ID, - missionStartDate=fields.ID, - missionEndDate=fields.ID, + title=fields.TEXT, + missionStartDate=fields.STORED, + missionEndDate=fields.STORED, keywords=fields.KEYWORD(analyzer=kw_analyzer), + stacCollection=fields.STORED, ) self._product_types_index = create_in(index_dir, product_types_schema) ix_writer = self._product_types_index.writer() @@ -404,6 +396,7 @@ def update_providers_config(self, yaml_conf: str) -> None: stac_provider_config = load_stac_provider_config() for provider in conf_update.keys(): provider_config_init(self.providers_config[provider], stac_provider_config) + setattr(self.providers_config[provider], "product_types_fetched", False) # re-create _plugins_manager using up-to-date providers_config self._plugins_manager.build_product_type_to_provider_config_map() @@ -413,6 +406,20 @@ def _prune_providers_list(self) -> None: for provider in list(self.providers_config.keys()): conf = self.providers_config[provider] + # remove providers using skipped plugins + if [ + v + for v in conf.__dict__.values() + if isinstance(v, PluginConfig) + and getattr(v, "type", None) in self._plugins_manager.skipped_plugins + ]: + self.providers_config.pop(provider) + logger.debug( + f"{provider}: provider needing unavailable plugin has been removed" + ) + continue + + # check authentication if hasattr(conf, "api") and getattr(conf.api, "need_auth", False): credentials_exist = any( [ @@ -427,7 +434,7 @@ def _prune_providers_list(self) -> None: ) update_needed = True logger.info( - "%s: provider needing auth for search has been pruned because no crendentials could be found", + "%s: provider needing auth for search has been pruned because no credentials could be found", provider, ) elif hasattr(conf, "search") and getattr(conf.search, "need_auth", False): @@ -455,7 +462,7 @@ def _prune_providers_list(self) -> None: ) update_needed = True logger.info( - "%s: provider needing auth for search has been pruned because no crendentials could be found", + "%s: provider needing auth for search has been pruned because no credentials could be found", provider, ) elif not hasattr(conf, "api") and not hasattr(conf, "search"): @@ -501,10 +508,10 @@ def set_locations_conf(self, locations_conf_path: str) -> None: locations_config = load_yml_config(locations_conf_path) main_key = next(iter(locations_config)) - locations_config = locations_config[main_key] + main_locations_config = locations_config[main_key] logger.info("Locations configuration loaded from %s" % locations_conf_path) - self.locations_config: List[Dict[str, Any]] = locations_config + self.locations_config: List[Dict[str, Any]] = main_locations_config else: logger.info( "Could not load locations configuration from %s" % locations_conf_path @@ -531,35 +538,34 @@ def list_product_types( self.fetch_product_types_list(provider=provider) product_types: List[Dict[str, Any]] = [] - if provider is not None: - if provider in self.providers_config: - provider_supported_products = self.providers_config[provider].products - for product_type_id in provider_supported_products: - if product_type_id == GENERIC_PRODUCT_TYPE: - continue - config = self.product_types_config[product_type_id] - if "alias" in config: - config["_id"] = product_type_id - product_type_id = config["alias"] - product_type = dict(ID=product_type_id, **config) - if product_type_id not in product_types: - product_types.append(product_type) - return sorted(product_types, key=itemgetter("ID")) + + providers_configs = ( + list(self.providers_config.values()) + if not provider + else [ + p + for p in self.providers_config.values() + if provider in [p.name, getattr(p, "group", None)] + ] + ) + + if provider and not providers_configs: raise UnsupportedProvider( f"The requested provider is not (yet) supported: {provider}" ) - # Only get the product types supported by the available providers - for provider in self.available_providers(): - current_product_type_ids = [pt["ID"] for pt in product_types] - product_types.extend( - [ - pt - for pt in self.list_product_types( - provider=provider, fetch_providers=False - ) - if pt["ID"] not in current_product_type_ids - ] - ) + + for p in providers_configs: + for product_type_id in p.products: # type: ignore + if product_type_id == GENERIC_PRODUCT_TYPE: + continue + config = self.product_types_config[product_type_id] + config["_id"] = product_type_id + if "alias" in config: + product_type_id = config["alias"] + product_type = {"ID": product_type_id, **config} + if product_type not in product_types: + product_types.append(product_type) + # Return the product_types sorted in lexicographic order of their ID return sorted(product_types, key=itemgetter("ID")) @@ -611,9 +617,8 @@ def fetch_product_types_list(self, provider: Optional[str] = None) -> None: if not ext_product_types_conf: # empty ext_product_types conf - discover_kwargs = dict(provider=provider) if provider else {} - ext_product_types_conf = self.discover_product_types( - **discover_kwargs + ext_product_types_conf = ( + self.discover_product_types(provider=provider) or {} ) # update eodag product types list with new conf @@ -691,13 +696,13 @@ def fetch_product_types_list(self, provider: Optional[str] = None) -> None: # providers not skipped here should be user-modified # or not in ext_product_types_conf (if eodag system conf != eodag conf used for ext_product_types_conf) - # discover product types for user configured provider - provider_ext_product_types_conf = self.discover_product_types( - provider=provider - ) - - # update eodag product types list with new conf - self.update_product_types_list(provider_ext_product_types_conf) + if not already_fetched: + # discover product types for user configured provider + provider_ext_product_types_conf = ( + self.discover_product_types(provider=provider) or {} + ) + # update eodag product types list with new conf + self.update_product_types_list(provider_ext_product_types_conf) def discover_product_types( self, provider: Optional[str] = None @@ -710,6 +715,10 @@ def discover_product_types( :returns: external product types configuration :rtype: dict """ + if provider and provider not in self.providers_config: + raise UnsupportedProvider( + f"The requested provider is not (yet) supported: {provider}" + ) ext_product_types_conf: Dict[str, Any] = {} providers_to_fetch = [ p @@ -721,6 +730,7 @@ def discover_product_types( else self.available_providers() ) ] + kwargs: Dict[str, Any] = {} for provider in providers_to_fetch: if hasattr(self.providers_config[provider], "search"): search_plugin_config = self.providers_config[provider].search @@ -737,9 +747,11 @@ def discover_product_types( auth_plugin = self._plugins_manager.get_auth_plugin( search_plugin.provider ) - if callable(getattr(auth_plugin, "authenticate", None)): + if auth_plugin and callable( + getattr(auth_plugin, "authenticate", None) + ): try: - search_plugin.auth = auth_plugin.authenticate() + kwargs["auth"] = auth_plugin.authenticate() except (AuthenticationError, MisconfiguredError) as e: logger.warning( f"Could not authenticate on {provider}: {str(e)}" @@ -753,9 +765,9 @@ def discover_product_types( ext_product_types_conf[provider] = None continue - ext_product_types_conf[ - provider - ] = search_plugin.discover_product_types() + ext_product_types_conf[provider] = search_plugin.discover_product_types( + **kwargs + ) return ext_product_types_conf @@ -848,23 +860,49 @@ def update_product_types_list( # rebuild index after product types list update self.build_index() - def available_providers(self, product_type: Optional[str] = None) -> List[str]: - """Gives the sorted list of the available providers + def available_providers( + self, product_type: Optional[str] = None, by_group: bool = False + ) -> List[str]: + """Gives the sorted list of the available providers or groups + + The providers or groups are sorted first by their priority level in descending order, + and then alphabetically in ascending order for providers or groups with the same + priority level. :param product_type: (optional) Only list providers configured for this product_type - :type product_type: str - :returns: the sorted list of the available providers - :rtype: list + :type product_type: Optional[str] + :param by_group: (optional) If set to True, list groups when available instead + of providers, mixed with other providers + :type by_group: bool + :returns: the sorted list of the available providers or groups + :rtype: List[str] """ if product_type: - return sorted( - k + providers = [ + (v.group if by_group and hasattr(v, "group") else k, v.priority) for k, v in self.providers_config.items() if product_type in getattr(v, "products", {}).keys() - ) + ] else: - return sorted(tuple(self.providers_config.keys())) + providers = [ + (v.group if by_group and hasattr(v, "group") else k, v.priority) + for k, v in self.providers_config.items() + ] + + # If by_group is True, keep only the highest priority for each group + if by_group: + group_priority: Dict[str, int] = {} + for name, priority in providers: + if name not in group_priority or priority > group_priority[name]: + group_priority[name] = priority + providers = list(group_priority.items()) + + # Sort by priority (descending) and then by name (ascending) + providers.sort(key=lambda x: (-x[1], x[0])) + + # Return only the names of the providers or groups + return [name for name, _ in providers] def get_product_type_from_alias(self, alias_or_id: str) -> str: """Return the ID of a product type by either its ID or alias @@ -910,47 +948,116 @@ def get_alias_from_product_type(self, product_type: str) -> str: return self.product_types_config[product_type].get("alias", product_type) - def guess_product_type(self, **kwargs: Any) -> List[str]: - """Find eodag product types codes that best match a set of search params - - :param kwargs: A set of search parameters as keywords arguments - :returns: The best match for the given parameters - :rtype: list[str] + def guess_product_type( + self, + free_text: Optional[str] = None, + intersect: bool = False, + instrument: Optional[str] = None, + platform: Optional[str] = None, + platformSerialIdentifier: Optional[str] = None, + processingLevel: Optional[str] = None, + sensorType: Optional[str] = None, + keywords: Optional[str] = None, + abstract: Optional[str] = None, + title: Optional[str] = None, + missionStartDate: Optional[str] = None, + missionEndDate: Optional[str] = None, + **kwargs: Any, + ) -> List[str]: + """ + Find EODAG product type IDs that best match a set of search parameters. + + See https://whoosh.readthedocs.io/en/latest/querylang.html#the-default-query-language + for syntax. + + :param free_text: Whoosh-compatible free text search filter used to search + accross all the following parameters + :type free_text: Optional[str] + :param intersect: Join results for each parameter using INTERSECT instead of UNION. + :type intersect: bool + :param instrument: Instrument parameter. + :type instrument: Optional[str] + :param platform: Platform parameter. + :type platform: Optional[str] + :param platformSerialIdentifier: Platform serial identifier parameter. + :type platformSerialIdentifier: Optional[str] + :param processingLevel: Processing level parameter. + :type processingLevel: Optional[str] + :param sensorType: Sensor type parameter. + :type sensorType: Optional[str] + :param keywords: Keywords parameter. + :type keywords: Optional[str] + :param abstract: Abstract parameter. + :type abstract: Optional[str] + :param title: Title parameter. + :type title: Optional[str] + :param missionStartDate: start date for datetime filtering. Not used by free_text + :type missionStartDate: Optional[str] + :param missionEndDate: end date for datetime filtering. Not used by free_text + :type missionEndDate: Optional[str] + :returns: The best match for the given parameters. + :rtype: List[str] :raises: :class:`~eodag.utils.exceptions.NoMatchingProductType` """ - if kwargs.get("productType", None): - return [kwargs["productType"]] - supported_params = { - param - for param in ( - "instrument", - "platform", - "platformSerialIdentifier", - "processingLevel", - "sensorType", - "keywords", - "md5", - ) - if kwargs.get(param, None) is not None + if productType := kwargs.get("productType"): + return [productType] + + if not self._product_types_index: + raise EodagError("Missing product types index") + + filters = { + "instrument": instrument, + "platform": platform, + "platformSerialIdentifier": platformSerialIdentifier, + "processingLevel": processingLevel, + "sensorType": sensorType, + "keywords": keywords, + "abstract": abstract, + "title": title, } + joint = " AND " if intersect else " OR " + filters_text = joint.join( + [f"{k}:({v})" for k, v in filters.items() if v is not None] + ) + + text = f"({free_text})" if free_text else "" + if free_text and filters_text: + text += joint + if filters_text: + text += f"({filters_text})" + + if not text and (missionStartDate or missionEndDate): + text = "*" + with self._product_types_index.searcher() as searcher: - results = None - # For each search key, do a guess and then upgrade the result (i.e. when - # merging results, if a hit appears in both results, its position is raised - # to the top. This way, the top most result will be the hit that best - # matches the given queries. Put another way, this best guess is the one - # that crosses the highest number of search params from the given queries - for search_key in supported_params: - query = QueryParser(search_key, self._product_types_index.schema).parse( - kwargs[search_key] + p = EODAGQueryParser(list(filters.keys()), self._product_types_index.schema) + query = p.parse(text) + results = searcher.search(query, limit=None) + + guesses: List[Dict[str, str]] = [dict(r) for r in results or []] + + # datetime filtering + if missionStartDate or missionEndDate: + guesses = [ + g + for g in guesses + if ( + not missionEndDate + or g.get("missionStartDate") + and rfc3339_str_to_datetime(g["missionStartDate"]) + <= rfc3339_str_to_datetime(missionEndDate) ) - if results is None: - results = searcher.search(query, limit=None) - else: - results.upgrade_and_extend(searcher.search(query, limit=None)) - guesses: List[str] = [r["ID"] for r in results or []] + and ( + not missionStartDate + or g.get("missionEndDate") + and rfc3339_str_to_datetime(g["missionEndDate"]) + >= rfc3339_str_to_datetime(missionStartDate) + ) + ] + if guesses: - return guesses + return [g["ID"] for g in guesses or []] + raise NoMatchingProductType() def search( @@ -963,8 +1070,9 @@ def search( geom: Optional[Union[str, Dict[str, float], BaseGeometry]] = None, locations: Optional[Dict[str, str]] = None, provider: Optional[str] = None, + count: bool = False, **kwargs: Any, - ) -> Tuple[SearchResult, int]: + ) -> SearchResult: """Look for products matching criteria on known providers. The default behaviour is to look for products on the provider with the @@ -1006,16 +1114,17 @@ def search( 'PA' such as Panama and Pakistan in the shapefile configured with name=country and attr=ISO3 :type locations: dict - :param kwargs: Some other criteria that will be used to do the search, - using paramaters compatibles with the provider :param provider: (optional) the provider to be used. If set, search fallback will be disabled. If not set, the configured preferred provider will be used at first before trying others until finding results. :type provider: str + :param count: (optional) Whether to run a query with a count request or not + :type count: bool + :param kwargs: Some other criteria that will be used to do the search, + using paramaters compatibles with the provider :type kwargs: Union[int, str, bool, dict] - :returns: A collection of EO products matching the criteria and the total - number of results found - :rtype: tuple(:class:`~eodag.api.search_result.SearchResult`, int) + :returns: A collection of EO products matching the criteria + :rtype: :class:`~eodag.api.search_result.SearchResult` .. note:: The search interfaces, which are implemented as plugins, are required to @@ -1030,16 +1139,12 @@ def search( provider=provider, **kwargs, ) - if search_kwargs.get("id"): - # adds minimal pagination to be able to check only 1 product is returned - search_kwargs.update( - page=1, - items_per_page=2, - raise_errors=raise_errors, - ) return self._search_by_id( - search_kwargs.pop("id"), provider=provider, **search_kwargs + search_kwargs.pop("id"), + provider=provider, + raise_errors=raise_errors, + **search_kwargs, ) # remove datacube query string from kwargs which was only needed for search-by-id search_kwargs.pop("_dc_qs", None) @@ -1053,9 +1158,9 @@ def search( # Loop over available providers and return the first non-empty results for i, search_plugin in enumerate(search_plugins): search_plugin.clear() - search_results, total_results = self._do_search( + search_results = self._do_search( search_plugin, - count=True, + count=count, raise_errors=raise_errors, **search_kwargs, ) @@ -1065,10 +1170,11 @@ def search( "we will try to get the data from another provider", ) elif len(search_results) > 0: - return search_results, total_results + return search_results - logger.error("No result could be obtained from any available provider") - return SearchResult([]), 0 + if i > 1: + logger.error("No result could be obtained from any available provider") + return SearchResult([], 0) if count else SearchResult([]) def search_iter_page( self, @@ -1181,9 +1287,10 @@ def search_iter_page_plugin( pagination_config["next_page_query_obj"] = next_page_query_obj logger.info("Iterate search over multiple pages: page #%s", iteration) try: - if "raise_errors" in kwargs: - kwargs.pop("raise_errors") - products, _ = self._do_search( + # remove unwanted kwargs for _do_search + kwargs.pop("count", None) + kwargs.pop("raise_errors", None) + search_result = self._do_search( search_plugin, count=False, raise_errors=True, **kwargs ) except Exception: @@ -1222,12 +1329,12 @@ def search_iter_page_plugin( else: search_plugin.next_page_query_obj = next_page_query_obj - if len(products) > 0: + if len(search_result) > 0: # The first products between two iterations are compared. If they # are actually the same product, it means the iteration failed at # progressing for some reason. This is implemented as a workaround # to some search plugins/providers not handling pagination. - product = products[0] + product = search_result[0] if ( prev_product and product.properties["id"] == prev_product.properties["id"] @@ -1240,11 +1347,11 @@ def search_iter_page_plugin( ) last_page_with_products = iteration - 1 break - yield products + yield search_result prev_product = product # Prevent a last search if the current one returned less than the # maximum number of items asked for. - if len(products) < items_per_page: + if len(search_result) < items_per_page: last_page_with_products = iteration break else: @@ -1319,7 +1426,7 @@ def search_all( # of items_per_page if defined for the provider used. try: product_type = self.get_product_type_from_alias( - kwargs.get("productType", None) or self.guess_product_type(**kwargs)[0] + self.guess_product_type(**kwargs)[0] ) except NoMatchingProductType: product_type = GENERIC_PRODUCT_TYPE @@ -1385,7 +1492,7 @@ def search_all( def _search_by_id( self, uid: str, provider: Optional[str] = None, **kwargs: Any - ) -> Tuple[SearchResult, int]: + ) -> SearchResult: """Internal method that enables searching a product by its id. Keeps requesting providers until a result matching the id is supplied. The @@ -1405,9 +1512,8 @@ def _search_by_id( :type provider: str :param kwargs: Search criteria to help finding the right product :type kwargs: Any - :returns: A search result with one EO product or None at all, and the number - of EO products retrieved (0 or 1) - :rtype: tuple(:class:`~eodag.api.search_result.SearchResult`, int) + :returns: A search result with one EO product or None at all + :rtype: :class:`~eodag.api.search_result.SearchResult` """ product_type = kwargs.get("productType", None) if product_type is not None: @@ -1422,16 +1528,51 @@ def _search_by_id( # datacube query string _dc_qs = kwargs.pop("_dc_qs", None) + results = SearchResult([]) + for plugin in search_plugins: logger.info( "Searching product with id '%s' on provider: %s", uid, plugin.provider ) logger.debug("Using plugin class for search: %s", plugin.__class__.__name__) plugin.clear() + + # adds maximal pagination to be able to do a search-all + crunch if more + # than one result are returned + items_per_page = plugin.config.pagination.get( + "max_items_per_page", DEFAULT_MAX_ITEMS_PER_PAGE + ) + kwargs.update(items_per_page=items_per_page) if isinstance(plugin, BuildPostSearchResult): - results, _ = self._do_search(plugin, id=uid, _dc_qs=_dc_qs, **kwargs) + kwargs.update( + items_per_page=items_per_page, + _dc_qs=_dc_qs, + ) else: - results, _ = self._do_search(plugin, id=uid, **kwargs) + kwargs.update( + items_per_page=items_per_page, + ) + + try: + # if more than one results are found, try getting them all and then filter using crunch + for page_results in self.search_iter_page_plugin( + search_plugin=plugin, + id=uid, + **kwargs, + ): + results.data.extend(page_results.data) + except Exception: + if kwargs.get("raise_errors"): + raise + continue + + # try using crunch to get unique result + if ( + len(results) > 1 + and len(filtered := results.filter_property(id=uid)) == 1 + ): + results = filtered + if len(results) == 1: if not results[0].product_type: # guess product type from properties @@ -1439,20 +1580,36 @@ def _search_by_id( results[0].product_type = guesses[0] # reset driver results[0].driver = results[0].get_driver() - return results, 1 + results.number_matched = 1 + return results elif len(results) > 1: - if getattr(plugin.config, "two_passes_id_search", False): - # check if id of one product exactly matches id that was searched for - # required if provider does not offer search by id and therefore other - # parameters which might not given an exact result are used - for result in results: - if result.properties["id"] == uid.split(".")[0]: - return [results[0]], 1 logger.info( "Several products found for this id (%s). You may try searching using more selective criteria.", results, ) - return SearchResult([]), 0 + return SearchResult([], 0) + + def _fetch_external_product_type(self, provider: str, product_type: str): + plugins = self._plugins_manager.get_search_plugins(provider=provider) + plugin = next(plugins) + + kwargs: Dict[str, Any] = {"productType": product_type} + + # append auth if needed + if getattr(plugin.config, "need_auth", False): + auth_plugin = self._plugins_manager.get_auth_plugin(plugin.provider) + if auth_plugin and callable(getattr(auth_plugin, "authenticate", None)): + try: + kwargs["auth"] = auth_plugin.authenticate() + except (AuthenticationError, MisconfiguredError) as e: + logger.warning(f"Could not authenticate on {provider}: {str(e)}") + else: + logger.warning( + f"Could not authenticate on {provider} using {auth_plugin} plugin" + ) + + product_type_config = plugin.discover_product_types(**kwargs) + self.update_product_types_list({provider: product_type_config}) def _prepare_search( self, @@ -1532,7 +1689,7 @@ def _prepare_search( try: product_type = self.get_product_type_from_alias(product_type) except NoMatchingProductType: - logger.warning("unknown product type " + product_type) + logger.info("unknown product type " + product_type) kwargs["productType"] = product_type if start is not None: @@ -1567,7 +1724,16 @@ def _prepare_search( logger.debug( f"Fetching external product types sources to find {product_type} product type" ) - self.fetch_product_types_list() + if provider: + # Try to get specific product type from external provider + self._fetch_external_product_type(provider, product_type) + if ( + not provider + or product_type + not in self._plugins_manager.product_type_to_provider_config_map.keys() + ): + # no provider or still not found -> fetch all external product types + self.fetch_product_types_list() preferred_provider = self.get_preferred_provider()[0] @@ -1617,8 +1783,7 @@ def _prepare_search( for p in self.list_product_types( search_plugin.provider, fetch_providers=False ) - if p["ID"] == product_type - or ("_id" in p and p["_id"] == product_type) + if p["_id"] == product_type ][0], **{"productType": product_type}, ) @@ -1638,10 +1803,10 @@ def _prepare_search( def _do_search( self, search_plugin: Union[Search, Api], - count: bool = True, + count: bool = False, raise_errors: bool = False, **kwargs: Any, - ) -> Tuple[SearchResult, Optional[int]]: + ) -> SearchResult: """Internal method that performs a search on a given provider. :param search_plugin: A search plugin @@ -1653,14 +1818,16 @@ def _do_search( :type raise_errors: bool :param kwargs: Some other criteria that will be used to do the search :type kwargs: Any - :returns: A collection of EO products matching the criteria and the total - number of results found if count is True else None + :returns: A collection of EO products matching the criteria :rtype: tuple(:class:`~eodag.api.search_result.SearchResult`, int or None) """ max_items_per_page = getattr(search_plugin.config, "pagination", {}).get( "max_items_per_page", DEFAULT_MAX_ITEMS_PER_PAGE ) - if kwargs.get("items_per_page", DEFAULT_ITEMS_PER_PAGE) > max_items_per_page: + if ( + kwargs.get("items_per_page", DEFAULT_ITEMS_PER_PAGE) > max_items_per_page + and max_items_per_page > 0 + ): logger.warning( "EODAG believes that you might have asked for more products/items " "than the maximum allowed by '%s': %s > %s. Try to lower " @@ -1676,51 +1843,18 @@ def _do_search( can_authenticate = callable(getattr(auth_plugin, "authenticate", None)) results: List[EOProduct] = [] - total_results = 0 + total_results: Optional[int] = 0 if count else None try: + prep = PreparedSearch(count=count) if need_auth and auth_plugin and can_authenticate: - search_plugin.auth = auth_plugin.authenticate() - - res, nb_res = search_plugin.query(count=count, auth=auth_plugin, **kwargs) - - # Only do the pagination computations when it makes sense. For example, - # for a search by id, we can reasonably guess that the provider will return - # At most 1 product, so we don't need such a thing as pagination - page = kwargs.get("page") - items_per_page = kwargs.get("items_per_page") - if page and items_per_page and count: - # Take into account the fact that a provider may not return the count of - # products (in that case, fallback to using the length of the results it - # returned and the page requested. As an example, check the result of - # the following request (look for the value of properties.totalResults) - # https://theia-landsat.cnes.fr/resto/api/collections/Landsat/search.json? - # maxRecords=1&page=1 - if not nb_res: - nb_res = len(res) * page - - # Attempt to ensure a little bit more coherence. Some providers return - # a fuzzy number of total results, meaning that you have to keep - # requesting it until it has returned everything it has to know exactly - # how many EO products they have in their stock. In that case, we need - # to replace the returned number of results with the sum of the number - # of items that were skipped so far and the length of the currently - # retrieved items. We know there is an incoherence when the number of - # skipped items is greater than the total number of items returned by - # the plugin - nb_skipped_items = items_per_page * (page - 1) - nb_current_items = len(res) - if nb_skipped_items > nb_res: - if nb_res != 0: - nb_res = nb_skipped_items + nb_current_items - # This is for when the returned results is an empty list and the - # number of results returned is incoherent with the observations. - # In that case, we assume the total number of results is the number - # of skipped results. By requesting a lower page than the current - # one, a user can iteratively reach the last page of results for - # these criteria on the provider. - else: - nb_res = nb_skipped_items + prep.auth = auth_plugin.authenticate() + + prep.auth_plugin = auth_plugin + prep.page = kwargs.pop("page", None) + prep.items_per_page = kwargs.pop("items_per_page", None) + + res, nb_res = search_plugin.query(prep, **kwargs) if not isinstance(res, list): raise PluginImplementationError( @@ -1744,7 +1878,6 @@ def _do_search( try: guesses = self.guess_product_type( **{ - # k:str(v) for k,v in eo_product.properties.items() k: pattern.sub("", str(v).upper()) for k, v in eo_product.properties.items() if k @@ -1779,8 +1912,12 @@ def _do_search( eo_product.register_downloader(download_plugin, auth_plugin) results.extend(res) - total_results = None if nb_res is None else total_results + nb_res - if count: + total_results = ( + None + if (nb_res is None or total_results is None) + else total_results + nb_res + ) + if count and nb_res is not None: logger.info( "Found %s result(s) on provider '%s'", nb_res, @@ -1805,6 +1942,9 @@ def _do_search( if not raise_errors: log_msg += " Raise verbosity of log messages for details" logger.info(log_msg) + # keep only the message from exception args + if len(e.args) > 1: + e.args = (e.args[0],) if raise_errors: # Raise the error, letting the application wrapping eodag know that # something went bad. This way it will be able to decide what to do next @@ -1815,7 +1955,7 @@ def _do_search( search_plugin.provider, ) self.search_errors.add((search_plugin.provider, e)) - return SearchResult(results), total_results + return SearchResult(results, total_results) def crunch(self, results: SearchResult, **kwargs: Any) -> SearchResult: """Apply the filters given through the keyword arguments to the results @@ -1865,7 +2005,7 @@ def download_all( progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Any, + **kwargs: Unpack[DownloadConf], ) -> List[str]: """Download all products resulting from a search. @@ -1978,6 +2118,7 @@ def load_stac_items( provider: Optional[str] = None, productType: Optional[str] = None, timeout: int = HTTP_REQ_TIMEOUT, + ssl_verify: bool = True, **kwargs: Any, ) -> SearchResult: """Loads STAC items from a geojson file / STAC catalog or collection, and convert to SearchResult. @@ -2011,6 +2152,7 @@ def load_stac_items( recursive=recursive, max_connections=max_connections, timeout=timeout, + ssl_verify=ssl_verify, ) feature_collection = geojson.FeatureCollection(features) @@ -2027,12 +2169,14 @@ def load_stac_items( ) ) - products, _ = self.search(productType=productType, provider=provider, **kwargs) + search_result = self.search( + productType=productType, provider=provider, **kwargs + ) # restore plugin._request plugin._request = plugin_request - return products + return search_result def download( self, @@ -2040,7 +2184,7 @@ def download( progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Any, + **kwargs: Unpack[DownloadConf], ) -> str: """Download a single product. @@ -2120,9 +2264,7 @@ def get_cruncher(self, name: str, **options: Any) -> Crunch: return self._plugins_manager.get_crunch_plugin(name, **plugin_conf) def list_queryables( - self, - provider: Optional[str] = None, - **kwargs: Any, + self, provider: Optional[str] = None, **kwargs: Any ) -> Dict[str, Annotated[Any, FieldInfo]]: """Fetch the queryable properties for a given product type and/or provider. @@ -2131,113 +2273,53 @@ def list_queryables( :param kwargs: additional filters for queryables (`productType` or other search arguments) :type kwargs: Any + + :raises UnsupportedProductType: If the specified product type is not available for the + provider. + :returns: A dict containing the EODAG queryable properties, associating parameters to their annotated type :rtype: Dict[str, Annotated[Any, FieldInfo]] """ - # unknown product type available_product_types = [ - pt["ID"] for pt in self.list_product_types(fetch_providers=False) + pt["ID"] + for pt in self.list_product_types(provider=provider, fetch_providers=False) ] - product_type = kwargs.get("productType", None) - if product_type is not None and product_type not in available_product_types: - self.fetch_product_types_list() - - # dictionary of the queryable properties of the providers supporting the given product type - providers_available_queryables: Dict[ - str, Dict[str, Annotated[Any, FieldInfo]] - ] = dict() - - if provider is None and product_type is None: - return model_fields_to_annotated(CommonQueryables.model_fields) - elif provider is None: - for plugin in self._plugins_manager.get_search_plugins( - product_type, provider - ): - providers_available_queryables[plugin.provider] = self.list_queryables( - provider=plugin.provider, **kwargs - ) + product_type = kwargs.get("productType") - # return providers queryables intersection - queryables_keys: AbstractSet[str] = set() - for queryables in providers_available_queryables.values(): - queryables_keys = ( - queryables_keys & queryables.keys() - if queryables_keys - else queryables.keys() + if product_type: + try: + kwargs["productType"] = product_type = self.get_product_type_from_alias( + product_type ) - return { - k: v - for k, v in providers_available_queryables.popitem()[1].items() - if k in queryables_keys - } + except NoMatchingProductType as e: + raise UnsupportedProductType(f"{product_type} is not available") from e - all_queryables = copy_deepcopy( - model_fields_to_annotated(Queryables.model_fields) - ) + if product_type and product_type not in available_product_types: + self.fetch_product_types_list() - try: - plugin = next( - self._plugins_manager.get_search_plugins(product_type, provider) - ) - except StopIteration: - # return default queryables if no plugin is found + if not provider and not product_type: return model_fields_to_annotated(CommonQueryables.model_fields) - providers_available_queryables[plugin.provider] = dict() + providers_queryables: Dict[str, Dict[str, Annotated[Any, FieldInfo]]] = {} - # unknown product type: try again after fetch_product_types_list() - if ( - product_type - and product_type not in plugin.config.products.keys() - and provider is None - ): - raise UnsupportedProductType(product_type) - elif product_type and product_type not in plugin.config.products.keys(): - raise UnsupportedProductType( - f"{product_type} is not available for provider {provider}" + for plugin in self._plugins_manager.get_search_plugins(product_type, provider): + if getattr(plugin.config, "need_auth", False) and ( + auth := self._plugins_manager.get_auth_plugin(plugin.provider) + ): + plugin.auth = auth.authenticate() + providers_queryables[plugin.provider] = plugin.list_queryables( + filters=kwargs, product_type=product_type ) - metadata_mapping = deepcopy(getattr(plugin.config, "metadata_mapping", {})) - - # product_type-specific metadata-mapping - metadata_mapping.update( - getattr(plugin.config, "products", {}) - .get(product_type, {}) - .get("metadata_mapping", {}) + queryable_keys: Set[str] = set.intersection( # type: ignore + *[set(q.keys()) for q in providers_queryables.values()] ) - - # default values - default_values = deepcopy( - getattr(plugin.config, "products", {}).get(product_type, {}) - ) - default_values.pop("metadata_mapping", None) - kwargs = dict(default_values, **kwargs) - - # remove not mapped parameters or non-queryables - for param in list(metadata_mapping.keys()): - if NOT_MAPPED in metadata_mapping[param] or not isinstance( - metadata_mapping[param], list - ): - del metadata_mapping[param] - - for key, value in all_queryables.items(): - annotated_args = get_args(value) - if len(annotated_args) < 1: - continue - field_info = annotated_args[1] - if not isinstance(field_info, FieldInfo): - continue - if key in kwargs: - field_info.default = kwargs[key] - if field_info.is_required() or ( - (field_info.alias or key) in metadata_mapping - ): - providers_available_queryables[plugin.provider][key] = value - - provider_queryables = plugin.discover_queryables(**kwargs) or dict() - # use EODAG configured queryables by default - provider_queryables.update(providers_available_queryables[provider]) + queryables = { + k: v + for k, v in list(providers_queryables.values())[0].items() + if k in queryable_keys + } # always keep at least CommonQueryables common_queryables = copy_deepcopy(CommonQueryables.model_fields) @@ -2245,6 +2327,39 @@ def list_queryables( if key in kwargs: queryable.default = kwargs[key] - provider_queryables.update(model_fields_to_annotated(common_queryables)) + queryables.update(model_fields_to_annotated(common_queryables)) + + return queryables + + def available_sortables(self) -> Dict[str, Optional[ProviderSortables]]: + """For each provider, gives its available sortable parameter(s) and its maximum + number of them if it supports the sorting feature, otherwise gives None. - return provider_queryables + :returns: A dictionnary with providers as keys and dictionnary of sortable parameter(s) and + its (their) maximum number as value(s). + :rtype: dict + :raises: :class:`~eodag.utils.exceptions.UnsupportedProvider` + """ + sortables: Dict[str, Optional[ProviderSortables]] = {} + provider_search_plugins = self._plugins_manager.get_search_plugins() + for provider_search_plugin in provider_search_plugins: + provider = provider_search_plugin.provider + if not hasattr(provider_search_plugin.config, "sort"): + sortables[provider] = None + continue + sortable_params = list( + provider_search_plugin.config.sort.get("sort_param_mapping", {}).keys() + ) + if not provider_search_plugin.config.sort.get("max_sort_params"): + sortables[provider] = { + "sortables": sortable_params, + "max_sort_params": None, + } + continue + sortables[provider] = { + "sortables": sortable_params, + "max_sort_params": provider_search_plugin.config.sort[ + "max_sort_params" + ], + } + return sortables diff --git a/eodag/api/product/__init__.py b/eodag/api/product/__init__.py index 5a9ca49a0..ca2154048 100644 --- a/eodag/api/product/__init__.py +++ b/eodag/api/product/__init__.py @@ -15,8 +15,12 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +# +# type: ignore """EODAG product package""" try: - from eodag_cube.api.product import EOProduct # noqa + # import from eodag-cube if installed + from eodag_cube.api.product import Asset, AssetsDict, EOProduct # noqa except ImportError: + from ._assets import Asset, AssetsDict # noqa from ._product import EOProduct # noqa diff --git a/eodag/api/product/_assets.py b/eodag/api/product/_assets.py index d1897b5d9..cf03bea74 100644 --- a/eodag/api/product/_assets.py +++ b/eodag/api/product/_assets.py @@ -19,12 +19,14 @@ import re from collections import UserDict -from typing import TYPE_CHECKING, Any, Dict, List +from typing import TYPE_CHECKING, Any, Dict, List, Optional from eodag.utils.exceptions import NotAvailableError if TYPE_CHECKING: from eodag.api.product import EOProduct + from eodag.types.download_args import DownloadConf + from eodag.utils import Unpack class AssetsDict(UserDict): @@ -98,6 +100,9 @@ class Asset(UserDict): """ product: EOProduct + size: int + filename: Optional[str] + rel_path: str def __init__(self, product: EOProduct, key: str, *args: Any, **kwargs: Any) -> None: self.product = product @@ -113,7 +118,7 @@ def as_dict(self) -> Dict[str, Any]: """ return self.data - def download(self, **kwargs: Any) -> str: + def download(self, **kwargs: Unpack[DownloadConf]) -> str: """Downloads a single asset :param kwargs: (optional) Additional named-arguments passed to `plugin.download()` diff --git a/eodag/api/product/_product.py b/eodag/api/product/_product.py index c48affb11..0d8f1e189 100644 --- a/eodag/api/product/_product.py +++ b/eodag/api/product/_product.py @@ -21,17 +21,27 @@ import logging import os import re -import urllib.parse +import tempfile from typing import TYPE_CHECKING, Any, Dict, Optional, Tuple, Union import requests from requests import RequestException -from shapely import geometry, wkb, wkt +from requests.auth import AuthBase +from shapely import geometry from shapely.errors import ShapelyError -from eodag.api.product._assets import AssetsDict +try: + # import from eodag-cube if installed + from eodag_cube.api.product import AssetsDict # type: ignore # noqa +except ImportError: + from eodag.api.product._assets import AssetsDict # type: ignore # noqa + from eodag.api.product.drivers import DRIVERS, NoDriver -from eodag.api.product.metadata_mapping import NOT_AVAILABLE, NOT_MAPPED +from eodag.api.product.metadata_mapping import ( + DEFAULT_GEOMETRY, + NOT_AVAILABLE, + NOT_MAPPED, +) from eodag.utils import ( DEFAULT_DOWNLOAD_TIMEOUT, DEFAULT_DOWNLOAD_WAIT, @@ -49,6 +59,8 @@ from eodag.plugins.apis.base import Api from eodag.plugins.authentication.base import Authentication from eodag.plugins.download.base import Download + from eodag.types.download_args import DownloadConf + from eodag.utils import Unpack try: from shapely.errors import GEOSException @@ -133,40 +145,15 @@ def __init__( raise MisconfiguredError( f"No geometry available to build EOProduct(id={properties.get('id', None)}, provider={provider})" ) - elif properties["geometry"] == NOT_AVAILABLE: - product_geometry = properties.pop("defaultGeometry") + elif not properties["geometry"] or properties["geometry"] == NOT_AVAILABLE: + product_geometry = properties.pop("defaultGeometry", DEFAULT_GEOMETRY) else: product_geometry = properties["geometry"] - # Let's try 'latmin lonmin latmax lonmax' - if isinstance(product_geometry, str): - bbox_pattern = re.compile( - r"^(-?\d+\.?\d*) (-?\d+\.?\d*) (-?\d+\.?\d*) (-?\d+\.?\d*)$" - ) - found_bbox = bbox_pattern.match(product_geometry) - if found_bbox: - coords = found_bbox.groups() - if len(coords) == 4: - product_geometry = geometry.box( - float(coords[1]), - float(coords[0]), - float(coords[3]), - float(coords[2]), - ) - # Best effort to understand provider specific geometry (the default is to - # assume an object implementing the Geo Interface: see - # https://gist.github.com/2217756) - if isinstance(product_geometry, str): - try: - product_geometry = wkt.loads(product_geometry) - except (ShapelyError, GEOSException): - try: - product_geometry = wkb.loads(product_geometry) - # Also catching TypeError because product_geometry can be a - # string and not a bytes string - except (ShapelyError, GEOSException, TypeError): - # Giv up! - raise - self.geometry = self.search_intersection = geometry.shape(product_geometry) + + self.geometry = self.search_intersection = get_geometry_from_various( + geometry=product_geometry + ) + self.search_kwargs = kwargs if self.search_kwargs.get("geometry") is not None: searched_geom = get_geometry_from_various( @@ -273,31 +260,23 @@ def register_downloader( # resolve locations and properties if needed with downloader configuration location_attrs = ("location", "remote_location") for location_attr in location_attrs: - try: - setattr( - self, - location_attr, - urllib.parse.unquote(getattr(self, location_attr)) - % vars(self.downloader.config), - ) - except ValueError as e: - logger.debug( - f"Could not resolve product.{location_attr} ({getattr(self, location_attr)})" - f" in register_downloader: {str(e)}" - ) + if "%(" in getattr(self, location_attr): + try: + setattr( + self, + location_attr, + getattr(self, location_attr) % vars(self.downloader.config), + ) + except ValueError as e: + logger.debug( + f"Could not resolve product.{location_attr} ({getattr(self, location_attr)})" + f" in register_downloader: {str(e)}" + ) for k, v in self.properties.items(): - if isinstance(v, str): + if isinstance(v, str) and "%(" in v: try: - if "%" in v: - parsed = urllib.parse.urlparse(v) - prop = urllib.parse.unquote(parsed.path) % vars( - self.downloader.config - ) - parsed = parsed._replace(path=urllib.parse.quote(prop)) - self.properties[k] = urllib.parse.urlunparse(parsed) - else: - self.properties[k] = v % vars(self.downloader.config) + self.properties[k] = v % vars(self.downloader.config) except (TypeError, ValueError) as e: logger.debug( f"Could not resolve {k} property ({v}) in register_downloader: {str(e)}" @@ -308,7 +287,7 @@ def download( progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Any, + **kwargs: Unpack[DownloadConf], ) -> str: """Download the EO product using the provided download plugin and the authenticator if necessary. @@ -351,13 +330,6 @@ def download( else self.downloader_auth ) - # resolve remote location if needed with downloader configuration - self.remote_location = urllib.parse.unquote(self.remote_location) % vars( - self.downloader.config - ) - if not self.location.startswith("file"): - self.location = urllib.parse.unquote(self.location) - progress_callback, close_progress_callback = self._init_progress_bar( progress_callback ) @@ -469,9 +441,13 @@ def format_quicklook_address() -> None: if base_dir is not None: quicklooks_base_dir = os.path.abspath(os.path.realpath(base_dir)) else: - quicklooks_base_dir = os.path.join( - self.downloader.config.outputs_prefix, "quicklooks" + tempdir = tempfile.gettempdir() + outputs_prefix = ( + getattr(self.downloader.config, "outputs_prefix", tempdir) + if self.downloader + else tempdir ) + quicklooks_base_dir = os.path.join(outputs_prefix, "quicklooks") if not os.path.isdir(quicklooks_base_dir): os.makedirs(quicklooks_base_dir) quicklook_file = os.path.join( @@ -497,6 +473,8 @@ def format_quicklook_address() -> None: if self.downloader_auth is not None else None ) + if not isinstance(auth, AuthBase): + auth = None with requests.get( self.properties["quicklook"], stream=True, diff --git a/eodag/api/product/metadata_mapping.py b/eodag/api/product/metadata_mapping.py index f63f3a0d6..26ff803c1 100644 --- a/eodag/api/product/metadata_mapping.py +++ b/eodag/api/product/metadata_mapping.py @@ -26,6 +26,8 @@ from typing import ( TYPE_CHECKING, Any, + AnyStr, + Callable, Dict, Iterator, List, @@ -40,7 +42,7 @@ import pyproj from dateutil.parser import isoparse from dateutil.tz import UTC, tzutc -from jsonpath_ng.jsonpath import Child +from jsonpath_ng.jsonpath import Child, JSONPath from lxml import etree from lxml.etree import XPathEvalError from shapely import wkt @@ -52,6 +54,7 @@ DEFAULT_PROJ, deepcopy, dict_items_recursive_apply, + format_string, get_geometry_from_various, get_timestamp, items_recursive_apply, @@ -79,10 +82,11 @@ COORDS_ROUNDING_PRECISION = 4 WKT_MAX_LEN = 1600 COMPLEX_QS_REGEX = re.compile(r"^(.+=)?([^=]*)({.+})+([^=&]*)$") +DEFAULT_GEOMETRY = "POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))" def get_metadata_path( - map_value: Union[str, List[str]] + map_value: Union[str, List[str]], ) -> Tuple[Union[List[str], None], str]: """Return the jsonpath or xpath to the value of a EO product metadata in a provider search result. @@ -151,7 +155,7 @@ def get_search_param(map_value: List[str]) -> str: return map_value[0] -def format_metadata(search_param: str, *args: Tuple[Any], **kwargs: Any) -> str: +def format_metadata(search_param: str, *args: Any, **kwargs: Any) -> str: """Format a string of form {#} The currently understood converters are: @@ -203,8 +207,8 @@ class MetadataFormatter(Formatter): ) def __init__(self) -> None: - self.custom_converter = None - self.custom_args = None + self.custom_converter: Optional[Callable] = None + self.custom_args: Optional[str] = None def get_field(self, field_name: str, args: Any, kwargs: Any) -> Any: conversion_func_spec = self.CONVERSION_REGEX.match(field_name) @@ -304,6 +308,11 @@ def convert_to_iso_date( dt += timedelta(*time_delta_args) return dt.isoformat()[:10] + @staticmethod + def convert_to_non_separated_date(datetime_string): + iso_date = MetadataFormatter.convert_to_iso_date(datetime_string) + return iso_date.replace("-", "") + @staticmethod def convert_to_rounded_wkt(value: BaseGeometry) -> str: wkt_value = cast( @@ -379,7 +388,9 @@ def convert_to_geojson(string: str) -> str: def convert_from_ewkt(ewkt_string: str) -> Union[BaseGeometry, str]: """Convert EWKT (Extended Well-Known text) to shapely geometry""" - ewkt_regex = re.compile(r"^(?P[A-Za-z]+=[0-9]+);(?P.*)$") + ewkt_regex = re.compile( + r"^.*(?PSRID=[0-9]+);(?P[A-Z0-9 \(\),\.-]+).*$" + ) ewkt_match = ewkt_regex.match(ewkt_string) if ewkt_match: g = ewkt_match.groupdict() @@ -462,6 +473,15 @@ def flatten_elements(nested) -> Iterator[Any]: ) return georss + @staticmethod + def convert_to_longitude_latitude( + input_geom_unformatted: Any, + ) -> Dict[str, float]: + bounds = MetadataFormatter.convert_to_bounds(input_geom_unformatted) + lon = (bounds[0] + bounds[2]) / 2 + lat = (bounds[1] + bounds[3]) / 2 + return {"lon": lon, "lat": lat} + @staticmethod def convert_csv_list(values_list: Any) -> Any: if isinstance(values_list, list): @@ -479,12 +499,15 @@ def convert_remove_extension(string: str) -> str: @staticmethod def convert_get_group_name(string: str, pattern: str) -> str: try: - return re.search(pattern, str(string)).lastgroup + match = re.search(pattern, str(string)) + if match: + return match.lastgroup or NOT_AVAILABLE except AttributeError: - logger.warning( - "Could not extract property from %s using %s", string, pattern - ) - return NOT_AVAILABLE + pass + logger.warning( + "Could not extract property from %s using %s", string, pattern + ) + return NOT_AVAILABLE @staticmethod def convert_replace_str(string: str, args: str) -> str: @@ -513,10 +536,34 @@ def convert_dict_update( return dict(input_dict, **new_items_dict) + @staticmethod + def convert_dict_filter( + input_dict: Dict[Any, Any], jsonpath_filter_str: str + ) -> Dict[Any, Any]: + """Fitlers dict items using jsonpath""" + + jsonpath_filter = string_to_jsonpath(jsonpath_filter_str, force=True) + if isinstance(jsonpath_filter, str) or not isinstance(input_dict, dict): + return {} + + keys_list = list(input_dict.keys()) + matches = jsonpath_filter.find(input_dict) + result = {} + for match in matches: + # extract key index from matched jsonpath + matched_jsonpath_str = str(match.full_path) + matched_index = int(matched_jsonpath_str.split(".")[-1][1:-1]) + key = keys_list[matched_index] + result[key] = match.value + return result + @staticmethod def convert_slice_str(string: str, args: str) -> str: - cmin, cmax, cstep = [x.strip() for x in args.split(",")] - return string[int(cmin) : int(cmax) : int(cstep)] + cmin, cmax, cstep = [ + int(x.strip()) if x.strip().lstrip("-").isdigit() else None + for x in args.split(",") + ] + return string[cmin:cmax:cstep] @staticmethod def convert_fake_l2a_title_from_l1c(string: str) -> str: @@ -595,23 +642,6 @@ def convert_split_id_into_s1_params(product_id: str) -> Dict[str, str]: params["polarisation"] = polarisation return params - @staticmethod - def convert_get_processing_level_from_s1_id(product_id: str) -> str: - parts: List[str] = re.split(r"_(?!_)", product_id) - level = "LEVEL" + parts[3][0] - return level - - @staticmethod - def convert_get_sensor_mode_from_s1_id(product_id: str) -> str: - parts: List[str] = re.split(r"_(?!_)", product_id) - return parts[1] - - @staticmethod - def convert_get_processing_level_from_s2_id(product_id: str) -> str: - parts: List[str] = re.split(r"_(?!_)", product_id) - processing_level = "S2" + parts[1] - return processing_level - @staticmethod def convert_split_id_into_s3_params(product_id: str) -> Dict[str, str]: parts: List[str] = re.split(r"_(?!_)", product_id) @@ -647,12 +677,6 @@ def convert_split_id_into_s5p_params(product_id: str) -> Dict[str, str]: params["endDate"] = end_date.strftime("%Y-%m-%dT%H:%M:%SZ") return params - @staticmethod - def convert_get_processing_level_from_s5p_id(product_id: str) -> str: - parts: List[str] = re.split(r"_(?!_)", product_id) - processing_level = parts[2].replace("_", "") - return processing_level - @staticmethod def convert_split_cop_dem_id(product_id: str) -> List[int]: parts = product_id.split("_") @@ -670,17 +694,25 @@ def convert_split_cop_dem_id(product_id: str) -> List[int]: return bbox @staticmethod - def convert_split_corine_id(product_id: str) -> str: - if "clc" in product_id: - year = product_id.split("_")[1][3:] - product_type = "Corine Land Cover " + year + def convert_dates_from_cmems_id(product_id: str): + date_format_1 = "[0-9]{10}" + date_format_2 = "[0-9]{8}" + dates = re.findall(date_format_1, product_id) + if dates: + date = dates[0] + else: + dates = re.findall(date_format_2, product_id) + date = dates[0] + if len(date) == 10: + date_time = datetime.strptime(dates[0], "%Y%m%d%H") else: - years = [1990, 2000, 2006, 2012, 2018] - end_year = product_id[1:5] - i = years.index(int(end_year)) - start_year = str(years[i - 1]) - product_type = "Corine Land Change " + start_year + " " + end_year - return product_type + date_time = datetime.strptime(dates[0], "%Y%m%d") + return { + "min_date": date_time.strftime("%Y-%m-%dT%H:%M:%SZ"), + "max_date": (date_time + timedelta(days=1)).strftime( + "%Y-%m-%dT%H:%M:%SZ" + ), + } @staticmethod def convert_to_datetime_dict( @@ -791,7 +823,10 @@ def convert_get_ecmwf_time(date: str) -> List[str]: @staticmethod def convert_get_dates_from_string(text: str, split_param="-"): reg = "[0-9]{8}" + split_param + "[0-9]{8}" - dates_str = re.search(reg, text).group() + match = re.search(reg, text) + if not match: + return NOT_AVAILABLE + dates_str = match.group() dates = dates_str.split(split_param) start_date = datetime.strptime(dates[0], "%Y%m%d") end_date = datetime.strptime(dates[1], "%Y%m%d") @@ -800,6 +835,79 @@ def convert_get_dates_from_string(text: str, split_param="-"): "endDate": end_date.strftime("%Y-%m-%dT%H:%M:%SZ"), } + @staticmethod + def convert_get_hydrological_year(date: str): + utc_date = MetadataFormatter.convert_to_iso_utc_datetime(date) + date_object = datetime.strptime(utc_date, "%Y-%m-%dT%H:%M:%S.%fZ") + date_object_second_year = date_object + timedelta(days=365) + return [ + f'{date_object.strftime("%Y")}_{date_object_second_year.strftime("%y")}' + ] + + @staticmethod + def convert_get_variables_from_path(path: str): + if "?" not in path: + return [] + variables = path.split("?")[1] + return variables.split(",") + + @staticmethod + def convert_assets_list_to_dict( + assets_list: List[Dict[str, str]], asset_name_key: str = "title" + ) -> Dict[str, Dict[str, str]]: + """Convert a list of assets to a dictionary where keys represent + name of assets and are found among values of asset dictionaries. + + assets_list == [ + {"href": "foo", "title": "asset1", "name": "foo-name"}, + {"href": "bar", "title": "path/to/asset1", "name": "bar-name"}, + {"href": "baz", "title": "path/to/asset2", "name": "baz-name"}, + {"href": "qux", "title": "asset3", "name": "qux-name"}, + ] and asset_name_key == "title" => { + "asset1": {"href": "foo", "title": "asset1", "name": "foo-name"}, + "path/to/asset1": {"href": "bar", "title": "path/to/asset1", "name": "bar-name"}, + "asset2": {"href": "baz", "title": "path/to/asset2", "name": "baz-name"}, + "asset3": {"href": "qux", "title": "asset3", "name": "qux-name"}, + } + assets_list == [ + {"href": "foo", "title": "foo-title", "name": "asset1"}, + {"href": "bar", "title": "bar-title", "name": "path/to/asset1"}, + {"href": "baz", "title": "baz-title", "name": "path/to/asset2"}, + {"href": "qux", "title": "qux-title", "name": "asset3"}, + ] and asset_name_key == "name" => { + "asset1": {"href": "foo", "title": "foo-title", "name": "asset1"}, + "path/to/asset1": {"href": "bar", "title": "bar-title", "name": "path/to/asset1"}, + "asset2": {"href": "baz", "title": "baz-title", "name": "path/to/asset2"}, + "asset3": {"href": "qux", "title": "qux-title", "name": "asset3"}, + } + """ + asset_names: List[str] = [] + assets_dict: Dict[str, Dict[str, str]] = {} + + for asset in assets_list: + asset_name = asset[asset_name_key] + asset_names.append(asset_name) + assets_dict[asset_name] = asset + + # we only keep the equivalent of the path basename in the case where the + # asset name has a path pattern and this basename is only found once + immutable_asset_indexes: List[int] = [] + for i, asset_name in enumerate(asset_names): + if i in immutable_asset_indexes: + continue + change_asset_name = True + asset_basename = asset_name.split("/")[-1] + j = i + 1 + while change_asset_name and j < len(asset_names): + asset_tmp_basename = asset_names[j].split("/")[-1] + if asset_basename == asset_tmp_basename: + change_asset_name = False + immutable_asset_indexes.extend([i, j]) + j += 1 + if change_asset_name: + assets_dict[asset_basename] = assets_dict.pop(asset_name) + return assets_dict + # if stac extension colon separator `:` is in search params, parse it to prevent issues with vformat if re.search(r"{[a-zA-Z0-9_-]*:[a-zA-Z0-9_-]*}", search_param): search_param = re.sub( @@ -840,7 +948,7 @@ def properties_from_json( else: conversion_or_none, path_or_text = value if isinstance(path_or_text, str): - if re.search(r"({[^{}]+})+", path_or_text): + if re.search(r"({[^{}:]+})+", path_or_text): templates[metadata] = path_or_text else: properties[metadata] = path_or_text @@ -874,7 +982,7 @@ def properties_from_json( conversion_or_none = conversion_or_none[0] # check if conversion uses variables to format - if re.search(r"({[^{}]+})+", conversion_or_none): + if re.search(r"({[^{}:]+})+", conversion_or_none): conversion_or_none = conversion_or_none.format(**properties) properties[metadata] = format_metadata( @@ -890,7 +998,7 @@ def properties_from_json( # Resolve templates for metadata, template in templates.items(): try: - properties[metadata] = template.format(**properties) + properties[metadata] = format_string(metadata, template, **properties) except ValueError: logger.warning( f"Could not parse {metadata} ({template}) using product properties" @@ -905,13 +1013,18 @@ def properties_from_json( discovery_pattern = discovery_config.get("metadata_pattern", None) discovery_path = discovery_config.get("metadata_path", None) if discovery_pattern and discovery_path: - discovered_properties = string_to_jsonpath(discovery_path).find(json) + discovery_jsonpath = string_to_jsonpath(discovery_path) + discovered_properties = ( + discovery_jsonpath.find(json) + if isinstance(discovery_jsonpath, JSONPath) + else [] + ) for found_jsonpath in discovered_properties: if "metadata_path_id" in discovery_config.keys(): found_key_paths = string_to_jsonpath( discovery_config["metadata_path_id"], force=True ).find(found_jsonpath.value) - if not found_key_paths: + if not found_key_paths or isinstance(found_key_paths, int): continue found_key = found_key_paths[0].value used_jsonpath = Child( @@ -934,7 +1047,9 @@ def properties_from_json( discovery_config["metadata_path_value"], force=True ).find(found_jsonpath.value) properties[found_key] = ( - found_value_path[0].value if found_value_path else NOT_AVAILABLE + found_value_path[0].value + if found_value_path and not isinstance(found_value_path, int) + else NOT_AVAILABLE ) else: # default value got from metadata_path @@ -950,7 +1065,7 @@ def properties_from_json( def properties_from_xml( - xml_as_text: str, + xml_as_text: AnyStr, mapping: Any, empty_ns_prefix: str = "ns", discovery_config: Optional[Dict[str, Any]] = None, @@ -1051,7 +1166,7 @@ def properties_from_xml( conversion_or_none = conversion_or_none[0] # check if conversion uses variables to format - if re.search(r"({[^{}]+})+", conversion_or_none): + if re.search(r"({[^{}:]+})+", conversion_or_none): conversion_or_none = conversion_or_none.format(**properties) properties[metadata] = [ @@ -1073,7 +1188,7 @@ def properties_from_xml( # formatting resolution using previously successfully resolved properties # Ignore any transformation specified. If a value is to be passed as is, # we don't want to transform it further - if re.search(r"({[^{}]+})+", path_or_text): + if re.search(r"({[^{}:]+})+", path_or_text): templates[metadata] = path_or_text else: properties[metadata] = path_or_text @@ -1146,7 +1261,7 @@ def mtd_cfg_as_conversion_and_querypath( else: parsed_path = path - if len(dest_dict[metadata]) == 2: + if isinstance(dest_dict[metadata], list) and len(dest_dict[metadata]) == 2: dest_dict[metadata][1] = (conversion, parsed_path) else: dest_dict[metadata] = (conversion, parsed_path) @@ -1158,13 +1273,13 @@ def mtd_cfg_as_conversion_and_querypath( def format_query_params( - product_type: str, config: PluginConfig, **kwargs: Any + product_type: str, config: PluginConfig, query_dict: Dict[str, Any] ) -> Dict[str, Any]: """format the search parameters to query parameters""" - if "raise_errors" in kwargs.keys(): - del kwargs["raise_errors"] + if "raise_errors" in query_dict.keys(): + del query_dict["raise_errors"] # . not allowed in eodag_search_key, replaced with %2E - kwargs = {k.replace(".", "%2E"): v for k, v in kwargs.items()} + query_dict = {k.replace(".", "%2E"): v for k, v in query_dict.items()} product_type_metadata_mapping = dict( config.metadata_mapping, @@ -1174,16 +1289,16 @@ def format_query_params( query_params: Dict[str, Any] = {} # Get all the search parameters that are recognised as queryables by the # provider (they appear in the queryables dictionary) - queryables = _get_queryables(kwargs, config, product_type_metadata_mapping) + queryables = _get_queryables(query_dict, config, product_type_metadata_mapping) for eodag_search_key, provider_search_key in queryables.items(): - user_input = kwargs[eodag_search_key] + user_input = query_dict[eodag_search_key] if COMPLEX_QS_REGEX.match(provider_search_key): parts = provider_search_key.split("=") if len(parts) == 1: formatted_query_param = format_metadata( - provider_search_key, product_type, **kwargs + provider_search_key, product_type, **query_dict ) formatted_query_param = formatted_query_param.replace("'", '"') if "{{" in provider_search_key: @@ -1202,7 +1317,7 @@ def format_query_params( else: provider_search_key, provider_value = parts query_params.setdefault(provider_search_key, []).append( - format_metadata(provider_value, product_type, **kwargs) + format_metadata(provider_value, product_type, **query_dict) ) else: query_params[provider_search_key] = user_input @@ -1221,7 +1336,7 @@ def format_query_params( **config.products.get(product_type, {}).get("metadata_mapping", {}), ) literal_search_params.update( - _format_free_text_search(config, product_type_metadata_mapping, **kwargs) + _format_free_text_search(config, product_type_metadata_mapping, **query_dict) ) for provider_search_key, provider_value in literal_search_params.items(): if isinstance(provider_value, list): diff --git a/eodag/api/search_result.py b/eodag/api/search_result.py index 6961ee551..961992272 100644 --- a/eodag/api/search_result.py +++ b/eodag/api/search_result.py @@ -40,12 +40,17 @@ class SearchResult(UserList): :param products: A list of products resulting from a search :type products: list(:class:`~eodag.api.product._product.EOProduct`) + :param number_matched: (optional) the estimated total number of matching results + :type number_matched: Optional[int] """ data: List[EOProduct] - def __init__(self, products: List[EOProduct]) -> None: + def __init__( + self, products: List[EOProduct], number_matched: Optional[int] = None + ) -> None: super(SearchResult, self).__init__(products) + self.number_matched = number_matched def crunch(self, cruncher: Crunch, **search_params: Any) -> SearchResult: """Do some crunching with the underlying EO products. @@ -168,3 +173,18 @@ def __geo_interface__(self) -> Dict[str, Any]: See https://gist.github.com/sgillies/2217756 """ return self.as_geojson_object() + + +class RawSearchResult(UserList): + """An object representing a collection of raw/unparsed search results obtained from a provider. + + :param results: A list of raw/unparsed search results + :type results: List[Any] + """ + + data: List[Any] + query_params: Dict[str, Any] + product_type_def_params: Dict[str, Any] + + def __init__(self, results: List[Any]) -> None: + super(RawSearchResult, self).__init__(results) diff --git a/eodag/cli.py b/eodag/cli.py index c135f5fd3..cc15809f2 100755 --- a/eodag/cli.py +++ b/eodag/cli.py @@ -50,7 +50,6 @@ from typing import TYPE_CHECKING, Any, Dict, List, Mapping, Set import click -import uvicorn from eodag.api.core import EODataAccessGateway from eodag.utils import DEFAULT_ITEMS_PER_PAGE, DEFAULT_PAGE, parse_qs @@ -242,6 +241,11 @@ def version() -> None: "or a maximum value defined internally for the requested provider, or a default " "maximum value equals to 50.", ) +@click.option( + "--count", + is_flag=True, + help="Whether to run a query with a count request or not.", +) @click.option( "--locations", type=str, @@ -334,6 +338,8 @@ def search_crunch(ctx: Context, **kwargs: Any) -> None: if locs_file: locs_file = click.format_filename(locs_file) + count = kwargs.pop("count") + # Process inputs for crunch cruncher_names: Set[Any] = set(kwargs.pop("cruncher") or []) cruncher_args = kwargs.pop("cruncher_args") @@ -361,10 +367,13 @@ def search_crunch(ctx: Context, **kwargs: Any) -> None: items_per_page = ( DEFAULT_ITEMS_PER_PAGE if items_per_page is None else items_per_page ) - results, total = gateway.search( - page=page, items_per_page=items_per_page, **criteria + results = gateway.search( + count=count, page=page, items_per_page=items_per_page, **criteria ) - click.echo("Found a total number of {} products".format(total)) + if results.number_matched is not None: + click.echo( + "Found a total number of {} products".format(results.number_matched) + ) click.echo("Returned {} products".format(len(results))) # Crunch ! @@ -446,8 +455,6 @@ def list_pt(ctx: Context, **kwargs: Any) -> None: provider=provider, fetch_providers=fetch_providers ) if pt["ID"] in guessed_product_types - or "alias" in pt - and pt["alias"] in guessed_product_types ] else: product_types = dag.list_product_types( @@ -645,6 +652,13 @@ def serve_rest( ) -> None: """Serve EODAG functionalities through a WEB interface""" setup_logging(verbose=ctx.obj["verbosity"]) + try: + import uvicorn + except ImportError: + raise ImportError( + "Feature not available, please install eodag[server] or eodag[all]" + ) + # Set the settings of the app # IMPORTANT: the order of imports counts here (first we override the settings, # then we import the app so that the updated settings is taken into account in diff --git a/eodag/config.py b/eodag/config.py index 9f437fd48..27e9161fc 100644 --- a/eodag/config.py +++ b/eodag/config.py @@ -27,6 +27,7 @@ ItemsView, Iterator, List, + Literal, Optional, Tuple, TypedDict, @@ -40,13 +41,16 @@ import yaml import yaml.constructor import yaml.parser +from annotated_types import Gt from jsonpath_ng import JSONPath from pkg_resources import resource_filename from requests.auth import AuthBase +from typing_extensions import Doc from eodag.utils import ( HTTP_REQ_TIMEOUT, USER_AGENT, + Annotated, cached_yaml_load, cached_yaml_load_all, cast_scalar_value, @@ -125,7 +129,11 @@ class ProviderConfig(yaml.YAMLObject): """ name: str + group: str priority: int = 0 # Set default priority to 0 + roles: List[str] + description: str + url: str api: PluginConfig search: PluginConfig products: Dict[str, Any] @@ -138,7 +146,7 @@ class ProviderConfig(yaml.YAMLObject): yaml_tag = "!provider" @classmethod - def from_yaml(cls, loader: yaml.Loader, node: Any) -> ProviderConfig: + def from_yaml(cls, loader: yaml.Loader, node: Any) -> Iterator[ProviderConfig]: """Build a :class:`~eodag.config.ProviderConfig` from Yaml""" cls.validate(tuple(node_key.value for node_key, _ in node.value)) for node_key, node_value in node.value: @@ -223,19 +231,77 @@ class Pagination(TypedDict): next_page_url_key_path: Union[str, JSONPath] next_page_query_obj_key_path: Union[str, JSONPath] next_page_merge_key_path: Union[str, JSONPath] + count_tpl: str next_page_url_tpl: str next_page_query_obj: str count_endpoint: str start_page: int + class Sort(TypedDict): + """Configuration for sort during search""" + + sort_by_default: List[Tuple[str, str]] + sort_by_tpl: str + sort_param_mapping: Dict[str, str] + sort_order_mapping: Dict[Literal["ascending", "descending"], str] + max_sort_params: Annotated[int, Gt(0)] + + class OrderOnResponse(TypedDict): + """Configuration for order on-response during download""" + + metadata_mapping: Dict[str, Union[str, List[str]]] + + class OrderStatusSuccess(TypedDict): + """ + Configuration to identify order status success during download + + Order status response matching the following parameters are considered success + At least one is required + """ + + status: Annotated[str, Doc("Variable in the order status response json body")] + message: Annotated[str, Doc("Variable in the order status response json body")] + http_code: Annotated[int, Doc("HTTP code of the order status response")] + + class OrderStatusOrdered(TypedDict): + """ + Configuration to identify order status ordered during download + """ + + http_code: Annotated[int, Doc("HTTP code of the order status response")] + + class OrderStatusRequest(TypedDict): + """ + Order status request configuration + """ + + method: Annotated[str, Doc("Request HTTP method")] + headers: Annotated[Dict[str, Any], Doc("Request hearders")] + class OrderStatusOnSuccess(TypedDict): - """Configuration for order on-success during download""" + """Configuration for order status on-success during download""" - need_search: bool + need_search: Annotated[bool, Doc("If a new search is needed on success")] result_type: str results_entry: str metadata_mapping: Dict[str, Union[str, List[str]]] + class OrderStatus(TypedDict): + """Configuration for order status during download""" + + request: PluginConfig.OrderStatusRequest + metadata_mapping: Annotated[ + Dict[str, Union[str, List[str]]], + Doc("Metadata-mapping used to parse order status response"), + ] + success: PluginConfig.OrderStatusSuccess + error: Annotated[ + Dict[str, Any], + Doc("Part of the order status response that tells there is an error"), + ] + ordered: PluginConfig.OrderStatusOrdered + on_success: PluginConfig.OrderStatusOnSuccess + name: str type: str @@ -251,12 +317,15 @@ class OrderStatusOnSuccess(TypedDict): result_type: str results_entry: str pagination: PluginConfig.Pagination + sort: PluginConfig.Sort query_params_key: str - discover_metadata: Dict[str, str] + discover_metadata: Dict[str, Union[str, bool]] discover_product_types: Dict[str, Any] discover_queryables: Dict[str, Any] metadata_mapping: Dict[str, Union[str, List[str]]] free_params: Dict[Any, Any] + constraints_file_url: str + remove_from_queryables: List[str] free_text_search_operations: Dict[str, Any] # ODataV4Search metadata_pre_mapping: Dict[str, Any] # ODataV4Search data_request_url: str # DataRequestSearch @@ -268,16 +337,30 @@ class OrderStatusOnSuccess(TypedDict): max_connections: int # StaticStacSearch timeout: float # StaticStacSearch s3_bucket: str # CreodiasS3Search + end_date_excluded: bool # BuildSearchResult + remove_from_query: List[str] # BuildSearchResult + ssl_verify: bool # download ------------------------------------------------------------------------- base_uri: str outputs_prefix: str extract: bool + outputs_extension: str order_enabled: bool # HTTPDownload order_method: str # HTTPDownload order_headers: Dict[str, str] # HTTPDownload - order_status_on_success: PluginConfig.OrderStatusOnSuccess + + order_on_response: PluginConfig.OrderOnResponse + order_status: PluginConfig.OrderStatus + no_auth_download: Annotated[ + bool, + Doc( + "Do not authenticate the download request but only the order and order status ones." + ), + ] bucket_path_level: int # S3RestDownload + requester_pays: bool # AwsDownload + flatten_top_dirs: bool # auth ----------------------------------------------------------------------------- credentials: Dict[str, str] @@ -299,7 +382,13 @@ class OrderStatusOnSuccess(TypedDict): token_exchange_post_data_method: str # OIDCAuthorizationCodeFlowAuth token_uri: str # OIDCAuthorizationCodeFlowAuth token_key: str # OIDCAuthorizationCodeFlowAuth + req_data: Dict[str, Any] # TokenAuth signed_url_key: str # SASAuth + refresh_uri: str # TokenAuth + refresh_token_key: str # TokenAuth + subject: Dict[str, Any] # TokenExchangeAuth + subject_issuer: str # TokenExchangeAuth + audience: str # TokenExchangeAuth yaml_loader = yaml.Loader yaml_dumper = yaml.SafeDumper @@ -362,7 +451,7 @@ def load_config(config_path: str) -> Dict[str, ProviderConfig]: :returns: The default provider's configuration :rtype: dict """ - logger.debug(f"Loading configuration from {config_path}") + logger.debug("Loading configuration from %s", config_path) config: Dict[str, ProviderConfig] = {} try: # Providers configs are stored in this file as separated yaml documents diff --git a/eodag/plugins/apis/base.py b/eodag/plugins/apis/base.py index 3ba550be6..e7c8a1001 100644 --- a/eodag/plugins/apis/base.py +++ b/eodag/plugins/apis/base.py @@ -17,35 +17,16 @@ # limitations under the License. from __future__ import annotations -import logging -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple +from eodag.plugins.download.base import Download +from eodag.plugins.search.base import Search -from pydantic.fields import Field, FieldInfo -if TYPE_CHECKING: - from eodag.api.product import EOProduct - from eodag.api.search_result import SearchResult - from eodag.config import PluginConfig - from eodag.utils import DownloadedCallback, ProgressCallback - -from eodag.plugins.base import PluginTopic -from eodag.utils import ( - DEFAULT_DOWNLOAD_TIMEOUT, - DEFAULT_DOWNLOAD_WAIT, - DEFAULT_ITEMS_PER_PAGE, - DEFAULT_PAGE, - Annotated, - deepcopy, -) - -logger = logging.getLogger("eodag.apis.base") - - -class Api(PluginTopic): +class Api(Search, Download): """Plugins API Base plugin - An Api plugin has three download methods that it must implement: + An Api plugin inherit the methods from Search and Download plugins. + There are three methods that it must implement: - ``query``: search for products - ``download``: download a single :class:`~eodag.api.product._product.EOProduct` - ``download_all``: download multiple products from a :class:`~eodag.api.search_result.SearchResult` @@ -63,150 +44,12 @@ class Api(PluginTopic): (e.g. 'file:///tmp/product_folder' on Linux or 'file:///C:/Users/username/AppData/LOcal/Temp' on Windows) - save a *record* file in the directory ``outputs_prefix/.downloaded`` whose name - is built on the MD5 hash of the product's ``remote_location`` attribute - (``hashlib.md5(remote_location.encode("utf-8")).hexdigest()``) and whose content is - the product's ``remote_location`` attribute itself. + is built on the MD5 hash of the product's ``product_type`` and ``properties['id']`` + attributes (``hashlib.md5((product.product_type+"-"+product.properties['id']).encode("utf-8")).hexdigest()``) + and whose content is the product's ``remote_location`` attribute itself. - not try to download a product whose ``location`` attribute already points to an existing file/directory - not try to download a product if its *record* file exists as long as the expected product's file/directory. If the *record* file only is found, it must be deleted (it certainly indicates that the download didn't complete) """ - - def clear(self) -> None: - """Method used to clear a search context between two searches.""" - pass - - def query( - self, - product_type: Optional[str] = None, - items_per_page: int = DEFAULT_ITEMS_PER_PAGE, - page: int = DEFAULT_PAGE, - count: bool = True, - **kwargs: Any, - ) -> Tuple[List[EOProduct], Optional[int]]: - """Implementation of how the products must be searched goes here. - - This method must return a tuple with (1) a list of EOProduct instances (see eodag.api.product module) - which will be processed by a Download plugin (2) and the total number of products matching - the search criteria. If ``count`` is False, the second element returned must be ``None``. - """ - raise NotImplementedError("A Api plugin must implement a method named query") - - def discover_product_types(self) -> Optional[Dict[str, Any]]: - """Fetch product types list from provider using `discover_product_types` conf""" - return None - - def discover_queryables( - self, **kwargs: Any - ) -> Optional[Dict[str, Annotated[Any, FieldInfo]]]: - """Fetch queryables list from provider using `discover_queryables` conf - - :param kwargs: additional filters for queryables (`productType` and other search - arguments) - :type kwargs: Any - :returns: fetched queryable parameters dict - :rtype: Optional[Dict[str, Annotated[Any, FieldInfo]]] - """ - return None - - def get_defaults_as_queryables( - self, product_type: str - ) -> Dict[str, Annotated[Any, FieldInfo]]: - """ - Return given product type defaut settings as queryables - - :param product_type: given product type - :type product_type: str - :returns: queryable parameters dict - :rtype: Dict[str, Annotated[Any, FieldInfo]] - """ - defaults = deepcopy(self.config.products.get(product_type, {})) - defaults.pop("metadata_mapping", None) - - queryables = {} - for parameter, value in defaults.items(): - queryables[parameter] = Annotated[type(value), Field(default=value)] - return queryables - - def download( - self, - product: EOProduct, - auth: Optional[PluginConfig] = None, - progress_callback: Optional[ProgressCallback] = None, - wait: int = DEFAULT_DOWNLOAD_WAIT, - timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Any, - ) -> Optional[str]: - """ - Base download method. Not available, it must be defined for each plugin. - - :param product: The EO product to download - :type product: :class:`~eodag.api.product._product.EOProduct` - :param auth: (optional) The configuration of a plugin of type Authentication - :type auth: :class:`~eodag.config.PluginConfig` - :param progress_callback: (optional) A progress callback - :type progress_callback: :class:`~eodag.utils.ProgressCallback` - :param wait: (optional) If download fails, wait time in minutes between two download tries - :type wait: int - :param timeout: (optional) If download fails, maximum time in minutes before stop retrying - to download - :type timeout: int - :param kwargs: `outputs_prefix` (str), `extract` (bool), `delete_archive` (bool) - and `dl_url_params` (dict) can be provided as additional kwargs - and will override any other values defined in a configuration - file or with environment variables. - :type kwargs: Union[str, bool, dict] - :returns: The absolute path to the downloaded product in the local filesystem - (e.g. '/tmp/product.zip' on Linux or - 'C:\\Users\\username\\AppData\\Local\\Temp\\product.zip' on Windows) - :rtype: str - """ - raise NotImplementedError( - "An Api plugin must implement a method named download" - ) - - def download_all( - self, - products: SearchResult, - auth: Optional[PluginConfig] = None, - downloaded_callback: Optional[DownloadedCallback] = None, - progress_callback: Optional[ProgressCallback] = None, - wait: int = DEFAULT_DOWNLOAD_WAIT, - timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Any, - ) -> List[str]: - """ - Base download_all method. - - :param products: Products to download - :type products: :class:`~eodag.api.search_result.SearchResult` - :param auth: (optional) The configuration of a plugin of type Authentication - :type auth: :class:`~eodag.config.PluginConfig` - :param downloaded_callback: (optional) A method or a callable object which takes - as parameter the ``product``. You can use the base class - :class:`~eodag.api.product.DownloadedCallback` and override - its ``__call__`` method. Will be called each time a product - finishes downloading - :type downloaded_callback: Callable[[:class:`~eodag.api.product._product.EOProduct`], None] - or None - :param progress_callback: (optional) A progress callback - :type progress_callback: :class:`~eodag.utils.ProgressCallback` - :param wait: (optional) If download fails, wait time in minutes between two download tries - :type wait: int - :param timeout: (optional) If download fails, maximum time in minutes before stop retrying - to download - :type timeout: int - :param kwargs: `outputs_prefix` (str), `extract` (bool), `delete_archive` (bool) - and `dl_url_params` (dict) can be provided as additional kwargs - and will override any other values defined in a configuration - file or with environment variables. - :type kwargs: Union[str, bool, dict] - :returns: List of absolute paths to the downloaded products in the local - filesystem (e.g. ``['/tmp/product.zip']`` on Linux or - ``['C:\\Users\\username\\AppData\\Local\\Temp\\product.zip']`` on Windows) - :rtype: list - """ - raise NotImplementedError( - "A Api plugin must implement a method named download_all" - ) diff --git a/eodag/plugins/apis/cds.py b/eodag/plugins/apis/cds.py deleted file mode 100644 index c3f71127f..000000000 --- a/eodag/plugins/apis/cds.py +++ /dev/null @@ -1,540 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2022, CS GROUP - France, https://www.csgroup.eu/ -# -# This file is part of EODAG project -# https://www.github.com/CS-SI/EODAG -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -from __future__ import annotations - -import logging -from datetime import datetime, timedelta -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Set, Tuple, Union, cast -from urllib.parse import unquote_plus - -import cdsapi -import geojson -import requests -from dateutil.parser import isoparse -from pydantic import create_model -from pydantic.fields import FieldInfo -from typing_extensions import get_args - -from eodag.api.product._assets import Asset -from eodag.api.product.metadata_mapping import ( - get_queryable_from_provider, - mtd_cfg_as_conversion_and_querypath, -) -from eodag.plugins.apis.base import Api -from eodag.plugins.download.http import HTTPDownload -from eodag.plugins.search.base import Search -from eodag.plugins.search.build_search_result import BuildPostSearchResult -from eodag.rest.stac import DEFAULT_MISSION_START_DATE -from eodag.types import json_field_definition_to_python, model_fields_to_annotated -from eodag.types.queryables import CommonQueryables -from eodag.utils import ( - DEFAULT_DOWNLOAD_TIMEOUT, - DEFAULT_DOWNLOAD_WAIT, - DEFAULT_ITEMS_PER_PAGE, - DEFAULT_PAGE, - Annotated, - datetime_range, - deepcopy, - get_geometry_from_various, - path_to_uri, - urlencode, - urlsplit, -) -from eodag.utils.constraints import ( - fetch_constraints, - get_constraint_queryables_with_additional_params, -) -from eodag.utils.exceptions import ( - AuthenticationError, - DownloadError, - RequestError, - ValidationError, -) -from eodag.utils.logging import get_logging_verbose - -if TYPE_CHECKING: - from eodag.api.product import EOProduct - from eodag.api.search_result import SearchResult - from eodag.config import PluginConfig - from eodag.utils import DownloadedCallback, ProgressCallback - -logger = logging.getLogger("eodag.apis.cds") - -CDS_KNOWN_FORMATS = {"grib": "grib", "netcdf": "nc"} - - -class CdsApi(HTTPDownload, Api, BuildPostSearchResult): - """A plugin that enables to build download-request and download data on CDS API. - - Builds a single ready-to-download :class:`~eodag.api.product._product.EOProduct` - during the search stage. - - This class inherits from :class:`~eodag.plugins.apis.base.Api` for compatibility, - :class:`~eodag.plugins.download.base.Download` for download methods, and - :class:`~eodag.plugins.search.qssearch.QueryStringSearch` for metadata-mapping and - query build methods. - """ - - def __init__(self, provider: str, config: PluginConfig) -> None: - # init self.config.metadata_mapping using Search Base plugin - Search.__init__(self, provider, config) - - # needed by QueryStringSearch.build_query_string / format_free_text_search - self.config.__dict__.setdefault("free_text_search_operations", {}) - # needed for compatibility - self.config.__dict__.setdefault("pagination", {"next_page_query_obj": "{{}}"}) - - # parse jsonpath on init: product type specific metadata-mapping - for product_type in self.config.products.keys(): - if "metadata_mapping" in self.config.products[product_type].keys(): - self.config.products[product_type][ - "metadata_mapping" - ] = mtd_cfg_as_conversion_and_querypath( - self.config.products[product_type]["metadata_mapping"] - ) - # Complete and ready to use product type specific metadata-mapping - product_type_metadata_mapping = deepcopy(self.config.metadata_mapping) - - # update config using provider product type definition metadata_mapping - # from another product - other_product_for_mapping = cast( - str, - self.config.products[product_type].get( - "metadata_mapping_from_product", "" - ), - ) - if other_product_for_mapping: - other_product_type_def_params = self.get_product_type_def_params( - other_product_for_mapping, # **kwargs - ) - product_type_metadata_mapping.update( - other_product_type_def_params.get("metadata_mapping", {}) - ) - # from current product - product_type_metadata_mapping.update( - self.config.products[product_type]["metadata_mapping"] - ) - - self.config.products[product_type][ - "metadata_mapping" - ] = product_type_metadata_mapping - - def get_product_type_cfg(self, key: str, default: Any = None) -> Any: - """ - Get the value of a configuration option specific to the current product type. - - This method retrieves the value of a configuration option from the - `_product_type_config` attribute. If the option is not found, the provided - default value is returned. - - :param key: The configuration option key. - :type key: str - :param default: The default value to be returned if the option is not found (default is None). - :type default: Any - - :return: The value of the specified configuration option or the default value. - :rtype: Any - """ - product_type_cfg = getattr(self.config, "product_type_config", {}) - non_none_cfg = {k: v for k, v in product_type_cfg.items() if v} - - return non_none_cfg.get(key, default) - - def _preprocess_search_params(self, params: Dict[Any]) -> None: - """Preprocess search parameters before making a request to the CDS API. - - This method is responsible for checking and updating the provided search parameters - to ensure that required parameters like 'productType', 'startTimeFromAscendingNode', - 'completionTimeFromAscendingNode', and 'geometry' are properly set. If not specified - in the input parameters, default values or values from the configuration are used. - - :param params: Search parameters to be preprocessed. - :type params: dict - """ - _dc_qs = params.get("_dc_qs", None) - if _dc_qs is not None: - # if available, update search params using datacube query-string - _dc_qp = geojson.loads(unquote_plus(unquote_plus(_dc_qs))) - if "/" in _dc_qp.get("date", ""): - ( - params["startTimeFromAscendingNode"], - params["completionTimeFromAscendingNode"], - ) = _dc_qp["date"].split("/") - elif _dc_qp.get("date", None): - params["startTimeFromAscendingNode"] = params[ - "completionTimeFromAscendingNode" - ] = _dc_qp["date"] - - if "/" in _dc_qp.get("area", ""): - params["geometry"] = _dc_qp["area"].split("/") - - non_none_params = {k: v for k, v in params.items() if v} - - # productType - dataset = params.get("dataset", None) - params["productType"] = non_none_params.get("productType", dataset) - - # dates - mission_start_dt = datetime.fromisoformat( - self.get_product_type_cfg( - "missionStartDate", DEFAULT_MISSION_START_DATE - ).replace( - "Z", "+00:00" - ) # before 3.11 - ) - - default_end_from_cfg = self.config.products.get(params["productType"], {}).get( - "_default_end_date", None - ) - default_end_str = ( - default_end_from_cfg - or ( - datetime.utcnow() - if params.get("startTimeFromAscendingNode") - else mission_start_dt + timedelta(days=1) - ).isoformat() - ) - - params["startTimeFromAscendingNode"] = non_none_params.get( - "startTimeFromAscendingNode", mission_start_dt.isoformat() - ) - params["completionTimeFromAscendingNode"] = non_none_params.get( - "completionTimeFromAscendingNode", default_end_str - ) - - # temporary _date parameter mixing start & end - end_date = isoparse(params["completionTimeFromAscendingNode"]) + timedelta( - days=-1 - ) - params[ - "_date" - ] = f"{params['startTimeFromAscendingNode']}/{end_date.isoformat()}" - - # geometry - if "geometry" in params: - params["geometry"] = get_geometry_from_various(geometry=params["geometry"]) - - def build_query_string( - self, product_type: str, **kwargs: Any - ) -> Tuple[Dict[str, Any], str]: - """Build The query string using the search parameters""" - qp, _ = BuildPostSearchResult.build_query_string( - self, product_type=product_type, **kwargs - ) - if "_date" in qp: - qp.update(qp.pop("_date", {})) - - return qp, urlencode(qp, doseq=True, quote_via=lambda x, *_args, **_kwargs: x) - - def do_search(self, *args: Any, **kwargs: Any) -> List[Dict[str, Any]]: - """Should perform the actual search request.""" - return [{}] - - def query( - self, - product_type: Optional[str] = None, - items_per_page: int = DEFAULT_ITEMS_PER_PAGE, - page: int = DEFAULT_PAGE, - count: bool = True, - **kwargs: Any, - ) -> Tuple[List[EOProduct], Optional[int]]: - """Build ready-to-download SearchResult""" - - self._preprocess_search_params(kwargs) - - return BuildPostSearchResult.query( - self, items_per_page=items_per_page, page=page, count=count, **kwargs - ) - - def _get_cds_client(self, **auth_dict: Any) -> cdsapi.Client: - """Returns cdsapi client.""" - # eodag logging info - eodag_verbosity = get_logging_verbose() - eodag_logger = logging.getLogger("eodag") - - client = cdsapi.Client( - # disable cdsapi default logging and handle it on eodag side - # until https://github.com/ecmwf/cdsapi/pull/47 is merged - quiet=True, - verify=True, - **auth_dict, - ) - - if eodag_verbosity is None or eodag_verbosity == 1: - client.logger.setLevel(logging.WARNING) - elif eodag_verbosity == 2: - client.logger.setLevel(logging.INFO) - elif eodag_verbosity == 3: - client.logger.setLevel(logging.DEBUG) - else: - client.logger.setLevel(logging.WARNING) - - if len(eodag_logger.handlers) > 0: - client.logger.addHandler(eodag_logger.handlers[0]) - - return client - - def authenticate(self) -> Dict[str, str]: - """Returns information needed for auth - - :returns: {key, url} dictionary - :rtype: dict - :raises: :class:`~eodag.utils.exceptions.AuthenticationError` - :raises: :class:`~eodag.utils.exceptions.RequestError` - """ - # Get credentials from eodag or using cds conf - uid = getattr(self.config, "credentials", {}).get("username", None) - api_key = getattr(self.config, "credentials", {}).get("password", None) - url = getattr(self.config, "api_endpoint", None) - if not all([uid, api_key, url]): - raise AuthenticationError("Missing authentication information") - - auth_dict: Dict[str, str] = {"key": f"{uid}:{api_key}", "url": url} - - client = self._get_cds_client(**auth_dict) - try: - client.status() - logger.debug("Connection checked on CDS API") - except requests.exceptions.ConnectionError as e: - logger.error(e) - raise RequestError(f"Could not connect to the CDS API '{url}'") - except requests.exceptions.HTTPError as e: - logger.error(e) - raise RequestError("The CDS API has returned an unexpected error") - - return auth_dict - - def _prepare_download_link(self, product): - """Update product download link with http url obtained from cds api""" - # get download request dict from product.location/downloadLink url query string - # separate url & parameters - query_str = "".join(urlsplit(product.location).fragment.split("?", 1)[1:]) - download_request = geojson.loads(query_str) - - date_range = download_request.pop("date_range", False) - if date_range: - date = download_request.pop("date") - start, end, *_ = date.split("/") - _start = datetime.fromisoformat(start) - _end = datetime.fromisoformat(end) - d_range = [d for d in datetime_range(_start, _end)] - download_request["year"] = [*{str(d.year) for d in d_range}] - download_request["month"] = [*{str(d.month) for d in d_range}] - download_request["day"] = [*{str(d.day) for d in d_range}] - - auth_dict = self.authenticate() - dataset_name = download_request.pop("dataset") - - # Send download request to CDS web API - logger.info( - "Request download on CDS API: dataset=%s, request=%s", - dataset_name, - download_request, - ) - try: - client = self._get_cds_client(**auth_dict) - result = client._api( - "%s/resources/%s" % (client.url, dataset_name), download_request, "POST" - ) - # update product download link through a new asset - product.assets["data"] = Asset(product, "data", {"href": result.location}) - except Exception as e: - logger.error(e) - raise DownloadError(e) - - def download( - self, - product: EOProduct, - auth: Optional[PluginConfig] = None, - progress_callback: Optional[ProgressCallback] = None, - wait: int = DEFAULT_DOWNLOAD_WAIT, - timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Any, - ) -> Optional[str]: - """Download data from providers using CDS API""" - product_format = product.properties.get("format", "grib") - product_extension = CDS_KNOWN_FORMATS.get(product_format, product_format) - - # Prepare download - fs_path, record_filename = self._prepare_download( - product, - progress_callback=progress_callback, - outputs_extension=f".{product_extension}", - **kwargs, - ) - - if not fs_path or not record_filename: - if fs_path: - product.location = path_to_uri(fs_path) - return fs_path - - self._prepare_download_link(product) - - try: - return super(CdsApi, self).download( - product, - progress_callback=progress_callback, - **kwargs, - ) - except Exception as e: - logger.error(e) - raise DownloadError(e) - - def _stream_download_dict( - self, - product: EOProduct, - auth: Optional[PluginConfig] = None, - progress_callback: Optional[ProgressCallback] = None, - wait: int = DEFAULT_DOWNLOAD_WAIT, - timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Union[str, bool, Dict[str, Any]], - ) -> Dict[str, Any]: - """Returns dictionnary of :class:`~fastapi.responses.StreamingResponse` keyword-arguments. - It contains a generator to streamed download chunks and the response headers.""" - - self._prepare_download_link(product) - return super(CdsApi, self)._stream_download_dict( - product, - auth=auth, - progress_callback=progress_callback, - wait=wait, - timeout=timeout, - **kwargs, - ) - - def download_all( - self, - products: SearchResult, - auth: Optional[PluginConfig] = None, - downloaded_callback: Optional[DownloadedCallback] = None, - progress_callback: Optional[ProgressCallback] = None, - wait: int = DEFAULT_DOWNLOAD_WAIT, - timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Any, - ): - """ - Download all using parent (base plugin) method - """ - return super(CdsApi, self).download_all( - products, - auth=auth, - downloaded_callback=downloaded_callback, - progress_callback=progress_callback, - wait=wait, - timeout=timeout, - **kwargs, - ) - - def discover_queryables( - self, **kwargs: Any - ) -> Optional[Dict[str, Annotated[Any, FieldInfo]]]: - """Fetch queryables list from provider using `discover_queryables` conf - - :param kwargs: additional filters for queryables (`productType` and other search - arguments) - :type kwargs: Any - :returns: fetched queryable parameters dict - :rtype: Optional[Dict[str, Annotated[Any, FieldInfo]]] - """ - constraints_file_url = getattr(self.config, "constraints_file_url", "") - if not constraints_file_url: - return {} - product_type = kwargs.pop("productType", None) - if not product_type: - return {} - - provider_product_type = self.config.products.get(product_type, {}).get( - "dataset", None - ) - user_provider_product_type = kwargs.pop("dataset", None) - if ( - user_provider_product_type - and user_provider_product_type != provider_product_type - ): - raise ValidationError( - f"Cannot change dataset from {provider_product_type} to {user_provider_product_type}" - ) - - non_empty_kwargs = {k: v for k, v in kwargs.items() if v} - - if "{" in constraints_file_url: - constraints_file_url = constraints_file_url.format( - dataset=provider_product_type - ) - constraints = fetch_constraints(constraints_file_url, self) - if not constraints: - return {} - - # defaults - default_queryables = self.get_defaults_as_queryables(product_type) - # remove dataset from queryables - default_queryables.pop("dataset", None) - - constraint_params: Dict[str, Dict[str, Set[Any]]] = {} - if len(kwargs) == 0: - # get values from constraints without additional filters - for constraint in constraints: - for key in constraint.keys(): - if key in constraint_params: - constraint_params[key]["enum"].update(constraint[key]) - else: - constraint_params[key] = {} - constraint_params[key]["enum"] = set(constraint[key]) - else: - # get values from constraints with additional filters - constraints_input_params = {k: v for k, v in non_empty_kwargs.items()} - constraint_params = get_constraint_queryables_with_additional_params( - constraints, constraints_input_params, self, product_type - ) - # query params that are not in constraints but might be default queryables - if len(constraint_params) == 1 and "not_available" in constraint_params: - not_queryables = set() - for constraint_param in constraint_params["not_available"]["enum"]: - param = CommonQueryables.get_queryable_from_alias(constraint_param) - if param in dict( - CommonQueryables.model_fields, **default_queryables - ): - non_empty_kwargs.pop(constraint_param) - else: - not_queryables.add(constraint_param) - if not_queryables: - raise ValidationError( - f"parameter(s) {str(not_queryables)} not queryable" - ) - else: - # get constraints again without common queryables - constraint_params = ( - get_constraint_queryables_with_additional_params( - constraints, non_empty_kwargs, self, product_type - ) - ) - - field_definitions = dict() - for json_param, json_mtd in constraint_params.items(): - param = ( - get_queryable_from_provider(json_param, self.config.metadata_mapping) - or json_param - ) - default = kwargs.get(param, None) - annotated_def = json_field_definition_to_python( - json_mtd, default_value=default, required=True - ) - field_definitions[param] = get_args(annotated_def) - - python_queryables = create_model("m", **field_definitions).model_fields - return dict(default_queryables, **model_fields_to_annotated(python_queryables)) diff --git a/eodag/plugins/apis/ecmwf.py b/eodag/plugins/apis/ecmwf.py index acc9146d5..ae08a2509 100644 --- a/eodag/plugins/apis/ecmwf.py +++ b/eodag/plugins/apis/ecmwf.py @@ -18,42 +18,47 @@ from __future__ import annotations import logging -from datetime import datetime -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple +import os +from datetime import datetime, timezone +from typing import TYPE_CHECKING import geojson from ecmwfapi import ECMWFDataServer, ECMWFService from ecmwfapi.api import APIException, Connection, get_apikey_values from eodag.plugins.apis.base import Api -from eodag.plugins.download.base import Download +from eodag.plugins.search import PreparedSearch from eodag.plugins.search.base import Search from eodag.plugins.search.build_search_result import BuildPostSearchResult -from eodag.rest.stac import DEFAULT_MISSION_START_DATE from eodag.utils import ( DEFAULT_DOWNLOAD_TIMEOUT, DEFAULT_DOWNLOAD_WAIT, - DEFAULT_ITEMS_PER_PAGE, - DEFAULT_PAGE, + DEFAULT_MISSION_START_DATE, get_geometry_from_various, path_to_uri, + sanitize, urlsplit, ) from eodag.utils.exceptions import AuthenticationError, DownloadError from eodag.utils.logging import get_logging_verbose if TYPE_CHECKING: + from typing import Any, Dict, List, Optional, Tuple, Union + + from requests.auth import AuthBase + from eodag.api.product import EOProduct from eodag.api.search_result import SearchResult from eodag.config import PluginConfig - from eodag.utils import DownloadedCallback, ProgressCallback + from eodag.types.download_args import DownloadConf + from eodag.utils import DownloadedCallback, ProgressCallback, Unpack logger = logging.getLogger("eodag.apis.ecmwf") ECMWF_MARS_KNOWN_FORMATS = {"grib": "grib", "netcdf": "nc"} -class EcmwfApi(Download, Api, BuildPostSearchResult): +class EcmwfApi(Api, BuildPostSearchResult): """A plugin that enables to build download-request and download data on ECMWF MARS. Builds a single ready-to-download :class:`~eodag.api.product._product.EOProduct` @@ -84,10 +89,7 @@ def do_search(self, *args: Any, **kwargs: Any) -> List[Dict[str, Any]]: def query( self, - product_type: Optional[str] = None, - items_per_page: int = DEFAULT_ITEMS_PER_PAGE, - page: int = DEFAULT_PAGE, - count: bool = True, + prep: PreparedSearch = PreparedSearch(), **kwargs: Any, ) -> Tuple[List[EOProduct], Optional[int]]: """Build ready-to-download SearchResult""" @@ -112,7 +114,7 @@ def query( if "completionTimeFromAscendingNode" not in kwargs: kwargs["completionTimeFromAscendingNode"] = getattr( self.config, "product_type_config", {} - ).get("missionEndDate", None) or datetime.utcnow().isoformat( + ).get("missionEndDate", None) or datetime.now(timezone.utc).isoformat( timespec="seconds" ) @@ -120,9 +122,7 @@ def query( if "geometry" in kwargs: kwargs["geometry"] = get_geometry_from_various(geometry=kwargs["geometry"]) - return BuildPostSearchResult.query( - self, items_per_page=items_per_page, page=page, count=count, **kwargs - ) + return BuildPostSearchResult.query(self, prep, **kwargs) def authenticate(self) -> Dict[str, Optional[str]]: """Check credentials and returns information needed for auth @@ -156,21 +156,23 @@ def authenticate(self) -> Dict[str, Optional[str]]: def download( self, product: EOProduct, - auth: Optional[PluginConfig] = None, + auth: Optional[Union[AuthBase, Dict[str, str]]] = None, progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Any, + **kwargs: Unpack[DownloadConf], ) -> Optional[str]: """Download data from ECMWF MARS""" product_format = product.properties.get("format", "grib") product_extension = ECMWF_MARS_KNOWN_FORMATS.get(product_format, product_format) + kwargs["outputs_extension"] = kwargs.get( + "outputs_extension", f".{product_extension}" + ) # Prepare download fs_path, record_filename = self._prepare_download( product, progress_callback=progress_callback, - outputs_extension=f".{product_extension}", **kwargs, ) @@ -179,6 +181,13 @@ def download( product.location = path_to_uri(fs_path) return fs_path + new_fs_path = os.path.join( + os.path.dirname(fs_path), sanitize(product.properties["title"]) + ) + if not os.path.isdir(new_fs_path): + os.makedirs(new_fs_path) + fs_path = os.path.join(new_fs_path, os.path.basename(fs_path)) + # get download request dict from product.location/downloadLink url query string # separate url & parameters download_request = geojson.loads(urlsplit(product.location).query) @@ -222,13 +231,12 @@ def download( fh.write(product.properties["downloadLink"]) logger.debug("Download recorded in %s", record_filename) - # do not try to extract or delete grib/netcdf + # do not try to extract a directory kwargs["extract"] = False product_path = self._finalize( - fs_path, + new_fs_path, progress_callback=progress_callback, - outputs_extension=f".{product_extension}", **kwargs, ) product.location = path_to_uri(product_path) @@ -237,12 +245,12 @@ def download( def download_all( self, products: SearchResult, - auth: Optional[PluginConfig] = None, + auth: Optional[Union[AuthBase, Dict[str, str]]] = None, downloaded_callback: Optional[DownloadedCallback] = None, progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Any, + **kwargs: Unpack[DownloadConf], ) -> List[str]: """ Download all using parent (base plugin) method @@ -256,3 +264,7 @@ def download_all( timeout=timeout, **kwargs, ) + + def clear(self) -> None: + """Clear search context""" + pass diff --git a/eodag/plugins/apis/usgs.py b/eodag/plugins/apis/usgs.py index b306f2e34..2e552f0bc 100644 --- a/eodag/plugins/apis/usgs.py +++ b/eodag/plugins/apis/usgs.py @@ -18,10 +18,11 @@ from __future__ import annotations import logging +import os import shutil import tarfile import zipfile -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, cast +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union, cast import requests from jsonpath_ng.ext import parse @@ -35,7 +36,7 @@ properties_from_json, ) from eodag.plugins.apis.base import Api -from eodag.plugins.download.base import Download +from eodag.plugins.search import PreparedSearch from eodag.utils import ( DEFAULT_DOWNLOAD_TIMEOUT, DEFAULT_DOWNLOAD_WAIT, @@ -52,17 +53,21 @@ NoMatchingProductType, NotAvailableError, RequestError, + ValidationError, ) if TYPE_CHECKING: + from requests.auth import AuthBase + from eodag.api.search_result import SearchResult from eodag.config import PluginConfig - from eodag.utils import DownloadedCallback + from eodag.types.download_args import DownloadConf + from eodag.utils import DownloadedCallback, Unpack logger = logging.getLogger("eodag.apis.usgs") -class UsgsApi(Download, Api): +class UsgsApi(Api): """A plugin that enables to query and download data on the USGS catalogues""" def __init__(self, provider: str, config: PluginConfig) -> None: @@ -71,7 +76,7 @@ def __init__(self, provider: str, config: PluginConfig) -> None: # Same method as in base.py, Search.__init__() # Prepare the metadata mapping # Do a shallow copy, the structure is flat enough for this to be sufficient - metas = DEFAULT_METADATA_MAPPING.copy() + metas: Dict[str, Any] = DEFAULT_METADATA_MAPPING.copy() # Update the defaults with the mapping value. This will add any new key # added by the provider mapping that is not in the default metadata. metas.update(self.config.metadata_mapping) @@ -98,25 +103,33 @@ def authenticate(self) -> None: except USGSAuthExpiredError: api.logout() continue - except USGSError: - raise AuthenticationError( - "Please check your USGS credentials." - ) from None + except USGSError as e: + if i == 0: + # `.usgs` API file key might be obsolete + # Remove it and try again + os.remove(api.TMPFILE) + continue + raise AuthenticationError("Please check your USGS credentials.") from e def query( self, - product_type: Optional[str] = None, - items_per_page: int = DEFAULT_ITEMS_PER_PAGE, - page: int = DEFAULT_PAGE, - count: bool = True, + prep: PreparedSearch = PreparedSearch(), **kwargs: Any, ) -> Tuple[List[EOProduct], Optional[int]]: """Search for data on USGS catalogues""" + page = prep.page if prep.page is not None else DEFAULT_PAGE + items_per_page = ( + prep.items_per_page + if prep.items_per_page is not None + else DEFAULT_ITEMS_PER_PAGE + ) product_type = kwargs.get("productType") if product_type is None: raise NoMatchingProductType( "Cannot search on USGS without productType specified" ) + if kwargs.get("sortBy"): + raise ValidationError("USGS does not support sorting feature") self.authenticate() @@ -230,11 +243,11 @@ def query( def download( self, product: EOProduct, - auth: Optional[PluginConfig] = None, + auth: Optional[Union[AuthBase, Dict[str, str]]] = None, progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Any, + **kwargs: Unpack[DownloadConf], ) -> Optional[str]: """Download data from USGS catalogues""" @@ -250,11 +263,11 @@ def download( product.product_type, self.config.products[GENERIC_PRODUCT_TYPE] # type: ignore ).get("outputs_extension", ".tar.gz"), ) + kwargs["outputs_extension"] = kwargs.get("outputs_extension", outputs_extension) fs_path, record_filename = self._prepare_download( product, progress_callback=progress_callback, - outputs_extension=outputs_extension, **kwargs, ) if not fs_path or not record_filename: @@ -308,13 +321,14 @@ def download( req_url = req_urls[0] progress_callback.reset() logger.debug(f"Downloading {req_url}") + ssl_verify = getattr(self.config, "ssl_verify", True) @self._download_retry(product, wait, timeout) def download_request( product: EOProduct, fs_path: str, progress_callback: ProgressCallback, - **kwargs: Any, + **kwargs: Unpack[DownloadConf], ) -> None: try: with requests.get( @@ -322,6 +336,7 @@ def download_request( stream=True, headers=USER_AGENT, timeout=wait * 60, + verify=ssl_verify, ) as stream: try: stream.raise_for_status() @@ -334,7 +349,9 @@ def download_request( error_message = str(e) raise NotAvailableError(error_message) else: - stream_size = int(stream.headers.get("content-length", 0)) + stream_size = ( + int(stream.headers.get("content-length", 0)) or None + ) progress_callback.reset(total=stream_size) with open(fs_path, "wb") as fhandle: for chunk in stream.iter_content(chunk_size=64 * 1024): @@ -357,13 +374,12 @@ def download_request( api.logout() # Check downloaded file format - if (outputs_extension == ".tar.gz" and tarfile.is_tarfile(fs_path)) or ( - outputs_extension == ".zip" and zipfile.is_zipfile(fs_path) - ): + if ( + kwargs["outputs_extension"] == ".tar.gz" and tarfile.is_tarfile(fs_path) + ) or (kwargs["outputs_extension"] == ".zip" and zipfile.is_zipfile(fs_path)): product_path = self._finalize( fs_path, progress_callback=progress_callback, - outputs_extension=outputs_extension, **kwargs, ) product.location = path_to_uri(product_path) @@ -396,12 +412,12 @@ def download_request( def download_all( self, products: SearchResult, - auth: Optional[PluginConfig] = None, + auth: Optional[Union[AuthBase, Dict[str, str]]] = None, downloaded_callback: Optional[DownloadedCallback] = None, progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Any, + **kwargs: Unpack[DownloadConf], ) -> List[str]: """ Download all using parent (base plugin) method diff --git a/eodag/plugins/authentication/aws_auth.py b/eodag/plugins/authentication/aws_auth.py index d1b9cf48e..7b7c73ff9 100644 --- a/eodag/plugins/authentication/aws_auth.py +++ b/eodag/plugins/authentication/aws_auth.py @@ -22,7 +22,7 @@ from eodag.plugins.authentication.base import Authentication if TYPE_CHECKING: - from botocore.client import S3 + from mypy_boto3_s3.client import S3Client from eodag.config import PluginConfig @@ -39,7 +39,7 @@ class AwsAuth(Authentication): will be skipped if AWS credentials are filled in eodag conf """ - s3_client: S3 + s3_client: S3Client def __init__(self, provider: str, config: PluginConfig) -> None: super(AwsAuth, self).__init__(provider, config) diff --git a/eodag/plugins/authentication/header.py b/eodag/plugins/authentication/header.py index fd263f670..2fed1502b 100644 --- a/eodag/plugins/authentication/header.py +++ b/eodag/plugins/authentication/header.py @@ -22,6 +22,7 @@ from requests.auth import AuthBase from eodag.plugins.authentication import Authentication +from eodag.utils.exceptions import MisconfiguredError if TYPE_CHECKING: from requests import PreparedRequest @@ -58,16 +59,40 @@ class HTTPHeaderAuth(Authentication): oh-my-another-user-input: YYY Expect an undefined behaviour if you use empty braces in header value strings. + + The plugin also accepts headers to be passed directly through credentials:: + + provider: + ... + auth: + plugin: HTTPHeaderAuth + credentials: + Authorization: "Something XXX" + X-Special-Header: "Fixed value" + X-Another-Special-Header: "YYY" + ... + ... """ - def authenticate(self) -> AuthBase: + def authenticate(self) -> HeaderAuth: """Authenticate""" self.validate_config_credentials() - headers = { - header: value.format(**self.config.credentials) - for header, value in self.config.headers.items() - } - return HeaderAuth(headers) + try: + headers = ( + { + header: value.format(**self.config.credentials) + for header, value in self.config.headers.items() + } + if getattr(self.config, "headers", None) + else self.config.credentials + ) + return HeaderAuth(headers) + except KeyError as e: + raise MisconfiguredError( + "The following credentials are missing for provider {}: {}".format( + self.provider, ", ".join(e.args) + ) + ) class HeaderAuth(AuthBase): diff --git a/eodag/plugins/authentication/keycloak.py b/eodag/plugins/authentication/keycloak.py index c0b77d45b..6a1a8b957 100644 --- a/eodag/plugins/authentication/keycloak.py +++ b/eodag/plugins/authentication/keycloak.py @@ -18,15 +18,16 @@ from __future__ import annotations import logging -from datetime import datetime -from typing import TYPE_CHECKING, Dict, Union +from typing import TYPE_CHECKING, Any, Dict import requests -from eodag.plugins.authentication import Authentication -from eodag.plugins.authentication.openid_connect import CodeAuthorizedAuth +from eodag.plugins.authentication.openid_connect import ( + CodeAuthorizedAuth, + OIDCRefreshTokenBase, +) from eodag.utils import HTTP_REQ_TIMEOUT, USER_AGENT -from eodag.utils.exceptions import AuthenticationError, MisconfiguredError +from eodag.utils.exceptions import MisconfiguredError, TimeOutError if TYPE_CHECKING: from requests.auth import AuthBase @@ -37,7 +38,7 @@ logger = logging.getLogger("eodag.auth.keycloak") -class KeycloakOIDCPasswordAuth(Authentication): +class KeycloakOIDCPasswordAuth(OIDCRefreshTokenBase): """Authentication plugin using Keycloak and OpenId Connect. This plugin request a token and use it through a query-string or a header. @@ -80,13 +81,9 @@ class KeycloakOIDCPasswordAuth(Authentication): GRANT_TYPE = "password" TOKEN_URL_TEMPLATE = "{auth_base_uri}/realms/{realm}/protocol/openid-connect/token" REQUIRED_PARAMS = ["auth_base_uri", "client_id", "client_secret", "token_provision"] - # already retrieved token store, to be used if authenticate() fails (OTP use-case) - retrieved_token: str = "" - token_info: Dict[str, Union[str, datetime]] = {} def __init__(self, provider: str, config: PluginConfig) -> None: super(KeycloakOIDCPasswordAuth, self).__init__(provider, config) - self.session = requests.Session() def validate_config_credentials(self) -> None: """Validate configured credentials""" @@ -105,51 +102,14 @@ def authenticate(self) -> AuthBase: """ self.validate_config_credentials() access_token = self._get_access_token() - self.retrieved_token = access_token + self.token_info["access_token"] = access_token return CodeAuthorizedAuth( - self.retrieved_token, + self.token_info["access_token"], self.config.token_provision, key=getattr(self.config, "token_qs_key", None), ) - def _get_access_token(self) -> str: - current_time = datetime.now() - if ( - not self.token_info - or ( - "refresh_token" in self.token_info - and (current_time - self.token_info["token_time"]).seconds - >= self.token_info["refresh_token_expiration"] - ) - or ( - "refresh_token" not in self.token_info - and (current_time - self.token_info["token_time"]).seconds - >= self.token_info["access_token_expiration"] - ) - ): - # Request new TOKEN on first attempt or if token expired - res = self._request_new_token() - self.token_info["token_time"] = current_time - self.token_info["access_token_expiration"] = res["expires_in"] - if "refresh_token" in res: - self.token_info["refresh_time"] = current_time - self.token_info["refresh_token_expiration"] = res["refresh_expires_in"] - self.token_info["refresh_token"] = res["refresh_token"] - return res["access_token"] - elif ( - "refresh_token" in self.token_info - and (current_time - self.token_info["refresh_time"]).seconds - >= self.token_info["access_token_expiration"] - ): - # Use refresh token - res = self._get_token_with_refresh_token() - self.token_info["refresh_token"] = res["refresh_token"] - self.token_info["refresh_time"] = current_time - return res["access_token"] - logger.debug("using already retrieved access token") - return self.retrieved_token - - def _request_new_token(self) -> Dict[str, str]: + def _request_new_token(self) -> Dict[str, Any]: logger.debug("fetching new access token") req_data = { "client_id": self.config.client_id, @@ -168,41 +128,10 @@ def _request_new_token(self) -> Dict[str, str]: timeout=HTTP_REQ_TIMEOUT, ) response.raise_for_status() + except requests.exceptions.Timeout as exc: + raise TimeOutError(exc, timeout=HTTP_REQ_TIMEOUT) from exc except requests.RequestException as e: - if self.retrieved_token: - # try using already retrieved token if authenticate() fails (OTP use-case) - if "access_token_expiration" in self.token_info: - return { - "access_token": self.retrieved_token, - "expires_in": self.token_info["access_token_expiration"], - } - else: - return {"access_token": self.retrieved_token, "expires_in": 0} - response_text = getattr(e.response, "text", "").strip() - # check if error is identified as auth_error in provider conf - auth_errors = getattr(self.config, "auth_error_code", [None]) - if not isinstance(auth_errors, list): - auth_errors = [auth_errors] - if ( - hasattr(e.response, "status_code") - and e.response.status_code in auth_errors - ): - raise AuthenticationError( - "HTTP Error %s returned, %s\nPlease check your credentials for %s" - % (e.response.status_code, response_text, self.provider) - ) - # other error - else: - import traceback as tb - - logger.error( - f"Provider {self.provider} returned {e.response.status_code}: {response_text}" - ) - raise AuthenticationError( - "Something went wrong while trying to get access token:\n{}".format( - tb.format_exc() - ) - ) + return self._request_new_token_error(e) return response.json() def _get_token_with_refresh_token(self) -> Dict[str, str]: diff --git a/eodag/plugins/authentication/oauth.py b/eodag/plugins/authentication/oauth.py index 2687796b1..8f31a3e5b 100644 --- a/eodag/plugins/authentication/oauth.py +++ b/eodag/plugins/authentication/oauth.py @@ -17,7 +17,7 @@ # limitations under the License. from __future__ import annotations -from typing import TYPE_CHECKING, Dict +from typing import TYPE_CHECKING, Dict, Optional from eodag.plugins.authentication.base import Authentication @@ -30,8 +30,8 @@ class OAuth(Authentication): def __init__(self, provider: str, config: PluginConfig) -> None: super(OAuth, self).__init__(provider, config) - self.access_key = None - self.secret_key = None + self.access_key: Optional[str] = None + self.secret_key: Optional[str] = None def authenticate(self) -> Dict[str, str]: """Authenticate""" diff --git a/eodag/plugins/authentication/openid_connect.py b/eodag/plugins/authentication/openid_connect.py index c6a7acf9e..8cf7e1b57 100644 --- a/eodag/plugins/authentication/openid_connect.py +++ b/eodag/plugins/authentication/openid_connect.py @@ -17,10 +17,12 @@ # limitations under the License. from __future__ import annotations +import logging import re import string +from datetime import datetime from random import SystemRandom -from typing import TYPE_CHECKING, Any, Dict, Optional +from typing import TYPE_CHECKING, Any, Dict, Optional, TypedDict import requests from lxml import etree @@ -28,7 +30,12 @@ from eodag.plugins.authentication import Authentication from eodag.utils import HTTP_REQ_TIMEOUT, USER_AGENT, parse_qs, repeatfunc, urlparse -from eodag.utils.exceptions import AuthenticationError, MisconfiguredError, TimeOutError +from eodag.utils.exceptions import ( + AuthenticationError, + MisconfiguredError, + RequestError, + TimeOutError, +) if TYPE_CHECKING: from requests import PreparedRequest, Response @@ -36,7 +43,132 @@ from eodag.config import PluginConfig -class OIDCAuthorizationCodeFlowAuth(Authentication): +logger = logging.getLogger("eodag.auth.openid_connect") + + +class OIDCRefreshTokenBase(Authentication): + """OIDC refresh token base class, to be used through specific OIDC flows plugins. + + Common mechanism to handle refresh token from all OIDC auth plugins. + """ + + class TokenInfo(TypedDict, total=False): + """Token infos""" + + refresh_token: str + refresh_time: datetime + token_time: datetime + access_token: str + access_token_expiration: float + refresh_token_expiration: float + + def __init__(self, provider: str, config: PluginConfig) -> None: + super(OIDCRefreshTokenBase, self).__init__(provider, config) + self.session = requests.Session() + # already retrieved token info store + self.token_info: OIDCRefreshTokenBase.TokenInfo = {} + + def _get_access_token(self) -> str: + current_time = datetime.now() + if ( + # No info: first time + not self.token_info + # Refresh token available but expired + or ( + "refresh_token" in self.token_info + and self.token_info["refresh_token_expiration"] > 0 + and (current_time - self.token_info["token_time"]).seconds + >= self.token_info["refresh_token_expiration"] + ) + # Refresh token *not* available and access token expired + or ( + "refresh_token" not in self.token_info + and (current_time - self.token_info["token_time"]).seconds + >= self.token_info["access_token_expiration"] + ) + ): + # Request *new* token on first attempt or if token expired + res = self._request_new_token() + self.token_info["token_time"] = current_time + self.token_info["access_token_expiration"] = float(res["expires_in"]) + if "refresh_token" in res: + self.token_info["refresh_time"] = current_time + self.token_info["refresh_token_expiration"] = float( + res["refresh_expires_in"] + ) + self.token_info["refresh_token"] = str(res["refresh_token"]) + return str(res["access_token"]) + + elif ( + # Refresh token available and access token expired + "refresh_token" in self.token_info + and (current_time - self.token_info["refresh_time"]).seconds + >= self.token_info["access_token_expiration"] + ): + # Use refresh token + res = self._get_token_with_refresh_token() + self.token_info["refresh_token"] = res["refresh_token"] + self.token_info["refresh_time"] = current_time + return res["access_token"] + + logger.debug("Using already retrieved access token") + return self.token_info["access_token"] + + def _request_new_token(self) -> Dict[str, str]: + """Fetch the access token with a new authentcation""" + raise NotImplementedError( + "Incomplete OIDC refresh token retrieval mechanism implementation" + ) + + def _request_new_token_error(self, e: requests.RequestException) -> Dict[str, str]: + """Handle RequestException raised by `self._request_new_token()`""" + if self.token_info.get("access_token"): + # try using already retrieved token if authenticate() fails (OTP use-case) + if "access_token_expiration" in self.token_info: + return { + "access_token": self.token_info["access_token"], + "expires_in": str(self.token_info["access_token_expiration"]), + } + else: + return { + "access_token": self.token_info["access_token"], + "expires_in": "0", + } + response_text = getattr(e.response, "text", "").strip() + # check if error is identified as auth_error in provider conf + auth_errors = getattr(self.config, "auth_error_code", [None]) + if not isinstance(auth_errors, list): + auth_errors = [auth_errors] + if ( + e.response + and hasattr(e.response, "status_code") + and e.response.status_code in auth_errors + ): + raise AuthenticationError( + "HTTP Error %s returned, %s\nPlease check your credentials for %s" + % (e.response.status_code, response_text, self.provider) + ) + # other error + else: + import traceback as tb + + logger.error( + f"Provider {self.provider} returned {getattr(e.response, 'status_code', '')}: {response_text}" + ) + raise AuthenticationError( + "Something went wrong while trying to get access token:\n{}".format( + tb.format_exc() + ) + ) + + def _get_token_with_refresh_token(self) -> Dict[str, str]: + """Fetch the access token with the refresh token""" + raise NotImplementedError( + "Incomplete OIDC refresh token retrieval mechanism implementation" + ) + + +class OIDCAuthorizationCodeFlowAuth(OIDCRefreshTokenBase): """Implement the authorization code flow of the OpenIDConnect authorization specification. The `OpenID Connect `_ specification @@ -109,6 +241,10 @@ class OIDCAuthorizationCodeFlowAuth(Authentication): # same rules as with user_consent_form_data additional_login_form_data: + # (optional) Key/value pairs of patterns/messages. If exchange_url contains the given pattern, the associated + message will be sent in an AuthenticationError + exchange_url_error_pattern: + # (optional) The OIDC provider's client secret of the eodag provider client_secret: @@ -123,6 +259,8 @@ class OIDCAuthorizationCodeFlowAuth(Authentication): # used in the query request token_qs_key: + # (optional) The key pointing to the refresh_token in the json response to the POST request to the token server + refresh_token_key: """ SCOPE = "openid" @@ -131,6 +269,10 @@ class OIDCAuthorizationCodeFlowAuth(Authentication): def __init__(self, provider: str, config: PluginConfig) -> None: super(OIDCAuthorizationCodeFlowAuth, self).__init__(provider, config) + + def validate_config_credentials(self) -> None: + """Validate configured credentials""" + super(OIDCAuthorizationCodeFlowAuth, self).validate_config_credentials() if getattr(self.config, "token_provision", None) not in ("qs", "header"): raise MisconfiguredError( 'Provider config parameter "token_provision" must be one of "qs" or "header"' @@ -142,33 +284,74 @@ def __init__(self, provider: str, config: PluginConfig) -> None: 'Provider config parameter "token_provision" with value "qs" must have ' '"token_qs_key" config parameter as well' ) - self.session = requests.Session() - def authenticate(self) -> AuthBase: + def authenticate(self) -> CodeAuthorizedAuth: """Authenticate""" + self.token_info["access_token"] = self._get_access_token() + + return CodeAuthorizedAuth( + self.token_info["access_token"], + self.config.token_provision, + key=getattr(self.config, "token_qs_key", None), + ) + + def _request_new_token(self) -> Dict[str, str]: + """Fetch the access token with a new authentcation""" + logger.debug("Fetching access token from %s", self.config.token_uri) state = self.compute_state() authentication_response = self.authenticate_user(state) exchange_url = authentication_response.url + for err_pattern, err_message in getattr( + self.config, "exchange_url_error_pattern", {} + ).items(): + if err_pattern in exchange_url: + raise AuthenticationError(err_message) + if not exchange_url.startswith(self.config.redirect_uri): + raise AuthenticationError( + f"Could not authenticate user with provider {self.provider}.", + "Please verify your credentials", + ) if self.config.user_consent_needed: user_consent_response = self.grant_user_consent(authentication_response) exchange_url = user_consent_response.url try: - token = self.exchange_code_for_token(exchange_url, state) + token_response = self.exchange_code_for_token(exchange_url, state) + token_response.raise_for_status() except requests.exceptions.Timeout as exc: raise TimeOutError(exc, timeout=HTTP_REQ_TIMEOUT) from exc - except Exception: - import traceback as tb - - raise AuthenticationError( - "Something went wrong while trying to get authorization token:\n{}".format( - tb.format_exc() - ) - ) - return CodeAuthorizedAuth( - token, - self.config.token_provision, - key=getattr(self.config, "token_qs_key", None), + except requests.RequestException as e: + return self._request_new_token_error(e) + return token_response.json() + + def _get_token_with_refresh_token(self) -> Dict[str, str]: + """Fetch the access token with the refresh token""" + logger.debug( + "Fetching access token with refresh token from %s", self.config.token_uri ) + token_data: Dict[str, Any] = { + "refresh_token": self.token_info["refresh_token"], + "grant_type": "refresh_token", + } + token_data = self._prepare_token_post_data(token_data) + post_request_kwargs: Any = { + self.config.token_exchange_post_data_method: token_data + } + try: + token_response = self.session.post( + self.config.token_uri, + timeout=HTTP_REQ_TIMEOUT, + **post_request_kwargs, + ) + token_response.raise_for_status() + except requests.exceptions.Timeout as exc: + raise TimeOutError(exc, timeout=HTTP_REQ_TIMEOUT) from exc + except requests.RequestException as exc: + logger.error( + "Could not fetch access token with refresh token, executing new token request, error: %s", + getattr(exc.response, "text", ""), + ) + return self._request_new_token() + return token_response.json() def authenticate_user(self, state: str) -> Response: """Authenticate user""" @@ -188,7 +371,9 @@ def authenticate_user(self, state: str) -> Response: ) login_document = etree.HTML(authorization_response.text) - login_form = login_document.xpath(self.config.login_form_xpath)[0] + login_forms = login_document.xpath(self.config.login_form_xpath) + login_form = login_forms[0] + # Get the form data to pass to the login form from config or from the login form login_data = { key: self._constant_or_xpath_extracted(value, login_form) @@ -198,14 +383,23 @@ def authenticate_user(self, state: str) -> Response: } # Add the credentials login_data.update(self.config.credentials) - auth_uri = getattr(self.config, "authentication_uri", None) + # Retrieve the authentication_uri from the login form if so configured if self.config.authentication_uri_source == "login-form": # Given that the login_form_xpath resolves to an HTML element, if suffices to add '/@action' to get # the value of its action attribute to this xpath auth_uri = login_form.xpath( self.config.login_form_xpath.rstrip("/") + "/@action" - )[0] + ) + if not auth_uri or not auth_uri[0]: + raise RequestError( + f"Could not get auth_uri from {self.config.login_form_xpath}" + ) + auth_uri = auth_uri[0] + else: + auth_uri = getattr(self.config, "authentication_uri", None) + if not auth_uri: + raise MisconfiguredError("authentication_uri is missing") return self.session.post( auth_uri, data=login_data, headers=USER_AGENT, timeout=HTTP_REQ_TIMEOUT ) @@ -228,40 +422,49 @@ def grant_user_consent(self, authentication_response: Response) -> Response: timeout=HTTP_REQ_TIMEOUT, ) - def exchange_code_for_token(self, authorized_url: str, state: str) -> str: - """Get exchange code for token""" - qs = parse_qs(urlparse(authorized_url).query) - if qs["state"][0] != state: - raise AuthenticationError( - "The state received in the authorized url does not match initially computed state" - ) - code = qs["code"][0] - token_exchange_data: Dict[str, Any] = { - "redirect_uri": self.config.redirect_uri, - "client_id": self.config.client_id, - "code": code, - "state": state, - } + def _prepare_token_post_data(self, token_data: Dict[str, Any]) -> Dict[str, Any]: + """Prepare the common data to post to the token URI""" + token_data.update( + { + "redirect_uri": self.config.redirect_uri, + "client_id": self.config.client_id, + } + ) # If necessary, change the keys of the form data that will be passed to the token exchange POST request custom_token_exchange_params = getattr(self.config, "token_exchange_params", {}) if custom_token_exchange_params: - token_exchange_data[ - custom_token_exchange_params["redirect_uri"] - ] = token_exchange_data.pop("redirect_uri") - token_exchange_data[ - custom_token_exchange_params["client_id"] - ] = token_exchange_data.pop("client_id") + token_data[custom_token_exchange_params["redirect_uri"]] = token_data.pop( + "redirect_uri" + ) + token_data[custom_token_exchange_params["client_id"]] = token_data.pop( + "client_id" + ) # If the client_secret is known, the token exchange request must be authenticated with a BASIC Auth, using the # client_id and client_secret as username and password respectively if getattr(self.config, "client_secret", None): - token_exchange_data.update( + token_data.update( { "auth": (self.config.client_id, self.config.client_secret), - "grant_type": "authorization_code", "client_secret": self.config.client_secret, } ) - post_request_kwargs = { + return token_data + + def exchange_code_for_token(self, authorized_url: str, state: str) -> Response: + """Get exchange code for token""" + qs = parse_qs(urlparse(authorized_url).query) + if qs["state"][0] != state: + raise AuthenticationError( + "The state received in the authorized url does not match initially computed state" + ) + code = qs["code"][0] + token_exchange_data: Dict[str, Any] = { + "code": code, + "state": state, + "grant_type": "authorization_code", + } + token_exchange_data = self._prepare_token_post_data(token_exchange_data) + post_request_kwargs: Any = { self.config.token_exchange_post_data_method: token_exchange_data } r = self.session.post( @@ -270,7 +473,7 @@ def exchange_code_for_token(self, authorized_url: str, state: str) -> str: timeout=HTTP_REQ_TIMEOUT, **post_request_kwargs, ) - return r.json()[self.config.token_key] + return r def _constant_or_xpath_extracted( self, value: str, form_element: Any @@ -279,7 +482,7 @@ def _constant_or_xpath_extracted( if not match: return value value_from_xpath = form_element.xpath( - self.CONFIG_XPATH_REGEX.match(value).groupdict("xpath_value") + self.CONFIG_XPATH_REGEX.match(value).groupdict("xpath_value")["xpath_value"] ) if len(value_from_xpath) == 1: return value_from_xpath[0] @@ -318,4 +521,11 @@ def __call__(self, request: PreparedRequest) -> PreparedRequest: elif self.where == "header": request.headers["Authorization"] = "Bearer {}".format(self.token) + logger.debug( + re.sub( + r"'Bearer [^']+'", + r"'Bearer ***'", + f"PreparedRequest: {request.__dict__}", + ) + ) return request diff --git a/eodag/plugins/authentication/qsauth.py b/eodag/plugins/authentication/qsauth.py index 724fdf64e..26c923679 100644 --- a/eodag/plugins/authentication/qsauth.py +++ b/eodag/plugins/authentication/qsauth.py @@ -67,6 +67,8 @@ def authenticate(self) -> AuthBase: auth = QueryStringAuth(**self.config.credentials) auth_uri = getattr(self.config, "auth_uri", None) + ssl_verify = getattr(self.config, "ssl_verify", True) + if auth_uri: try: response = requests.get( @@ -74,6 +76,7 @@ def authenticate(self) -> AuthBase: timeout=HTTP_REQ_TIMEOUT, headers=USER_AGENT, auth=auth, + verify=ssl_verify, ) response.raise_for_status() except requests.exceptions.Timeout as exc: diff --git a/eodag/plugins/authentication/sas_auth.py b/eodag/plugins/authentication/sas_auth.py index c0d0e61b0..a40488d67 100644 --- a/eodag/plugins/authentication/sas_auth.py +++ b/eodag/plugins/authentication/sas_auth.py @@ -43,11 +43,13 @@ def __init__( auth_uri: str, signed_url_key: str, headers: Optional[Dict[str, str]] = None, + ssl_verify: bool = True, ) -> None: self.auth_uri = auth_uri self.signed_url_key = signed_url_key self.headers = headers self.signed_urls: Dict[str, str] = {} + self.ssl_verify = ssl_verify def __call__(self, request: PreparedRequest) -> PreparedRequest: """Perform the actual authentication""" @@ -63,7 +65,10 @@ def __call__(self, request: PreparedRequest) -> PreparedRequest: logger.debug(f"Signed URL request: {req_signed_url}") try: response = requests.get( - req_signed_url, headers=self.headers, timeout=HTTP_REQ_TIMEOUT + req_signed_url, + headers=self.headers, + timeout=HTTP_REQ_TIMEOUT, + verify=self.ssl_verify, ) response.raise_for_status() signed_url = response.json().get(self.signed_url_key) @@ -95,6 +100,7 @@ def authenticate(self) -> AuthBase: # update headers with subscription key if exists apikey = getattr(self.config, "credentials", {}).get("apikey", None) + ssl_verify = getattr(self.config, "ssl_verify", True) if apikey: headers_update = format_dict_items(self.config.headers, apikey=apikey) headers.update(headers_update) @@ -103,4 +109,5 @@ def authenticate(self) -> AuthBase: auth_uri=self.config.auth_uri, signed_url_key=self.config.signed_url_key, headers=headers, + ssl_verify=ssl_verify, ) diff --git a/eodag/plugins/authentication/token.py b/eodag/plugins/authentication/token.py index 12250f448..165751eda 100644 --- a/eodag/plugins/authentication/token.py +++ b/eodag/plugins/authentication/token.py @@ -46,6 +46,7 @@ class TokenAuth(Authentication): def __init__(self, provider: str, config: PluginConfig) -> None: super(TokenAuth, self).__init__(provider, config) self.token = "" + self.refresh_token = "" def validate_config_credentials(self) -> None: """Validate configured credentials""" @@ -55,9 +56,9 @@ def validate_config_credentials(self) -> None: self.config.auth_uri = self.config.auth_uri.format( **self.config.credentials ) - # format headers if needed + # format headers if needed (and accepts {token} to be formatted later) self.config.headers = { - header: value.format(**self.config.credentials) + header: value.format(**{"token": "{token}", **self.config.credentials}) for header, value in getattr(self.config, "headers", {}).items() } except KeyError as e: @@ -69,65 +70,108 @@ def authenticate(self) -> AuthBase: """Authenticate""" self.validate_config_credentials() - # append headers to req if some are specified in config - req_kwargs: Dict[str, Any] = ( - {"headers": dict(self.config.headers, **USER_AGENT)} - if hasattr(self.config, "headers") - else {"headers": USER_AGENT} - ) s = requests.Session() - retries = Retry( - total=3, backoff_factor=2, status_forcelist=[401, 429, 500, 502, 503, 504] - ) - s.mount(self.config.auth_uri, HTTPAdapter(max_retries=retries)) try: # First get the token - if getattr(self.config, "request_method", "POST") == "POST": - response = s.post( - self.config.auth_uri, - data=self.config.credentials, - timeout=HTTP_REQ_TIMEOUT, - **req_kwargs, - ) - else: - cred = self.config.credentials - response = s.get( - self.config.auth_uri, - auth=(cred["username"], cred["password"]), - timeout=HTTP_REQ_TIMEOUT, - **req_kwargs, - ) + response = self._token_request(session=s) response.raise_for_status() except requests.exceptions.Timeout as exc: raise TimeOutError(exc, timeout=HTTP_REQ_TIMEOUT) from exc except RequestException as e: response_text = getattr(e.response, "text", "").strip() - raise AuthenticationError( - f"Could no get authentication token: {str(e)}, {response_text}" - ) + # check if error is identified as auth_error in provider conf + auth_errors = getattr(self.config, "auth_error_code", [None]) + if not isinstance(auth_errors, list): + auth_errors = [auth_errors] + if ( + e.response is not None + and getattr(e.response, "status_code", None) + and e.response.status_code in auth_errors + ): + raise AuthenticationError( + f"HTTP Error {e.response.status_code} returned, {response_text}\n" + f"Please check your credentials for {self.provider}" + ) + # other error + else: + raise AuthenticationError( + f"Could no get authentication token: {str(e)}, {response_text}" + ) else: if getattr(self.config, "token_type", "text") == "json": token = response.json()[self.config.token_key] else: token = response.text - headers = self._get_headers(token) self.token = token + if getattr(self.config, "refresh_token_key", None): + self.refresh_token = response.json()[self.config.refresh_token_key] + if not hasattr(self.config, "headers"): + raise MisconfiguredError(f"Missing headers configuration for {self}") # Return auth class set with obtained token - return RequestsTokenAuth(token, "header", headers=headers) - - def _get_headers(self, token: str) -> Dict[str, str]: - headers = self.config.headers - if "Authorization" in headers and "$" in headers["Authorization"]: - headers["Authorization"] = headers["Authorization"].replace("$token", token) - if ( - self.token - and token != self.token - and self.token in headers["Authorization"] - ): - headers["Authorization"] = headers["Authorization"].replace( - self.token, token + return RequestsTokenAuth( + token, "header", headers=getattr(self.config, "headers", {}) ) - return headers + + def _token_request( + self, + session: requests.Session, + ) -> requests.Response: + retries = Retry( + total=3, + backoff_factor=2, + status_forcelist=[401, 429, 500, 502, 503, 504], + ) + + # append headers to req if some are specified in config + req_kwargs: Dict[str, Any] = { + "headers": dict(self.config.headers, **USER_AGENT) + } + + if self.refresh_token: + logger.debug("fetching access token with refresh token") + session.mount(self.config.refresh_uri, HTTPAdapter(max_retries=retries)) + try: + response = session.post( + self.config.refresh_uri, + data={"refresh_token": self.refresh_token}, + timeout=HTTP_REQ_TIMEOUT, + **req_kwargs, + ) + response.raise_for_status() + return response + except requests.exceptions.HTTPError as e: + logger.debug(getattr(e.response, "text", "").strip()) + + logger.debug("fetching access token from %s", self.config.auth_uri) + # append headers to req if some are specified in config + session.mount(self.config.auth_uri, HTTPAdapter(max_retries=retries)) + method = getattr(self.config, "request_method", "POST") + + # send credentials also as data in POST requests + if method == "POST": + # append req_data to credentials if specified in config + req_kwargs["data"] = dict( + getattr(self.config, "req_data", {}), **self.config.credentials + ) + + # credentials as auth tuple if possible + req_kwargs["auth"] = ( + ( + self.config.credentials["username"], + self.config.credentials["password"], + ) + if all( + k in self.config.credentials.keys() for k in ["username", "password"] + ) + else None + ) + + return session.request( + method=method, + url=self.config.auth_uri, + timeout=HTTP_REQ_TIMEOUT, + **req_kwargs, + ) class RequestsTokenAuth(AuthBase): @@ -165,5 +209,7 @@ def __call__(self, request: PreparedRequest) -> PreparedRequest: ) ) elif self.where == "header": - request.headers["Authorization"] = "Bearer {}".format(self.token) + request.headers["Authorization"] = request.headers.get( + "Authorization", "Bearer {token}" + ).format(token=self.token) return request diff --git a/eodag/plugins/authentication/token_exchange.py b/eodag/plugins/authentication/token_exchange.py new file mode 100644 index 000000000..a91b623fe --- /dev/null +++ b/eodag/plugins/authentication/token_exchange.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +# Copyright 2024, CS GROUP - France, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from __future__ import annotations + +import logging + +import requests +from requests import RequestException + +from eodag.config import PluginConfig +from eodag.plugins.authentication import Authentication +from eodag.plugins.authentication.openid_connect import ( + CodeAuthorizedAuth, + OIDCAuthorizationCodeFlowAuth, +) +from eodag.utils import HTTP_REQ_TIMEOUT, USER_AGENT +from eodag.utils.exceptions import AuthenticationError, MisconfiguredError, TimeOutError + +logger = logging.getLogger("eodag.auth.token_exchange") + + +class OIDCTokenExchangeAuth(Authentication): + """Token exchange implementation using + :class:`~eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth` token as subject. + + The configuration keys of this plugin are as follows (they have no defaults):: + + # (mandatory) The full OIDCAuthorizationCodeFlowAuth plugin configuration used to retrieve subject token + subject: + + # (mandatory) Identifies the issuer of the subject_token + subject_issuer: + + # (mandatory) The url to query to get the authorized token + token_uri: + + # (mandatory) The OIDC provider's client ID of the eodag provider + client_id: + + # (mandatory) This parameter specifies the target client you want the new token minted for. + audience: + + # (mandatory) The key pointing to the token in the json response to the POST request to the token server + token_key: + """ + + GRANT_TYPE = "urn:ietf:params:oauth:grant-type:token-exchange" + SUBJECT_TOKEN_TYPE = "urn:ietf:params:oauth:token-type:access_token" + REQUIRED_KEYS = [ + "subject", + "subject_issuer", + "token_uri", + "client_id", + "audience", + "token_key", + ] + + def __init__(self, provider: str, config: PluginConfig) -> None: + super(OIDCTokenExchangeAuth, self).__init__(provider, config) + for required_key in self.REQUIRED_KEYS: + if getattr(self.config, required_key, None) is None: + raise MisconfiguredError( + f"Missing required entry for OIDCTokenExchangeAuth configuration: {required_key}" + ) + self.subject = OIDCAuthorizationCodeFlowAuth( + provider, + PluginConfig.from_mapping( + { + "credentials": getattr(self.config, "credentials", {}), + **self.config.subject, + } + ), + ) + + def authenticate(self) -> CodeAuthorizedAuth: + """Authenticate""" + logger.debug("Getting subject auth token") + subject_auth = self.subject.authenticate() + auth_data = { + "grant_type": self.GRANT_TYPE, + "subject_token": subject_auth.token, + "subject_issuer": self.config.subject_issuer, + "subject_token_type": self.SUBJECT_TOKEN_TYPE, + "client_id": self.config.client_id, + "audience": self.config.audience, + } + logger.debug("Getting target auth token") + try: + auth_response = self.subject.session.post( + self.config.token_uri, + data=auth_data, + headers=USER_AGENT, + timeout=HTTP_REQ_TIMEOUT, + ) + auth_response.raise_for_status() + except requests.exceptions.Timeout as exc: + raise TimeOutError(exc, timeout=HTTP_REQ_TIMEOUT) from exc + except RequestException as exc: + raise AuthenticationError("Could no get authentication token") from exc + finally: + self.subject.session.close() + + token = auth_response.json()[self.config.token_key] + + return CodeAuthorizedAuth(token, where="header") diff --git a/eodag/plugins/download/aws.py b/eodag/plugins/download/aws.py index a7a42bf04..ce1f4deff 100644 --- a/eodag/plugins/download/aws.py +++ b/eodag/plugins/download/aws.py @@ -43,6 +43,7 @@ from botocore.exceptions import ClientError, ProfileNotFound from botocore.handlers import disable_signing from lxml import etree +from requests.auth import AuthBase from stream_zip import ZIP_AUTO, stream_zip from eodag.api.product.metadata_mapping import ( @@ -57,6 +58,7 @@ HTTP_REQ_TIMEOUT, USER_AGENT, ProgressCallback, + StreamResponse, flatten_top_directories, get_bucket_name_and_prefix, path_to_uri, @@ -66,6 +68,7 @@ from eodag.utils.exceptions import ( AuthenticationError, DownloadError, + MisconfiguredError, NotAvailableError, TimeOutError, ) @@ -76,7 +79,8 @@ from eodag.api.product import EOProduct from eodag.api.search_result import SearchResult from eodag.config import PluginConfig - from eodag.utils import DownloadedCallback + from eodag.types.download_args import DownloadConf + from eodag.utils import DownloadedCallback, Unpack logger = logging.getLogger("eodag.download.aws") @@ -230,23 +234,23 @@ def __init__(self, provider: str, config: PluginConfig) -> None: def download( self, product: EOProduct, - auth: Optional[PluginConfig] = None, + auth: Optional[Union[AuthBase, Dict[str, str]]] = None, progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Union[str, bool, Dict[str, Any]], - ) -> str: + **kwargs: Unpack[DownloadConf], + ) -> Optional[str]: """Download method for AWS S3 API. The product can be downloaded as it is, or as SAFE-formatted product. SAFE-build is configured for a given provider and product type. If the product title is configured to be updated during download and SAFE-formatted, its destination path will be: - `{outputs_prefix}/{title}/{updated_title}.SAFE` + `{outputs_prefix}/{title}` :param product: The EO product to download :type product: :class:`~eodag.api.product._product.EOProduct` - :param auth: (optional) The configuration of a plugin of type Authentication + :param auth: (optional) authenticated object :type auth: Union[AuthBase, Dict[str, str]] :param progress_callback: (optional) A method or a callable object which takes a current size and a maximum @@ -262,6 +266,11 @@ def download( :returns: The absolute path to the downloaded product in the local filesystem :rtype: str """ + if auth is None: + auth = {} + if isinstance(auth, AuthBase): + raise MisconfiguredError("Please use AwsAuth plugin with AwsDownload") + if progress_callback is None: logger.info( "Progress bar unavailable, please call product.download() instead of plugin.download()" @@ -272,7 +281,7 @@ def download( product_local_path, record_filename = self._download_preparation( product, progress_callback=progress_callback, **kwargs ) - if not record_filename: + if not record_filename or not product_local_path: return product_local_path product_conf = getattr(self.config, "products", {}).get( @@ -290,7 +299,7 @@ def download( # product conf overrides provider conf for "flatten_top_dirs" flatten_top_dirs = product_conf.get( - "flatten_top_dirs", getattr(self.config, "flatten_top_dirs", False) + "flatten_top_dirs", getattr(self.config, "flatten_top_dirs", True) ) # xtra metadata needed for SAFE product @@ -328,7 +337,7 @@ def download( product, ) - total_size = sum([p.size for p in unique_product_chunks]) + total_size = sum([p.size for p in unique_product_chunks]) or None # download progress_callback.reset(total=total_size) @@ -384,8 +393,11 @@ def download( return product_local_path def _download_preparation( - self, product: EOProduct, progress_callback: ProgressCallback, **kwargs: Any - ) -> Tuple[str, Optional[str]]: + self, + product: EOProduct, + progress_callback: ProgressCallback, + **kwargs: Unpack[DownloadConf], + ) -> Tuple[Optional[str], Optional[str]]: """ preparation for the download: - check if file was already downloaded @@ -427,6 +439,9 @@ def _configure_safe_build(self, build_safe: bool, product: EOProduct): product_conf = getattr(self.config, "products", {}).get( product.product_type, {} ) + ssl_verify = getattr(self.config, "ssl_verify", True) + timeout = getattr(self.config, "timeout", HTTP_REQ_TIMEOUT) + if build_safe and "fetch_metadata" in product_conf.keys(): fetch_format = product_conf["fetch_metadata"]["fetch_format"] update_metadata = product_conf["fetch_metadata"]["update_metadata"] @@ -436,10 +451,13 @@ def _configure_safe_build(self, build_safe: bool, product: EOProduct): logger.info("Fetching extra metadata from %s" % fetch_url) try: resp = requests.get( - fetch_url, headers=USER_AGENT, timeout=HTTP_REQ_TIMEOUT + fetch_url, + headers=USER_AGENT, + timeout=timeout, + verify=ssl_verify, ) except requests.exceptions.Timeout as exc: - raise TimeOutError(exc, timeout=HTTP_REQ_TIMEOUT) from exc + raise TimeOutError(exc, timeout=timeout) from exc update_metadata = mtd_cfg_as_conversion_and_querypath(update_metadata) if fetch_format == "json": json_resp = resp.json() @@ -454,7 +472,10 @@ def _configure_safe_build(self, build_safe: bool, product: EOProduct): ) def _get_bucket_names_and_prefixes( - self, product: EOProduct, asset_filter: str, ignore_assets: bool + self, + product: EOProduct, + asset_filter: Optional[str] = None, + ignore_assets: Optional[bool] = False, ) -> List[Tuple[str, Optional[str]]]: """ retrieves the bucket names and path prefixes for the assets @@ -483,7 +504,7 @@ def _get_bucket_names_and_prefixes( rf"No asset key matching re.fullmatch(r'{asset_filter}') was found in {product}" ) else: - assets_values = getattr(product, "assets", {}).values() + assets_values = product.assets.values() bucket_names_and_prefixes = [] for complementary_url in assets_values: @@ -501,8 +522,8 @@ def _get_bucket_names_and_prefixes( def _do_authentication( self, bucket_names_and_prefixes: List[Tuple[str, Optional[str]]], - auth: Dict[str, str], - ) -> Tuple[Dict[str, Any], ResourceCollection[Any]]: + auth: Optional[Union[AuthBase, Dict[str, str]]] = None, + ) -> Tuple[Dict[str, Any], ResourceCollection]: """ authenticates with s3 and retrieves the available objects raises an error when authentication is not possible @@ -513,11 +534,19 @@ def _do_authentication( :return: authenticated objects per bucket, list of available objects :rtype: Tuple[Dict[str, Any], ResourceCollection[Any]] """ + if not isinstance(auth, (dict, type(None))): + raise AuthenticationError( + f"Incompatible authentication information, expected dict or None, got {type(auth)}" + ) + if auth is None: + auth = {} authenticated_objects: Dict[str, Any] = {} auth_error_messages: Set[str] = set() for _, pack in enumerate(bucket_names_and_prefixes): try: bucket_name, prefix = pack + if not prefix: + continue if bucket_name not in authenticated_objects: # get Prefixes longest common base path common_prefix = "" @@ -532,7 +561,7 @@ def _do_authentication( [ p for b, p in bucket_names_and_prefixes - if b == bucket_name and common_prefix in p + if p and b == bucket_name and common_prefix in p ] ) < prefixes_in_bucket @@ -566,7 +595,7 @@ def _get_unique_products( self, bucket_names_and_prefixes: List[Tuple[str, Optional[str]]], authenticated_objects: Dict[str, Any], - asset_filter: str, + asset_filter: Optional[str], ignore_assets: bool, product: EOProduct, ) -> Set[Any]: @@ -626,12 +655,12 @@ def _raise_if_auth_error(self, exception: ClientError) -> None: def _stream_download_dict( self, product: EOProduct, - auth: Optional[PluginConfig] = None, + auth: Optional[Union[AuthBase, Dict[str, str]]] = None, progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Union[str, bool, Dict[str, Any]], - ) -> Dict[str, Any]: + **kwargs: Unpack[DownloadConf], + ) -> StreamResponse: r""" Returns dictionnary of :class:`~fastapi.responses.StreamingResponse` keyword-arguments. It contains a generator to streamed download chunks and the response headers. @@ -725,11 +754,11 @@ def _stream_download_dict( if assets_values[0].get("type", None): headers["content-type"] = assets_values[0]["type"] - return dict( + return StreamResponse( content=chain(iter([first_chunks_tuple]), chunks_tuples), headers=headers, ) - return dict( + return StreamResponse( content=stream_zip(chunks_tuples), media_type="application/zip", headers={ @@ -779,7 +808,7 @@ def get_chunk_parts( product.product_type, {} ) flatten_top_dirs = product_conf.get( - "flatten_top_dirs", getattr(self.config, "flatten_top_dirs", False) + "flatten_top_dirs", getattr(self.config, "flatten_top_dirs", True) ) common_path = "" if flatten_top_dirs: @@ -1154,8 +1183,7 @@ def get_chunk_dest_path( # S2 L2A Tile files ----------------------------------------------- if matched := S2L2A_TILE_IMG_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/GRANULE/%s/IMG_DATA/R%s/T%s%s%s_%s_%s_%s.jp2" % ( - product.properties["title"], + product_path = "GRANULE/%s/IMG_DATA/R%s/T%s%s%s_%s_%s_%s.jp2" % ( found_dict["num"], found_dict["res"], found_dict["tile1"], @@ -1167,16 +1195,14 @@ def get_chunk_dest_path( ) elif matched := S2L2A_TILE_AUX_DIR_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/GRANULE/%s/AUX_DATA/%s" % ( - product.properties["title"], + product_path = "GRANULE/%s/AUX_DATA/%s" % ( found_dict["num"], found_dict["file"], ) # S2 L2A QI Masks elif matched := S2_TILE_QI_MSK_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/GRANULE/%s/QI_DATA/MSK_%sPRB_%s" % ( - product.properties["title"], + product_path = "GRANULE/%s/QI_DATA/MSK_%sPRB_%s" % ( found_dict["num"], found_dict["file_base"], found_dict["file_suffix"], @@ -1184,8 +1210,7 @@ def get_chunk_dest_path( # S2 L2A QI PVI elif matched := S2_TILE_QI_PVI_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/GRANULE/%s/QI_DATA/%s_%s_PVI.jp2" % ( - product.properties["title"], + product_path = "GRANULE/%s/QI_DATA/%s_%s_PVI.jp2" % ( found_dict["num"], title_part3, title_date1, @@ -1193,15 +1218,13 @@ def get_chunk_dest_path( # S2 Tile files --------------------------------------------------- elif matched := S2_TILE_PREVIEW_DIR_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/GRANULE/%s/preview/%s" % ( - product.properties["title"], + product_path = "GRANULE/%s/preview/%s" % ( found_dict["num"], found_dict["file"], ) elif matched := S2_TILE_IMG_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/GRANULE/%s/IMG_DATA/T%s%s%s_%s_%s" % ( - product.properties["title"], + product_path = "GRANULE/%s/IMG_DATA/T%s%s%s_%s_%s" % ( found_dict["num"], found_dict["tile1"], found_dict["tile2"], @@ -1211,97 +1234,74 @@ def get_chunk_dest_path( ) elif matched := S2_TILE_THUMBNAIL_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/GRANULE/%s/%s" % ( - product.properties["title"], + product_path = "GRANULE/%s/%s" % ( found_dict["num"], found_dict["file"], ) elif matched := S2_TILE_MTD_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/GRANULE/%s/MTD_TL.xml" % ( - product.properties["title"], - found_dict["num"], - ) + product_path = "GRANULE/%s/MTD_TL.xml" % found_dict["num"] elif matched := S2_TILE_AUX_DIR_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/GRANULE/%s/AUX_DATA/AUX_%s" % ( - product.properties["title"], + product_path = "GRANULE/%s/AUX_DATA/AUX_%s" % ( found_dict["num"], found_dict["file"], ) elif matched := S2_TILE_QI_DIR_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/GRANULE/%s/QI_DATA/%s" % ( - product.properties["title"], + product_path = "GRANULE/%s/QI_DATA/%s" % ( found_dict["num"], found_dict["file"], ) # S2 Tiles generic elif matched := S2_TILE_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/GRANULE/%s/%s" % ( - product.properties["title"], + product_path = "GRANULE/%s/%s" % ( found_dict["num"], found_dict["file"], ) # S2 Product files elif matched := S2_PROD_DS_MTD_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/DATASTRIP/%s/MTD_DS.xml" % ( - product.properties["title"], - ds_dir, - ) + product_path = "DATASTRIP/%s/MTD_DS.xml" % ds_dir elif matched := S2_PROD_DS_QI_REPORT_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/DATASTRIP/%s/QI_DATA/%s.xml" % ( - product.properties["title"], + product_path = "DATASTRIP/%s/QI_DATA/%s.xml" % ( ds_dir, found_dict["filename"], ) elif matched := S2_PROD_DS_QI_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/DATASTRIP/%s/QI_DATA/%s" % ( - product.properties["title"], + product_path = "DATASTRIP/%s/QI_DATA/%s" % ( ds_dir, found_dict["file"], ) elif matched := S2_PROD_INSPIRE_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/INSPIRE.xml" % (product.properties["title"],) + product_path = "INSPIRE.xml" elif matched := S2_PROD_MTD_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/MTD_MSI%s.xml" % ( - product.properties["title"], - s2_processing_level, - ) + product_path = "MTD_MSI%s.xml" % s2_processing_level # S2 Product generic elif matched := S2_PROD_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/%s" % ( - product.properties["title"], - found_dict["file"], - ) + product_path = "%s" % found_dict["file"] # S1 -------------------------------------------------------------- elif matched := S1_CALIB_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = ( - "%s.SAFE/annotation/calibration/%s-%s-%s-grd-%s-%s-%03d.xml" - % ( - product.properties["title"], - found_dict["file_prefix"], - product.properties["platformSerialIdentifier"].lower(), - found_dict["file_beam"], - found_dict["file_pol"], - s1_title_suffix, - S1_IMG_NB_PER_POLAR.get( - product.properties["polarizationMode"], {} - ).get(found_dict["file_pol"].upper(), 1), - ) + product_path = "annotation/calibration/%s-%s-%s-grd-%s-%s-%03d.xml" % ( + found_dict["file_prefix"], + product.properties["platformSerialIdentifier"].lower(), + found_dict["file_beam"], + found_dict["file_pol"], + s1_title_suffix, + S1_IMG_NB_PER_POLAR.get(product.properties["polarizationMode"], {}).get( + found_dict["file_pol"].upper(), 1 + ), ) elif matched := S1_ANNOT_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/annotation/%s-%s-grd-%s-%s-%03d.xml" % ( - product.properties["title"], + product_path = "annotation/%s-%s-grd-%s-%s-%03d.xml" % ( product.properties["platformSerialIdentifier"].lower(), found_dict["file_beam"], found_dict["file_pol"], @@ -1312,8 +1312,7 @@ def get_chunk_dest_path( ) elif matched := S1_MEAS_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/measurement/%s-%s-grd-%s-%s-%03d.%s" % ( - product.properties["title"], + product_path = "measurement/%s-%s-grd-%s-%s-%03d.%s" % ( product.properties["platformSerialIdentifier"].lower(), found_dict["file_beam"], found_dict["file_pol"], @@ -1325,18 +1324,14 @@ def get_chunk_dest_path( ) elif matched := S1_REPORT_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/%s.SAFE-%s" % ( - product.properties["title"], + product_path = "%s.SAFE-%s" % ( product.properties["title"], found_dict["file"], ) # S1 generic elif matched := S1_REGEX.match(chunk.key): found_dict = matched.groupdict() - product_path = "%s.SAFE/%s" % ( - product.properties["title"], - found_dict["file"], - ) + product_path = "%s" % found_dict["file"] # out of SAFE format else: raise NotAvailableError(f"Ignored {chunk.key} out of SAFE matching pattern") @@ -1347,12 +1342,12 @@ def get_chunk_dest_path( def download_all( self, products: SearchResult, - auth: Optional[PluginConfig] = None, + auth: Optional[Union[AuthBase, Dict[str, str]]] = None, downloaded_callback: Optional[DownloadedCallback] = None, progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Union[str, bool, Dict[str, Any]], + **kwargs: Unpack[DownloadConf], ) -> List[str]: """ download_all using parent (base plugin) method diff --git a/eodag/plugins/download/base.py b/eodag/plugins/download/base.py index cca131ab4..1ba2bcbc0 100644 --- a/eodag/plugins/download/base.py +++ b/eodag/plugins/download/base.py @@ -43,6 +43,7 @@ DEFAULT_DOWNLOAD_TIMEOUT, DEFAULT_DOWNLOAD_WAIT, ProgressCallback, + StreamResponse, sanitize, uri_to_path, ) @@ -54,10 +55,13 @@ from eodag.utils.notebook import NotebookWidgets if TYPE_CHECKING: + from requests.auth import AuthBase + from eodag.api.product import EOProduct from eodag.api.search_result import SearchResult from eodag.config import PluginConfig - from eodag.utils import DownloadedCallback + from eodag.types.download_args import DownloadConf + from eodag.utils import DownloadedCallback, Unpack logger = logging.getLogger("eodag.download.base") @@ -86,9 +90,9 @@ class Download(PluginTopic): (e.g. 'file:///tmp/product_folder' on Linux or 'file:///C:/Users/username/AppData/LOcal/Temp' on Windows) - save a *record* file in the directory ``outputs_prefix/.downloaded`` whose name - is built on the MD5 hash of the product's ``remote_location`` attribute - (``hashlib.md5(remote_location.encode("utf-8")).hexdigest()``) and whose content is - the product's ``remote_location`` attribute itself. + is built on the MD5 hash of the product's ``product_type`` and ``properties['id']`` + attributes (``hashlib.md5((product.product_type+"-"+product.properties['id']).encode("utf-8")).hexdigest()``) + and whose content is the product's ``remote_location`` attribute itself. - not try to download a product whose ``location`` attribute already points to an existing file/directory - not try to download a product if its *record* file exists as long as the expected @@ -108,19 +112,19 @@ def __init__(self, provider: str, config: PluginConfig) -> None: def download( self, product: EOProduct, - auth: Optional[PluginConfig] = None, + auth: Optional[Union[AuthBase, Dict[str, str]]] = None, progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Union[str, bool, Dict[str, Any]], + **kwargs: Unpack[DownloadConf], ) -> Optional[str]: r""" Base download method. Not available, it must be defined for each plugin. :param product: The EO product to download :type product: :class:`~eodag.api.product._product.EOProduct` - :param auth: (optional) The configuration of a plugin of type Authentication - :type auth: :class:`~eodag.config.PluginConfig` + :param auth: (optional) authenticated object + :type auth: Optional[Union[AuthBase, Dict[str, str]]] :param progress_callback: (optional) A progress callback :type progress_callback: :class:`~eodag.utils.ProgressCallback` :param wait: (optional) If download fails, wait time in minutes between two download tries @@ -145,19 +149,19 @@ def download( def _stream_download_dict( self, product: EOProduct, - auth: Optional[PluginConfig] = None, + auth: Optional[Union[AuthBase, Dict[str, str]]] = None, progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Union[str, bool, Dict[str, Any]], - ) -> Dict[str, Any]: + **kwargs: Unpack[DownloadConf], + ) -> StreamResponse: r""" Base _stream_download_dict method. Not available, it must be defined for each plugin. :param product: The EO product to download :type product: :class:`~eodag.api.product._product.EOProduct` - :param auth: (optional) The configuration of a plugin of type Authentication - :type auth: :class:`~eodag.config.PluginConfig` + :param auth: (optional) authenticated object + :type auth: Optional[Union[AuthBase, Dict[str, str]]] :param progress_callback: (optional) A progress callback :type progress_callback: :class:`~eodag.utils.ProgressCallback` :param wait: (optional) If download fails, wait time in minutes between two download tries @@ -181,7 +185,7 @@ def _prepare_download( self, product: EOProduct, progress_callback: Optional[ProgressCallback] = None, - **kwargs: Union[str, bool, Dict[str, Any]], + **kwargs: Unpack[DownloadConf], ) -> Tuple[Optional[str], Optional[str]]: """Check if file has already been downloaded, and prepare product download @@ -233,7 +237,9 @@ def _prepare_download( prefix, f"{sanitize(product.properties['title'])}{collision_avoidance_suffix}{outputs_extension}", ) - fs_dir_path = fs_path.replace(outputs_extension, "") + fs_dir_path = ( + fs_path.replace(outputs_extension, "") if outputs_extension else fs_path + ) download_records_dir = os.path.join(prefix, ".downloaded") try: os.makedirs(download_records_dir) @@ -246,8 +252,9 @@ def _prepare_download( logger.warning( f"Unable to create records directory. Got:\n{tb.format_exc()}", ) - url_hash = hashlib.md5(url.encode("utf-8")).hexdigest() - record_filename = os.path.join(download_records_dir, url_hash) + record_filename = os.path.join( + download_records_dir, self.generate_record_hash(product) + ) if os.path.isfile(record_filename) and os.path.isfile(fs_path): logger.info( f"Product already downloaded: {fs_path}", @@ -278,6 +285,21 @@ def _prepare_download( return fs_path, record_filename + def generate_record_hash(self, product: EOProduct) -> str: + """Generate the record hash of the given product. + + The MD5 hash is built from the product's ``product_type`` and ``properties['id']`` attributes + (``hashlib.md5((product.product_type+"-"+product.properties['id']).encode("utf-8")).hexdigest()``) + + :param product: The product to calculate the record hash + :type product: :class:`~eodag.api.product._product.EOProduct` + :returns: The MD5 hash + :rtype: str + """ + # In some unit tests, `product.product_type` is `None` and `product.properties["id"]` is `ìnt` + product_hash = str(product.product_type) + "-" + str(product.properties["id"]) + return hashlib.md5(product_hash.encode("utf-8")).hexdigest() + def _resolve_archive_depth(self, product_path: str) -> str: """Update product_path using archive_depth from provider configuration. @@ -302,7 +324,7 @@ def _finalize( self, fs_path: str, progress_callback: Optional[ProgressCallback] = None, - **kwargs: Any, + **kwargs: Unpack[DownloadConf], ) -> str: """Finalize the download process. @@ -332,6 +354,11 @@ def _finalize( extract = ( extract if extract is not None else getattr(self.config, "extract", True) ) + if not extract: + logger.info("Extraction not activated. The product is available as is.") + progress_callback(1, total=1) + return fs_path + delete_archive = kwargs.pop("delete_archive", None) delete_archive = ( delete_archive @@ -340,11 +367,6 @@ def _finalize( ) outputs_extension = kwargs.pop("outputs_extension", ".zip") - if not extract: - logger.info("Extraction not activated. The product is available as is.") - progress_callback(1, total=1) - return fs_path - product_path = ( fs_path[: fs_path.index(outputs_extension)] if outputs_extension in fs_path @@ -373,7 +395,6 @@ def _finalize( f"Extraction cancelled, destination directory already exists and is not empty: {product_path}" ) progress_callback(1, total=1) - product_path = self._resolve_archive_depth(product_path) return product_path outputs_prefix = ( kwargs.pop("outputs_prefix", None) or self.config.outputs_prefix @@ -402,14 +423,28 @@ def _finalize( path=extraction_dir, ) progress_callback(1) - shutil.move(extraction_dir, outputs_dir) + # in some cases, only a lone file is extracted without being in a directory + # then, we create a directory in which we place this file + product_extraction_path = self._resolve_archive_depth(extraction_dir) + if os.path.isfile(product_extraction_path) and not os.path.isdir( + outputs_dir + ): + os.makedirs(outputs_dir) + shutil.move(product_extraction_path, outputs_dir) - elif fs_path.endswith(".tar.gz"): + elif fs_path.endswith(".tar") or fs_path.endswith(".tar.gz"): with tarfile.open(fs_path, "r") as zfile: progress_callback.reset(total=1) zfile.extractall(path=extraction_dir) progress_callback(1) - shutil.move(extraction_dir, outputs_dir) + # in some cases, only a lone file is extracted without being in a directory + # then, we create a directory in which we place this file + product_extraction_path = self._resolve_archive_depth(extraction_dir) + if os.path.isfile(product_extraction_path) and not os.path.isdir( + outputs_dir + ): + os.makedirs(outputs_dir) + shutil.move(product_extraction_path, outputs_dir) else: progress_callback(1, total=1) @@ -429,19 +464,17 @@ def _finalize( if close_progress_callback: progress_callback.close() - product_path = self._resolve_archive_depth(product_path) - return product_path def download_all( self, products: SearchResult, - auth: Optional[PluginConfig] = None, + auth: Optional[Union[AuthBase, Dict[str, str]]] = None, downloaded_callback: Optional[DownloadedCallback] = None, progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Union[str, bool, Dict[str, Any]], + **kwargs: Unpack[DownloadConf], ) -> List[str]: """ Base download_all method. @@ -451,8 +484,8 @@ def download_all( :param products: Products to download :type products: :class:`~eodag.api.search_result.SearchResult` - :param auth: (optional) The configuration of a plugin of type Authentication - :type auth: :class:`~eodag.config.PluginConfig` + :param auth: (optional) authenticated object + :type auth: Optional[Union[AuthBase, Dict[str, str]]] :param downloaded_callback: (optional) A method or a callable object which takes as parameter the ``product``. You can use the base class :class:`~eodag.api.product.DownloadedCallback` and override @@ -610,7 +643,7 @@ def _download_retry( """ def decorator(download: Callable[..., T]) -> Callable[..., T]: - def download_and_retry(*args: Any, **kwargs: Any) -> T: + def download_and_retry(*args: Any, **kwargs: Unpack[DownloadConf]) -> T: # initiate retry loop start_time = datetime.now() stop_time = start_time + timedelta(minutes=timeout) @@ -634,8 +667,7 @@ def download_and_retry(*args: Any, **kwargs: Any) -> T: f"Product is not available for download and order is not supported for" f" {self.provider}, {e}" ) - not_available_info = e - pass + not_available_info = str(e) if datetime_now >= product.next_try and datetime_now < stop_time: wait_seconds = ( @@ -646,7 +678,7 @@ def download_and_retry(*args: Any, **kwargs: Any) -> T: f"[Retry #{retry_count}] Waited {wait_seconds}s, trying again to download ordered product" f" (retry every {wait}' for {timeout}')" ) - logger.debug(not_available_info) + logger.info(not_available_info) # Retry-After info from Response header if hasattr(self, "stream"): retry_server_info = self.stream.headers.get( @@ -656,7 +688,7 @@ def download_and_retry(*args: Any, **kwargs: Any) -> T: logger.debug( f"[{self.provider} response] Retry-After: {retry_server_info}" ) - logger.info(retry_info) + logger.debug(retry_info) nb_info.display_html(retry_info) product.next_try = datetime_now elif datetime_now < product.next_try and datetime_now < stop_time: @@ -668,7 +700,7 @@ def download_and_retry(*args: Any, **kwargs: Any) -> T: f"[Retry #{retry_count}] Waiting {wait_seconds}s until next download try" f" for ordered product (retry every {wait}' for {timeout}')" ) - logger.debug(not_available_info) + logger.info(not_available_info) # Retry-After info from Response header if hasattr(self, "stream"): retry_server_info = self.stream.headers.get( @@ -678,7 +710,7 @@ def download_and_retry(*args: Any, **kwargs: Any) -> T: logger.debug( f"[{self.provider} response] Retry-After: {retry_server_info}" ) - logger.info(retry_info) + logger.debug(retry_info) nb_info.display_html(retry_info) sleep(wait_seconds) elif datetime_now >= stop_time and timeout > 0: diff --git a/eodag/plugins/download/http.py b/eodag/plugins/download/http.py index e64ee0b01..9f1ca5d98 100644 --- a/eodag/plugins/download/http.py +++ b/eodag/plugins/download/http.py @@ -20,23 +20,37 @@ import logging import os import shutil +import tarfile import zipfile from datetime import datetime from email.message import Message from itertools import chain -from typing import TYPE_CHECKING, Any, Dict, Iterator, List, Optional, Tuple, Union +from typing import ( + TYPE_CHECKING, + Any, + Dict, + Iterator, + List, + Optional, + Tuple, + TypedDict, + Union, + cast, +) from urllib.parse import parse_qs, urlparse import geojson import requests -import requests_ftp from lxml import etree from requests import RequestException +from requests.auth import AuthBase from stream_zip import ZIP_AUTO, stream_zip from eodag.api.product.metadata_mapping import ( + NOT_AVAILABLE, OFFLINE_STATUS, ONLINE_STATUS, + STAGING_STATUS, mtd_cfg_as_conversion_and_querypath, properties_from_json, properties_from_xml, @@ -49,10 +63,14 @@ HTTP_REQ_TIMEOUT, USER_AGENT, ProgressCallback, + StreamResponse, flatten_top_directories, + guess_extension, + guess_file_type, parse_header, path_to_uri, sanitize, + string_to_jsonpath, uri_to_path, ) from eodag.utils.exceptions import ( @@ -66,10 +84,11 @@ if TYPE_CHECKING: from requests import Response - from eodag.api.product import EOProduct + from eodag.api.product import Asset, EOProduct # type: ignore from eodag.api.search_result import SearchResult from eodag.config import PluginConfig - from eodag.utils import DownloadedCallback + from eodag.types.download_args import DownloadConf + from eodag.utils import DownloadedCallback, Unpack logger = logging.getLogger("eodag.download.http") @@ -81,7 +100,7 @@ class HTTPDownload(Download): :type provider: str :param config: Download plugin configuration: - * ``config.base_uri`` (str) - default endpoint url + * ``config.base_uri`` (str) - (optional) default endpoint url * ``config.extract`` (bool) - (optional) extract downloaded archive or not * ``config.auth_error_code`` (int) - (optional) authentication error code * ``config.dl_url_params`` (dict) - (optional) attitional parameters to send in the request @@ -92,9 +111,8 @@ class HTTPDownload(Download): * ``config.order_method`` (str) - (optional) HTTP request method, GET (default) or POST * ``config.order_headers`` (dict) - (optional) order request headers * ``config.order_on_response`` (dict) - (optional) edit or add new product properties - * ``config.order_status_method`` (str) - (optional) status HTTP request method, GET (default) or POST - * ``config.order_status_percent`` (str) - (optional) progress percentage key in obtained status response - * ``config.order_status_error`` (dict) - (optional) key/value identifying an error status + * ``config.order_status`` (:class:`~eodag.config.PluginConfig.OrderStatus`) - (optional) Order status handling + :type config: :class:`~eodag.config.PluginConfig` @@ -102,19 +120,13 @@ class HTTPDownload(Download): def __init__(self, provider: str, config: PluginConfig) -> None: super(HTTPDownload, self).__init__(provider, config) - if not hasattr(self.config, "base_uri"): - raise MisconfiguredError( - "{} plugin require a base_uri configuration key".format( - type(self).__name__ - ) - ) def orderDownload( self, product: EOProduct, - auth: Optional[PluginConfig] = None, - **kwargs: Union[str, bool, Dict[str, Any]], - ) -> None: + auth: Optional[AuthBase] = None, + **kwargs: Unpack[DownloadConf], + ) -> Optional[Dict[str, Any]]: """Send product order request. It will be executed once before the download retry loop, if the product is OFFLINE @@ -136,85 +148,120 @@ def orderDownload( :param product: The EO product to order :type product: :class:`~eodag.api.product._product.EOProduct` - :param auth: (optional) The configuration of a plugin of type Authentication - :type auth: :class:`~eodag.config.PluginConfig` + :param auth: (optional) authenticated object + :type auth: Optional[AuthBase] :param kwargs: download additional kwargs :type kwargs: Union[str, bool, dict] + :returns: the returned json status response + :rtype: dict """ - order_method = getattr(self.config, "order_method", "GET").lower() - if order_method == "post": + product.properties["storageStatus"] = STAGING_STATUS + + order_method = getattr(self.config, "order_method", "GET").upper() + ssl_verify = getattr(self.config, "ssl_verify", True) + timeout = getattr(self.config, "timeout", HTTP_REQ_TIMEOUT) + OrderKwargs = TypedDict( + "OrderKwargs", {"json": Dict[str, Union[Any, List[str]]]}, total=False + ) + order_kwargs: OrderKwargs = {} + if order_method == "POST": # separate url & parameters parts = urlparse(str(product.properties["orderLink"])) query_dict = parse_qs(parts.query) if not query_dict and parts.query: query_dict = geojson.loads(parts.query) order_url = parts._replace(query=None).geturl() - order_kwargs = {"json": query_dict} if query_dict else {} + if query_dict: + order_kwargs["json"] = query_dict else: order_url = product.properties["orderLink"] order_kwargs = {} - with requests.request( - method=order_method, - url=order_url, - auth=auth, - timeout=HTTP_REQ_TIMEOUT, - headers=dict(getattr(self.config, "order_headers", {}), **USER_AGENT), - **order_kwargs, - ) as response: - try: - response.raise_for_status() - ordered_message = response.text - logger.debug(ordered_message) - logger.info("%s was ordered", product.properties["title"]) - except requests.exceptions.Timeout as exc: - raise TimeOutError(exc, timeout=HTTP_REQ_TIMEOUT) from exc - except RequestException as e: - if e.response and hasattr(e.response, "content"): - error_message = f"{e.response.content.decode('utf-8')} - {e}" - else: - error_message = str(e) - logger.warning( - "%s could not be ordered, request returned %s", - product.properties["title"], - error_message, - ) - - order_metadata_mapping = getattr(self.config, "order_on_response", {}).get( + headers = {**getattr(self.config, "order_headers", {}), **USER_AGENT} + try: + with requests.request( + method=order_method, + url=order_url, + auth=auth, + timeout=timeout, + headers=headers, + verify=ssl_verify, + **order_kwargs, + ) as response: + logger.debug(f"{order_method} {order_url} {headers} {order_kwargs}") + try: + response.raise_for_status() + ordered_message = response.text + logger.debug(ordered_message) + product.properties["storageStatus"] = STAGING_STATUS + except RequestException as e: + if hasattr(e, "response") and ( + content := getattr(e.response, "content", None) + ): + error_message = f"{content.decode('utf-8')} - {e}" + else: + error_message = str(e) + logger.warning( + "%s could not be ordered, request returned %s", + product.properties["title"], + error_message, + ) + self._check_auth_exception(e) + return self.order_response_process(response, product) + except requests.exceptions.Timeout as exc: + raise TimeOutError(exc, timeout=timeout) from exc + + def order_response_process( + self, response: Response, product: EOProduct + ) -> Optional[Dict[str, Any]]: + """Process order response + + :param response: The order response + :type response: :class:`~requests.Response` + :param product: The orderd EO product + :type product: :class:`~eodag.api.product._product.EOProduct` + :returns: the returned json status response + :rtype: dict + """ + on_response_mm = getattr(self.config, "order_on_response", {}).get( "metadata_mapping", {} ) - if order_metadata_mapping: - logger.debug("Parsing order response to update product metada-mapping") - order_metadata_mapping_jsonpath = mtd_cfg_as_conversion_and_querypath( - order_metadata_mapping, - ) - properties_update = properties_from_json( - response.json(), - order_metadata_mapping_jsonpath, - ) - product.properties.update(properties_update) - if "downloadLink" in properties_update: - product.remote_location = product.location = product.properties[ - "downloadLink" - ] - logger.debug(f"Product location updated to {product.location}") + if not on_response_mm: + return None + + logger.debug("Parsing order response to update product metada-mapping") + on_response_mm_jsonpath = mtd_cfg_as_conversion_and_querypath( + on_response_mm, + ) + + json_response = response.json() + + properties_update = properties_from_json( + {"json": json_response, "headers": {**response.headers}}, + on_response_mm_jsonpath, + ) + product.properties.update( + {k: v for k, v in properties_update.items() if v != NOT_AVAILABLE} + ) + if "downloadLink" in product.properties: + product.remote_location = product.location = product.properties[ + "downloadLink" + ] + logger.debug(f"Product location updated to {product.location}") + + return json_response def orderDownloadStatus( self, product: EOProduct, - auth: Optional[PluginConfig] = None, - **kwargs: Union[str, bool, Dict[str, Any]], + auth: Optional[AuthBase] = None, ) -> None: """Send product order status request. It will be executed before each download retry. Product order status request can be configured using the following download plugin parameters: - - **order_status_method**: (optional) HTTP request method, GET (default) or POST - - - **order_status_percent**: (optional) progress percentage key in obtained response - - - **order_status_error**: (optional) key/value identifying an error status + - **order_status**: :class:`~eodag.config.PluginConfig.OrderStatus` Product properties used for order status: @@ -222,162 +269,289 @@ def orderDownloadStatus( :param product: The ordered EO product :type product: :class:`~eodag.api.product._product.EOProduct` - :param auth: (optional) The configuration of a plugin of type Authentication - :type auth: :class:`~eodag.config.PluginConfig` + :param auth: (optional) authenticated object + :type auth: Optional[AuthBase] :param kwargs: download additional kwargs :type kwargs: Union[str, bool, dict] """ - status_method = getattr(self.config, "order_status_method", "GET").lower() - if status_method == "post": + + status_config = getattr(self.config, "order_status", {}) + success_code: Optional[int] = status_config.get("success", {}).get("http_code") + + timeout = getattr(self.config, "timeout", HTTP_REQ_TIMEOUT) + + def _request( + url: str, + method: str = "GET", + headers: Optional[Dict[str, Any]] = None, + json: Optional[Any] = None, + timeout: int = HTTP_REQ_TIMEOUT, + ) -> Response: + """Send request and handle allow redirects""" + + logger.debug(f"{method} {url} {headers} {json}") + try: + response = requests.request( + method=method, + url=url, + auth=auth, + timeout=timeout, + headers={**(headers or {}), **USER_AGENT}, + allow_redirects=False, # Redirection is manually handled + json=json, + ) + logger.debug( + f"Order download status request responded with {response.status_code}" + ) + response.raise_for_status() # Raise an exception if status code indicates an error + + # Handle redirection (if needed) + if ( + 300 <= response.status_code < 400 + and response.status_code != success_code + ): + # cf: https://www.rfc-editor.org/rfc/rfc9110.html#name-303-see-other + if response.status_code == 303: + method = "GET" + if new_url := response.headers.get("Location"): + return _request(new_url, method, headers, json, timeout) + return response + except requests.exceptions.Timeout as exc: + raise TimeOutError(exc, timeout=timeout) from exc + + status_request: Dict[str, Any] = status_config.get("request", {}) + status_request_method = str(status_request.get("method", "GET")).upper() + + if status_request_method == "POST": # separate url & parameters parts = urlparse(str(product.properties["orderStatusLink"])) + status_url = parts._replace(query=None).geturl() query_dict = parse_qs(parts.query) if not query_dict and parts.query: query_dict = geojson.loads(parts.query) - status_url = parts._replace(query=None).geturl() - status_kwargs = {"json": query_dict} if query_dict else {} + json_data = query_dict if query_dict else None else: status_url = product.properties["orderStatusLink"] - status_kwargs = {} + json_data = None + + # check header for success before full status request + skip_parsing_status_response = False + status_dict: Dict[str, Any] = {} + config_on_success: Dict[str, Any] = status_config.get("on_success", {}) + on_success_mm = config_on_success.get("metadata_mapping", {}) + + status_response_content_needed = ( + False + if not any([v.startswith("$.json.") for v in on_success_mm.values()]) + else True + ) - with requests.request( - method=status_method, - url=status_url, - auth=auth, - timeout=HTTP_REQ_TIMEOUT, - headers=dict( - getattr(self.config, "order_status_headers", {}), **USER_AGENT - ), - **status_kwargs, - ) as response: + if success_code: try: - response.raise_for_status() - status_message = response.text - status_dict = response.json() - # display progress percentage - order_status_percent_key = getattr( - self.config, "order_status_percent", None + response = _request( + status_url, + "HEAD", + status_request.get("headers"), + json_data, + timeout, ) - if order_status_percent_key and order_status_percent_key in status_dict: - order_status_value = str(status_dict[order_status_percent_key]) - if order_status_value.isdigit(): - order_status_value += "%" - logger.info( - f"{product.properties['title']} order status: {order_status_value}" - ) - # display error if any - order_status_error_dict = getattr(self.config, "order_status_error", {}) if ( - order_status_error_dict - and order_status_error_dict.items() <= status_dict.items() + response.status_code == success_code + and not status_response_content_needed ): - # order_status_error_dict is a subset of status_dict : error - logger.warning(status_message) - else: - logger.debug(status_message) - # check if succeeds and need search again - order_status_success_dict = getattr( - self.config, "order_status_success", {} + # success and no need to get status response content + skip_parsing_status_response = True + except RequestException as e: + logger.debug(e) + + if not skip_parsing_status_response: + # status request + try: + response = _request( + status_url, + status_request_method, + status_request.get("headers"), + json_data, + timeout, ) if ( - "status" in status_dict - and status_dict["status"] == order_status_success_dict["status"] - and "message" in status_dict - and status_dict["message"] == order_status_success_dict["message"] - ): - product.properties["storageStatus"] = ONLINE_STATUS - if ( - order_status_success_dict - and order_status_success_dict.items() <= status_dict.items() - and getattr(self.config, "order_status_on_success", {}).get( - "need_search" - ) + response.status_code == success_code + and not status_response_content_needed ): - logger.debug( - f"Search for new location: {product.properties['searchLink']}" - ) - # search again - response = requests.get( - product.properties["searchLink"], - timeout=HTTP_REQ_TIMEOUT, - headers=USER_AGENT, + # success and no need to get status response content + skip_parsing_status_response = True + except RequestException as e: + raise DownloadError( + "%s order status could not be checked, request returned %s" + % ( + product.properties["title"], + e, ) - response.raise_for_status() - if ( - self.config.order_status_on_success.get("result_type", "json") - == "xml" - ): - root_node = etree.fromstring(response.content) - namespaces = {k or "ns": v for k, v in root_node.nsmap.items()} - results = [ - etree.tostring(entry) - for entry in root_node.xpath( - self.config.order_status_on_success["results_entry"], - namespaces=namespaces, - ) - ] - if isinstance(results, list) and len(results) != 1: - raise DownloadError( - "Could not get a single result after order success for " - f"{product.properties['searchLink']} request. " - f"Please search and download {product} again" - ) - return - try: - assert isinstance( - results, list - ), "results must be in a list" - # single result - result = results[0] - # parse result - new_search_metadata_mapping = ( - self.config.order_status_on_success["metadata_mapping"] - ) - order_metadata_mapping_jsonpath = {} - order_metadata_mapping_jsonpath = ( - mtd_cfg_as_conversion_and_querypath( - new_search_metadata_mapping, - order_metadata_mapping_jsonpath, - ) - ) - properties_update = properties_from_xml( - result, - order_metadata_mapping_jsonpath, - ) - except Exception as e: - logger.debug(e) - raise DownloadError( - f"Could not parse result after order success for {product.properties['searchLink']} " - f"request. Please search and download {product} again" - ) - # update product - product.properties.update(properties_update) - product.location = product.remote_location = product.properties[ - "downloadLink" - ] - else: - logger.warning( - "JSON response parsing is not implemented yet for new searches " - f"after order success. Please search and download {product} again" - ) + ) from e + + if not skip_parsing_status_response: + # status request + json_response = response.json() + if not isinstance(json_response, dict): + raise RequestException("response content is not a dict") + status_dict = json_response + + status_mm = status_config.get("metadata_mapping", {}) + status_mm_jsonpath = ( + mtd_cfg_as_conversion_and_querypath( + status_mm, + ) + if status_mm + else {} + ) + logger.debug("Parsing order status response") + status_dict = properties_from_json( + {"json": response.json(), "headers": {**response.headers}}, + status_mm_jsonpath, + ) - except requests.exceptions.Timeout as exc: - raise TimeOutError(exc, timeout=HTTP_REQ_TIMEOUT) from exc + # display progress percentage + if "percent" in status_dict: + status_percent = str(status_dict["percent"]) + if status_percent.isdigit(): + status_percent += "%" + logger.info( + f"{product.properties['title']} order status: {status_percent}" + ) + + status_message = status_dict.get("message") + product.properties["orderStatus"] = status_dict.get("status") + + # handle status error + errors: Dict[str, Any] = status_config.get("error", {}) + if errors and errors.items() <= status_dict.items(): + raise DownloadError( + f"Provider {product.provider} returned: {status_dict.get('error_message', status_message)}" + ) + + success_status: Dict[str, Any] = status_config.get("success", {}).get("status") + # if not success + if (success_status and success_status != status_dict.get("status")) or ( + success_code and success_code != response.status_code + ): + error = NotAvailableError(status_message) + raise error + + product.properties["storageStatus"] = ONLINE_STATUS + + if not config_on_success: + # Nothing left to do + return None + + # need search on success ? + if config_on_success.get("need_search"): + logger.debug(f"Search for new location: {product.properties['searchLink']}") + try: + response = _request(product.properties["searchLink"], timeout=timeout) except RequestException as e: logger.warning( "%s order status could not be checked, request returned %s", product.properties["title"], e, ) + return None + + result_type = config_on_success.get("result_type", "json") + result_entry = config_on_success.get("results_entry") + + on_success_mm_querypath = ( + # append product.properties as input for on success response parsing + mtd_cfg_as_conversion_and_querypath( + dict( + {k: str(v) for k, v in product.properties.items()}, **on_success_mm + ), + ) + if on_success_mm + else {} + ) + try: + if result_type == "xml": + if not result_entry: + raise MisconfiguredError( + '"result_entry" is required with "result_type" "xml"' + 'in "order_status.on_success"' + ) + root_node = etree.fromstring(response.content) + namespaces = {k or "ns": v for k, v in root_node.nsmap.items()} + results = [ + etree.tostring(entry) + for entry in root_node.xpath( + result_entry, + namespaces=namespaces, + ) + ] + if len(results) != 1: + raise DownloadError( + "Could not get a single result after order success for " + f"{product.properties['searchLink']} request. " + f"Please search and download {product} again" + ) + assert isinstance(results, list), "results must be in a list" + # single result + result = results[0] + if on_success_mm_querypath: + properties_update = properties_from_xml( + result, + on_success_mm_querypath, + ) + else: + properties_update = {} + else: + json_response = ( + response.json() + if "application/json" in response.headers.get("Content-Type", "") + else {} + ) + if result_entry: + entry_jsonpath = string_to_jsonpath(result_entry, force=True) + json_response = entry_jsonpath.find(json_response) + raise NotImplementedError( + 'result_entry in config.on_success is not yet supported for result_type "json"' + ) + if on_success_mm_querypath: + logger.debug( + "Parsing on-success metadata-mapping using order status response" + ) + properties_update = properties_from_json( + {"json": json_response, "headers": {**response.headers}}, + on_success_mm_querypath, + ) + # only keep properties to update (remove product.properties added for parsing) + properties_update = { + k: v for k, v in properties_update.items() if k in on_success_mm + } + else: + properties_update = {} + except Exception as e: + if isinstance(e, DownloadError): + raise + logger.debug(e) + raise DownloadError( + f"Could not parse result after order success. Please search and download {product} again" + ) from e + + # update product + product.properties.update(properties_update) + if "downloadLink" in properties_update: + product.location = product.remote_location = product.properties[ + "downloadLink" + ] + else: + self.order_response_process(response, product) def download( self, product: EOProduct, - auth: Optional[PluginConfig] = None, + auth: Optional[Union[AuthBase, Dict[str, str]]] = None, progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Union[str, bool, Dict[str, Any]], + **kwargs: Unpack[DownloadConf], ) -> Optional[str]: """Download a product using HTTP protocol. @@ -385,14 +559,26 @@ def download( the user is warned, it is renamed to remove the zip extension and no further treatment is done (no extraction) """ + if auth is not None and not isinstance(auth, AuthBase): + raise MisconfiguredError(f"Incompatible auth plugin: {type(auth)}") + if progress_callback is None: logger.info( "Progress bar unavailable, please call product.download() instead of plugin.download()" ) progress_callback = ProgressCallback(disable=True) + outputs_extension = getattr(self.config, "products", {}).get( + product.product_type, {} + ).get("outputs_extension", None) or getattr( + self.config, "outputs_extension", ".zip" + ) + kwargs["outputs_extension"] = kwargs.get("outputs_extension", outputs_extension) + fs_path, record_filename = self._prepare_download( - product, progress_callback=progress_callback, **kwargs + product, + progress_callback=progress_callback, + **kwargs, ) if not fs_path or not record_filename: if fs_path: @@ -400,7 +586,10 @@ def download( return fs_path # download assets if exist instead of remote_location - if len(product.assets) > 0 and not getattr(self.config, "ignore_assets", False): + if len(product.assets) > 0 and ( + not getattr(self.config, "ignore_assets", False) + or kwargs.get("asset", None) is not None + ): try: fs_path = self._download_assets( product, @@ -424,18 +613,23 @@ def download( @self._download_retry(product, wait, timeout) def download_request( product: EOProduct, - auth: PluginConfig, + auth: AuthBase, progress_callback: ProgressCallback, wait: int, timeout: int, - **kwargs: Dict[str, Any], + **kwargs: Unpack[DownloadConf], ) -> None: chunks = self._stream_download(product, auth, progress_callback, **kwargs) + is_empty = True with open(fs_path, "wb") as fhandle: for chunk in chunks: + is_empty = False fhandle.write(chunk) + if is_empty: + raise DownloadError(f"product {product.properties['id']} is empty") + download_request(product, auth, progress_callback, wait, timeout, **kwargs) with open(record_filename, "w") as fh: @@ -443,19 +637,57 @@ def download_request( logger.debug("Download recorded in %s", record_filename) # Check that the downloaded file is really a zip file - outputs_extension = kwargs.get("outputs_extension", None) or getattr( - self.config, "outputs_extension", ".zip" - ) if not zipfile.is_zipfile(fs_path) and outputs_extension == ".zip": logger.warning( "Downloaded product is not a Zip File. Please check its file type before using it" ) - new_fs_path = fs_path[: fs_path.index(".zip")] + new_fs_path = os.path.join( + os.path.dirname(fs_path), + sanitize(product.properties["title"]), + ) + if os.path.isfile(fs_path) and not tarfile.is_tarfile(fs_path): + if not os.path.isdir(new_fs_path): + os.makedirs(new_fs_path) + shutil.move(fs_path, new_fs_path) + file_path = os.path.join(new_fs_path, os.path.basename(fs_path)) + new_file_path = file_path[: file_path.index(".zip")] + shutil.move(file_path, new_file_path) + # in the case where the outputs extension has not been set + # to ".tar" in the product type nor provider configuration + elif tarfile.is_tarfile(fs_path): + if not new_fs_path.endswith(".tar"): + new_fs_path += ".tar" + shutil.move(fs_path, new_fs_path) + kwargs["outputs_extension"] = ".tar" + product_path = self._finalize( + new_fs_path, + progress_callback=progress_callback, + **kwargs, + ) + product.location = path_to_uri(product_path) + return product_path + else: + # not a file (dir with zip extension) + shutil.move(fs_path, new_fs_path) + product.location = path_to_uri(new_fs_path) + return new_fs_path + + if os.path.isfile(fs_path) and not ( + zipfile.is_zipfile(fs_path) or tarfile.is_tarfile(fs_path) + ): + new_fs_path = os.path.join( + os.path.dirname(fs_path), + sanitize(product.properties["title"]), + ) + if not os.path.isdir(new_fs_path): + os.makedirs(new_fs_path) shutil.move(fs_path, new_fs_path) product.location = path_to_uri(new_fs_path) return new_fs_path product_path = self._finalize( - fs_path, progress_callback=progress_callback, **kwargs + fs_path, + progress_callback=progress_callback, + **kwargs, ) product.location = path_to_uri(product_path) return product_path @@ -477,23 +709,51 @@ def _check_stream_size(self, product: EOProduct) -> int: ) return stream_size + def _check_product_filename(self, product: EOProduct) -> str: + filename = None + asset_content_disposition = self.stream.headers.get("content-disposition", None) + if asset_content_disposition: + filename = cast( + Optional[str], + parse_header(asset_content_disposition).get_param("filename", None), + ) + if not filename: + # default filename extracted from path + filename = str(os.path.basename(self.stream.url)) + filename_extension = os.path.splitext(filename)[1] + if not filename_extension: + if content_type := getattr(product, "headers", {}).get("Content-Type"): + ext = guess_extension(content_type) + if ext: + filename += ext + else: + outputs_extension: Optional[str] = ( + getattr(self.config, "products", {}) + .get(product.product_type, {}) + .get("outputs_extension") + ) + if outputs_extension: + filename += outputs_extension + + return filename + def _stream_download_dict( self, product: EOProduct, - auth: Optional[PluginConfig] = None, + auth: Optional[Union[AuthBase, Dict[str, str]]] = None, progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Union[str, bool, Dict[str, Any]], - ) -> Dict[str, Any]: + **kwargs: Unpack[DownloadConf], + ) -> StreamResponse: r""" Returns dictionnary of :class:`~fastapi.responses.StreamingResponse` keyword-arguments. It contains a generator to streamed download chunks and the response headers. :param product: The EO product to download :type product: :class:`~eodag.api.product._product.EOProduct` - :param auth: (optional) The configuration of a plugin of type Authentication - :type auth: :class:`~eodag.config.PluginConfig` + :param auth: (optional) authenticated object + :type auth: Optional[Union[AuthBase, Dict[str, str]]] :param progress_callback: (optional) A progress callback :type progress_callback: :class:`~eodag.utils.ProgressCallback` :param wait: (optional) If download fails, wait time in minutes between two download tries @@ -509,8 +769,14 @@ def _stream_download_dict( :returns: Dictionnary of :class:`~fastapi.responses.StreamingResponse` keyword-arguments :rtype: dict """ + if auth is not None and not isinstance(auth, AuthBase): + raise MisconfiguredError(f"Incompatible auth plugin: {type(auth)}") + # download assets if exist instead of remote_location - if len(product.assets) > 0 and not getattr(self.config, "ignore_assets", False): + if len(product.assets) > 0 and ( + not getattr(self.config, "ignore_assets", False) + or kwargs.get("asset") is not None + ): try: assets_values = product.assets.get_values(kwargs.get("asset", None)) chunks_tuples = self._stream_download_assets( @@ -534,7 +800,7 @@ def _stream_download_dict( "type" ] - return dict( + return StreamResponse( content=chain(iter([first_chunks_tuple]), chunks_tuples), headers=assets_values[0].headers, ) @@ -545,7 +811,7 @@ def _stream_download_dict( if "title" in product.properties else sanitize(product.properties.get("id", "download")) ) - return dict( + return StreamResponse( content=stream_zip(chunks_tuples), media_type="application/zip", headers={ @@ -560,36 +826,55 @@ def _stream_download_dict( chunks = self._stream_download(product, auth, progress_callback, **kwargs) # start reading chunks to set product.headers - first_chunk = next(chunks) - - return dict( + try: + first_chunk = next(chunks) + except StopIteration: + # product is empty file + logger.error("product %s is empty", product.properties["id"]) + raise NotAvailableError(f"product {product.properties['id']} is empty") + + return StreamResponse( content=chain(iter([first_chunk]), chunks), headers=product.headers, ) - def _process_exception( - self, e: RequestException, product: EOProduct, ordered_message: str - ) -> None: + def _check_auth_exception(self, e: Optional[RequestException]) -> None: # check if error is identified as auth_error in provider conf auth_errors = getattr(self.config, "auth_error_code", [None]) if not isinstance(auth_errors, list): auth_errors = [auth_errors] - if e.response and e.response.status_code in auth_errors: + response_text = ( + e.response.text.strip() if e is not None and e.response is not None else "" + ) + if ( + e is not None + and e.response is not None + and e.response.status_code in auth_errors + ): raise AuthenticationError( "HTTP Error %s returned, %s\nPlease check your credentials for %s" % ( e.response.status_code, - e.response.text.strip(), + response_text, self.provider, ) ) + + def _process_exception( + self, e: Optional[RequestException], product: EOProduct, ordered_message: str + ) -> None: + self._check_auth_exception(e) + response_text = ( + e.response.text.strip() if e is not None and e.response is not None else "" + ) # product not available - elif product.properties.get("storageStatus", ONLINE_STATUS) != ONLINE_STATUS: + if product.properties.get("storageStatus", ONLINE_STATUS) != ONLINE_STATUS: msg = ( ordered_message - if ordered_message and not e.response.text.strip() - else e.response.text.strip() + if ordered_message and not response_text + else response_text ) + raise NotAvailableError( "%s(initially %s) requested, returned: %s" % ( @@ -601,18 +886,21 @@ def _process_exception( else: import traceback as tb - logger.error( - "Error while getting resource :\n%s\n%s", - tb.format_exc(), - e.response.text.strip(), - ) + if e: + logger.error( + "Error while getting resource :\n%s\n%s", + tb.format_exc(), + response_text, + ) + else: + logger.error("Error while getting resource :\n%s", tb.format_exc()) def _stream_download( self, product: EOProduct, - auth: Optional[PluginConfig] = None, + auth: Optional[AuthBase] = None, progress_callback: Optional[ProgressCallback] = None, - **kwargs: Dict[str, Any], + **kwargs: Unpack[DownloadConf], ) -> Iterator[Any]: """ fetches a zip file containing the assets of a given product as a stream @@ -620,7 +908,7 @@ def _stream_download( :param product: product for which the assets should be downloaded :type product: :class:`~eodag.api.product._product.EOProduct` :param auth: The configuration of a plugin of type Authentication - :type auth: :class:`~eodag.config.PluginConfig` + :type auth: Optional[Union[AuthBase, Dict[str, str]]] :param progress_callback: A method or a callable object which takes a current size and a maximum size as inputs and handle progress bar @@ -637,12 +925,15 @@ def _stream_download( ordered_message = "" if ( "orderLink" in product.properties - and "storageStatus" in product.properties - and product.properties["storageStatus"] == OFFLINE_STATUS + and product.properties.get("storageStatus") == OFFLINE_STATUS + and not product.properties.get("orderStatus") ): self.orderDownload(product=product, auth=auth) - if product.properties.get("orderStatusLink", None): + if ( + product.properties.get("orderStatusLink", None) + and product.properties.get("storageStatus") != ONLINE_STATUS + ): self.orderDownloadStatus(product=product, auth=auth) params = kwargs.pop("dl_url_params", None) or getattr( @@ -666,8 +957,12 @@ def _stream_download( req_url = url req_kwargs = {} - # url where data is downloaded from can be ftp -> add ftp adapter - requests_ftp.monkeypatch_session() + if req_url.startswith(NOT_AVAILABLE): + raise NotAvailableError("Download link is not available") + + if getattr(self.config, "no_auth_download", False): + auth = None + s = requests.Session() with s.request( req_method, @@ -681,7 +976,6 @@ def _stream_download( ) as self.stream: try: self.stream.raise_for_status() - except requests.exceptions.Timeout as exc: raise TimeOutError( exc, timeout=DEFAULT_STREAM_REQUESTS_TIMEOUT @@ -689,8 +983,30 @@ def _stream_download( except RequestException as e: self._process_exception(e, product, ordered_message) else: - stream_size = self._check_stream_size(product) + # check if product was ordered + + if getattr( + self.stream, "status_code", None + ) is not None and self.stream.status_code == getattr( + self.config, "order_status", {} + ).get( + "ordered", {} + ).get( + "http_code" + ): + product.properties["storageStatus"] = "ORDERED" + self._process_exception(None, product, ordered_message) + stream_size = self._check_stream_size(product) or None + product.headers = self.stream.headers + filename = self._check_product_filename(product) or None + product.headers[ + "content-disposition" + ] = f"attachment; filename={filename}" + content_type = product.headers.get("Content-Type") + if filename and not content_type: + product.headers["Content-Type"] = guess_file_type(filename) + progress_callback.reset(total=stream_size) for chunk in self.stream.iter_content(chunk_size=64 * 1024): if chunk: @@ -700,9 +1016,10 @@ def _stream_download( def _stream_download_assets( self, product: EOProduct, - auth: Optional[PluginConfig] = None, + auth: Optional[AuthBase] = None, progress_callback: Optional[ProgressCallback] = None, - **kwargs: Union[str, bool, Dict[str, Any]], + assets_values: List[Asset] = [], + **kwargs: Unpack[DownloadConf], ) -> Iterator[Tuple[str, datetime, int, Any, Iterator[Any]]]: if progress_callback is None: logger.info("Progress bar unavailable, please call product.download()") @@ -715,14 +1032,12 @@ def _stream_download_assets( if not assets_urls: raise NotAvailableError("No assets available for %s" % product) - assets_values = kwargs.get("assets_values", []) - # get extra parameters to pass to the query params = kwargs.pop("dl_url_params", None) or getattr( self.config, "dl_url_params", {} ) - total_size = self._get_asset_sizes(assets_values, auth, params) + total_size = self._get_asset_sizes(assets_values, auth, params) or None progress_callback.reset(total=total_size) @@ -753,12 +1068,14 @@ def get_chunks(stream: Response) -> Any: product.product_type, {} ) flatten_top_dirs = product_conf.get( - "flatten_top_dirs", getattr(self.config, "flatten_top_dirs", False) + "flatten_top_dirs", getattr(self.config, "flatten_top_dirs", True) ) + ssl_verify = getattr(self.config, "ssl_verify", True) # loop for assets download for asset in assets_values: - if asset["href"].startswith("file:"): + + if not asset["href"] or asset["href"].startswith("file:"): logger.info( f"Local asset detected. Download skipped for {asset['href']}" ) @@ -771,6 +1088,7 @@ def get_chunks(stream: Response) -> Any: params=params, headers=USER_AGENT, timeout=DEFAULT_STREAM_REQUESTS_TIMEOUT, + verify=ssl_verify, ) as stream: try: stream.raise_for_status() @@ -795,15 +1113,20 @@ def get_chunks(stream: Response) -> Any: "content-disposition", None ) if asset_content_disposition: - asset.filename = parse_header( - asset_content_disposition - ).get_param("filename", None) + asset.filename = cast( + Optional[str], + parse_header(asset_content_disposition).get_param( + "filename", None + ), + ) if not getattr(asset, "filename", None): # default filename extracted from path asset.filename = os.path.basename(asset.rel_path) - asset.rel_path = os.path.join(asset_rel_dir, asset.filename) + asset.rel_path = os.path.join( + asset_rel_dir, cast(str, asset.filename) + ) if len(assets_values) == 1: # apply headers to asset @@ -824,9 +1147,9 @@ def _download_assets( product: EOProduct, fs_dir_path: str, record_filename: str, - auth: Optional[PluginConfig] = None, + auth: Optional[AuthBase] = None, progress_callback: Optional[ProgressCallback] = None, - **kwargs: Union[str, bool, Dict[str, Any]], + **kwargs: Unpack[DownloadConf], ) -> str: """Download product assets if they exist""" if progress_callback is None: @@ -857,7 +1180,7 @@ def _download_assets( product.product_type, {} ) flatten_top_dirs = product_conf.get( - "flatten_top_dirs", getattr(self.config, "flatten_top_dirs", False) + "flatten_top_dirs", getattr(self.config, "flatten_top_dirs", True) ) # count local assets @@ -877,23 +1200,35 @@ def _download_assets( asset_path = chunk_tuple[0] asset_chunks = chunk_tuple[4] asset_abs_path = os.path.join(fs_dir_path, asset_path) + asset_abs_path_temp = asset_abs_path + "~" # create asset subdir if not exist asset_abs_path_dir = os.path.dirname(asset_abs_path) if not os.path.isdir(asset_abs_path_dir): os.makedirs(asset_abs_path_dir) + # remove temporary file + if os.path.isfile(asset_abs_path_temp): + os.remove(asset_abs_path_temp) if not os.path.isfile(asset_abs_path): - with open(asset_abs_path, "wb") as fhandle: + logger.debug("Downloading to temporary file '%s'", asset_abs_path_temp) + with open(asset_abs_path_temp, "wb") as fhandle: for chunk in asset_chunks: if chunk: fhandle.write(chunk) progress_callback(len(chunk)) - + logger.debug( + "Download completed. Renaming temporary file '%s' to '%s'", + os.path.basename(asset_abs_path_temp), + os.path.basename(asset_abs_path), + ) + os.rename(asset_abs_path_temp, asset_abs_path) # only one local asset if local_assets_count == len(assets_urls) and local_assets_count == 1: # remove empty {fs_dir_path} shutil.rmtree(fs_dir_path) # and return assets_urls[0] path fs_dir_path = uri_to_path(assets_urls[0]) + # do not flatten dir + flatten_top_dirs = False # several local assets elif local_assets_count == len(assets_urls) and local_assets_count > 0: common_path = os.path.commonpath([uri_to_path(uri) for uri in assets_urls]) @@ -901,6 +1236,8 @@ def _download_assets( shutil.rmtree(fs_dir_path) # and return assets_urls common path fs_dir_path = common_path + # do not flatten dir + flatten_top_dirs = False # no assets downloaded but some should have been elif len(os.listdir(fs_dir_path)) == 0: raise NotAvailableError("No assets could be downloaded") @@ -918,13 +1255,13 @@ def _download_assets( return fs_dir_path def _handle_asset_exception( - self, e: RequestException, asset: Dict[str, Any], raise_errors: bool = False + self, e: RequestException, asset: Asset, raise_errors: bool = False ) -> None: # check if error is identified as auth_error in provider conf auth_errors = getattr(self.config, "auth_error_code", [None]) if not isinstance(auth_errors, list): auth_errors = [auth_errors] - if e.response and e.response.status_code in auth_errors: + if e.response is not None and e.response.status_code in auth_errors: raise AuthenticationError( "HTTP Error %s returned, %s\nPlease check your credentials for %s" % ( @@ -941,22 +1278,24 @@ def _handle_asset_exception( def _get_asset_sizes( self, - assets_values: List[Dict[str, Any]], - auth: Optional[PluginConfig], + assets_values: List[Asset], + auth: Optional[AuthBase], params: Optional[Dict[str, str]], zipped: bool = False, ) -> int: total_size = 0 + timeout = getattr(self.config, "timeout", HTTP_REQ_TIMEOUT) + ssl_verify = getattr(self.config, "ssl_verify", True) # loop for assets size & filename for asset in assets_values: - if not asset["href"].startswith("file:"): + if asset["href"] and not asset["href"].startswith("file:"): # HEAD request for size & filename asset_headers = requests.head( asset["href"], auth=auth, headers=USER_AGENT, - timeout=HTTP_REQ_TIMEOUT, + timeout=timeout, ).headers if not getattr(asset, "size", 0): @@ -971,12 +1310,14 @@ def _get_asset_sizes( ) if not getattr(asset, "size", 0): # size from HEAD header / content-disposition / size - asset.size = int(header_content_disposition.get_param("size", 0)) + size_str = str(header_content_disposition.get_param("size", 0)) + asset.size = int(size_str) if size_str.isdigit() else 0 if not getattr(asset, "filename", 0): # filename from HEAD header / content-disposition / size - asset.filename = header_content_disposition.get_param( + asset_filename = header_content_disposition.get_param( "filename", None ) + asset.filename = str(asset_filename) if asset_filename else None if not getattr(asset, "size", 0): # GET request for size @@ -987,16 +1328,18 @@ def _get_asset_sizes( params=params, headers=USER_AGENT, timeout=DEFAULT_STREAM_REQUESTS_TIMEOUT, + verify=ssl_verify, ) as stream: # size from GET header / Content-length asset.size = int(stream.headers.get("Content-length", 0)) if not getattr(asset, "size", 0): # size from GET header / content-disposition / size - asset.size = int( + size_str = str( parse_header( stream.headers.get("content-disposition", "") ).get_param("size", 0) ) + asset.size = int(size_str) if size_str.isdigit() else 0 total_size += asset.size return total_size @@ -1004,12 +1347,12 @@ def _get_asset_sizes( def download_all( self, products: SearchResult, - auth: Optional[PluginConfig] = None, + auth: Optional[Union[AuthBase, Dict[str, str]]] = None, downloaded_callback: Optional[DownloadedCallback] = None, progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Union[str, bool, Dict[str, Any]], + **kwargs: Unpack[DownloadConf], ): """ Download all using parent (base plugin) method diff --git a/eodag/plugins/download/s3rest.py b/eodag/plugins/download/s3rest.py index ff00c04ef..065ddda7b 100644 --- a/eodag/plugins/download/s3rest.py +++ b/eodag/plugins/download/s3rest.py @@ -17,16 +17,16 @@ # limitations under the License. from __future__ import annotations -import hashlib import logging import os import os.path -from typing import TYPE_CHECKING, Any, Dict, Optional, Union +from typing import TYPE_CHECKING, Dict, Optional, Union from xml.dom import minidom from xml.parsers.expat import ExpatError import requests from requests import RequestException +from requests.auth import AuthBase from eodag.api.product.metadata_mapping import OFFLINE_STATUS, ONLINE_STATUS from eodag.plugins.download.base import Download @@ -46,6 +46,7 @@ from eodag.utils.exceptions import ( AuthenticationError, DownloadError, + MisconfiguredError, NotAvailableError, RequestError, ) @@ -53,6 +54,8 @@ if TYPE_CHECKING: from eodag.api.product import EOProduct from eodag.config import PluginConfig + from eodag.types.download_args import DownloadConf + from eodag.utils import Unpack logger = logging.getLogger("eodag.download.s3rest") @@ -76,10 +79,7 @@ class S3RestDownload(Download): * ``config.order_method`` (str) - (optional) HTTP request method, GET (default) or POST * ``config.order_headers`` (dict) - (optional) order request headers * ``config.order_on_response`` (dict) - (optional) edit or add new product properties - * ``config.order_status_method`` (str) - (optional) status HTTP request method, GET (default) or POST - * ``config.order_status_percent`` (str) - (optional) progress percentage key in obtained status response - * ``config.order_status_success`` (dict) - (optional) key/value identifying an error success - * ``config.order_status_on_success`` (dict) - (optional) edit or add new product properties + * ``config.order_status`` (:class:`~eodag.config.PluginConfig.OrderStatus`) - Order status handling :type config: :class:`~eodag.config.PluginConfig` """ @@ -91,18 +91,18 @@ def __init__(self, provider: str, config: PluginConfig) -> None: def download( self, product: EOProduct, - auth: Optional[PluginConfig] = None, + auth: Optional[Union[AuthBase, Dict[str, str]]] = None, progress_callback: Optional[ProgressCallback] = None, wait: int = DEFAULT_DOWNLOAD_WAIT, timeout: int = DEFAULT_DOWNLOAD_TIMEOUT, - **kwargs: Union[str, bool, Dict[str, Any]], + **kwargs: Unpack[DownloadConf], ) -> Optional[str]: """Download method for S3 REST API. :param product: The EO product to download :type product: :class:`~eodag.api.product._product.EOProduct` - :param auth: (optional) The configuration of a plugin of type Authentication - :type auth: :class:`~eodag.config.PluginConfig` + :param auth: (optional) authenticated object + :type auth: Optional[Union[AuthBase, Dict[str, str]]] :param progress_callback: (optional) A method or a callable object which takes a current size and a maximum size as inputs and handle progress bar @@ -117,6 +117,9 @@ def download( :returns: The absolute path to the downloaded product in the local filesystem :rtype: str """ + if auth is not None and not isinstance(auth, AuthBase): + raise MisconfiguredError(f"Incompatible auth plugin: {type(auth)}") + if progress_callback is None: logger.info( "Progress bar unavailable, please call product.download() instead of plugin.download()" @@ -135,10 +138,10 @@ def download( @self._download_retry(product, wait, timeout) def download_request( product: EOProduct, - auth: PluginConfig, + auth: AuthBase, progress_callback: ProgressCallback, ordered_message: str, - **kwargs: Any, + **kwargs: Unpack[DownloadConf], ): # check order status if product.properties.get("orderStatusLink", None): @@ -172,8 +175,16 @@ def download_request( # get nodes/files list contained in the bucket logger.debug("Retrieving product content from %s", nodes_list_url) + + ssl_verify = getattr(self.config, "ssl_verify", True) + timeout = getattr(self.config, "timeout", HTTP_REQ_TIMEOUT) + bucket_contents = requests.get( - nodes_list_url, auth=auth, headers=USER_AGENT, timeout=HTTP_REQ_TIMEOUT + nodes_list_url, + auth=auth, + headers=USER_AGENT, + timeout=timeout, + verify=ssl_verify, ) try: bucket_contents.raise_for_status() @@ -252,8 +263,9 @@ def download_request( "Unable to create records directory. Got:\n%s", tb.format_exc() ) # check if product has already been downloaded - url_hash = hashlib.md5(product.remote_location.encode("utf-8")).hexdigest() - record_filename = os.path.join(download_records_dir, url_hash) + record_filename = os.path.join( + download_records_dir, self.generate_record_hash(product) + ) if os.path.isfile(record_filename) and os.path.exists(product_local_path): product.location = path_to_uri(product_local_path) return product_local_path @@ -303,6 +315,7 @@ def download_request( auth=auth, headers=USER_AGENT, timeout=DEFAULT_STREAM_REQUESTS_TIMEOUT, + verify=ssl_verify, ) as stream: try: stream.raise_for_status() diff --git a/eodag/plugins/manager.py b/eodag/plugins/manager.py index 518142465..cbb7ccc0a 100644 --- a/eodag/plugins/manager.py +++ b/eodag/plugins/manager.py @@ -43,7 +43,7 @@ from eodag.plugins.download.base import Download from eodag.plugins.search.base import Search from eodag.utils import GENERIC_PRODUCT_TYPE -from eodag.utils.exceptions import UnsupportedProvider +from eodag.utils.exceptions import MisconfiguredError, UnsupportedProvider if TYPE_CHECKING: from eodag.api.product import EOProduct @@ -73,7 +73,12 @@ class PluginManager: supported_topics = {"search", "download", "crunch", "auth", "api"} + product_type_to_provider_config_map: Dict[str, List[ProviderConfig]] + + skipped_plugins: List[str] + def __init__(self, providers_config: Dict[str, ProviderConfig]) -> None: + self.skipped_plugins = [] self.providers_config = providers_config # Load all the plugins. This will make all plugin classes of a particular # type to be available in the base plugin class's 'plugins' attribute. @@ -90,6 +95,13 @@ def __init__(self, providers_config: Dict[str, ProviderConfig]) -> None: ): try: entry_point.load() + except pkg_resources.DistributionNotFound: + logger.debug( + "%s plugin skipped, eodag[%s] or eodag[all] needed", + entry_point.name, + ",".join(entry_point.extras), + ) + self.skipped_plugins.append(entry_point.name) except ImportError: import traceback as tb @@ -116,7 +128,9 @@ def __init__(self, providers_config: Dict[str, ProviderConfig]) -> None: self.providers_config = plugin_providers_config self.rebuild() - def rebuild(self, providers_config=None): + def rebuild( + self, providers_config: Optional[Dict[str, ProviderConfig]] = None + ) -> None: """(Re)Build plugin manager mapping and cache""" if providers_config is not None: self.providers_config = providers_config @@ -126,13 +140,13 @@ def rebuild(self, providers_config=None): def build_product_type_to_provider_config_map(self) -> None: """Build mapping conf between product types and providers""" - self.product_type_to_provider_config_map: Dict[str, List[ProviderConfig]] = {} + self.product_type_to_provider_config_map = {} for provider in list(self.providers_config): provider_config = self.providers_config[provider] if not hasattr(provider_config, "products") or not provider_config.products: logger.info( - "%s: provider has no product configured and will be skipped" - % provider + "%s: provider has no product configured and will be skipped", + provider, ) self.providers_config.pop(provider) continue @@ -159,56 +173,57 @@ def get_search_plugins( :param product_type: (optional) The product type that the constructed plugins must support :type product_type: str - :param provider: (optional) The provider on which to get the search plugin + :param provider: (optional) The provider or the provider group on which to get + the search plugins :type provider: str :returns: All the plugins supporting the product type, one by one (a generator object) - :rtype: types.GeneratorType(:class:`~eodag.plugins.search.Search` or :class:`~eodag.plugins.download.Api`) + :rtype: types.GeneratorType(:class:`~eodag.plugins.search.Search` + or :class:`~eodag.plugins.download.Api`) :raises: :class:`~eodag.utils.exceptions.UnsupportedProvider` - :raises: :class:`~eodag.utils.exceptions.UnsupportedProductType` """ def get_plugin() -> Union[Search, Api]: plugin: Union[Search, Api] - try: + if search := getattr(config, "search", None): config.search.products = config.products config.search.priority = config.priority - plugin = cast( - Search, self._build_plugin(config.name, config.search, Search) - ) - except AttributeError: + plugin = cast(Search, self._build_plugin(config.name, search, Search)) + elif api := getattr(config, "api", None): config.api.products = config.products config.api.priority = config.priority - plugin = cast(Api, self._build_plugin(config.name, config.api, Api)) + plugin = cast(Api, self._build_plugin(config.name, api, Api)) + else: + raise MisconfiguredError( + f"No search plugin configureed for {config.name}." + ) return plugin - if provider is not None: - try: - config = self.providers_config[provider] - except KeyError: - raise UnsupportedProvider - yield get_plugin() - # Signal the end of iteration as we already have what we wanted (see PEP-479) - return - - if product_type is None: - for config in sorted( - self.providers_config.values(), key=attrgetter("priority"), reverse=True - ): - yield get_plugin() - # Signal the end of iteration as we already have what we wanted (see PEP-479) - return - try: - for config in self.product_type_to_provider_config_map[product_type]: - yield get_plugin() - except KeyError: - logger.info( - "UnsupportedProductType: %s, using generic settings", product_type + configs: Optional[List[ProviderConfig]] + if product_type: + configs = self.product_type_to_provider_config_map.get(product_type) + if not configs: + logger.info( + "UnsupportedProductType: %s, using generic settings", product_type + ) + configs = self.product_type_to_provider_config_map[GENERIC_PRODUCT_TYPE] + else: + configs = list(self.providers_config.values()) + + if provider: + configs = [ + c for c in configs if provider in [getattr(c, "group", None), c.name] + ] + + if not configs and product_type: + raise UnsupportedProvider( + f"{provider} is not (yet) supported for {product_type}" ) - for config in self.product_type_to_provider_config_map[ - GENERIC_PRODUCT_TYPE - ]: - yield get_plugin() + if not configs: + raise UnsupportedProvider(f"{provider} is not (yet) supported") + + for config in sorted(configs, key=attrgetter("priority"), reverse=True): + yield get_plugin() def get_download_plugin(self, product: EOProduct) -> Union[Download, Api]: """Build and return the download plugin capable of downloading the given @@ -220,19 +235,20 @@ def get_download_plugin(self, product: EOProduct) -> Union[Download, Api]: :rtype: :class:`~eodag.plugins.download.Download` or :class:`~eodag.plugins.download.Api` """ plugin_conf = self.providers_config[product.provider] - try: + if download := getattr(plugin_conf, "download", None): plugin_conf.download.priority = plugin_conf.priority plugin = cast( Download, - self._build_plugin(product.provider, plugin_conf.download, Download), + self._build_plugin(product.provider, download, Download), ) - return plugin - except AttributeError: + elif api := getattr(plugin_conf, "api", None): plugin_conf.api.priority = plugin_conf.priority - plugin = cast( - Api, self._build_plugin(product.provider, plugin_conf.api, Api) + plugin = cast(Api, self._build_plugin(product.provider, api, Api)) + else: + raise MisconfiguredError( + f"No download plugin configured for provider {plugin_conf.name}." ) - return plugin + return plugin def get_auth_plugin(self, provider: str) -> Optional[Authentication]: """Build and return the authentication plugin for the given product_type and @@ -244,17 +260,17 @@ def get_auth_plugin(self, provider: str) -> Optional[Authentication]: :rtype: :class:`~eodag.plugins.authentication.Authentication` """ plugin_conf = self.providers_config[provider] - try: - plugin_conf.auth.priority = plugin_conf.priority - plugin = cast( - Authentication, - self._build_plugin(provider, plugin_conf.auth, Authentication), - ) - return plugin - except AttributeError: + auth: Optional[PluginConfig] = getattr(plugin_conf, "auth", None) + if not auth: # We guess the plugin being built is of type Api, therefore no need # for an Auth plugin. return None + auth.priority = plugin_conf.priority + plugin = cast( + Authentication, + self._build_plugin(provider, auth, Authentication), + ) + return plugin @staticmethod def get_crunch_plugin(name: str, **options: Any) -> Crunch: @@ -268,8 +284,8 @@ def get_crunch_plugin(name: str, **options: Any) -> Crunch: :returns: The cruncher named `name` :rtype: :class:`~eodag.plugins.crunch.Crunch` """ - Klass = Crunch.get_plugin_by_class_name(name) - return Klass(options) + klass = Crunch.get_plugin_by_class_name(name) + return klass(options) def sort_providers(self) -> None: """Sort providers taking into account current priority order""" diff --git a/eodag/plugins/search/__init__.py b/eodag/plugins/search/__init__.py index db20fe594..3a4e88f76 100644 --- a/eodag/plugins/search/__init__.py +++ b/eodag/plugins/search/__init__.py @@ -16,3 +16,39 @@ # See the License for the specific language governing permissions and # limitations under the License. """EODAG search package""" +from __future__ import annotations + +from dataclasses import dataclass, field +from typing import TYPE_CHECKING + +from eodag.utils import DEFAULT_ITEMS_PER_PAGE, DEFAULT_PAGE + +if TYPE_CHECKING: + from typing import Any, Dict, List, Optional, Union + + from requests.auth import AuthBase + + from eodag.plugins.authentication.base import Authentication + + +@dataclass +class PreparedSearch: + """An object collecting needed information for search.""" + + product_type: Optional[str] = None + page: int = DEFAULT_PAGE + items_per_page: int = DEFAULT_ITEMS_PER_PAGE + auth: Optional[Union[AuthBase, Dict[str, str]]] = None + auth_plugin: Optional[Authentication] = None + count: bool = True + url: Optional[str] = None + info_message: Optional[str] = None + exception_message: Optional[str] = None + + need_count: bool = field(init=False) + query_params: Dict[str, Any] = field(init=False) + query_string: str = field(init=False) + search_urls: List[str] = field(init=False) + product_type_def_params: Dict[str, Any] = field(init=False) + total_items_nb: int = field(init=False) + sort_by_qs: str = field(init=False) diff --git a/eodag/plugins/search/base.py b/eodag/plugins/search/base.py index b84d2e490..d0318a880 100644 --- a/eodag/plugins/search/base.py +++ b/eodag/plugins/search/base.py @@ -18,24 +18,37 @@ from __future__ import annotations import logging -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple +from typing import TYPE_CHECKING +import orjson from pydantic.fields import Field, FieldInfo from eodag.api.product.metadata_mapping import ( DEFAULT_METADATA_MAPPING, + NOT_MAPPED, mtd_cfg_as_conversion_and_querypath, ) from eodag.plugins.base import PluginTopic +from eodag.plugins.search import PreparedSearch +from eodag.types import model_fields_to_annotated +from eodag.types.queryables import Queryables +from eodag.types.search_args import SortByList from eodag.utils import ( - DEFAULT_ITEMS_PER_PAGE, - DEFAULT_PAGE, GENERIC_PRODUCT_TYPE, Annotated, + copy_deepcopy, + deepcopy, format_dict_items, + get_args, + update_nested_dict, ) +from eodag.utils.exceptions import ValidationError if TYPE_CHECKING: + from typing import Any, Dict, List, Optional, Tuple, Union + + from requests.auth import AuthBase + from eodag.api.product import EOProduct from eodag.config import PluginConfig @@ -51,11 +64,18 @@ class Search(PluginTopic): :type config: :class:`~eodag.config.PluginConfig` """ + auth: Union[AuthBase, Dict[str, str]] + next_page_url: Optional[str] + next_page_query_obj: Optional[Dict[str, Any]] + total_items_nb: int + need_count: bool + _request: Any # needed by deprecated load_stac_items + def __init__(self, provider: str, config: PluginConfig) -> None: super(Search, self).__init__(provider, config) # Prepare the metadata mapping # Do a shallow copy, the structure is flat enough for this to be sufficient - metas = DEFAULT_METADATA_MAPPING.copy() + metas: Dict[str, Any] = DEFAULT_METADATA_MAPPING.copy() # Update the defaults with the mapping value. This will add any new key # added by the provider mapping that is not in the default metadata if self.config.metadata_mapping: @@ -72,21 +92,18 @@ def clear(self) -> None: def query( self, - product_type: Optional[str] = None, - items_per_page: int = DEFAULT_ITEMS_PER_PAGE, - page: int = DEFAULT_PAGE, - count: bool = True, + prep: PreparedSearch = PreparedSearch(), **kwargs: Any, ) -> Tuple[List[EOProduct], Optional[int]]: """Implementation of how the products must be searched goes here. This method must return a tuple with (1) a list of EOProduct instances (see eodag.api.product module) which will be processed by a Download plugin (2) and the total number of products matching - the search criteria. If ``count`` is False, the second element returned must be ``None``. + the search criteria. If ``prep.count`` is False, the second element returned must be ``None``. """ raise NotImplementedError("A Search plugin must implement a method named query") - def discover_product_types(self) -> Optional[Dict[str, Any]]: + def discover_product_types(self, **kwargs: Any) -> Optional[Dict[str, Any]]: """Fetch product types list from provider using `discover_product_types` conf""" return None @@ -101,21 +118,25 @@ def discover_queryables( :returns: fetched queryable parameters dict :rtype: Optional[Dict[str, Annotated[Any, FieldInfo]]] """ - return None + raise NotImplementedError( + f"discover_queryables is not implemeted for plugin {self.__class__.__name__}" + ) - def get_defaults_as_queryables( + def _get_defaults_as_queryables( self, product_type: str ) -> Dict[str, Annotated[Any, FieldInfo]]: """ - Return given product type defaut settings as queryables + Return given product type default settings as queryables :param product_type: given product type :type product_type: str :returns: queryable parameters dict :rtype: Dict[str, Annotated[Any, FieldInfo]] """ - defaults = self.config.products.get(product_type, {}) - queryables = {} + defaults = deepcopy(self.config.products.get(product_type, {})) + defaults.pop("metadata_mapping", None) + + queryables: Dict[str, Annotated[Any, FieldInfo]] = {} for parameter, value in defaults.items(): queryables[parameter] = Annotated[type(value), Field(default=value)] return queryables @@ -170,7 +191,7 @@ def get_product_type_def_params( def get_metadata_mapping( self, product_type: Optional[str] = None - ) -> Dict[str, str]: + ) -> Dict[str, Union[str, List[str]]]: """Get the plugin metadata mapping configuration (product type specific if exists) :param product_type: the desired product type @@ -178,6 +199,192 @@ def get_metadata_mapping( :returns: The product type specific metadata-mapping :rtype: dict """ - return self.config.products.get(product_type, {}).get( - "metadata_mapping", self.config.metadata_mapping + if product_type: + return self.config.products.get(product_type, {}).get( + "metadata_mapping", self.config.metadata_mapping + ) + return self.config.metadata_mapping + + def get_sort_by_arg(self, kwargs: Dict[str, Any]) -> Optional[SortByList]: + """Extract the "sortBy" argument from the kwargs or the provider default sort configuration + + :param kwargs: Search arguments + :type kwargs: Dict[str, Any] + :returns: The "sortBy" argument from the kwargs or the provider default sort configuration + :rtype: :class:`~eodag.types.search_args.SortByList` + """ + # remove "sortBy" from search args if exists because it is not part of metadata mapping, + # it will complete the query string or body once metadata mapping will be done + sort_by_arg_tmp = kwargs.pop("sortBy", None) + sort_by_arg = sort_by_arg_tmp or getattr(self.config, "sort", {}).get( + "sort_by_default", None + ) + if not sort_by_arg_tmp and sort_by_arg: + logger.info( + f"{self.provider} is configured with default sorting by '{sort_by_arg[0][0]}' " + f"in {'ascending' if sort_by_arg[0][1] == 'ASC' else 'descending'} order" + ) + return sort_by_arg + + def build_sort_by( + self, sort_by_arg: SortByList + ) -> Tuple[str, Dict[str, List[Dict[str, str]]]]: + """Build the sorting part of the query string or body by transforming + the "sortBy" argument into a provider-specific string or dictionnary + + :param sort_by_arg: the "sortBy" argument in EODAG format + :type sort_by_arg: :class:`~eodag.types.search_args.SortByList` + :returns: The "sortBy" argument in provider-specific format + :rtype: Union[str, Dict[str, List[Dict[str, str]]]] + """ + if not hasattr(self.config, "sort"): + raise ValidationError(f"{self.provider} does not support sorting feature") + # TODO: remove this code block when search args model validation is embeded + # remove duplicates + sort_by_arg = list(set(sort_by_arg)) + + sort_by_qs: str = "" + sort_by_qp: Dict[str, Any] = {} + + provider_sort_by_tuples_used: List[Tuple[str, str]] = [] + for eodag_sort_by_tuple in sort_by_arg: + eodag_sort_param = eodag_sort_by_tuple[0] + provider_sort_param = self.config.sort["sort_param_mapping"].get( + eodag_sort_param, None + ) + if not provider_sort_param: + joined_eodag_params_to_map = ", ".join( + k for k in self.config.sort["sort_param_mapping"].keys() + ) + params = set(self.config.sort["sort_param_mapping"].keys()) + params.add(eodag_sort_param) + raise ValidationError( + f"'{eodag_sort_param}' parameter is not sortable with {self.provider}. " + f"Here is the list of sortable parameter(s) with {self.provider}: {joined_eodag_params_to_map}", + params, + ) + eodag_sort_order = eodag_sort_by_tuple[1] + # TODO: remove this code block when search args model validation is embeded + # Remove leading and trailing whitespace(s) if exist + eodag_sort_order = eodag_sort_order.strip().upper() + if eodag_sort_order[:3] != "ASC" and eodag_sort_order[:3] != "DES": + raise ValidationError( + "Sorting order is invalid: it must be set to 'ASC' (ASCENDING) or " + f"'DESC' (DESCENDING), got '{eodag_sort_order}' with '{eodag_sort_param}' instead" + ) + eodag_sort_order = eodag_sort_order[:3] + + provider_sort_order = ( + self.config.sort["sort_order_mapping"]["ascending"] + if eodag_sort_order == "ASC" + else self.config.sort["sort_order_mapping"]["descending"] + ) + provider_sort_by_tuple: Tuple[str, str] = ( + provider_sort_param, + provider_sort_order, + ) + # TODO: remove this code block when search args model validation is embeded + for provider_sort_by_tuple_used in provider_sort_by_tuples_used: + # since duplicated tuples or dictionnaries have been removed, if two sorting parameters are equal, + # then their sorting order is different and there is a contradiction that would raise an error + if provider_sort_by_tuple[0] == provider_sort_by_tuple_used[0]: + raise ValidationError( + f"'{eodag_sort_param}' parameter is called several times to sort results with different " + "sorting orders. Please set it to only one ('ASC' (ASCENDING) or 'DESC' (DESCENDING))", + set([eodag_sort_param]), + ) + provider_sort_by_tuples_used.append(provider_sort_by_tuple) + + # TODO: move this code block to the top of this method when search args model validation is embeded + # check if the limit number of sorting parameter(s) is respected with this sorting parameter + if ( + self.config.sort.get("max_sort_params", None) + and len(provider_sort_by_tuples_used) + > self.config.sort["max_sort_params"] + ): + raise ValidationError( + f"Search results can be sorted by only {self.config.sort['max_sort_params']} " + f"parameter(s) with {self.provider}" + ) + + parsed_sort_by_tpl: str = self.config.sort["sort_by_tpl"].format( + sort_param=provider_sort_by_tuple[0], + sort_order=provider_sort_by_tuple[1], + ) + try: + parsed_sort_by_tpl_dict: Dict[str, Any] = orjson.loads( + parsed_sort_by_tpl + ) + sort_by_qp = update_nested_dict( + sort_by_qp, parsed_sort_by_tpl_dict, extend_list_values=True + ) + except orjson.JSONDecodeError: + sort_by_qs += parsed_sort_by_tpl + return (sort_by_qs, sort_by_qp) + + def list_queryables( + self, + filters: Dict[str, Any], + product_type: Optional[str] = None, + ) -> Dict[str, Annotated[Any, FieldInfo]]: + """ + Get queryables + + :param filters: Additional filters for queryables. + :type filters: Dict[str, Any] + :param product_type: (optional) The product type. + :type product_type: Optional[str] + + :return: A dictionary containing the queryable properties, associating parameters to their + annotated type. + :rtype: Dict[str, Annotated[Any, FieldInfo]] + """ + default_values: Dict[str, Any] = deepcopy( + getattr(self.config, "products", {}).get(product_type, {}) + ) + default_values.pop("metadata_mapping", None) + + queryables: Dict[str, Annotated[Any, FieldInfo]] = {} + try: + queryables = self.discover_queryables(**{**default_values, **filters}) or {} + except NotImplementedError: + pass + + metadata_mapping: Dict[str, Any] = deepcopy( + self.get_metadata_mapping(product_type) ) + + for param in list(metadata_mapping.keys()): + if NOT_MAPPED in metadata_mapping[param] or not isinstance( + metadata_mapping[param], list + ): + del metadata_mapping[param] + + eodag_queryables = copy_deepcopy( + model_fields_to_annotated(Queryables.model_fields) + ) + for k, v in eodag_queryables.items(): + eodag_queryable_field_info = ( + get_args(v)[1] if len(get_args(v)) > 1 else None + ) + if not isinstance(eodag_queryable_field_info, FieldInfo): + continue + # keep default field info of eodag queryables + if k in filters and k in queryables: + queryable_field_info = ( + get_args(queryables[k])[1] + if len(get_args(queryables[k])) > 1 + else None + ) + if not isinstance(queryable_field_info, FieldInfo): + continue + queryable_field_info.default = filters[k] + continue + if k in queryables: + continue + if eodag_queryable_field_info.is_required() or ( + (eodag_queryable_field_info.alias or k) in metadata_mapping + ): + queryables[k] = v + + return queryables diff --git a/eodag/plugins/search/build_search_result.py b/eodag/plugins/search/build_search_result.py index 04fc14c05..24d56b328 100644 --- a/eodag/plugins/search/build_search_result.py +++ b/eodag/plugins/search/build_search_result.py @@ -19,17 +19,47 @@ import hashlib import logging -from typing import Any, Dict, List, Optional, Tuple +from datetime import datetime, timedelta, timezone +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Set, Tuple, cast from urllib.parse import quote_plus, unquote_plus import geojson import orjson -from jsonpath_ng import Fields +from dateutil.parser import isoparse +from jsonpath_ng import Child, Fields, Root +from pydantic import create_model +from pydantic.fields import FieldInfo +from typing_extensions import get_args from eodag.api.product import EOProduct -from eodag.api.product.metadata_mapping import properties_from_json +from eodag.api.product.metadata_mapping import ( + NOT_AVAILABLE, + NOT_MAPPED, + get_queryable_from_provider, + mtd_cfg_as_conversion_and_querypath, + properties_from_json, +) +from eodag.api.search_result import RawSearchResult +from eodag.plugins.search import PreparedSearch +from eodag.plugins.search.base import Search from eodag.plugins.search.qssearch import PostJsonSearch -from eodag.utils import dict_items_recursive_sort +from eodag.types import json_field_definition_to_python, model_fields_to_annotated +from eodag.types.queryables import CommonQueryables +from eodag.utils import ( + DEFAULT_MISSION_START_DATE, + Annotated, + deepcopy, + dict_items_recursive_sort, + get_geometry_from_various, +) +from eodag.utils.constraints import ( + fetch_constraints, + get_constraint_queryables_with_additional_params, +) +from eodag.utils.exceptions import ValidationError + +if TYPE_CHECKING: + from eodag.config import PluginConfig logger = logging.getLogger("eodag.search.build_search_result") @@ -68,30 +98,29 @@ def count_hits( def collect_search_urls( self, - page: Optional[int] = None, - items_per_page: Optional[int] = None, - count: bool = True, + prep: PreparedSearch = PreparedSearch(), **kwargs: Any, ) -> Tuple[List[str], int]: """Wraps PostJsonSearch.collect_search_urls to force product count to 1""" - urls, _ = super(BuildPostSearchResult, self).collect_search_urls( - page=page, items_per_page=items_per_page, count=count, **kwargs - ) + urls, _ = super(BuildPostSearchResult, self).collect_search_urls(prep, **kwargs) return urls, 1 - def do_search(self, *args: Any, **kwargs: Any) -> List[Dict[str, Any]]: + def do_search( + self, prep: PreparedSearch = PreparedSearch(items_per_page=None), **kwargs: Any + ) -> List[Dict[str, Any]]: """Perform the actual search request, and return result in a single element.""" - search_url = self.search_urls[0] - response = self._request( - search_url, - info_message=f"Sending search request: {search_url}", - exception_message=f"Skipping error while searching for {self.provider} " - f"{self.__class__.__name__} instance:", + prep.url = prep.search_urls[0] + prep.info_message = f"Sending search request: {prep.url}" + prep.exception_message = ( + f"Skipping error while searching for {self.provider} " + f"{self.__class__.__name__} instance:" ) + response = self._request(prep) + return [response.json()] def normalize_results( - self, results: List[Dict[str, Any]], **kwargs: Any + self, results: RawSearchResult, **kwargs: Any ) -> List[EOProduct]: """Build :class:`~eodag.api.product._product.EOProduct` from provider result @@ -110,22 +139,20 @@ def normalize_results( _dc_qs = kwargs.pop("_dc_qs", None) if _dc_qs is not None: qs = unquote_plus(unquote_plus(_dc_qs)) - unpaginated_query_params = sorted_unpaginated_query_params = geojson.loads( - qs - ) + sorted_unpaginated_query_params = geojson.loads(qs) else: # update result with query parameters without pagination (or search-only params) if isinstance( self.config.pagination["next_page_query_obj"], str - ) and hasattr(self, "query_params_unpaginated"): - unpaginated_query_params = self.query_params_unpaginated + ) and hasattr(results, "query_params_unpaginated"): + unpaginated_query_params = results.query_params_unpaginated elif isinstance(self.config.pagination["next_page_query_obj"], str): next_page_query_obj = orjson.loads( self.config.pagination["next_page_query_obj"].format() ) unpaginated_query_params = { k: v[0] if (isinstance(v, list) and len(v) == 1) else v - for k, v in self.query_params.items() + for k, v in results.query_params.items() if (k, v) not in next_page_query_obj.items() } else: @@ -135,14 +162,25 @@ def normalize_results( sorted_unpaginated_query_params = dict_items_recursive_sort( unpaginated_query_params ) - qs = geojson.dumps(sorted_unpaginated_query_params) - query_hash = hashlib.sha1(str(qs).encode("UTF-8")).hexdigest() + # use all available query_params to parse properties + result = dict( + result, + **sorted_unpaginated_query_params, + qs=sorted_unpaginated_query_params, + ) + + # remove unwanted query params + for param in getattr(self.config, "remove_from_query", []): + sorted_unpaginated_query_params.pop(param, None) - result = dict(result, **unpaginated_query_params) + qs = geojson.dumps(sorted_unpaginated_query_params) - # update result with search args if not None (and not auth) + query_hash = hashlib.sha1(str(qs).encode("UTF-8")).hexdigest() + + # update result with product_type_def_params and search args if not None (and not auth) kwargs.pop("auth", None) + result.update(results.product_type_def_params) result = dict(result, **{k: v for k, v in kwargs.items() if v is not None}) # parse porperties @@ -157,22 +195,28 @@ def normalize_results( # build product id id_prefix = (product_type or self.provider).upper() - product_id = "%s_%s_%s" % ( + product_id = "%s_%s_%s_%s" % ( id_prefix, parsed_properties["startTimeFromAscendingNode"] .split("T")[0] .replace("-", ""), + parsed_properties["completionTimeFromAscendingNode"] + .split("T")[0] + .replace("-", ""), query_hash, ) parsed_properties["id"] = parsed_properties["title"] = product_id - # update downloadLink - parsed_properties["downloadLink"] += f"?{qs}" + # update downloadLink and orderLink parsed_properties["_dc_qs"] = quote_plus(qs) + if parsed_properties["downloadLink"] != "Not Available": + parsed_properties["downloadLink"] += f"?{qs}" # parse metadata needing downloadLink + dl_path = Fields("downloadLink") + dl_path_from_root = Child(Root(), dl_path) for param, mapping in self.config.metadata_mapping.items(): - if Fields("downloadLink") in mapping: + if dl_path in mapping or dl_path_from_root in mapping: parsed_properties.update( properties_from_json(parsed_properties, {param: mapping}) ) @@ -192,3 +236,316 @@ def normalize_results( return [ product, ] + + +class BuildSearchResult(BuildPostSearchResult): + """BuildSearchResult search plugin. + + This plugin builds a single :class:`~eodag.api.search_result.SearchResult` object + using given query parameters as product properties. + + The available configuration parameters inherits from parent classes, with particularly + for this plugin: + + - **end_date_excluded**: Set to `False` if provider does not include end date to + search + + - **remove_from_query**: List of parameters used to parse metadata but that must + not be included to the query + + - **constraints_file_url**: url of the constraint file used to build queryables + + :param provider: An eodag providers configuration dictionary + :type provider: dict + :param config: Path to the user configuration file + :type config: str + """ + + def __init__(self, provider: str, config: PluginConfig) -> None: + # init self.config.metadata_mapping using Search Base plugin + Search.__init__(self, provider, config) + + self.config.__dict__.setdefault("api_endpoint", "") + + # needed by QueryStringSearch.build_query_string / format_free_text_search + self.config.__dict__.setdefault("free_text_search_operations", {}) + # needed for compatibility + self.config.__dict__.setdefault("pagination", {"next_page_query_obj": "{{}}"}) + + # parse jsonpath on init: product type specific metadata-mapping + for product_type in self.config.products.keys(): + if "metadata_mapping" in self.config.products[product_type].keys(): + self.config.products[product_type][ + "metadata_mapping" + ] = mtd_cfg_as_conversion_and_querypath( + self.config.products[product_type]["metadata_mapping"] + ) + # Complete and ready to use product type specific metadata-mapping + product_type_metadata_mapping = deepcopy(self.config.metadata_mapping) + + # update config using provider product type definition metadata_mapping + # from another product + other_product_for_mapping = cast( + str, + self.config.products[product_type].get( + "metadata_mapping_from_product", "" + ), + ) + if other_product_for_mapping: + other_product_type_def_params = self.get_product_type_def_params( + other_product_for_mapping, + ) + product_type_metadata_mapping.update( + other_product_type_def_params.get("metadata_mapping", {}) + ) + # from current product + product_type_metadata_mapping.update( + self.config.products[product_type]["metadata_mapping"] + ) + + self.config.products[product_type][ + "metadata_mapping" + ] = product_type_metadata_mapping + + def do_search(self, *args: Any, **kwargs: Any) -> List[Dict[str, Any]]: + """Should perform the actual search request.""" + return [{}] + + def query( + self, + prep: PreparedSearch = PreparedSearch(), + **kwargs: Any, + ) -> Tuple[List[EOProduct], Optional[int]]: + """Build ready-to-download SearchResult""" + + self._preprocess_search_params(kwargs) + + return BuildPostSearchResult.query(self, prep, **kwargs) + + def clear(self) -> None: + """Clear search context""" + pass + + def build_query_string( + self, product_type: str, **kwargs: Any + ) -> Tuple[Dict[str, Any], str]: + """Build The query string using the search parameters""" + # parse kwargs as properties as they might be needed to build the query + parsed_properties = properties_from_json( + kwargs, + self.config.metadata_mapping, + ) + available_properties = { + k: v + for k, v in parsed_properties.items() + if v not in [NOT_AVAILABLE, NOT_MAPPED] + } + + # build and return the query + return BuildPostSearchResult.build_query_string( + self, product_type=product_type, **available_properties + ) + + def get_product_type_cfg(self, key: str, default: Any = None) -> Any: + """ + Get the value of a configuration option specific to the current product type. + + This method retrieves the value of a configuration option from the + `_product_type_config` attribute. If the option is not found, the provided + default value is returned. + + :param key: The configuration option key. + :type key: str + :param default: The default value to be returned if the option is not found (default is None). + :type default: Any + + :return: The value of the specified configuration option or the default value. + :rtype: Any + """ + product_type_cfg = getattr(self.config, "product_type_config", {}) + non_none_cfg = {k: v for k, v in product_type_cfg.items() if v} + + return non_none_cfg.get(key, default) + + def _preprocess_search_params(self, params: Dict[str, Any]) -> None: + """Preprocess search parameters before making a request to the CDS API. + + This method is responsible for checking and updating the provided search parameters + to ensure that required parameters like 'productType', 'startTimeFromAscendingNode', + 'completionTimeFromAscendingNode', and 'geometry' are properly set. If not specified + in the input parameters, default values or values from the configuration are used. + + :param params: Search parameters to be preprocessed. + :type params: dict + """ + _dc_qs = params.get("_dc_qs", None) + if _dc_qs is not None: + # if available, update search params using datacube query-string + _dc_qp = geojson.loads(unquote_plus(unquote_plus(_dc_qs))) + if "/to/" in _dc_qp.get("date", ""): + ( + params["startTimeFromAscendingNode"], + params["completionTimeFromAscendingNode"], + ) = _dc_qp["date"].split("/to/") + elif "/" in _dc_qp.get("date", ""): + ( + params["startTimeFromAscendingNode"], + params["completionTimeFromAscendingNode"], + ) = _dc_qp["date"].split("/") + elif _dc_qp.get("date", None): + params["startTimeFromAscendingNode"] = params[ + "completionTimeFromAscendingNode" + ] = _dc_qp["date"] + + if "/" in _dc_qp.get("area", ""): + params["geometry"] = _dc_qp["area"].split("/") + + non_none_params = {k: v for k, v in params.items() if v} + + # productType + dataset = params.get("dataset", None) + params["productType"] = non_none_params.get("productType", dataset) + + # dates + mission_start_dt = datetime.fromisoformat( + self.get_product_type_cfg( + "missionStartDate", DEFAULT_MISSION_START_DATE + ).replace( + "Z", "+00:00" + ) # before 3.11 + ) + + default_end_from_cfg = self.config.products.get(params["productType"], {}).get( + "_default_end_date", None + ) + default_end_str = ( + default_end_from_cfg + or ( + datetime.now(timezone.utc) + if params.get("startTimeFromAscendingNode") + else mission_start_dt + timedelta(days=1) + ).isoformat() + ) + + params["startTimeFromAscendingNode"] = non_none_params.get( + "startTimeFromAscendingNode", mission_start_dt.isoformat() + ) + params["completionTimeFromAscendingNode"] = non_none_params.get( + "completionTimeFromAscendingNode", default_end_str + ) + + # temporary _date parameter mixing start & end + end_date_excluded = getattr(self.config, "end_date_excluded", True) + end_date = isoparse(params["completionTimeFromAscendingNode"]) + if not end_date_excluded and end_date == end_date.replace( + hour=0, minute=0, second=0, microsecond=0 + ): + end_date += timedelta(days=-1) + params["completionTimeFromAscendingNode"] = end_date.isoformat() + + # geometry + if "geometry" in params: + params["geometry"] = get_geometry_from_various(geometry=params["geometry"]) + + def discover_queryables( + self, **kwargs: Any + ) -> Optional[Dict[str, Annotated[Any, FieldInfo]]]: + """Fetch queryables list from provider using its constraints file + + :param kwargs: additional filters for queryables (`productType` and other search + arguments) + :type kwargs: Any + :returns: fetched queryable parameters dict + :rtype: Optional[Dict[str, Annotated[Any, FieldInfo]]] + """ + constraints_file_url = getattr(self.config, "constraints_file_url", "") + if not constraints_file_url: + return {} + product_type = kwargs.pop("productType", None) + if not product_type: + return {} + + provider_product_type = self.config.products.get(product_type, {}).get( + "dataset", None + ) + user_provider_product_type = kwargs.pop("dataset", None) + if ( + user_provider_product_type + and user_provider_product_type != provider_product_type + ): + raise ValidationError( + f"Cannot change dataset from {provider_product_type} to {user_provider_product_type}" + ) + + # defaults + default_queryables = self._get_defaults_as_queryables(product_type) + # remove dataset from queryables + default_queryables.pop("dataset", None) + + non_empty_kwargs = {k: v for k, v in kwargs.items() if v} + + if "{" in constraints_file_url: + constraints_file_url = constraints_file_url.format( + dataset=provider_product_type + ) + constraints = fetch_constraints(constraints_file_url, self) + if not constraints: + return default_queryables + + constraint_params: Dict[str, Dict[str, Set[Any]]] = {} + if len(kwargs) == 0: + # get values from constraints without additional filters + for constraint in constraints: + for key in constraint.keys(): + if key in constraint_params: + constraint_params[key]["enum"].update(constraint[key]) + else: + constraint_params[key] = {} + constraint_params[key]["enum"] = set(constraint[key]) + else: + # get values from constraints with additional filters + constraints_input_params = {k: v for k, v in non_empty_kwargs.items()} + constraint_params = get_constraint_queryables_with_additional_params( + constraints, constraints_input_params, self, product_type + ) + # query params that are not in constraints but might be default queryables + if len(constraint_params) == 1 and "not_available" in constraint_params: + not_queryables: Set[str] = set() + for constraint_param in constraint_params["not_available"]["enum"]: + param = CommonQueryables.get_queryable_from_alias(constraint_param) + if param in dict( + CommonQueryables.model_fields, **default_queryables + ): + non_empty_kwargs.pop(constraint_param) + else: + not_queryables.add(constraint_param) + if not_queryables: + raise ValidationError( + f"parameter(s) {not_queryables} not queryable" + ) + else: + # get constraints again without common queryables + constraint_params = ( + get_constraint_queryables_with_additional_params( + constraints, non_empty_kwargs, self, product_type + ) + ) + + field_definitions: Dict[str, Any] = {} + for json_param, json_mtd in constraint_params.items(): + param = ( + get_queryable_from_provider( + json_param, self.get_metadata_mapping(product_type) + ) + or json_param + ) + default = kwargs.get(param, None) or self.config.products.get( + product_type, {} + ).get(param, None) + annotated_def = json_field_definition_to_python( + json_mtd, default_value=default, required=True + ) + field_definitions[param] = get_args(annotated_def) + + python_queryables = create_model("m", **field_definitions).model_fields + return {**default_queryables, **model_fields_to_annotated(python_queryables)} diff --git a/eodag/plugins/search/cop_marine.py b/eodag/plugins/search/cop_marine.py new file mode 100644 index 000000000..cc531055f --- /dev/null +++ b/eodag/plugins/search/cop_marine.py @@ -0,0 +1,378 @@ +# -*- coding: utf-8 -*- +# Copyright 2024, CS GROUP - France, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from __future__ import annotations + +import copy +import logging +import re +from datetime import datetime +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, cast +from urllib.parse import urlsplit + +import boto3 +import botocore +import requests +from dateutil.parser import isoparse +from dateutil.tz import tzutc +from dateutil.utils import today + +from eodag import EOProduct +from eodag.api.product import AssetsDict +from eodag.config import PluginConfig +from eodag.plugins.search import PreparedSearch +from eodag.plugins.search.static_stac_search import StaticStacSearch +from eodag.utils import get_bucket_name_and_prefix +from eodag.utils.exceptions import UnsupportedProductType, ValidationError + +if TYPE_CHECKING: + from mypy_boto3_s3 import S3Client + from mypy_boto3_s3.type_defs import ListObjectsOutputTypeDef + +logger = logging.getLogger("eodag.search.cop_marine") + + +def _get_date_from_yyyymmdd(date_str: str, item_key: str) -> Optional[datetime]: + year = date_str[:4] + month = date_str[4:6] + if len(date_str) > 6: + day = date_str[6:] + else: + day = "1" + try: + date = datetime( + int(year), + int(month), + int(day), + tzinfo=tzutc(), + ) + except ValueError: + logger.error(f"{item_key}: {date_str} is not a valid date") + return None + else: + return date + + +def _get_s3_client(endpoint_url: str) -> S3Client: + s3_session = boto3.Session() + return s3_session.client( + "s3", + config=botocore.config.Config( + # Configures to use subdomain/virtual calling format. + s3={"addressing_style": "virtual"}, + signature_version=botocore.UNSIGNED, + ), + endpoint_url=endpoint_url, + ) + + +def _check_int_values_properties(properties: Dict[str, Any]): + # remove int values with a bit length of more than 64 from the properties + invalid = [] + for prop, prop_value in properties.items(): + if isinstance(prop_value, int) and prop_value.bit_length() > 64: + invalid.append(prop) + if isinstance(prop_value, dict): + _check_int_values_properties(prop_value) + + for inv_key in invalid: + properties.pop(inv_key) + + +class CopMarineSearch(StaticStacSearch): + """class that implements search for the Copernicus Marine provider""" + + def __init__(self, provider: str, config: PluginConfig): + original_metadata_mapping = copy.deepcopy(config.metadata_mapping) + super().__init__(provider, config) + # reset to original metadata mapping from config (changed in super class init) + self.config.metadata_mapping = original_metadata_mapping + + def _get_product_type_info( + self, product_type: str + ) -> Tuple[Dict[str, Any], List[Dict[str, Any]]]: + """Fetch product type and associated datasets info""" + + fetch_url = cast( + str, + self.config.discover_product_types["fetch_url"].format( + **self.config.__dict__ + ), + ) + logger.debug("fetch data for collection %s", product_type) + provider_product_type = self.config.products.get(product_type, {}).get( + "productType", None + ) + if not provider_product_type: + provider_product_type = product_type + collection_url = ( + fetch_url.replace("catalog.stac.json", provider_product_type) + + "/product.stac.json" + ) + try: + collection_data = requests.get(collection_url).json() + except requests.RequestException: + logger.error("data for product %s could not be fetched", product_type) + raise UnsupportedProductType(product_type) + + datasets = [] + for link in [li for li in collection_data["links"] if li["rel"] == "item"]: + dataset_url = ( + fetch_url.replace("catalog.stac.json", provider_product_type) + + "/" + + link["href"] + ) + try: + dataset_item = requests.get(dataset_url).json() + datasets.append(dataset_item) + except requests.RequestException: + logger.error("data for dataset %s could not be fetched", link["title"]) + + return collection_data, datasets + + def _get_product_by_id( + self, + collection_objects: ListObjectsOutputTypeDef, + product_id: str, + s3_url: str, + product_type: str, + dataset_item: Dict[str, Any], + collection_dict: Dict[str, Any], + ): + for obj in collection_objects["Contents"]: + if product_id in obj["Key"]: + return self._create_product( + product_type, obj["Key"], s3_url, dataset_item, collection_dict + ) + return None + + def _create_product( + self, + product_type: str, + item_key: str, + s3_url: str, + dataset_item: Dict[str, Any], + collection_dict: Dict[str, Any], + use_dataset_dates: bool = False, + ) -> Optional[EOProduct]: + + item_id = item_key.split("/")[-1].split(".")[0] + download_url = s3_url + "/" + item_key + properties = { + "id": item_id, + "title": item_id, + "geometry": self.config.metadata_mapping["defaultGeometry"], + "downloadLink": download_url, + "dataset": dataset_item["id"], + } + if use_dataset_dates: + if "start_datetime" in dataset_item: + properties["startTimeFromAscendingNode"] = dataset_item[ + "start_datetime" + ] + properties["completionTimeFromAscendingNode"] = dataset_item[ + "end_datetime" + ] + elif "datetime" in dataset_item: + properties["startTimeFromAscendingNode"] = dataset_item["datetime"] + properties["completionTimeFromAscendingNode"] = dataset_item["datetime"] + else: + item_dates = re.findall(r"\d{8}", item_key) + if not item_dates: + item_dates = re.findall(r"\d{6}", item_key) + item_start = _get_date_from_yyyymmdd(item_dates[0], item_key) + if not item_start: # identified pattern was not a valid datetime + return None + if len(item_dates) > 2: # start, end and created_at timestamps + item_end = _get_date_from_yyyymmdd(item_dates[1], item_key) + else: # only date and created_at timestamps + item_end = item_start + properties["startTimeFromAscendingNode"] = item_start.strftime( + "%Y-%m-%dT%H:%M:%SZ" + ) + properties["completionTimeFromAscendingNode"] = ( + item_end or item_start + ).strftime("%Y-%m-%dT%H:%M:%SZ") + + for key, value in collection_dict["properties"].items(): + if key not in ["id", "title", "start_datetime", "end_datetime"]: + properties[key] = value + for key, value in dataset_item["properties"].items(): + if key not in ["id", "title", "start_datetime", "end_datetime"]: + properties[key] = value + _check_int_values_properties(properties) + + properties["thumbnail"] = collection_dict["assets"]["thumbnail"]["href"] + if "omiFigure" in collection_dict["assets"]: + properties["quicklook"] = collection_dict["assets"]["omiFigure"]["href"] + assets = { + "native": { + "title": "native", + "href": download_url, + "type": "application/x-netcdf", + } + } + product = EOProduct(self.provider, properties, productType=product_type) + product.assets = AssetsDict(product, assets) + return product + + def query( + self, + prep: PreparedSearch = PreparedSearch(), + **kwargs: Any, + ) -> Tuple[List[EOProduct], Optional[int]]: + """ + Implementation of search for the Copernicus Marine provider + :param prep: object containing search parameterds + :type prep: PreparedSearch + :param kwargs: additional search arguments + :returns: list of products and total number of products + :rtype: Tuple[List[EOProduct], Optional[int]] + """ + page = prep.page + items_per_page = prep.items_per_page + + # only return 1 page if pagination is disabled + if page > 1 and items_per_page <= 0: + return ([], 0) if prep.count else ([], None) + + product_type = kwargs.get("productType", prep.product_type) + if not product_type: + raise ValidationError( + "parameter product type is required for search with cop_marine provider" + ) + collection_dict, datasets_items_list = self._get_product_type_info(product_type) + products: List[EOProduct] = [] + start_index = items_per_page * (page - 1) + 1 + num_total = 0 + for i, dataset_item in enumerate(datasets_items_list): + try: + logger.debug("searching data for dataset %s", dataset_item["id"]) + + # date bounds + if "startTimeFromAscendingNode" in kwargs: + start_date = isoparse(kwargs["startTimeFromAscendingNode"]) + elif "start_datetime" in dataset_item["properties"]: + start_date = isoparse(dataset_item["properties"]["start_datetime"]) + else: + start_date = isoparse(dataset_item["properties"]["datetime"]) + if not start_date.tzinfo: + start_date = start_date.replace(tzinfo=tzutc()) + if "completionTimeFromAscendingNode" in kwargs: + end_date = isoparse(kwargs["completionTimeFromAscendingNode"]) + elif "end_datetime" in dataset_item["properties"]: + end_date = isoparse(dataset_item["properties"]["end_datetime"]) + else: + end_date = today(tzinfo=tzutc()) + if not end_date.tzinfo: + end_date = end_date.replace(tzinfo=tzutc()) + + # retrieve information about s3 from collection data + s3_url = dataset_item["assets"]["native"]["href"] + except KeyError as e: + logger.warning( + f"Unable to extract info from {product_type} item #{i}: {str(e)}" + ) + continue + + url_parts = urlsplit(s3_url) + endpoint_url = url_parts.scheme + "://" + url_parts.hostname + bucket, collection_path = get_bucket_name_and_prefix(s3_url, 0) + if bucket is None or collection_path is None: + logger.warning( + f"Unable to get bucket and prefix from {s3_url}, got {(bucket, collection_path)}" + ) + continue + + if ".nc" in collection_path: + num_total += 1 + if num_total < start_index: + continue + if len(products) < items_per_page or items_per_page < 0: + product = self._create_product( + product_type, + collection_path, + endpoint_url + "/" + bucket, + dataset_item, + collection_dict, + True, + ) + if product: + products.append(product) + continue + + s3_client = _get_s3_client(endpoint_url) + stop_search = False + current_object = None + while not stop_search: + # list_objects returns max 1000 objects -> use marker to get next objects + if current_object: + s3_objects = s3_client.list_objects( + Bucket=bucket, Prefix=collection_path, Marker=current_object + ) + else: + s3_objects = s3_client.list_objects( + Bucket=bucket, Prefix=collection_path + ) + if "Contents" not in s3_objects: + if len(products) == 0 and i == len(datasets_items_list) - 1: + return ([], 0) if prep.count else ([], None) + else: + break + + if "id" in kwargs: + product = self._get_product_by_id( + s3_objects, + kwargs["id"], + endpoint_url + "/" + bucket, + product_type, + dataset_item, + collection_dict, + ) + if product: + return [product], 1 + current_object = s3_objects["Contents"][-1]["Key"] + continue + + for obj in s3_objects["Contents"]: + item_key = obj["Key"] + # filter according to date(s) in item id + item_dates = re.findall(r"\d{8}", item_key) + if not item_dates: + item_dates = re.findall(r"\d{6}", item_key) + item_start = _get_date_from_yyyymmdd(item_dates[0], item_key) + if not item_start: # identified pattern was not a valid datetime + continue + if item_start > end_date: + stop_search = True + if not item_dates or (start_date <= item_start <= end_date): + num_total += 1 + if num_total < start_index: + continue + if len(products) < items_per_page or items_per_page < 0: + product = self._create_product( + product_type, + item_key, + endpoint_url + "/" + bucket, + dataset_item, + collection_dict, + ) + if product: + products.append(product) + current_object = item_key + + return products, num_total diff --git a/eodag/plugins/search/creodias_s3.py b/eodag/plugins/search/creodias_s3.py index 8bec50932..15cb5b02f 100644 --- a/eodag/plugins/search/creodias_s3.py +++ b/eodag/plugins/search/creodias_s3.py @@ -17,17 +17,18 @@ # limitations under the License. import logging from types import MethodType -from typing import Any, Dict, List +from typing import Any, List import boto3 import botocore from botocore.exceptions import BotoCoreError -from eodag import EOProduct -from eodag.api.product._assets import AssetsDict +from eodag.api.product import AssetsDict, EOProduct # type: ignore +from eodag.api.search_result import RawSearchResult from eodag.config import PluginConfig from eodag.plugins.authentication.aws_auth import AwsAuth -from eodag.plugins.search.qssearch import QueryStringSearch +from eodag.plugins.search.qssearch import ODataV4Search +from eodag.utils import guess_file_type from eodag.utils.exceptions import AuthenticationError, MisconfiguredError, RequestError DATA_EXTENSIONS = ["jp2", "tiff", "nc", "grib"] @@ -64,18 +65,19 @@ def _update_assets(product: EOProduct, config: PluginConfig, auth: AwsAuth): try: auth_dict = auth.authenticate() required_creds = ["aws_access_key_id", "aws_secret_access_key"] - if not all(getattr(auth, x) for x in required_creds): + if not all(x in auth_dict for x in required_creds): raise MisconfiguredError( f"Incomplete credentials for {product.provider}, missing " - f"{[x for x in required_creds if not getattr(auth, x)]}" + f"{[x for x in required_creds if x not in auth_dict]}" ) if not getattr(auth, "s3_client", None): auth.s3_client = boto3.client( "s3", endpoint_url=config.base_uri, - **auth_dict, + aws_access_key_id=auth_dict["aws_access_key_id"], + aws_secret_access_key=auth_dict["aws_secret_access_key"], ) - logger.debug(f"Listing assets in {prefix}") + logger.debug("Listing assets in %s", prefix) product.assets = AssetsDict(product) for asset in auth.s3_client.list_objects( Bucket=config.s3_bucket, Prefix=prefix, MaxKeys=300 @@ -96,6 +98,8 @@ def _update_assets(product: EOProduct, config: PluginConfig, auth: AwsAuth): "roles": [role], "href": f"s3://{config.s3_bucket}/{asset['Key']}", } + if mime_type := guess_file_type(asset["Key"]): + product.assets[asset_basename]["type"] = mime_type # update driver product.driver = product.get_driver() @@ -104,13 +108,10 @@ def _update_assets(product: EOProduct, config: PluginConfig, auth: AwsAuth): raise AuthenticationError( f"Authentication failed on {config.base_uri} s3" ) from e - else: - raise RequestError( - "assets for product %s could not be found", prefix - ) from e + raise RequestError(f"assets for product {prefix} could not be found") from e -class CreodiasS3Search(QueryStringSearch): +class CreodiasS3Search(ODataV4Search): """ Search on creodias and adapt results to s3 """ @@ -119,7 +120,7 @@ def __init__(self, provider, config): super(CreodiasS3Search, self).__init__(provider, config) def normalize_results( - self, results: List[Dict[str, Any]], **kwargs: Any + self, results: RawSearchResult, **kwargs: Any ) -> List[EOProduct]: """Build EOProducts from provider results""" diff --git a/eodag/plugins/search/csw.py b/eodag/plugins/search/csw.py index 316daa58c..e12fee62f 100644 --- a/eodag/plugins/search/csw.py +++ b/eodag/plugins/search/csw.py @@ -35,8 +35,9 @@ from eodag.api.product import EOProduct from eodag.api.product.metadata_mapping import properties_from_xml +from eodag.plugins.search import PreparedSearch from eodag.plugins.search.base import Search -from eodag.utils import DEFAULT_ITEMS_PER_PAGE, DEFAULT_PAGE, DEFAULT_PROJ +from eodag.utils import DEFAULT_PROJ from eodag.utils.import_system import patch_owslib_requests if TYPE_CHECKING: @@ -64,16 +65,13 @@ def clear(self) -> None: def query( self, - product_type: Optional[str] = None, - items_per_page: int = DEFAULT_ITEMS_PER_PAGE, - page: int = DEFAULT_PAGE, - count: bool = True, + prep: PreparedSearch = PreparedSearch(), **kwargs: Any, ) -> Tuple[List[EOProduct], Optional[int]]: """Perform a search on a OGC/CSW-like interface""" product_type = kwargs.get("productType") if product_type is None: - return [], 0 + return ([], 0) if prep.count else ([], None) auth = kwargs.get("auth") if auth: self.__init_catalog(**getattr(auth.config, "credentials", {})) @@ -118,7 +116,7 @@ def query( ) results.extend(partial_results) logger.info("Found %s overall results", len(results)) - total_results = len(results) if count else None + total_results = len(results) if prep.count else None return results, total_results def __init_catalog( diff --git a/eodag/plugins/search/data_request_search.py b/eodag/plugins/search/data_request_search.py index 1dbfeec2e..3ef0fffd8 100644 --- a/eodag/plugins/search/data_request_search.py +++ b/eodag/plugins/search/data_request_search.py @@ -19,8 +19,8 @@ import logging import time -from datetime import datetime, timedelta -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple +from datetime import datetime, timedelta, timezone +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, cast import requests @@ -30,10 +30,11 @@ mtd_cfg_as_conversion_and_querypath, properties_from_json, ) +from eodag.plugins.search import PreparedSearch from eodag.plugins.search.base import Search -from eodag.rest.stac import DEFAULT_MISSION_START_DATE from eodag.utils import ( DEFAULT_ITEMS_PER_PAGE, + DEFAULT_MISSION_START_DATE, DEFAULT_PAGE, GENERIC_PRODUCT_TYPE, HTTP_REQ_TIMEOUT, @@ -41,7 +42,12 @@ deepcopy, string_to_jsonpath, ) -from eodag.utils.exceptions import NotAvailableError, RequestError, TimeOutError +from eodag.utils.exceptions import ( + NotAvailableError, + RequestError, + TimeOutError, + ValidationError, +) if TYPE_CHECKING: from eodag.config import PluginConfig @@ -57,6 +63,8 @@ class DataRequestSearch(Search): - if finished - fetch the result of the job """ + data_request_id: Optional[str] + def __init__(self, provider: str, config: PluginConfig) -> None: super(DataRequestSearch, self).__init__(provider, config) self.config.__dict__.setdefault("result_type", "json") @@ -101,10 +109,10 @@ def __init__(self, provider: str, config: PluginConfig) -> None: self.config.pagination["next_page_url_key_path"] = string_to_jsonpath( self.config.pagination.get("next_page_url_key_path", None) ) - self.download_info = {} + self.download_info: Dict[str, Any] = {} self.data_request_id = None - def discover_product_types(self) -> Optional[Dict[str, Any]]: + def discover_product_types(self, **kwargs: Any) -> Optional[Dict[str, Any]]: """Fetch product types is disabled for `DataRequestSearch` :returns: empty dict @@ -119,26 +127,30 @@ def clear(self) -> None: def query( self, - product_type: Optional[str] = None, - items_per_page: int = DEFAULT_ITEMS_PER_PAGE, - page: int = DEFAULT_PAGE, - count: bool = True, + prep: PreparedSearch = PreparedSearch(), **kwargs: Any, ) -> Tuple[List[EOProduct], Optional[int]]: """ performs the search for a provider where several steps are required to fetch the data """ + if kwargs.get("sortBy"): + raise ValidationError(f"{self.provider} does not support sorting feature") + product_type = kwargs.get("productType", None) + + if product_type is None: + raise ValidationError("Required productType is missing") + # replace "product_type" to "providerProductType" in search args if exists # for compatibility with DataRequestSearch method if kwargs.get("product_type"): kwargs["providerProductType"] = kwargs.pop("product_type", None) - provider_product_type = self._map_product_type(product_type or "") + provider_product_type = cast(str, self._map_product_type(product_type or "")) keywords = {k: v for k, v in kwargs.items() if k != "auth" and v is not None} if provider_product_type and provider_product_type != GENERIC_PRODUCT_TYPE: keywords["productType"] = provider_product_type - elif product_type: + else: keywords["productType"] = product_type # provider product type specific conf @@ -185,7 +197,7 @@ def query( if not keywords.get("completionTimeFromAscendingNode", None): keywords["completionTimeFromAscendingNode"] = getattr( self.config, "product_type_config", {} - ).get("missionEndDate", datetime.utcnow().isoformat()) + ).get("missionEndDate", datetime.now(timezone.utc).isoformat()) # ask for data_request_id if not set (it must exist when iterating over pages) if not self.data_request_id: @@ -246,16 +258,19 @@ def _create_data_request( self, product_type: str, eodag_product_type: str, **kwargs: Any ) -> str: headers = getattr(self.auth, "headers", USER_AGENT) + ssl_verify = getattr(self.config.ssl_verify, "ssl_verify", True) try: url = self.config.data_request_url - request_body = format_query_params( - eodag_product_type, self.config, **kwargs - ) + request_body = format_query_params(eodag_product_type, self.config, kwargs) logger.debug( f"Sending search job request to {url} with {str(request_body)}" ) request_job = requests.post( - url, json=request_body, headers=headers, timeout=HTTP_REQ_TIMEOUT + url, + json=request_body, + headers=headers, + timeout=HTTP_REQ_TIMEOUT, + verify=ssl_verify, ) request_job.raise_for_status() except requests.exceptions.Timeout as exc: @@ -271,9 +286,10 @@ def _create_data_request( def _cancel_request(self, data_request_id: str) -> None: logger.info("deleting request job %s", data_request_id) delete_url = f"{self.config.data_request_url}/{data_request_id}" + headers = getattr(self.auth, "headers", USER_AGENT) try: delete_resp = requests.delete( - delete_url, headers=self.auth.headers, timeout=HTTP_REQ_TIMEOUT + delete_url, headers=headers, timeout=HTTP_REQ_TIMEOUT ) delete_resp.raise_for_status() except requests.exceptions.Timeout as exc: @@ -284,9 +300,15 @@ def _cancel_request(self, data_request_id: str) -> None: def _check_request_status(self, data_request_id: str) -> bool: logger.debug("checking status of request job %s", data_request_id) status_url = self.config.status_url + data_request_id + headers = getattr(self.auth, "headers", USER_AGENT) + ssl_verify = getattr(self.config, "ssl_verify", True) + try: status_resp = requests.get( - status_url, headers=self.auth.headers, timeout=HTTP_REQ_TIMEOUT + status_url, + headers=headers, + timeout=HTTP_REQ_TIMEOUT, + verify=ssl_verify, ) status_resp.raise_for_status() except requests.exceptions.Timeout as exc: @@ -315,9 +337,11 @@ def _get_result_data( url = self.config.result_url.format( jobId=data_request_id, items_per_page=items_per_page, page=page ) + ssl_verify = getattr(self.config, "ssl_verify", True) + headers = getattr(self.auth, "headers", USER_AGENT) try: return requests.get( - url, headers=self.auth.headers, timeout=HTTP_REQ_TIMEOUT + url, headers=headers, timeout=HTTP_REQ_TIMEOUT, verify=ssl_verify ).json() except requests.exceptions.Timeout as exc: raise TimeOutError(exc, timeout=HTTP_REQ_TIMEOUT) from exc diff --git a/eodag/plugins/search/qssearch.py b/eodag/plugins/search/qssearch.py index 11f1103e6..3d3b2b50d 100644 --- a/eodag/plugins/search/qssearch.py +++ b/eodag/plugins/search/qssearch.py @@ -20,10 +20,31 @@ import logging import re from collections.abc import Iterable -from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Set, Tuple, cast +from copy import copy as copy_copy +from typing import ( + TYPE_CHECKING, + Any, + Callable, + Dict, + List, + Optional, + Set, + Tuple, + TypedDict, + cast, +) from urllib.error import URLError +from urllib.parse import ( + parse_qsl, + quote_plus, + unquote, + unquote_plus, + urlparse, + urlunparse, +) from urllib.request import Request, urlopen +import geojson import orjson import requests import yaml @@ -32,6 +53,7 @@ from pydantic.fields import FieldInfo from requests import Response from requests.adapters import HTTPAdapter +from requests.auth import AuthBase from eodag.api.product import EOProduct from eodag.api.product.metadata_mapping import ( @@ -42,11 +64,13 @@ properties_from_json, properties_from_xml, ) +from eodag.api.search_result import RawSearchResult +from eodag.plugins.search import PreparedSearch from eodag.plugins.search.base import Search from eodag.types import json_field_definition_to_python, model_fields_to_annotated +from eodag.types.queryables import CommonQueryables +from eodag.types.search_args import SortByList from eodag.utils import ( - DEFAULT_ITEMS_PER_PAGE, - DEFAULT_PAGE, GENERIC_PRODUCT_TYPE, HTTP_REQ_TIMEOUT, USER_AGENT, @@ -56,16 +80,22 @@ dict_items_recursive_apply, format_dict_items, get_args, + get_ssl_context, quote, string_to_jsonpath, update_nested_dict, urlencode, ) +from eodag.utils.constraints import ( + fetch_constraints, + get_constraint_queryables_with_additional_params, +) from eodag.utils.exceptions import ( AuthenticationError, MisconfiguredError, RequestError, TimeOutError, + ValidationError, ) if TYPE_CHECKING: @@ -172,7 +202,6 @@ class QueryStringSearch(Search): :type config: str """ - DEFAULT_ITEMS_PER_PAGE = 10 extract_properties = {"xml": properties_from_xml, "json": properties_from_json} def __init__(self, provider: str, config: PluginConfig) -> None: @@ -251,6 +280,17 @@ def __init__(self, provider: str, config: PluginConfig) -> None: "generic_product_type_parsable_metadata" ] ) + if ( + "single_product_type_parsable_metadata" + in self.config.discover_product_types + ): + self.config.discover_product_types[ + "single_product_type_parsable_metadata" + ] = mtd_cfg_as_conversion_and_querypath( + self.config.discover_product_types[ + "single_product_type_parsable_metadata" + ] + ) # parse jsonpath on init: queryables discovery if ( @@ -316,35 +356,59 @@ def clear(self) -> None: self.next_page_query_obj = None self.next_page_merge = None - def discover_product_types(self) -> Optional[Dict[str, Any]]: + def discover_product_types(self, **kwargs: Any) -> Optional[Dict[str, Any]]: """Fetch product types list from provider using `discover_product_types` conf :returns: configuration dict containing fetched product types information :rtype: (optional) dict """ try: - fetch_url = cast( + prep = PreparedSearch() + + prep.url = cast( str, self.config.discover_product_types["fetch_url"].format( **self.config.__dict__ ), ) - response = QueryStringSearch._request( - self, - fetch_url, - info_message="Fetching product types: {}".format(fetch_url), - exception_message="Skipping error while fetching product types for " - "{} {} instance:".format(self.provider, self.__class__.__name__), - ) + + # get auth if available + if "auth" in kwargs: + prep.auth = kwargs.pop("auth") + + # try updating fetch_url qs using productType + fetch_qs_dict = {} + if "single_collection_fetch_qs" in self.config.discover_product_types: + try: + fetch_qs = self.config.discover_product_types[ + "single_collection_fetch_qs" + ].format(**kwargs) + fetch_qs_dict = dict(parse_qsl(fetch_qs)) + except KeyError: + pass + if fetch_qs_dict: + url_parse = urlparse(prep.url) + query = url_parse.query + url_dict = dict(parse_qsl(query)) + url_dict.update(fetch_qs_dict) + url_new_query = urlencode(url_dict) + url_parse = url_parse._replace(query=url_new_query) + prep.url = urlunparse(url_parse) + + prep.info_message = "Fetching product types: {}".format(prep.url) + prep.exception_message = ( + "Skipping error while fetching product types for " "{} {} instance:" + ).format(self.provider, self.__class__.__name__) + + response = QueryStringSearch._request(self, prep) except (RequestError, KeyError, AttributeError): return None else: try: - conf_update_dict = { + conf_update_dict: Dict[str, Any] = { "providers_config": {}, "product_types_config": {}, } - if self.config.discover_product_types["result_type"] == "json": resp_as_json = response.json() # extract results from response json @@ -354,6 +418,8 @@ def discover_product_types(self) -> Optional[Dict[str, Any]]: "results_entry" ].find(resp_as_json) ] + if result and isinstance(result[0], list): + result = result[0] for product_type_result in result: # providers_config extraction @@ -391,6 +457,17 @@ def discover_product_types(self) -> Optional[Dict[str, Any]]: ], ) + if ( + "single_product_type_parsable_metadata" + in self.config.discover_product_types + ): + collection_data = self._get_product_type_metadata_from_single_collection_endpoint( + generic_product_type_id + ) + conf_update_dict["product_types_config"][ + generic_product_type_id + ].update(collection_data) + # update keywords keywords_fields = [ "instrument", @@ -444,32 +521,156 @@ def discover_product_types(self) -> Optional[Dict[str, Any]]: ) return conf_update_dict + def _get_product_type_metadata_from_single_collection_endpoint( + self, product_type: str + ) -> Dict[str, Any]: + """ + retrieves additional product type information from an endpoint returning data for a single collection + :param product_type: product type + :type product_type: str + :return: product types and their metadata + :rtype: Dict[str, Any] + """ + single_collection_url = self.config.discover_product_types[ + "single_collection_fetch_url" + ].format(productType=product_type) + resp = QueryStringSearch._request( + self, + PreparedSearch( + url=single_collection_url, + info_message="Fetching data for product type product type: {}".format( + product_type + ), + exception_message="Skipping error while fetching product types for " + "{} {} instance:".format(self.provider, self.__class__.__name__), + ), + ) + product_data = resp.json() + return properties_from_json( + product_data, + self.config.discover_product_types["single_product_type_parsable_metadata"], + ) + + def discover_queryables( + self, **kwargs: Any + ) -> Optional[Dict[str, Annotated[Any, FieldInfo]]]: + """Fetch queryables list from provider using its constraints file + + :param kwargs: additional filters for queryables (`productType` and other search + arguments) + :type kwargs: Any + :returns: fetched queryable parameters dict + :rtype: Optional[Dict[str, Annotated[Any, FieldInfo]]] + """ + product_type = kwargs.pop("productType", None) + if not product_type: + return {} + constraints_file_url = getattr(self.config, "constraints_file_url", "") + if not constraints_file_url: + return {} + + constraints_file_dataset_key = getattr( + self.config, "constraints_file_dataset_key", "dataset" + ) + provider_product_type = self.config.products.get(product_type, {}).get( + constraints_file_dataset_key, None + ) + + # defaults + default_queryables = self._get_defaults_as_queryables(product_type) + # remove unwanted queryables + for param in getattr(self.config, "remove_from_queryables", []): + default_queryables.pop(param, None) + + non_empty_kwargs = {k: v for k, v in kwargs.items() if v} + + if "{" in constraints_file_url: + constraints_file_url = constraints_file_url.format( + dataset=provider_product_type + ) + constraints = fetch_constraints(constraints_file_url, self) + if not constraints: + return default_queryables + + constraint_params: Dict[str, Dict[str, Set[Any]]] = {} + if len(kwargs) == 0: + # get values from constraints without additional filters + for constraint in constraints: + for key in constraint.keys(): + if key in constraint_params: + constraint_params[key]["enum"].update(constraint[key]) + else: + constraint_params[key] = {"enum": set(constraint[key])} + else: + # get values from constraints with additional filters + constraints_input_params = {k: v for k, v in non_empty_kwargs.items()} + constraint_params = get_constraint_queryables_with_additional_params( + constraints, constraints_input_params, self, product_type + ) + # query params that are not in constraints but might be default queryables + if len(constraint_params) == 1 and "not_available" in constraint_params: + not_queryables = set() + for constraint_param in constraint_params["not_available"]["enum"]: + param = CommonQueryables.get_queryable_from_alias(constraint_param) + if param in dict( + CommonQueryables.model_fields, **default_queryables + ): + non_empty_kwargs.pop(constraint_param) + else: + not_queryables.add(constraint_param) + if not_queryables: + raise ValidationError( + f"parameter(s) {str(not_queryables)} not queryable" + ) + else: + # get constraints again without common queryables + constraint_params = ( + get_constraint_queryables_with_additional_params( + constraints, non_empty_kwargs, self, product_type + ) + ) + + field_definitions = dict() + for json_param, json_mtd in constraint_params.items(): + param = ( + get_queryable_from_provider( + json_param, self.get_metadata_mapping(product_type) + ) + or json_param + ) + default = kwargs.get(param, None) or self.config.products.get( + product_type, {} + ).get(param, None) + annotated_def = json_field_definition_to_python( + json_mtd, default_value=default, required=True + ) + field_definitions[param] = get_args(annotated_def) + + python_queryables = create_model("m", **field_definitions).model_fields + return dict(default_queryables, **model_fields_to_annotated(python_queryables)) + def query( self, - product_type: Optional[str] = None, - items_per_page: int = DEFAULT_ITEMS_PER_PAGE, - page: int = DEFAULT_PAGE, - count: bool = True, + prep: PreparedSearch = PreparedSearch(), **kwargs: Any, ) -> Tuple[List[EOProduct], Optional[int]]: """Perform a search on an OpenSearch-like interface - :param items_per_page: (optional) The number of results that must appear in one - single page - :type items_per_page: int - :param page: (optional) The page number to return - :type page: int - :param count: (optional) To trigger a count request - :type count: bool + :param prep: Object collecting needed information for search. + :type prep: :class:`~eodag.plugins.search.PreparedSearch` """ - product_type = kwargs.get("productType", None) + count = prep.count + product_type = kwargs.get("productType", prep.product_type) if product_type == GENERIC_PRODUCT_TYPE: logger.warning( "GENERIC_PRODUCT_TYPE is not a real product_type and should only be used internally as a template" ) - return [], 0 - # remove "product_type" from search args if exists for compatibility with QueryStringSearch methods - kwargs.pop("product_type", None) + return ([], 0) if prep.count else ([], None) + + sort_by_arg: Optional[SortByList] = self.get_sort_by_arg(kwargs) + prep.sort_by_qs, _ = ( + ("", {}) if sort_by_arg is None else self.build_sort_by(sort_by_arg) + ) provider_product_type = self.map_product_type(product_type) keywords = {k: v for k, v in kwargs.items() if k != "auth" and v is not None} @@ -480,48 +681,56 @@ def query( ) # provider product type specific conf - self.product_type_def_params = ( + prep.product_type_def_params = ( self.get_product_type_def_params(product_type, **kwargs) if product_type is not None else {} ) # if product_type_def_params is set, remove product_type as it may conflict with this conf - if self.product_type_def_params: + if prep.product_type_def_params: keywords.pop("productType", None) if self.config.metadata_mapping: product_type_metadata_mapping = dict( self.config.metadata_mapping, - **self.product_type_def_params.get("metadata_mapping", {}), + **prep.product_type_def_params.get("metadata_mapping", {}), ) keywords.update( { k: v - for k, v in self.product_type_def_params.items() + for k, v in prep.product_type_def_params.items() if k not in keywords.keys() and k in product_type_metadata_mapping.keys() and isinstance(product_type_metadata_mapping[k], list) } ) + if product_type is None: + raise ValidationError("Required productType is missing") + qp, qs = self.build_query_string(product_type, **keywords) - self.query_params = qp - self.query_string = qs - self.search_urls, total_items = self.collect_search_urls( - page=page, items_per_page=items_per_page, count=count, **kwargs + prep.query_params = qp + prep.query_string = qs + prep.search_urls, total_items = self.collect_search_urls( + prep, + **kwargs, ) - if not count and hasattr(self, "total_items_nb"): + if not count and hasattr(prep, "total_items_nb"): # do not try to extract total_items from search results if count is False - del self.total_items_nb - del self.need_count - - provider_results = self.do_search(items_per_page=items_per_page, **kwargs) - if count and total_items is None and hasattr(self, "total_items_nb"): - total_items = self.total_items_nb - eo_products = self.normalize_results(provider_results, **kwargs) - total_items = len(eo_products) if total_items == 0 else total_items + del prep.total_items_nb + del prep.need_count + + provider_results = self.do_search(prep, **kwargs) + if count and total_items is None and hasattr(prep, "total_items_nb"): + total_items = prep.total_items_nb + + raw_search_result = RawSearchResult(provider_results) + raw_search_result.query_params = prep.query_params + raw_search_result.product_type_def_params = prep.product_type_def_params + + eo_products = self.normalize_results(raw_search_result, **kwargs) return eo_products, total_items @_deprecated( @@ -538,11 +747,11 @@ def build_query_string( ) -> Tuple[Dict[str, Any], str]: """Build The query string using the search parameters""" logger.debug("Building the query string that will be used for search") - query_params = format_query_params(product_type, self.config, **kwargs) + query_params = format_query_params(product_type, self.config, kwargs) # Build the final query string, in one go without quoting it # (some providers do not operate well with urlencoded and quoted query strings) - quote_via: Callable[[Any], str] = lambda x, *_args, **_kwargs: x + quote_via: Callable[[Any, str, str, str], str] = lambda x, *_args, **_kwargs: x return ( query_params, urlencode(query_params, doseq=True, quote_via=quote_via), @@ -550,22 +759,31 @@ def build_query_string( def collect_search_urls( self, - page: Optional[int] = None, - items_per_page: Optional[int] = None, - count: bool = True, + prep: PreparedSearch = PreparedSearch(page=None, items_per_page=None), **kwargs: Any, ) -> Tuple[List[str], Optional[int]]: """Build paginated urls""" + page = prep.page + items_per_page = prep.items_per_page + count = prep.count + urls = [] total_results = 0 if count else None + # use only sort_by parameters for search, not for count + # and remove potential leading '&' + qs_with_sort = (prep.query_string + getattr(prep, "sort_by_qs", "")).strip("&") + # append count template if needed + if count: + qs_with_sort += self.config.pagination.get("count_tpl", "") + if "count_endpoint" not in self.config.pagination: # if count_endpoint is not set, total_results should be extracted from search result total_results = None - self.need_count = True - self.total_items_nb = None + prep.need_count = True + prep.total_items_nb = None - for collection in self.get_collections(**kwargs): + for collection in self.get_collections(prep, **kwargs): # skip empty collection if one is required in api_endpoint if "{collection}" in self.config.api_endpoint and not collection: continue @@ -573,12 +791,13 @@ def collect_search_urls( collection=collection ) if page is not None and items_per_page is not None: + page = page - 1 + self.config.pagination.get("start_page", 1) if count: count_endpoint = self.config.pagination.get( "count_endpoint", "" ).format(collection=collection) if count_endpoint: - count_url = "{}?{}".format(count_endpoint, self.query_string) + count_url = "{}?{}".format(count_endpoint, prep.query_string) _total_results = ( self.count_hits( count_url, result_type=self.config.result_type @@ -594,30 +813,31 @@ def collect_search_urls( total_results += _total_results or 0 next_url = self.config.pagination["next_page_url_tpl"].format( url=search_endpoint, - search=self.query_string, + search=qs_with_sort, items_per_page=items_per_page, page=page, skip=(page - 1) * items_per_page, skip_base_1=(page - 1) * items_per_page + 1, ) else: - next_url = "{}?{}".format(search_endpoint, self.query_string) + next_url = "{}?{}".format(search_endpoint, qs_with_sort) urls.append(next_url) return urls, total_results def do_search( - self, items_per_page: Optional[int] = None, **kwargs: Any + self, prep: PreparedSearch = PreparedSearch(items_per_page=None), **kwargs: Any ) -> List[Any]: """Perform the actual search request. If there is a specified number of items per page, return the results as soon as this number is reached - :param items_per_page: (optional) The number of items to return for one page - :type items_per_page: int + :param prep: Object collecting needed information for search. + :type prep: :class:`~eodag.plugins.search.PreparedSearch` """ + items_per_page = prep.items_per_page total_items_nb = 0 - if getattr(self, "need_count", False): + if getattr(prep, "need_count", False): # extract total_items_nb from search results if self.config.result_type == "json": total_items_nb_key_path_parsed = self.config.pagination[ @@ -625,13 +845,17 @@ def do_search( ] results: List[Any] = [] - for search_url in self.search_urls: - response = self._request( - search_url, - info_message="Sending search request: {}".format(search_url), - exception_message="Skipping error while searching for {} {} " - "instance:".format(self.provider, self.__class__.__name__), + for search_url in prep.search_urls: + single_search_prep = copy_copy(prep) + single_search_prep.url = search_url + single_search_prep.info_message = "Sending search request: {}".format( + search_url ) + single_search_prep.exception_message = ( + "Skipping error while searching for {} {} " + "instance:".format(self.provider, self.__class__.__name__) + ) + response = self._request(single_search_prep) next_page_url_key_path = self.config.pagination.get( "next_page_url_key_path", None ) @@ -658,7 +882,7 @@ def do_search( "Setting the next page url from an XML response has not " "been implemented yet" ) - if getattr(self, "need_count", False): + if getattr(prep, "need_count", False): # extract total_items_nb from search results try: total_nb_results_xpath = root_node.xpath( @@ -724,7 +948,7 @@ def do_search( if not isinstance(result, list): result = [result] - if getattr(self, "need_count", False): + if getattr(prep, "need_count", False): # extract total_items_nb from search results try: _total_items_nb = total_items_nb_key_path_parsed.find( @@ -746,15 +970,22 @@ def do_search( ) else: results.extend(result) - if getattr(self, "need_count", False): - self.total_items_nb = total_items_nb - del self.need_count + if getattr(prep, "need_count", False): + prep.total_items_nb = total_items_nb + del prep.need_count + # remove prep.total_items_nb if value could not be extracted from response + if ( + hasattr(prep, "total_items_nb") + and not prep.total_items_nb + and len(results) > 0 + ): + del prep.total_items_nb if items_per_page is not None and len(results) == items_per_page: return results return results def normalize_results( - self, results: List[Dict[str, Any]], **kwargs: Any + self, results: RawSearchResult, **kwargs: Any ) -> List[EOProduct]: """Build EOProducts from provider results""" normalize_remaining_count = len(results) @@ -777,6 +1008,8 @@ def normalize_results( product.properties = dict( getattr(self.config, "product_type_config", {}), **product.properties ) + # move assets from properties to product's attr + product.assets.update(product.properties.pop("assets", {})) products.append(product) return products @@ -785,10 +1018,12 @@ def count_hits(self, count_url: str, result_type: Optional[str] = "json") -> int # Handle a very annoying special case :'( url = count_url.replace("$format=json&", "") response = self._request( - url, - info_message="Sending count request: {}".format(url), - exception_message="Skipping error while counting results for {} {} " - "instance:".format(self.provider, self.__class__.__name__), + PreparedSearch( + url=url, + info_message="Sending count request: {}".format(url), + exception_message="Skipping error while counting results for {} {} " + "instance:".format(self.provider, self.__class__.__name__), + ) ) if result_type == "xml": root_node = etree.fromstring(response.content) @@ -806,13 +1041,18 @@ def count_hits(self, count_url: str, result_type: Optional[str] = "json") -> int total_results = int(count_results) return total_results - def get_collections(self, **kwargs: Any) -> Tuple[Set[Dict[str, Any]], ...]: + def get_collections( + self, prep: PreparedSearch, **kwargs: Any + ) -> Tuple[Set[Dict[str, Any]], ...]: """Get the collection to which the product belongs""" # See https://earth.esa.int/web/sentinel/missions/sentinel-2/news/- # /asset_publisher/Ac0d/content/change-of # -format-for-new-sentinel-2-level-1c-products-starting-on-6-december product_type: Optional[str] = kwargs.get("productType") - if product_type is None and not self.product_type_def_params: + if product_type is None and ( + not hasattr(prep, "product_type_def_params") + or not prep.product_type_def_params + ): collections: Set[Dict[str, Any]] = set() collection: Optional[str] = getattr(self.config, "collection", None) if collection is None: @@ -835,28 +1075,33 @@ def get_collections(self, **kwargs: Any) -> Tuple[Set[Dict[str, Any]], ...]: collection: Optional[str] = getattr(self.config, "collection", None) if collection is None: collection = ( - self.product_type_def_params.get("collection", None) or product_type + prep.product_type_def_params.get("collection", None) or product_type ) return (collection,) if not isinstance(collection, list) else tuple(collection) def _request( self, - url: str, - info_message: Optional[str] = None, - exception_message: Optional[str] = None, + prep: PreparedSearch, ) -> Response: + url = prep.url + info_message = prep.info_message + exception_message = prep.exception_message try: timeout = getattr(self.config, "timeout", HTTP_REQ_TIMEOUT) + ssl_verify = getattr(self.config, "ssl_verify", True) + + ssl_ctx = get_ssl_context(ssl_verify) # auth if needed kwargs: Dict[str, Any] = {} if ( getattr(self.config, "need_auth", False) - and hasattr(self, "auth") - and callable(self.auth) + and hasattr(prep, "auth") + and callable(prep.auth) ): - kwargs["auth"] = self.auth + kwargs["auth"] = prep.auth # requests auto quote url params, without any option to prevent it # use urllib instead of requests if req must be sent unquoted + if hasattr(self.config, "dont_quote"): # keep unquoted desired params base_url, params = url.split("?") if "?" in url else (url, "") @@ -868,21 +1113,27 @@ def _request( req = requests.Request( method="GET", url=base_url, headers=USER_AGENT, **kwargs ) - prep = req.prepare() - prep.url = base_url + "?" + qry + req_prep = req.prepare() + req_prep.url = base_url + "?" + qry # send urllib req if info_message: - logger.info(info_message.replace(url, prep.url)) - urllib_req = Request(prep.url, headers=USER_AGENT) - urllib_response = urlopen(urllib_req, timeout=timeout) + logger.info(info_message.replace(url, req_prep.url)) + urllib_req = Request(req_prep.url, headers=USER_AGENT) + urllib_response = urlopen(urllib_req, timeout=timeout, context=ssl_ctx) # build Response adapter = HTTPAdapter() - response = cast(Response, adapter.build_response(prep, urllib_response)) + response = cast( + Response, adapter.build_response(req_prep, urllib_response) + ) else: if info_message: logger.info(info_message) response = requests.get( - url, timeout=timeout, headers=USER_AGENT, **kwargs + url, + timeout=timeout, + headers=USER_AGENT, + verify=ssl_verify, + **kwargs, ) response.raise_for_status() except requests.exceptions.Timeout as exc: @@ -903,34 +1154,6 @@ def _request( return response -class AwsSearch(QueryStringSearch): - """A specialisation of RestoSearch that modifies the way the EOProducts are built - from the search results""" - - def normalize_results( - self, results: List[Dict[str, Any]], **kwargs: Any - ) -> List[EOProduct]: - """Transform metadata from provider representation to eodag representation""" - normalized: List[EOProduct] = [] - logger.debug("Adapting plugin results to eodag product representation") - for result in results: - ref = result["properties"]["title"].split("_")[5] - year = result["properties"]["completionDate"][0:4] - month = str(int(result["properties"]["completionDate"][5:7])) - day = str(int(result["properties"]["completionDate"][8:10])) - - properties = QueryStringSearch.extract_properties[self.config.result_type]( - result, self.get_metadata_mapping(kwargs.get("productType")) - ) - - properties["downloadLink"] = ( - "s3://tiles/{ref[1]}{ref[2]}/{ref[3]}/{ref[4]}{ref[5]}/{year}/" - "{month}/{day}/0/" - ).format(**locals()) - normalized.append(EOProduct(self.provider, properties, **kwargs)) - return normalized - - class ODataV4Search(QueryStringSearch): """A specialisation of a QueryStringSearch that does a two step search to retrieve all products metadata""" @@ -948,18 +1171,24 @@ def __init__(self, provider: str, config: PluginConfig) -> None: metadata_path ) - def do_search(self, *args: Any, **kwargs: Any) -> List[Any]: + def do_search( + self, prep: PreparedSearch = PreparedSearch(), **kwargs: Any + ) -> List[Any]: """A two step search can be performed if the metadata are not given into the search result""" if getattr(self.config, "per_product_metadata_query", False): final_result = [] + ssl_verify = getattr(self.config, "ssl_verify", True) # Query the products entity set for basic metadata about the product - for entity in super(ODataV4Search, self).do_search(*args, **kwargs): + for entity in super(ODataV4Search, self).do_search(prep, **kwargs): metadata_url = self.get_metadata_search_url(entity) try: logger.debug("Sending metadata request: %s", metadata_url) response = requests.get( - metadata_url, headers=USER_AGENT, timeout=HTTP_REQ_TIMEOUT + metadata_url, + headers=USER_AGENT, + timeout=HTTP_REQ_TIMEOUT, + verify=ssl_verify, ) response.raise_for_status() except requests.exceptions.Timeout as exc: @@ -977,7 +1206,7 @@ def do_search(self, *args: Any, **kwargs: Any) -> List[Any]: final_result.append(entity) return final_result else: - return super(ODataV4Search, self).do_search(*args, **kwargs) + return super(ODataV4Search, self).do_search(prep, **kwargs) def get_metadata_search_url(self, entity: Dict[str, Any]) -> str: """Build the metadata link for the given entity""" @@ -986,7 +1215,7 @@ def get_metadata_search_url(self, entity: Dict[str, Any]) -> str: ) def normalize_results( - self, results: List[Dict[str, Any]], **kwargs: Any + self, results: RawSearchResult, **kwargs: Any ) -> List[EOProduct]: """Build EOProducts from provider results @@ -1022,41 +1251,55 @@ class PostJsonSearch(QueryStringSearch): def query( self, - product_type: Optional[str] = None, - items_per_page: int = DEFAULT_ITEMS_PER_PAGE, - page: int = DEFAULT_PAGE, - count: bool = True, + prep: PreparedSearch = PreparedSearch(), **kwargs: Any, ) -> Tuple[List[EOProduct], Optional[int]]: """Perform a search on an OpenSearch-like interface""" product_type = kwargs.get("productType", None) + count = prep.count # remove "product_type" from search args if exists for compatibility with QueryStringSearch methods kwargs.pop("product_type", None) + sort_by_arg: Optional[SortByList] = self.get_sort_by_arg(kwargs) + _, sort_by_qp = ( + ("", {}) if sort_by_arg is None else self.build_sort_by(sort_by_arg) + ) provider_product_type = self.map_product_type(product_type) - keywords = {k: v for k, v in kwargs.items() if k != "auth" and v is not None} + _dc_qs = kwargs.pop("_dc_qs", None) + if _dc_qs is not None: + qs = unquote_plus(unquote_plus(_dc_qs)) + qp = geojson.loads(qs) + + # provider product type specific conf + prep.product_type_def_params = self.get_product_type_def_params( + product_type, **kwargs + ) + else: + keywords = { + k: v for k, v in kwargs.items() if k != "auth" and v is not None + } - if provider_product_type and provider_product_type != GENERIC_PRODUCT_TYPE: - keywords["productType"] = provider_product_type - elif product_type: - keywords["productType"] = product_type + if provider_product_type and provider_product_type != GENERIC_PRODUCT_TYPE: + keywords["productType"] = provider_product_type + elif product_type: + keywords["productType"] = product_type - # provider product type specific conf - self.product_type_def_params = self.get_product_type_def_params( - product_type, **kwargs - ) + # provider product type specific conf + prep.product_type_def_params = self.get_product_type_def_params( + product_type, **kwargs + ) - # Add to the query, the queryable parameters set in the provider product type definition - keywords.update( - { - k: v - for k, v in self.product_type_def_params.items() - if k not in keywords.keys() - and k in self.config.metadata_mapping.keys() - and isinstance(self.config.metadata_mapping[k], list) - } - ) + # Add to the query, the queryable parameters set in the provider product type definition + keywords.update( + { + k: v + for k, v in prep.product_type_def_params.items() + if k not in keywords.keys() + and k in self.config.metadata_mapping.keys() + and isinstance(self.config.metadata_mapping[k], list) + } + ) - qp, _ = self.build_query_string(product_type, **keywords) + qp, _ = self.build_query_string(product_type, **keywords) for query_param, query_value in qp.items(): if ( @@ -1091,7 +1334,7 @@ def query( try: eo_products, total_items = super(PostJsonSearch, self).query( - items_per_page=items_per_page, page=page, **kwargs + prep, **kwargs ) except Exception: raise @@ -1108,61 +1351,98 @@ def query( # stop searching right away product_type_metadata_mapping = dict( self.config.metadata_mapping, - **self.product_type_def_params.get("metadata_mapping", {}), + **prep.product_type_def_params.get("metadata_mapping", {}), ) if not qp and any( k for k in keywords.keys() if isinstance(product_type_metadata_mapping.get(k, []), list) ): - return [], 0 - self.query_params = qp - self.search_urls, total_items = self.collect_search_urls( - page=page, items_per_page=items_per_page, count=count, **kwargs - ) - if not count and getattr(self, "need_count", False): + return ([], 0) if prep.count else ([], None) + prep.query_params = dict(qp, **sort_by_qp) + prep.search_urls, total_items = self.collect_search_urls(prep, **kwargs) + if not count and getattr(prep, "need_count", False): # do not try to extract total_items from search results if count is False - del self.total_items_nb - del self.need_count - provider_results = self.do_search(items_per_page=items_per_page, **kwargs) - if count and total_items is None and hasattr(self, "total_items_nb"): - total_items = self.total_items_nb - eo_products = self.normalize_results(provider_results, **kwargs) - total_items = len(eo_products) if total_items == 0 else total_items + del prep.total_items_nb + del prep.need_count + provider_results = self.do_search(prep, **kwargs) + if count and total_items is None and hasattr(prep, "total_items_nb"): + total_items = prep.total_items_nb + + raw_search_result = RawSearchResult(provider_results) + raw_search_result.query_params = prep.query_params + raw_search_result.product_type_def_params = prep.product_type_def_params + + eo_products = self.normalize_results(raw_search_result, **kwargs) return eo_products, total_items + def normalize_results( + self, results: RawSearchResult, **kwargs: Any + ) -> List[EOProduct]: + """Build EOProducts from provider results""" + normalized = super().normalize_results(results, **kwargs) + for product in normalized: + if "downloadLink" in product.properties: + decoded_link = unquote(product.properties["downloadLink"]) + if decoded_link[0] == "{": # not a url but a dict + default_values = deepcopy( + self.config.products.get(product.product_type, {}) + ) + default_values.pop("metadata_mapping", None) + searched_values = orjson.loads(decoded_link) + _dc_qs = orjson.dumps( + format_query_params( + product.product_type, + self.config, + {**default_values, **searched_values}, + ) + ) + product.properties["_dc_qs"] = quote_plus(_dc_qs) + + # workaround to add product type to wekeo cmems order links + if ( + "orderLink" in product.properties + and "productType" in product.properties["orderLink"] + ): + product.properties["orderLink"] = product.properties[ + "orderLink" + ].replace("productType", product.product_type) + return normalized + def collect_search_urls( self, - page: Optional[int] = None, - items_per_page: Optional[int] = None, - count: bool = True, + prep: PreparedSearch = PreparedSearch(), **kwargs: Any, ) -> Tuple[List[str], Optional[int]]: """Adds pagination to query parameters, and auth to url""" + page = prep.page + items_per_page = prep.items_per_page + count = prep.count urls: List[str] = [] total_results = 0 if count else None if "count_endpoint" not in self.config.pagination: # if count_endpoint is not set, total_results should be extracted from search result total_results = None - self.need_count = True - self.total_items_nb = None + prep.need_count = True + prep.total_items_nb = None - if "auth" in kwargs and hasattr(kwargs["auth"], "config"): - auth_conf_dict = getattr(kwargs["auth"].config, "credentials", {}) + if prep.auth_plugin is not None and hasattr(prep.auth_plugin, "config"): + auth_conf_dict = getattr(prep.auth_plugin.config, "credentials", {}) else: auth_conf_dict = {} - for collection in self.get_collections(**kwargs): + for collection in self.get_collections(prep, **kwargs): try: search_endpoint: str = self.config.api_endpoint.rstrip("/").format( **dict(collection=collection, **auth_conf_dict) ) except KeyError as e: + provider = prep.auth_plugin.provider if prep.auth_plugin else "" raise MisconfiguredError( - "Missing %s in %s configuration" - % (",".join(e.args), kwargs["auth"].provider) + "Missing %s in %s configuration" % (",".join(e.args), provider) ) if page is not None and items_per_page is not None: + page = page - 1 + self.config.pagination.get("start_page", 1) if count: count_endpoint = self.config.pagination.get( "count_endpoint", "" @@ -1175,7 +1455,9 @@ def collect_search_urls( total_results = _total_results or 0 else: total_results += _total_results or 0 - if isinstance(self.config.pagination["next_page_query_obj"], str): + if "next_page_query_obj" in self.config.pagination and isinstance( + self.config.pagination["next_page_query_obj"], str + ): # next_page_query_obj needs to be parsed next_page_query_obj = self.config.pagination[ "next_page_query_obj" @@ -1186,7 +1468,7 @@ def collect_search_urls( skip_base_1=(page - 1) * items_per_page + 1, ) update_nested_dict( - self.query_params, orjson.loads(next_page_query_obj) + prep.query_params, orjson.loads(next_page_query_obj) ) urls.append(search_endpoint) @@ -1194,32 +1476,39 @@ def collect_search_urls( def _request( self, - url: str, - info_message: Optional[str] = None, - exception_message: Optional[str] = None, + prep: PreparedSearch, ) -> Response: + url = prep.url + info_message = prep.info_message + exception_message = prep.exception_message timeout = getattr(self.config, "timeout", HTTP_REQ_TIMEOUT) + ssl_verify = getattr(self.config, "ssl_verify", True) try: # auth if needed - kwargs = {} + RequestsKwargs = TypedDict( + "RequestsKwargs", {"auth": AuthBase}, total=False + ) + kwargs: RequestsKwargs = {} if ( getattr(self.config, "need_auth", False) - and hasattr(self, "auth") - and callable(self.auth) + and hasattr(prep, "auth") + and callable(prep.auth) ): - kwargs["auth"] = self.auth + kwargs["auth"] = prep.auth # perform the request using the next page arguments if they are defined if getattr(self, "next_page_query_obj", None): - self.query_params = self.next_page_query_obj + prep.query_params = self.next_page_query_obj if info_message: logger.info(info_message) - logger.debug("Query parameters: %s" % self.query_params) + logger.debug("Query parameters: %s" % prep.query_params) + logger.debug("Query kwargs: %s" % kwargs) response = requests.post( url, - json=self.query_params, + json=prep.query_params, headers=USER_AGENT, timeout=timeout, + verify=ssl_verify, **kwargs, ) response.raise_for_status() @@ -1252,7 +1541,10 @@ def _request( ) if "response" in locals(): logger.debug(response.content) - raise RequestError(str(err)) + error_text = str(err) + if getattr(err, "response", None) is not None: + error_text = err.response.text + raise RequestError(error_text) from err return response @@ -1268,18 +1560,29 @@ def __init__(self, provider: str, config: PluginConfig) -> None: # restore results_entry overwritten by init self.config.results_entry = results_entry - def normalize_results( - self, results: List[Dict[str, Any]], **kwargs: Any - ) -> List[EOProduct]: - """Build EOProducts from provider results""" + def build_query_string( + self, product_type: str, **kwargs: Any + ) -> Tuple[Dict[str, Any], str]: + """Build The query string using the search parameters""" + logger.debug("Building the query string that will be used for search") - products = super(StacSearch, self).normalize_results(results, **kwargs) + # handle opened time intervals + if any( + k in kwargs + for k in ("startTimeFromAscendingNode", "completionTimeFromAscendingNode") + ): + kwargs.setdefault("startTimeFromAscendingNode", "..") + kwargs.setdefault("completionTimeFromAscendingNode", "..") - # move assets from properties to product's attr - for product in products: - product.assets.update(product.properties.pop("assets", {})) + query_params = format_query_params(product_type, self.config, kwargs) - return products + # Build the final query string, in one go without quoting it + # (some providers do not operate well with urlencoded and quoted query strings) + quote_via: Callable[[Any, str, str, str], str] = lambda x, *_args, **_kwargs: x + return ( + query_params, + urlencode(query_params, doseq=True, quote_via=quote_via), + ) def discover_queryables( self, **kwargs: Any @@ -1311,10 +1614,12 @@ def discover_queryables( ) response = QueryStringSearch._request( self, - fetch_url, - info_message="Fetching queryables: {}".format(fetch_url), - exception_message="Skipping error while fetching queryables for " - "{} {} instance:".format(self.provider, self.__class__.__name__), + PreparedSearch( + url=fetch_url, + info_message="Fetching queryables: {}".format(fetch_url), + exception_message="Skipping error while fetching queryables for " + "{} {} instance:".format(self.provider, self.__class__.__name__), + ), ) except (RequestError, KeyError, AttributeError): return None @@ -1348,7 +1653,7 @@ def discover_queryables( for json_param, json_mtd in json_queryables.items(): param = ( get_queryable_from_provider( - json_param, self.config.metadata_mapping + json_param, self.get_metadata_mapping(product_type) ) or json_param ) diff --git a/eodag/plugins/search/static_stac_search.py b/eodag/plugins/search/static_stac_search.py index 502b50169..8fb4d1638 100644 --- a/eodag/plugins/search/static_stac_search.py +++ b/eodag/plugins/search/static_stac_search.py @@ -18,22 +18,20 @@ from __future__ import annotations import logging -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, cast +from unittest import mock import geojson +from eodag.api.product.metadata_mapping import get_metadata_path_value from eodag.api.search_result import SearchResult from eodag.plugins.crunch.filter_date import FilterDate from eodag.plugins.crunch.filter_overlap import FilterOverlap from eodag.plugins.crunch.filter_property import FilterProperty +from eodag.plugins.search import PreparedSearch from eodag.plugins.search.qssearch import StacSearch -from eodag.utils import ( - DEFAULT_ITEMS_PER_PAGE, - DEFAULT_PAGE, - HTTP_REQ_TIMEOUT, - MockResponse, -) -from eodag.utils.stac_reader import fetch_stac_items +from eodag.utils import HTTP_REQ_TIMEOUT, MockResponse +from eodag.utils.stac_reader import fetch_stac_collections, fetch_stac_items if TYPE_CHECKING: from eodag.api.product import EOProduct @@ -68,49 +66,112 @@ class StaticStacSearch(StacSearch): """ def __init__(self, provider: str, config: PluginConfig) -> None: + # prevent search parameters from being queried when they are known in the configuration or not + for param, mapping in config.metadata_mapping.items(): + # only keep one queryable to allow the mock search request + if param != "productType": + config.metadata_mapping[param] = get_metadata_path_value(mapping) + config.discover_metadata["auto_discovery"] = False + # there is no endpoint for fetching queryables with a static search + config.discover_queryables["fetch_url"] = None + config.discover_queryables["product_type_fetch_url"] = None + super(StaticStacSearch, self).__init__(provider, config) self.config.__dict__.setdefault("max_connections", 100) self.config.__dict__.setdefault("timeout", HTTP_REQ_TIMEOUT) + self.config.__dict__.setdefault("ssl_verify", True) + self.config.__dict__.setdefault("pagination", {}) + self.config.__dict__["pagination"].setdefault( + "total_items_nb_key_path", "$.null" + ) + self.config.__dict__["pagination"].setdefault("max_items_per_page", -1) - def discover_product_types(self) -> Dict[str, Any]: - """Fetch product types is disabled for `StaticStacSearch` + def discover_product_types(self, **kwargs: Any) -> Optional[Dict[str, Any]]: + """Fetch product types list from a static STAC Catalog provider using `discover_product_types` conf - :returns: empty dict - :rtype: dict + :returns: configuration dict containing fetched product types information + :rtype: Optional[Dict[str, Any]] """ - return {} + fetch_url = cast( + str, + self.config.discover_product_types["fetch_url"].format( + **self.config.__dict__ + ), + ) + collections = fetch_stac_collections( + fetch_url, + collection=kwargs.get("q"), + max_connections=self.config.max_connections, + timeout=int(self.config.timeout), + ssl_verify=self.config.ssl_verify, + ) + if "q" in kwargs: + collections = [c for c in collections if c["id"] == kwargs["q"]] + collections_mock_response = {"collections": collections} + + # discover_product_types on mocked QueryStringSearch._request + with mock.patch( + "eodag.plugins.search.qssearch.QueryStringSearch._request", + autospec=True, + return_value=MockResponse(collections_mock_response, 200), + ): + conf_update_dict = super(StaticStacSearch, self).discover_product_types( + **kwargs + ) + + return conf_update_dict def query( self, - product_type: Optional[str] = None, - items_per_page: int = DEFAULT_ITEMS_PER_PAGE, - page: int = DEFAULT_PAGE, - count: bool = True, + prep: PreparedSearch = PreparedSearch(), **kwargs: Any, ) -> Tuple[List[EOProduct], Optional[int]]: """Perform a search on a static STAC Catalog""" + # only return 1 page if pagination is disabled + if ( + prep.page + and prep.page > 1 + and prep.items_per_page is not None + and prep.items_per_page <= 0 + ): + return ([], 0) if prep.count else ([], None) + + product_type = kwargs.get("productType", prep.product_type) + # provider product type specific conf + self.product_type_def_params = ( + self.get_product_type_def_params(product_type, **kwargs) + if product_type is not None + else {} + ) + + for collection in self.get_collections(prep, **kwargs): + # skip empty collection if one is required in api_endpoint + if "{collection}" in self.config.api_endpoint and not collection: + continue + search_endpoint = self.config.api_endpoint.rstrip("/").format( + collection=collection + ) + features = fetch_stac_items( - self.config.api_endpoint, + search_endpoint, recursive=True, max_connections=self.config.max_connections, - timeout=self.config.timeout, + timeout=int(self.config.timeout), + ssl_verify=self.config.ssl_verify, ) nb_features = len(features) feature_collection = geojson.FeatureCollection(features) - # save StaticStacSearch._request and mock it to make return loaded static results - stacapi_request = self._request - self._request = ( - lambda url, info_message=None, exception_message=None: MockResponse( - feature_collection, 200 + # query on mocked StacSearch._request + with mock.patch( + "eodag.plugins.search.qssearch.StacSearch._request", + autospec=True, + return_value=MockResponse(feature_collection, 200), + ): + eo_products, _ = super(StaticStacSearch, self).query( + PreparedSearch(items_per_page=nb_features, page=1, count=True), **kwargs ) - ) - - # query on mocked StacSearch - eo_products, _ = super(StaticStacSearch, self).query( - items_per_page=nb_features, page=1, count=True, **kwargs - ) # filter using query params search_result = SearchResult(eo_products) # Filter by date @@ -124,9 +185,10 @@ def query( ) # Filter by geometry - if "geometry" in kwargs.keys(): + geometry = kwargs.pop("geometry", None) + if geometry: search_result = search_result.crunch( - FilterOverlap({"intersects": True}), geometry=kwargs.pop("geometry") + FilterOverlap({"intersects": True}), geometry=geometry ) # Filter by cloudCover if "cloudCover" in kwargs.keys(): @@ -151,7 +213,8 @@ def query( FilterProperty({property_key: property_value, "operator": "eq"}) ) - # restore plugin._request - self._request = stacapi_request - - return search_result.data, len(search_result) + return ( + (search_result.data, len(search_result)) + if prep.count + else (search_result.data, None) + ) diff --git a/eodag/resources/constraints/climate-dt.json b/eodag/resources/constraints/climate-dt.json new file mode 100644 index 000000000..aa9b43bb3 --- /dev/null +++ b/eodag/resources/constraints/climate-dt.json @@ -0,0 +1,13 @@ +[ + {"class": ["d1"], "dataset": ["climate-dt"], "generation": [1], "realization": [1], "expver": ["0001"], "stream": ["clte"], "type": ["fc"], "activity": ["ScenarioMIP"], "experiment": ["SSP3-7.0"], "date": ["20200101", "20200102", "20200103", "20200104", "20200105", "20200106", "20200107", "20200108", "20200109", "20200110", "20200111", "20200112", "20200113", "20200114", "20200115", "20200116", "20200117", "20200118", "20200119", "20200120", "20200121", "20200122", "20200123", "20200124", "20200125", "20200126", "20200127", "20200128", "20200129", "20200130", "20200131", "20200201", "20200202", "20200203", "20200204", "20200205", "20200206", "20200207", "20200208", "20200209", "20200210", "20200211", "20200212", "20200213", "20200214", "20200215", "20200216", "20200217", "20200218", "20200219", "20200220", "20200221", "20200222", "20200223", "20200224", "20200225", "20200226", "20200227", "20200228", "20200229", "20200301", "20200302", "20200303", "20200304", "20200305", "20200306", "20200307", "20200308", "20200309", "20200310", "20200311", "20200312", "20200313", "20200314", "20200315", "20200316", "20200317", "20200318", "20200319", "20200320", "20200321", "20200322", "20200323", "20200324", "20200325", "20200326", "20200327", "20200328", "20200329", "20200330", "20200331", "20200401", "20200402", "20200403", "20200404", "20200405", "20200406", "20200407", "20200408", "20200409", "20200410", "20200411", "20200412", "20200413", "20200414", "20200415", "20200416", "20200417", "20200418", "20200419", "20200420", "20200421", "20200422", "20200423", "20200424", "20200425", "20200426", "20200427", "20200428", "20200429", "20200430", "20200501", "20200502", "20200503", "20200504", "20200505", "20200506", "20200507", "20200508", "20200509", "20200510", "20200511", "20200512", "20200513", "20200514", "20200515", "20200516", "20200517", "20200518", "20200519", "20200520", "20200521", "20200522", "20200523", "20200524", "20200525", "20200526", "20200527", "20200528", "20200529", "20200530", "20200531", "20200601", "20200602", "20200603", "20200604", "20200605", "20200606", "20200607", "20200608", "20200609", "20200610", "20200611", "20200612", "20200613", "20200614", "20200615", "20200616", "20200617", "20200618", "20200619", "20200620", "20200621", "20200622", "20200623", "20200624", "20200625", "20200626", "20200627", "20200628", "20200629", "20200630", "20200701", "20200702", "20200703", "20200704", "20200705", "20200706", "20200707", "20200708", "20200709", "20200710", "20200711", "20200712", "20200713", "20200714", "20200715", "20200716", "20200717", "20200718", "20200719", "20200720", "20200721", "20200722", "20200723", "20200724", "20200725", "20200726", "20200727", "20200728", "20200729", "20200730", "20200731", "20200801", "20200802", "20200803", "20200804", "20200805", "20200806", "20200807", "20200808", "20200809", "20200810", "20200811", "20200812", "20200813", "20200814", "20200815", "20200816", "20200817", "20200818", "20200819", "20200820", "20200821", "20200822", "20200823", "20200824", "20200825", "20200826", "20200827", "20200828", "20200829", "20200830", "20200831", "20200901", "20200902", "20200903", "20200904", "20200905", "20200906", "20200907", "20200908", "20200909", "20200910", "20200911", "20200912", "20200913", "20200914", "20200915", "20200916", "20200917", "20200918", "20200919", "20200920", "20200921", "20200922", "20200923", "20200924", "20200925", "20200926", "20200927", "20200928", "20200929", "20200930", "20201001", "20201002", "20201003", "20201004", "20201005", "20201006", "20201007", "20201008", "20201009", "20201010", "20201011", "20201012", "20201013", "20201014", "20201015", "20201016", "20201017", "20201018", "20201019", "20201020", "20201021", "20201022", "20201023", "20201024", "20201025", "20201026", "20201027", "20201028", "20201029", "20201030", "20201031", "20201101", "20201102", "20201103", "20201104", "20201105", "20201106", "20201107", "20201108", "20201109", "20201110", "20201111", "20201112", "20201113", "20201114", "20201115", "20201116", "20201117", "20201118", "20201119", "20201120", "20201121", "20201122", "20201123", "20201124", "20201125", "20201126", "20201127", "20201128", "20201129", "20201130", "20201201", "20201202", "20201203", "20201204", "20201205", "20201206", "20201207", "20201208", "20201209", "20201210", "20201211", "20201212", "20201213", "20201214", "20201215", "20201216", "20201217", "20201218", "20201219", "20201220", "20201221", "20201222", "20201223", "20201224", "20201225", "20201226", "20201227", "20201228", "20201229", "20201230", "20201231", "20210101", "20210102", "20210103", "20210104", "20210105", "20210106", "20210107", "20210108", "20210109", "20210110", "20210111", "20210112", "20210113", "20210114", "20210115", "20210116", "20210117", "20210118", "20210119", "20210120", "20210121", "20210122", "20210123", "20210124", "20210125", "20210126", "20210127", "20210128", "20210129", "20210130", "20210131", "20210201", "20210202", "20210203", "20210204", "20210205", "20210206", "20210207", "20210208", "20210209", "20210210", "20210211", "20210212", "20210213", "20210214", "20210215", "20210216", "20210217", "20210218", "20210219", "20210220", "20210221", "20210222", "20210223", "20210224", "20210225", "20210226", "20210227", "20210228", "20210301", "20210302", "20210303", "20210304", "20210305", "20210306", "20210307", "20210308", "20210309", "20210310", "20210311", "20210312", "20210313", "20210314", "20210315", "20210316", "20210317", "20210318", "20210319", "20210320", "20210321", "20210322", "20210323", "20210324", "20210325", "20210326", "20210327", "20210328", "20210329", "20210330", "20210331", "20210401", "20210402", "20210403", "20210404", "20210405", "20210406", "20210407", "20210408", "20210409", "20210410", "20210411", "20210412", "20210413", "20210414", "20210415", "20210416", "20210417", "20210418", "20210419", "20210420", "20210421", "20210422", "20210423", "20210424", "20210425", "20210426", "20210427", "20210428", "20210429", "20210430", "20210501", "20210502", "20210503", "20210504", "20210505", "20210506", "20210507", "20210508", "20210509", "20210510", "20210511", "20210512", "20210513", "20210514", "20210515", "20210516", "20210517", "20210518", "20210519", "20210520", "20210521", "20210522", "20210523", "20210524", "20210525", "20210526", "20210527", "20210528", "20210529", "20210530", "20210531", "20210601", "20210602", "20210603", "20210604", "20210605", "20210606", "20210607", "20210608", "20210609", "20210610", "20210611", "20210612", "20210613", "20210614", "20210615", "20210616", "20210617", "20210618", "20210619", "20210620", "20210621", "20210622", "20210623", "20210624", "20210625", "20210626", "20210627", "20210628", "20210629", "20210630", "20210701", "20210702", "20210703", "20210704", "20210705", "20210706", "20210707", "20210708", "20210709", "20210710", "20210711", "20210712", "20210713", "20210714", "20210715", "20210716", "20210717", "20210718", "20210719", "20210720", "20210721", "20210722", "20210723", "20210724", "20210725", "20210726", "20210727", "20210728", "20210729", "20210730", "20210731", "20210801", "20210802", "20210803", "20210804", "20210805", "20210806", "20210807", "20210808", "20210809", "20210810", "20210811", "20210812", "20210813", "20210814", "20210815", "20210816", "20210817", "20210818", "20210819", "20210820", "20210821", "20210822", "20210823", "20210824", "20210825", "20210826", "20210827", "20210828", "20210829", "20210830", "20210831", "20210901", "20210902", "20210903", "20210904", "20210905", "20210906", "20210907", "20210908", "20210909", "20210910", "20210911", "20210912", "20210913", "20210914", "20210915", "20210916", "20210917", "20210918", "20210919", "20210920", "20210921", "20210922", "20210923", "20210924", "20210925", "20210926", "20210927", "20210928", "20210929", "20210930", "20211001", "20211002", "20211003", "20211004", "20211005", "20211006", "20211007", "20211008", "20211009", "20211010", "20211011", "20211012", "20211013", "20211014", "20211015", "20211016", "20211017", "20211018", "20211019", "20211020", "20211021", "20211022", "20211023", "20211024", "20211025", "20211026", "20211027", "20211028", "20211029", "20211030", "20211031", "20211101", "20211102", "20211103", "20211104", "20211105", "20211106", "20211107", "20211108", "20211109", "20211110", "20211111", "20211112", "20211113", "20211114", "20211115", "20211116", "20211117", "20211118", "20211119", "20211120", "20211121", "20211122", "20211123", "20211124", "20211125", "20211126", "20211127", "20211128", "20211129", "20211130", "20211201", "20211202", "20211203", "20211204", "20211205", "20211206", "20211207", "20211208", "20211209", "20211210", "20211211", "20211212", "20211213", "20211214", "20211215", "20211216", "20211217", "20211218", "20211219", "20211220", "20211221", "20211222", "20211223", "20211224", "20211225", "20211226", "20211227", "20211228", "20211229", "20211230", "20211231", "20220101", "20220102", "20220103", "20220104", "20220105", "20220106", "20220107", "20220108", "20220109", "20220110", "20220111", "20220112", "20220113", "20220114", "20220115", "20220116", "20220117", "20220118", "20220119", "20220120", "20220121", "20220122", "20220123", "20220124", "20220125", "20220126", "20220127", "20220128", "20220129", "20220130", "20220131", "20220201", "20220202", "20220203", "20220204", "20220205", "20220206", "20220207", "20220208", "20220209", "20220210", "20220211", "20220212", "20220213", "20220214", "20220215", "20220216", "20220217", "20220218", "20220219", "20220220", "20220221", "20220222", "20220223", "20220224", "20220225", "20220226", "20220227", "20220228", "20220301", "20220302", "20220303", "20220304", "20220305", "20220306", "20220307", "20220308", "20220309", "20220310", "20220311", "20220312", "20220313", "20220314", "20220315", "20220316", "20220317", "20220318", "20220319", "20220320", "20220321", "20220322", "20220323", "20220324", "20220325", "20220326", "20220327", "20220328", "20220329", "20220330", "20220331", "20220401", "20220402", "20220403", "20220404", "20220405", "20220406", "20220407", "20220408", "20220409", "20220410", "20220411", "20220412", "20220413", "20220414", "20220415", "20220416", "20220417", "20220418", "20220419", "20220420", "20220421", "20220422", "20220423", "20220424", "20220425", "20220426", "20220427", "20220428", "20220429", "20220430", "20220501", "20220502", "20220503", "20220504", "20220505", "20220506", "20220507", "20220508", "20220509", "20220510", "20220511", "20220512", "20220513", "20220514", "20220515", "20220516", "20220517", "20220518", "20220519", "20220520", "20220521", "20220522", "20220523", "20220524", "20220525", "20220526", "20220527", "20220528", "20220529", "20220530", "20220531", "20220601", "20220602", "20220603", "20220604", "20220605", "20220606", "20220607", "20220608", "20220609", "20220610", "20220611", "20220612", "20220613", "20220614", "20220615", "20220616", "20220617", "20220618", "20220619", "20220620", "20220621", "20220622", "20220623", "20220624", "20220625", "20220626", "20220627", "20220628", "20220629", "20220630", "20220701", "20220702", "20220703", "20220704", "20220705", "20220706", "20220707", "20220708", "20220709", "20220710", "20220711", "20220712", "20220713", "20220714", "20220715", "20220716", "20220717", "20220718", "20220719", "20220720", "20220721", "20220722", "20220723", "20220724", "20220725", "20220726", "20220727", "20220728", "20220729", "20220730", "20220731", "20220801", "20220802", "20220803", "20220804", "20220805", "20220806", "20220807", "20220808", "20220809", "20220810", "20220811", "20220812", "20220813", "20220814", "20220815", "20220816", "20220817", "20220818", "20220819", "20220820", "20220821", "20220822", "20220823", "20220824", "20220825", "20220826", "20220827", "20220828", "20220829", "20220830", "20220831", "20220901", "20220902", "20220903", "20220904", "20220905", "20220906", "20220907", "20220908", "20220909", "20220910", "20220911", "20220912", "20220913", "20220914", "20220915", "20220916", "20220917", "20220918", "20220919", "20220920", "20220921", "20220922", "20220923", "20220924", "20220925", "20220926", "20220927", "20220928", "20220929", "20220930", "20221001", "20221002", "20221003", "20221004", "20221005", "20221006", "20221007", "20221008", "20221009", "20221010", "20221011", "20221012", "20221013", "20221014", "20221015", "20221016", "20221017", "20221018", "20221019", "20221020", "20221021", "20221022", "20221023", "20221024", "20221025", "20221026", "20221027", "20221028", "20221029", "20221030", "20221031", "20221101", "20221102", "20221103", "20221104", "20221105", "20221106", "20221107", "20221108", "20221109", "20221110", "20221111", "20221112", "20221113", "20221114", "20221115", "20221116", "20221117", "20221118", "20221119", "20221120", "20221121", "20221122", "20221123", "20221124", "20221125", "20221126", "20221127", "20221128", "20221129", "20221130", "20221201", "20221202", "20221203", "20221204", "20221205", "20221206", "20221207", "20221208", "20221209", "20221210", "20221211", "20221212", "20221213", "20221214", "20221215", "20221216", "20221217", "20221218", "20221219", "20221220", "20221221", "20221222", "20221223", "20221224", "20221225", "20221226", "20221227", "20221228", "20221229", "20221230", "20221231", "20230101", "20230102", "20230103", "20230104", "20230105", "20230106", "20230107", "20230108", "20230109", "20230110", "20230111", "20230112", "20230113", "20230114", "20230115", "20230116", "20230117", "20230118", "20230119", "20230120", "20230121", "20230122", "20230123", "20230124", "20230125", "20230126", "20230127", "20230128", "20230129", "20230130", "20230131", "20230201", "20230202", "20230203", "20230204", "20230205", "20230206", "20230207", "20230208", "20230209", "20230210", "20230211", "20230212", "20230213", "20230214", "20230215", "20230216", "20230217", "20230218", "20230219", "20230220", "20230221", "20230222", "20230223", "20230224", "20230225", "20230226", "20230227", "20230228", "20230301", "20230302", "20230303", "20230304", "20230305", "20230306", "20230307", "20230308", "20230309", "20230310", "20230311", "20230312", "20230313", "20230314", "20230315", "20230316", "20230317", "20230318", "20230319", "20230320", "20230321", "20230322", "20230323", "20230324", "20230325", "20230326", "20230327", "20230328", "20230329", "20230330", "20230331", "20230401", "20230402", "20230403", "20230404", "20230405", "20230406", "20230407", "20230408", "20230409", "20230410", "20230411", "20230412", "20230413", "20230414", "20230415", "20230416", "20230417", "20230418", "20230419", "20230420", "20230421", "20230422", "20230423", "20230424", "20230425", "20230426", "20230427", "20230428", "20230429", "20230430", "20230501", "20230502", "20230503", "20230504", "20230505", "20230506", "20230507", "20230508", "20230509", "20230510", "20230511", "20230512", "20230513", "20230514", "20230515", "20230516", "20230517", "20230518", "20230519", "20230520", "20230521", "20230522", "20230523", "20230524", "20230525", "20230526", "20230527", "20230528", "20230529", "20230530", "20230531", "20230601", "20230602", "20230603", "20230604", "20230605", "20230606", "20230607", "20230608", "20230609", "20230610", "20230611", "20230612", "20230613", "20230614", "20230615", "20230616", "20230617", "20230618", "20230619", "20230620", "20230621", "20230622", "20230623", "20230624", "20230625", "20230626", "20230627", "20230628", "20230629", "20230630", "20230701", "20230702", "20230703", "20230704", "20230705", "20230706", "20230707", "20230708", "20230709", "20230710", "20230711", "20230712", "20230713", "20230714", "20230715", "20230716", "20230717", "20230718", "20230719", "20230720", "20230721", "20230722", "20230723", "20230724", "20230725", "20230726", "20230727", "20230728", "20230729", "20230730", "20230731", "20230801", "20230802", "20230803", "20230804", "20230805", "20230806", "20230807", "20230808", "20230809", "20230810", "20230811", "20230812", "20230813", "20230814", "20230815", "20230816", "20230817", "20230818", "20230819", "20230820", "20230821", "20230822", "20230823", "20230824", "20230825", "20230826", "20230827", "20230828", "20230829", "20230830", "20230831", "20230901", "20230902", "20230903", "20230904", "20230905", "20230906", "20230907", "20230908", "20230909", "20230910", "20230911", "20230912", "20230913", "20230914", "20230915", "20230916", "20230917", "20230918", "20230919", "20230920", "20230921", "20230922", "20230923", "20230924", "20230925", "20230926", "20230927", "20230928", "20230929", "20230930", "20231001", "20231002", "20231003", "20231004", "20231005", "20231006", "20231007", "20231008", "20231009", "20231010", "20231011", "20231012", "20231013", "20231014", "20231015", "20231016", "20231017", "20231018", "20231019", "20231020", "20231021", "20231022", "20231023", "20231024", "20231025", "20231026", "20231027", "20231028", "20231029", "20231030", "20231031", "20231101", "20231102", "20231103", "20231104", "20231105", "20231106", "20231107", "20231108", "20231109", "20231110", "20231111", "20231112", "20231113", "20231114", "20231115", "20231116", "20231117", "20231118", "20231119", "20231120", "20231121", "20231122", "20231123", "20231124", "20231125", "20231126", "20231127", "20231128", "20231129", "20231130", "20231201", "20231202", "20231203", "20231204", "20231205", "20231206", "20231207", "20231208", "20231209", "20231210", "20231211", "20231212", "20231213", "20231214", "20231215", "20231216", "20231217", "20231218", "20231219", "20231220", "20231221", "20231222", "20231223", "20231224", "20231225", "20231226", "20231227", "20231228", "20231229", "20231230", "20231231", "20240101", "20240102", "20240103", "20240104", "20240105", "20240106", "20240107", "20240108", "20240109", "20240110", "20240111", "20240112", "20240113", "20240114", "20240115", "20240116", "20240117", "20240118", "20240119", "20240120", "20240121", "20240122", "20240123", "20240124", "20240125", "20240126", "20240127", "20240128", "20240129", "20240130", "20240131", "20240201", "20240202", "20240203", "20240204", "20240205", "20240206", "20240207", "20240208", "20240209", "20240210", "20240211", "20240212", "20240213", "20240214", "20240215", "20240216", "20240217", "20240218", "20240219", "20240220", "20240221", "20240222", "20240223", "20240224", "20240225", "20240226", "20240227", "20240228", "20240229", "20240301", "20240302", "20240303", "20240304", "20240305", "20240306", "20240307", "20240308", "20240309", "20240310", "20240311", "20240312", "20240313", "20240314", "20240315", "20240316", "20240317", "20240318", "20240319", "20240320", "20240321", "20240322", "20240323", "20240324", "20240325", "20240326", "20240327", "20240328", "20240329", "20240330", "20240331", "20240401", "20240402", "20240403", "20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412", "20240413", "20240414", "20240415", "20240416", "20240417", "20240418", "20240419", "20240420", "20240421", "20240422", "20240423", "20240424", "20240425", "20240426", "20240427", "20240428", "20240429", "20240430", "20240501", "20240502", "20240503", "20240504", "20240505", "20240506", "20240507", "20240508", "20240509", "20240510", "20240511", "20240512", "20240513", "20240514", "20240515", "20240516", "20240517", "20240518", "20240519", "20240520", "20240521", "20240522", "20240523", "20240524", "20240525", "20240526", "20240527", "20240528", "20240529", "20240530", "20240531", "20240601", "20240602", "20240603", "20240604", "20240605", "20240606", "20240607", "20240608", "20240609", "20240610", "20240611", "20240612", "20240613", "20240614", "20240615", "20240616", "20240617", "20240618", "20240619", "20240620", "20240621", "20240622", "20240623", "20240624", "20240625", "20240626", "20240627", "20240628", "20240629", "20240630", "20240701", "20240702", "20240703", "20240704", "20240705", "20240706", "20240707", "20240708", "20240709", "20240710", "20240711", "20240712", "20240713", "20240714", "20240715", "20240716", "20240717", "20240718", "20240719", "20240720", "20240721", "20240722", "20240723", "20240724", "20240725", "20240726", "20240727", "20240728", "20240729", "20240730", "20240731", "20240801", "20240802", "20240803", "20240804", "20240805", "20240806", "20240807", "20240808", "20240809", "20240810", "20240811", "20240812", "20240813", "20240814", "20240815", "20240816", "20240817", "20240818", "20240819", "20240820", "20240821", "20240822", "20240823", "20240824", "20240825", "20240826", "20240827", "20240828", "20240829", "20240830", "20240831", "20240901", "20240902", "20240903", "20240904", "20240905", "20240906", "20240907", "20240908", "20240909", "20240910", "20240911", "20240912", "20240913", "20240914", "20240915", "20240916", "20240917", "20240918", "20240919", "20240920", "20240921", "20240922", "20240923", "20240924", "20240925", "20240926", "20240927", "20240928", "20240929", "20240930", "20241001", "20241002", "20241003", "20241004", "20241005", "20241006", "20241007", "20241008", "20241009", "20241010", "20241011", "20241012", "20241013", "20241014", "20241015", "20241016", "20241017", "20241018", "20241019", "20241020", "20241021", "20241022", "20241023", "20241024", "20241025", "20241026", "20241027", "20241028", "20241029", "20241030", "20241031", "20241101", "20241102", "20241103", "20241104", "20241105", "20241106", "20241107", "20241108", "20241109", "20241110", "20241111", "20241112", "20241113", "20241114", "20241115", "20241116", "20241117", "20241118", "20241119", "20241120", "20241121", "20241122", "20241123", "20241124", "20241125", "20241126", "20241127", "20241128", "20241129", "20241130", "20241201", "20241202", "20241203", "20241204", "20241205", "20241206", "20241207", "20241208", "20241209", "20241210", "20241211", "20241212", "20241213", "20241214", "20241215", "20241216", "20241217", "20241218", "20241219", "20241220", "20241221", "20241222", "20241223", "20241224", "20241225", "20241226", "20241227", "20241228", "20241229", "20241230", "20241231"], "model": ["ICON"], "resolution": ["high"], "levtype": ["o2d"], "time": ["0000"], "param": ["263000", "263001", "263003", "263004", "263009", "263114", "263124"]}, + {"class": ["d1"], "dataset": ["climate-dt"], "generation": [1], "realization": [1], "expver": ["0001"], "stream": ["clte"], "type": ["fc"], "activity": ["ScenarioMIP"], "experiment": ["SSP3-7.0"], "date": ["20200101", "20200102", "20200103", "20200104", "20200105", "20200106", "20200107", "20200108", "20200109", "20200110", "20200111", "20200112", "20200113", "20200114", "20200115", "20200116", "20200117", "20200118", "20200119", "20200120", "20200121", "20200122", "20200123", "20200124", "20200125", "20200126", "20200127", "20200128", "20200129", "20200130", "20200131", "20200201", "20200202", "20200203", "20200204", "20200205", "20200206", "20200207", "20200208", "20200209", "20200210", "20200211", "20200212", "20200213", "20200214", "20200215", "20200216", "20200217", "20200218", "20200219", "20200220", "20200221", "20200222", "20200223", "20200224", "20200225", "20200226", "20200227", "20200228", "20200229", "20200301", "20200302", "20200303", "20200304", "20200305", "20200306", "20200307", "20200308", "20200309", "20200310", "20200311", "20200312", "20200313", "20200314", "20200315", "20200316", "20200317", "20200318", "20200319", "20200320", "20200321", "20200322", "20200323", "20200324", "20200325", "20200326", "20200327", "20200328", "20200329", "20200330", "20200331", "20200401", "20200402", "20200403", "20200404", "20200405", "20200406", "20200407", "20200408", "20200409", "20200410", "20200411", "20200412", "20200413", "20200414", "20200415", "20200416", "20200417", "20200418", "20200419", "20200420", "20200421", "20200422", "20200423", "20200424", "20200425", "20200426", "20200427", "20200428", "20200429", "20200430", "20200501", "20200502", "20200503", "20200504", "20200505", "20200506", "20200507", "20200508", "20200509", "20200510", "20200511", "20200512", "20200513", "20200514", "20200515", "20200516", "20200517", "20200518", "20200519", "20200520", "20200521", "20200522", "20200523", "20200524", "20200525", "20200526", "20200527", "20200528", "20200529", "20200530", "20200531", "20200601", "20200602", "20200603", "20200604", "20200605", "20200606", "20200607", "20200608", "20200609", "20200610", "20200611", "20200612", "20200613", "20200614", "20200615", "20200616", "20200617", "20200618", "20200619", "20200620", "20200621", "20200622", "20200623", "20200624", "20200625", "20200626", "20200627", "20200628", "20200629", "20200630", "20200701", "20200702", "20200703", "20200704", "20200705", "20200706", "20200707", "20200708", "20200709", "20200710", "20200711", "20200712", "20200713", "20200714", "20200715", "20200716", "20200717", "20200718", "20200719", "20200720", "20200721", "20200722", "20200723", "20200724", "20200725", "20200726", "20200727", "20200728", "20200729", "20200730", "20200731", "20200801", "20200802", "20200803", "20200804", "20200805", "20200806", "20200807", "20200808", "20200809", "20200810", "20200811", "20200812", "20200813", "20200814", "20200815", "20200816", "20200817", "20200818", "20200819", "20200820", "20200821", "20200822", "20200823", "20200824", "20200825", "20200826", "20200827", "20200828", "20200829", "20200830", "20200831", "20200901", "20200902", "20200903", "20200904", "20200905", "20200906", "20200907", "20200908", "20200909", "20200910", "20200911", "20200912", "20200913", "20200914", "20200915", "20200916", "20200917", "20200918", "20200919", "20200920", "20200921", "20200922", "20200923", "20200924", "20200925", "20200926", "20200927", "20200928", "20200929", "20200930", "20201001", "20201002", "20201003", "20201004", "20201005", "20201006", "20201007", "20201008", "20201009", "20201010", "20201011", "20201012", "20201013", "20201014", "20201015", "20201016", "20201017", "20201018", "20201019", "20201020", "20201021", "20201022", "20201023", "20201024", "20201025", "20201026", "20201027", "20201028", "20201029", "20201030", "20201031", "20201101", "20201102", "20201103", "20201104", "20201105", "20201106", "20201107", "20201108", "20201109", "20201110", "20201111", "20201112", "20201113", "20201114", "20201115", "20201116", "20201117", "20201118", "20201119", "20201120", "20201121", "20201122", "20201123", "20201124", "20201125", "20201126", "20201127", "20201128", "20201129", "20201130", "20201201", "20201202", "20201203", "20201204", "20201205", "20201206", "20201207", "20201208", "20201209", "20201210", "20201211", "20201212", "20201213", "20201214", "20201215", "20201216", "20201217", "20201218", "20201219", "20201220", "20201221", "20201222", "20201223", "20201224", "20201225", "20201226", "20201227", "20201228", "20201229", "20201230", "20201231", "20210101", "20210102", "20210103", "20210104", "20210105", "20210106", "20210107", "20210108", "20210109", "20210110", "20210111", "20210112", "20210113", "20210114", "20210115", "20210116", "20210117", "20210118", "20210119", "20210120", "20210121", "20210122", "20210123", "20210124", "20210125", "20210126", "20210127", "20210128", "20210129", "20210130", "20210131", "20210201", "20210202", "20210203", "20210204", "20210205", "20210206", "20210207", "20210208", "20210209", "20210210", "20210211", "20210212", "20210213", "20210214", "20210215", "20210216", "20210217", "20210218", "20210219", "20210220", "20210221", "20210222", "20210223", "20210224", "20210225", "20210226", "20210227", "20210228", "20210301", "20210302", "20210303", "20210304", "20210305", "20210306", "20210307", "20210308", "20210309", "20210310", "20210311", "20210312", "20210313", "20210314", "20210315", "20210316", "20210317", "20210318", "20210319", "20210320", "20210321", "20210322", "20210323", "20210324", "20210325", "20210326", "20210327", "20210328", "20210329", "20210330", "20210331", "20210401", "20210402", "20210403", "20210404", "20210405", "20210406", "20210407", "20210408", "20210409", "20210410", "20210411", "20210412", "20210413", "20210414", "20210415", "20210416", "20210417", "20210418", "20210419", "20210420", "20210421", "20210422", "20210423", "20210424", "20210425", "20210426", "20210427", "20210428", "20210429", "20210430", "20210501", "20210502", "20210503", "20210504", "20210505", "20210506", "20210507", "20210508", "20210509", "20210510", "20210511", "20210512", "20210513", "20210514", "20210515", "20210516", "20210517", "20210518", "20210519", "20210520", "20210521", "20210522", "20210523", "20210524", "20210525", "20210526", "20210527", "20210528", "20210529", "20210530", "20210531", "20210601", "20210602", "20210603", "20210604", "20210605", "20210606", "20210607", "20210608", "20210609", "20210610", "20210611", "20210612", "20210613", "20210614", "20210615", "20210616", "20210617", "20210618", "20210619", "20210620", "20210621", "20210622", "20210623", "20210624", "20210625", "20210626", "20210627", "20210628", "20210629", "20210630", "20210701", "20210702", "20210703", "20210704", "20210705", "20210706", "20210707", "20210708", "20210709", "20210710", "20210711", "20210712", "20210713", "20210714", "20210715", "20210716", "20210717", "20210718", "20210719", "20210720", "20210721", "20210722", "20210723", "20210724", "20210725", "20210726", "20210727", "20210728", "20210729", "20210730", "20210731", "20210801", "20210802", "20210803", "20210804", "20210805", "20210806", "20210807", "20210808", "20210809", "20210810", "20210811", "20210812", "20210813", "20210814", "20210815", "20210816", "20210817", "20210818", "20210819", "20210820", "20210821", "20210822", "20210823", "20210824", "20210825", "20210826", "20210827", "20210828", "20210829", "20210830", "20210831", "20210901", "20210902", "20210903", "20210904", "20210905", "20210906", "20210907", "20210908", "20210909", "20210910", "20210911", "20210912", "20210913", "20210914", "20210915", "20210916", "20210917", "20210918", "20210919", "20210920", "20210921", "20210922", "20210923", "20210924", "20210925", "20210926", "20210927", "20210928", "20210929", "20210930", "20211001", "20211002", "20211003", "20211004", "20211005", "20211006", "20211007", "20211008", "20211009", "20211010", "20211011", "20211012", "20211013", "20211014", "20211015", "20211016", "20211017", "20211018", "20211019", "20211020", "20211021", "20211022", "20211023", "20211024", "20211025", "20211026", "20211027", "20211028", "20211029", "20211030", "20211031", "20211101", "20211102", "20211103", "20211104", "20211105", "20211106", "20211107", "20211108", "20211109", "20211110", "20211111", "20211112", "20211113", "20211114", "20211115", "20211116", "20211117", "20211118", "20211119", "20211120", "20211121", "20211122", "20211123", "20211124", "20211125", "20211126", "20211127", "20211128", "20211129", "20211130", "20211201", "20211202", "20211203", "20211204", "20211205", "20211206", "20211207", "20211208", "20211209", "20211210", "20211211", "20211212", "20211213", "20211214", "20211215", "20211216", "20211217", "20211218", "20211219", "20211220", "20211221", "20211222", "20211223", "20211224", "20211225", "20211226", "20211227", "20211228", "20211229", "20211230", "20211231", "20220101", "20220102", "20220103", "20220104", "20220105", "20220106", "20220107", "20220108", "20220109", "20220110", "20220111", "20220112", "20220113", "20220114", "20220115", "20220116", "20220117", "20220118", "20220119", "20220120", "20220121", "20220122", "20220123", "20220124", "20220125", "20220126", "20220127", "20220128", "20220129", "20220130", "20220131", "20220201", "20220202", "20220203", "20220204", "20220205", "20220206", "20220207", "20220208", "20220209", "20220210", "20220211", "20220212", "20220213", "20220214", "20220215", "20220216", "20220217", "20220218", "20220219", "20220220", "20220221", "20220222", "20220223", "20220224", "20220225", "20220226", "20220227", "20220228", "20220301", "20220302", "20220303", "20220304", "20220305", "20220306", "20220307", "20220308", "20220309", "20220310", "20220311", "20220312", "20220313", "20220314", "20220315", "20220316", "20220317", "20220318", "20220319", "20220320", "20220321", "20220322", "20220323", "20220324", "20220325", "20220326", "20220327", "20220328", "20220329", "20220330", "20220331", "20220401", "20220402", "20220403", "20220404", "20220405", "20220406", "20220407", "20220408", "20220409", "20220410", "20220411", "20220412", "20220413", "20220414", "20220415", "20220416", "20220417", "20220418", "20220419", "20220420", "20220421", "20220422", "20220423", "20220424", "20220425", "20220426", "20220427", "20220428", "20220429", "20220430", "20220501", "20220502", "20220503", "20220504", "20220505", "20220506", "20220507", "20220508", "20220509", "20220510", "20220511", "20220512", "20220513", "20220514", "20220515", "20220516", "20220517", "20220518", "20220519", "20220520", "20220521", "20220522", "20220523", "20220524", "20220525", "20220526", "20220527", "20220528", "20220529", "20220530", "20220531", "20220601", "20220602", "20220603", "20220604", "20220605", "20220606", "20220607", "20220608", "20220609", "20220610", "20220611", "20220612", "20220613", "20220614", "20220615", "20220616", "20220617", "20220618", "20220619", "20220620", "20220621", "20220622", "20220623", "20220624", "20220625", "20220626", "20220627", "20220628", "20220629", "20220630", "20220701", "20220702", "20220703", "20220704", "20220705", "20220706", "20220707", "20220708", "20220709", "20220710", "20220711", "20220712", "20220713", "20220714", "20220715", "20220716", "20220717", "20220718", "20220719", "20220720", "20220721", "20220722", "20220723", "20220724", "20220725", "20220726", "20220727", "20220728", "20220729", "20220730", "20220731", "20220801", "20220802", "20220803", "20220804", "20220805", "20220806", "20220807", "20220808", "20220809", "20220810", "20220811", "20220812", "20220813", "20220814", "20220815", "20220816", "20220817", "20220818", "20220819", "20220820", "20220821", "20220822", "20220823", "20220824", "20220825", "20220826", "20220827", "20220828", "20220829", "20220830", "20220831", "20220901", "20220902", "20220903", "20220904", "20220905", "20220906", "20220907", "20220908", "20220909", "20220910", "20220911", "20220912", "20220913", "20220914", "20220915", "20220916", "20220917", "20220918", "20220919", "20220920", "20220921", "20220922", "20220923", "20220924", "20220925", "20220926", "20220927", "20220928", "20220929", "20220930", "20221001", "20221002", "20221003", "20221004", "20221005", "20221006", "20221007", "20221008", "20221009", "20221010", "20221011", "20221012", "20221013", "20221014", "20221015", "20221016", "20221017", "20221018", "20221019", "20221020", "20221021", "20221022", "20221023", "20221024", "20221025", "20221026", "20221027", "20221028", "20221029", "20221030", "20221031", "20221101", "20221102", "20221103", "20221104", "20221105", "20221106", "20221107", "20221108", "20221109", "20221110", "20221111", "20221112", "20221113", "20221114", "20221115", "20221116", "20221117", "20221118", "20221119", "20221120", "20221121", "20221122", "20221123", "20221124", "20221125", "20221126", "20221127", "20221128", "20221129", "20221130", "20221201", "20221202", "20221203", "20221204", "20221205", "20221206", "20221207", "20221208", "20221209", "20221210", "20221211", "20221212", "20221213", "20221214", "20221215", "20221216", "20221217", "20221218", "20221219", "20221220", "20221221", "20221222", "20221223", "20221224", "20221225", "20221226", "20221227", "20221228", "20221229", "20221230", "20221231", "20230101", "20230102", "20230103", "20230104", "20230105", "20230106", "20230107", "20230108", "20230109", "20230110", "20230111", "20230112", "20230113", "20230114", "20230115", "20230116", "20230117", "20230118", "20230119", "20230120", "20230121", "20230122", "20230123", "20230124", "20230125", "20230126", "20230127", "20230128", "20230129", "20230130", "20230131", "20230201", "20230202", "20230203", "20230204", "20230205", "20230206", "20230207", "20230208", "20230209", "20230210", "20230211", "20230212", "20230213", "20230214", "20230215", "20230216", "20230217", "20230218", "20230219", "20230220", "20230221", "20230222", "20230223", "20230224", "20230225", "20230226", "20230227", "20230228", "20230301", "20230302", "20230303", "20230304", "20230305", "20230306", "20230307", "20230308", "20230309", "20230310", "20230311", "20230312", "20230313", "20230314", "20230315", "20230316", "20230317", "20230318", "20230319", "20230320", "20230321", "20230322", "20230323", "20230324", "20230325", "20230326", "20230327", "20230328", "20230329", "20230330", "20230331", "20230401", "20230402", "20230403", "20230404", "20230405", "20230406", "20230407", "20230408", "20230409", "20230410", "20230411", "20230412", "20230413", "20230414", "20230415", "20230416", "20230417", "20230418", "20230419", "20230420", "20230421", "20230422", "20230423", "20230424", "20230425", "20230426", "20230427", "20230428", "20230429", "20230430", "20230501", "20230502", "20230503", "20230504", "20230505", "20230506", "20230507", "20230508", "20230509", "20230510", "20230511", "20230512", "20230513", "20230514", "20230515", "20230516", "20230517", "20230518", "20230519", "20230520", "20230521", "20230522", "20230523", "20230524", "20230525", "20230526", "20230527", "20230528", "20230529", "20230530", "20230531", "20230601", "20230602", "20230603", "20230604", "20230605", "20230606", "20230607", "20230608", "20230609", "20230610", "20230611", "20230612", "20230613", "20230614", "20230615", "20230616", "20230617", "20230618", "20230619", "20230620", "20230621", "20230622", "20230623", "20230624", "20230625", "20230626", "20230627", "20230628", "20230629", "20230630", "20230701", "20230702", "20230703", "20230704", "20230705", "20230706", "20230707", "20230708", "20230709", "20230710", "20230711", "20230712", "20230713", "20230714", "20230715", "20230716", "20230717", "20230718", "20230719", "20230720", "20230721", "20230722", "20230723", "20230724", "20230725", "20230726", "20230727", "20230728", "20230729", "20230730", "20230731", "20230801", "20230802", "20230803", "20230804", "20230805", "20230806", "20230807", "20230808", "20230809", "20230810", "20230811", "20230812", "20230813", "20230814", "20230815", "20230816", "20230817", "20230818", "20230819", "20230820", "20230821", "20230822", "20230823", "20230824", "20230825", "20230826", "20230827", "20230828", "20230829", "20230830", "20230831", "20230901", "20230902", "20230903", "20230904", "20230905", "20230906", "20230907", "20230908", "20230909", "20230910", "20230911", "20230912", "20230913", "20230914", "20230915", "20230916", "20230917", "20230918", "20230919", "20230920", "20230921", "20230922", "20230923", "20230924", "20230925", "20230926", "20230927", "20230928", "20230929", "20230930", "20231001", "20231002", "20231003", "20231004", "20231005", "20231006", "20231007", "20231008", "20231009", "20231010", "20231011", "20231012", "20231013", "20231014", "20231015", "20231016", "20231017", "20231018", "20231019", "20231020", "20231021", "20231022", "20231023", "20231024", "20231025", "20231026", "20231027", "20231028", "20231029", "20231030", "20231031", "20231101", "20231102", "20231103", "20231104", "20231105", "20231106", "20231107", "20231108", "20231109", "20231110", "20231111", "20231112", "20231113", "20231114", "20231115", "20231116", "20231117", "20231118", "20231119", "20231120", "20231121", "20231122", "20231123", "20231124", "20231125", "20231126", "20231127", "20231128", "20231129", "20231130", "20231201", "20231202", "20231203", "20231204", "20231205", "20231206", "20231207", "20231208", "20231209", "20231210", "20231211", "20231212", "20231213", "20231214", "20231215", "20231216", "20231217", "20231218", "20231219", "20231220", "20231221", "20231222", "20231223", "20231224", "20231225", "20231226", "20231227", "20231228", "20231229", "20231230", "20231231", "20240101", "20240102", "20240103", "20240104", "20240105", "20240106", "20240107", "20240108", "20240109", "20240110", "20240111", "20240112", "20240113", "20240114", "20240115", "20240116", "20240117", "20240118", "20240119", "20240120", "20240121", "20240122", "20240123", "20240124", "20240125", "20240126", "20240127", "20240128", "20240129", "20240130", "20240131", "20240201", "20240202", "20240203", "20240204", "20240205", "20240206", "20240207", "20240208", "20240209", "20240210", "20240211", "20240212", "20240213", "20240214", "20240215", "20240216", "20240217", "20240218", "20240219", "20240220", "20240221", "20240222", "20240223", "20240224", "20240225", "20240226", "20240227", "20240228", "20240229", "20240301", "20240302", "20240303", "20240304", "20240305", "20240306", "20240307", "20240308", "20240309", "20240310", "20240311", "20240312", "20240313", "20240314", "20240315", "20240316", "20240317", "20240318", "20240319", "20240320", "20240321", "20240322", "20240323", "20240324", "20240325", "20240326", "20240327", "20240328", "20240329", "20240330", "20240331", "20240401", "20240402", "20240403", "20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412", "20240413", "20240414", "20240415", "20240416", "20240417", "20240418", "20240419", "20240420", "20240421", "20240422", "20240423", "20240424", "20240425", "20240426", "20240427", "20240428", "20240429", "20240430", "20240501", "20240502", "20240503", "20240504", "20240505", "20240506", "20240507", "20240508", "20240509", "20240510", "20240511", "20240512", "20240513", "20240514", "20240515", "20240516", "20240517", "20240518", "20240519", "20240520", "20240521", "20240522", "20240523", "20240524", "20240525", "20240526", "20240527", "20240528", "20240529", "20240530", "20240531", "20240601", "20240602", "20240603", "20240604", "20240605", "20240606", "20240607", "20240608", "20240609", "20240610", "20240611", "20240612", "20240613", "20240614", "20240615", "20240616", "20240617", "20240618", "20240619", "20240620", "20240621", "20240622", "20240623", "20240624", "20240625", "20240626", "20240627", "20240628", "20240629", "20240630", "20240701", "20240702", "20240703", "20240704", "20240705", "20240706", "20240707", "20240708", "20240709", "20240710", "20240711", "20240712", "20240713", "20240714", "20240715", "20240716", "20240717", "20240718", "20240719", "20240720", "20240721", "20240722", "20240723", "20240724", "20240725", "20240726", "20240727", "20240728", "20240729", "20240730", "20240731", "20240801", "20240802", "20240803", "20240804", "20240805", "20240806", "20240807", "20240808", "20240809", "20240810", "20240811", "20240812", "20240813", "20240814", "20240815", "20240816", "20240817", "20240818", "20240819", "20240820", "20240821", "20240822", "20240823", "20240824", "20240825", "20240826", "20240827", "20240828", "20240829", "20240830", "20240831", "20240901", "20240902", "20240903", "20240904", "20240905", "20240906", "20240907", "20240908", "20240909", "20240910", "20240911", "20240912", "20240913", "20240914", "20240915", "20240916", "20240917", "20240918", "20240919", "20240920", "20240921", "20240922", "20240923", "20240924", "20240925", "20240926", "20240927", "20240928", "20240929", "20240930", "20241001", "20241002", "20241003", "20241004", "20241005", "20241006", "20241007", "20241008", "20241009", "20241010", "20241011", "20241012", "20241013", "20241014", "20241015", "20241016", "20241017", "20241018", "20241019", "20241020", "20241021", "20241022", "20241023", "20241024", "20241025", "20241026", "20241027", "20241028", "20241029", "20241030", "20241031", "20241101", "20241102", "20241103", "20241104", "20241105", "20241106", "20241107", "20241108", "20241109", "20241110", "20241111", "20241112", "20241113", "20241114", "20241115", "20241116", "20241117", "20241118", "20241119", "20241120", "20241121", "20241122", "20241123", "20241124", "20241125", "20241126", "20241127", "20241128", "20241129", "20241130", "20241201", "20241202", "20241203", "20241204", "20241205", "20241206", "20241207", "20241208", "20241209", "20241210", "20241211", "20241212", "20241213", "20241214", "20241215", "20241216", "20241217", "20241218", "20241219", "20241220", "20241221", "20241222", "20241223", "20241224", "20241225", "20241226", "20241227", "20241228", "20241229", "20241230", "20241231"], "model": ["ICON"], "resolution": ["high"], "levtype": ["o3d"], "levelist": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72"], "time": ["0000"], "param": ["263500", "263501", "263505", "263506", "263507"]}, + {"class": ["d1"], "dataset": ["climate-dt"], "generation": [1], "realization": [1], "expver": ["0001"], "stream": ["clte"], "type": ["fc"], "activity": ["ScenarioMIP"], "experiment": ["SSP3-7.0"], "date": ["20200101", "20200102", "20200103", "20200104", "20200105", "20200106", "20200107", "20200108", "20200109", "20200110", "20200111", "20200112", "20200113", "20200114", "20200115", "20200116", "20200117", "20200118", "20200119", "20200120", "20200121", "20200122", "20200123", "20200124", "20200125", "20200126", "20200127", "20200128", "20200129", "20200130", "20200131", "20200201", "20200202", "20200203", "20200204", "20200205", "20200206", "20200207", "20200208", "20200209", "20200210", "20200211", "20200212", "20200213", "20200214", "20200215", "20200216", "20200217", "20200218", "20200219", "20200220", "20200221", "20200222", "20200223", "20200224", "20200225", "20200226", "20200227", "20200228", "20200229", "20200301", "20200302", "20200303", "20200304", "20200305", "20200306", "20200307", "20200308", "20200309", "20200310", "20200311", "20200312", "20200313", "20200314", "20200315", "20200316", "20200317", "20200318", "20200319", "20200320", "20200321", "20200322", "20200323", "20200324", "20200325", "20200326", "20200327", "20200328", "20200329", "20200330", "20200331", "20200401", "20200402", "20200403", "20200404", "20200405", "20200406", "20200407", "20200408", "20200409", "20200410", "20200411", "20200412", "20200413", "20200414", "20200415", "20200416", "20200417", "20200418", "20200419", "20200420", "20200421", "20200422", "20200423", "20200424", "20200425", "20200426", "20200427", "20200428", "20200429", "20200430", "20200501", "20200502", "20200503", "20200504", "20200505", "20200506", "20200507", "20200508", "20200509", "20200510", "20200511", "20200512", "20200513", "20200514", "20200515", "20200516", "20200517", "20200518", "20200519", "20200520", "20200521", "20200522", "20200523", "20200524", "20200525", "20200526", "20200527", "20200528", "20200529", "20200530", "20200531", "20200601", "20200602", "20200603", "20200604", "20200605", "20200606", "20200607", "20200608", "20200609", "20200610", "20200611", "20200612", "20200613", "20200614", "20200615", "20200616", "20200617", "20200618", "20200619", "20200620", "20200621", "20200622", "20200623", "20200624", "20200625", "20200626", "20200627", "20200628", "20200629", "20200630", "20200701", "20200702", "20200703", "20200704", "20200705", "20200706", "20200707", "20200708", "20200709", "20200710", "20200711", "20200712", "20200713", "20200714", "20200715", "20200716", "20200717", "20200718", "20200719", "20200720", "20200721", "20200722", "20200723", "20200724", "20200725", "20200726", "20200727", "20200728", "20200729", "20200730", "20200731", "20200801", "20200802", "20200803", "20200804", "20200805", "20200806", "20200807", "20200808", "20200809", "20200810", "20200811", "20200812", "20200813", "20200814", "20200815", "20200816", "20200817", "20200818", "20200819", "20200820", "20200821", "20200822", "20200823", "20200824", "20200825", "20200826", "20200827", "20200828", "20200829", "20200830", "20200831", "20200901", "20200902", "20200903", "20200904", "20200905", "20200906", "20200907", "20200908", "20200909", "20200910", "20200911", "20200912", "20200913", "20200914", "20200915", "20200916", "20200917", "20200918", "20200919", "20200920", "20200921", "20200922", "20200923", "20200924", "20200925", "20200926", "20200927", "20200928", "20200929", "20200930", "20201001", "20201002", "20201003", "20201004", "20201005", "20201006", "20201007", "20201008", "20201009", "20201010", "20201011", "20201012", "20201013", "20201014", "20201015", "20201016", "20201017", "20201018", "20201019", "20201020", "20201021", "20201022", "20201023", "20201024", "20201025", "20201026", "20201027", "20201028", "20201029", "20201030", "20201031", "20201101", "20201102", "20201103", "20201104", "20201105", "20201106", "20201107", "20201108", "20201109", "20201110", "20201111", "20201112", "20201113", "20201114", "20201115", "20201116", "20201117", "20201118", "20201119", "20201120", "20201121", "20201122", "20201123", "20201124", "20201125", "20201126", "20201127", "20201128", "20201129", "20201130", "20201201", "20201202", "20201203", "20201204", "20201205", "20201206", "20201207", "20201208", "20201209", "20201210", "20201211", "20201212", "20201213", "20201214", "20201215", "20201216", "20201217", "20201218", "20201219", "20201220", "20201221", "20201222", "20201223", "20201224", "20201225", "20201226", "20201227", "20201228", "20201229", "20201230", "20201231", "20210101", "20210102", "20210103", "20210104", "20210105", "20210106", "20210107", "20210108", "20210109", "20210110", "20210111", "20210112", "20210113", "20210114", "20210115", "20210116", "20210117", "20210118", "20210119", "20210120", "20210121", "20210122", "20210123", "20210124", "20210125", "20210126", "20210127", "20210128", "20210129", "20210130", "20210131", "20210201", "20210202", "20210203", "20210204", "20210205", "20210206", "20210207", "20210208", "20210209", "20210210", "20210211", "20210212", "20210213", "20210214", "20210215", "20210216", "20210217", "20210218", "20210219", "20210220", "20210221", "20210222", "20210223", "20210224", "20210225", "20210226", "20210227", "20210228", "20210301", "20210302", "20210303", "20210304", "20210305", "20210306", "20210307", "20210308", "20210309", "20210310", "20210311", "20210312", "20210313", "20210314", "20210315", "20210316", "20210317", "20210318", "20210319", "20210320", "20210321", "20210322", "20210323", "20210324", "20210325", "20210326", "20210327", "20210328", "20210329", "20210330", "20210331", "20210401", "20210402", "20210403", "20210404", "20210405", "20210406", "20210407", "20210408", "20210409", "20210410", "20210411", "20210412", "20210413", "20210414", "20210415", "20210416", "20210417", "20210418", "20210419", "20210420", "20210421", "20210422", "20210423", "20210424", "20210425", "20210426", "20210427", "20210428", "20210429", "20210430", "20210501", "20210502", "20210503", "20210504", "20210505", "20210506", "20210507", "20210508", "20210509", "20210510", "20210511", "20210512", "20210513", "20210514", "20210515", "20210516", "20210517", "20210518", "20210519", "20210520", "20210521", "20210522", "20210523", "20210524", "20210525", "20210526", "20210527", "20210528", "20210529", "20210530", "20210531", "20210601", "20210602", "20210603", "20210604", "20210605", "20210606", "20210607", "20210608", "20210609", "20210610", "20210611", "20210612", "20210613", "20210614", "20210615", "20210616", "20210617", "20210618", "20210619", "20210620", "20210621", "20210622", "20210623", "20210624", "20210625", "20210626", "20210627", "20210628", "20210629", "20210630", "20210701", "20210702", "20210703", "20210704", "20210705", "20210706", "20210707", "20210708", "20210709", "20210710", "20210711", "20210712", "20210713", "20210714", "20210715", "20210716", "20210717", "20210718", "20210719", "20210720", "20210721", "20210722", "20210723", "20210724", "20210725", "20210726", "20210727", "20210728", "20210729", "20210730", "20210731", "20210801", "20210802", "20210803", "20210804", "20210805", "20210806", "20210807", "20210808", "20210809", "20210810", "20210811", "20210812", "20210813", "20210814", "20210815", "20210816", "20210817", "20210818", "20210819", "20210820", "20210821", "20210822", "20210823", "20210824", "20210825", "20210826", "20210827", "20210828", "20210829", "20210830", "20210831", "20210901", "20210902", "20210903", "20210904", "20210905", "20210906", "20210907", "20210908", "20210909", "20210910", "20210911", "20210912", "20210913", "20210914", "20210915", "20210916", "20210917", "20210918", "20210919", "20210920", "20210921", "20210922", "20210923", "20210924", "20210925", "20210926", "20210927", "20210928", "20210929", "20210930", "20211001", "20211002", "20211003", "20211004", "20211005", "20211006", "20211007", "20211008", "20211009", "20211010", "20211011", "20211012", "20211013", "20211014", "20211015", "20211016", "20211017", "20211018", "20211019", "20211020", "20211021", "20211022", "20211023", "20211024", "20211025", "20211026", "20211027", "20211028", "20211029", "20211030", "20211031", "20211101", "20211102", "20211103", "20211104", "20211105", "20211106", "20211107", "20211108", "20211109", "20211110", "20211111", "20211112", "20211113", "20211114", "20211115", "20211116", "20211117", "20211118", "20211119", "20211120", "20211121", "20211122", "20211123", "20211124", "20211125", "20211126", "20211127", "20211128", "20211129", "20211130", "20211201", "20211202", "20211203", "20211204", "20211205", "20211206", "20211207", "20211208", "20211209", "20211210", "20211211", "20211212", "20211213", "20211214", "20211215", "20211216", "20211217", "20211218", "20211219", "20211220", "20211221", "20211222", "20211223", "20211224", "20211225", "20211226", "20211227", "20211228", "20211229", "20211230", "20211231", "20220101", "20220102", "20220103", "20220104", "20220105", "20220106", "20220107", "20220108", "20220109", "20220110", "20220111", "20220112", "20220113", "20220114", "20220115", "20220116", "20220117", "20220118", "20220119", "20220120", "20220121", "20220122", "20220123", "20220124", "20220125", "20220126", "20220127", "20220128", "20220129", "20220130", "20220131", "20220201", "20220202", "20220203", "20220204", "20220205", "20220206", "20220207", "20220208", "20220209", "20220210", "20220211", "20220212", "20220213", "20220214", "20220215", "20220216", "20220217", "20220218", "20220219", "20220220", "20220221", "20220222", "20220223", "20220224", "20220225", "20220226", "20220227", "20220228", "20220301", "20220302", "20220303", "20220304", "20220305", "20220306", "20220307", "20220308", "20220309", "20220310", "20220311", "20220312", "20220313", "20220314", "20220315", "20220316", "20220317", "20220318", "20220319", "20220320", "20220321", "20220322", "20220323", "20220324", "20220325", "20220326", "20220327", "20220328", "20220329", "20220330", "20220331", "20220401", "20220402", "20220403", "20220404", "20220405", "20220406", "20220407", "20220408", "20220409", "20220410", "20220411", "20220412", "20220413", "20220414", "20220415", "20220416", "20220417", "20220418", "20220419", "20220420", "20220421", "20220422", "20220423", "20220424", "20220425", "20220426", "20220427", "20220428", "20220429", "20220430", "20220501", "20220502", "20220503", "20220504", "20220505", "20220506", "20220507", "20220508", "20220509", "20220510", "20220511", "20220512", "20220513", "20220514", "20220515", "20220516", "20220517", "20220518", "20220519", "20220520", "20220521", "20220522", "20220523", "20220524", "20220525", "20220526", "20220527", "20220528", "20220529", "20220530", "20220531", "20220601", "20220602", "20220603", "20220604", "20220605", "20220606", "20220607", "20220608", "20220609", "20220610", "20220611", "20220612", "20220613", "20220614", "20220615", "20220616", "20220617", "20220618", "20220619", "20220620", "20220621", "20220622", "20220623", "20220624", "20220625", "20220626", "20220627", "20220628", "20220629", "20220630", "20220701", "20220702", "20220703", "20220704", "20220705", "20220706", "20220707", "20220708", "20220709", "20220710", "20220711", "20220712", "20220713", "20220714", "20220715", "20220716", "20220717", "20220718", "20220719", "20220720", "20220721", "20220722", "20220723", "20220724", "20220725", "20220726", "20220727", "20220728", "20220729", "20220730", "20220731", "20220801", "20220802", "20220803", "20220804", "20220805", "20220806", "20220807", "20220808", "20220809", "20220810", "20220811", "20220812", "20220813", "20220814", "20220815", "20220816", "20220817", "20220818", "20220819", "20220820", "20220821", "20220822", "20220823", "20220824", "20220825", "20220826", "20220827", "20220828", "20220829", "20220830", "20220831", "20220901", "20220902", "20220903", "20220904", "20220905", "20220906", "20220907", "20220908", "20220909", "20220910", "20220911", "20220912", "20220913", "20220914", "20220915", "20220916", "20220917", "20220918", "20220919", "20220920", "20220921", "20220922", "20220923", "20220924", "20220925", "20220926", "20220927", "20220928", "20220929", "20220930", "20221001", "20221002", "20221003", "20221004", "20221005", "20221006", "20221007", "20221008", "20221009", "20221010", "20221011", "20221012", "20221013", "20221014", "20221015", "20221016", "20221017", "20221018", "20221019", "20221020", "20221021", "20221022", "20221023", "20221024", "20221025", "20221026", "20221027", "20221028", "20221029", "20221030", "20221031", "20221101", "20221102", "20221103", "20221104", "20221105", "20221106", "20221107", "20221108", "20221109", "20221110", "20221111", "20221112", "20221113", "20221114", "20221115", "20221116", "20221117", "20221118", "20221119", "20221120", "20221121", "20221122", "20221123", "20221124", "20221125", "20221126", "20221127", "20221128", "20221129", "20221130", "20221201", "20221202", "20221203", "20221204", "20221205", "20221206", "20221207", "20221208", "20221209", "20221210", "20221211", "20221212", "20221213", "20221214", "20221215", "20221216", "20221217", "20221218", "20221219", "20221220", "20221221", "20221222", "20221223", "20221224", "20221225", "20221226", "20221227", "20221228", "20221229", "20221230", "20221231", "20230101", "20230102", "20230103", "20230104", "20230105", "20230106", "20230107", "20230108", "20230109", "20230110", "20230111", "20230112", "20230113", "20230114", "20230115", "20230116", "20230117", "20230118", "20230119", "20230120", "20230121", "20230122", "20230123", "20230124", "20230125", "20230126", "20230127", "20230128", "20230129", "20230130", "20230131", "20230201", "20230202", "20230203", "20230204", "20230205", "20230206", "20230207", "20230208", "20230209", "20230210", "20230211", "20230212", "20230213", "20230214", "20230215", "20230216", "20230217", "20230218", "20230219", "20230220", "20230221", "20230222", "20230223", "20230224", "20230225", "20230226", "20230227", "20230228", "20230301", "20230302", "20230303", "20230304", "20230305", "20230306", "20230307", "20230308", "20230309", "20230310", "20230311", "20230312", "20230313", "20230314", "20230315", "20230316", "20230317", "20230318", "20230319", "20230320", "20230321", "20230322", "20230323", "20230324", "20230325", "20230326", "20230327", "20230328", "20230329", "20230330", "20230331", "20230401", "20230402", "20230403", "20230404", "20230405", "20230406", "20230407", "20230408", "20230409", "20230410", "20230411", "20230412", "20230413", "20230414", "20230415", "20230416", "20230417", "20230418", "20230419", "20230420", "20230421", "20230422", "20230423", "20230424", "20230425", "20230426", "20230427", "20230428", "20230429", "20230430", "20230501", "20230502", "20230503", "20230504", "20230505", "20230506", "20230507", "20230508", "20230509", "20230510", "20230511", "20230512", "20230513", "20230514", "20230515", "20230516", "20230517", "20230518", "20230519", "20230520", "20230521", "20230522", "20230523", "20230524", "20230525", "20230526", "20230527", "20230528", "20230529", "20230530", "20230531", "20230601", "20230602", "20230603", "20230604", "20230605", "20230606", "20230607", "20230608", "20230609", "20230610", "20230611", "20230612", "20230613", "20230614", "20230615", "20230616", "20230617", "20230618", "20230619", "20230620", "20230621", "20230622", "20230623", "20230624", "20230625", "20230626", "20230627", "20230628", "20230629", "20230630", "20230701", "20230702", "20230703", "20230704", "20230705", "20230706", "20230707", "20230708", "20230709", "20230710", "20230711", "20230712", "20230713", "20230714", "20230715", "20230716", "20230717", "20230718", "20230719", "20230720", "20230721", "20230722", "20230723", "20230724", "20230725", "20230726", "20230727", "20230728", "20230729", "20230730", "20230731", "20230801", "20230802", "20230803", "20230804", "20230805", "20230806", "20230807", "20230808", "20230809", "20230810", "20230811", "20230812", "20230813", "20230814", "20230815", "20230816", "20230817", "20230818", "20230819", "20230820", "20230821", "20230822", "20230823", "20230824", "20230825", "20230826", "20230827", "20230828", "20230829", "20230830", "20230831", "20230901", "20230902", "20230903", "20230904", "20230905", "20230906", "20230907", "20230908", "20230909", "20230910", "20230911", "20230912", "20230913", "20230914", "20230915", "20230916", "20230917", "20230918", "20230919", "20230920", "20230921", "20230922", "20230923", "20230924", "20230925", "20230926", "20230927", "20230928", "20230929", "20230930", "20231001", "20231002", "20231003", "20231004", "20231005", "20231006", "20231007", "20231008", "20231009", "20231010", "20231011", "20231012", "20231013", "20231014", "20231015", "20231016", "20231017", "20231018", "20231019", "20231020", "20231021", "20231022", "20231023", "20231024", "20231025", "20231026", "20231027", "20231028", "20231029", "20231030", "20231031", "20231101", "20231102", "20231103", "20231104", "20231105", "20231106", "20231107", "20231108", "20231109", "20231110", "20231111", "20231112", "20231113", "20231114", "20231115", "20231116", "20231117", "20231118", "20231119", "20231120", "20231121", "20231122", "20231123", "20231124", "20231125", "20231126", "20231127", "20231128", "20231129", "20231130", "20231201", "20231202", "20231203", "20231204", "20231205", "20231206", "20231207", "20231208", "20231209", "20231210", "20231211", "20231212", "20231213", "20231214", "20231215", "20231216", "20231217", "20231218", "20231219", "20231220", "20231221", "20231222", "20231223", "20231224", "20231225", "20231226", "20231227", "20231228", "20231229", "20231230", "20231231", "20240101", "20240102", "20240103", "20240104", "20240105", "20240106", "20240107", "20240108", "20240109", "20240110", "20240111", "20240112", "20240113", "20240114", "20240115", "20240116", "20240117", "20240118", "20240119", "20240120", "20240121", "20240122", "20240123", "20240124", "20240125", "20240126", "20240127", "20240128", "20240129", "20240130", "20240131", "20240201", "20240202", "20240203", "20240204", "20240205", "20240206", "20240207", "20240208", "20240209", "20240210", "20240211", "20240212", "20240213", "20240214", "20240215", "20240216", "20240217", "20240218", "20240219", "20240220", "20240221", "20240222", "20240223", "20240224", "20240225", "20240226", "20240227", "20240228", "20240229", "20240301", "20240302", "20240303", "20240304", "20240305", "20240306", "20240307", "20240308", "20240309", "20240310", "20240311", "20240312", "20240313", "20240314", "20240315", "20240316", "20240317", "20240318", "20240319", "20240320", "20240321", "20240322", "20240323", "20240324", "20240325", "20240326", "20240327", "20240328", "20240329", "20240330", "20240331", "20240401", "20240402", "20240403", "20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412", "20240413", "20240414", "20240415", "20240416", "20240417", "20240418", "20240419", "20240420", "20240421", "20240422", "20240423", "20240424", "20240425", "20240426", "20240427", "20240428", "20240429", "20240430", "20240501", "20240502", "20240503", "20240504", "20240505", "20240506", "20240507", "20240508", "20240509", "20240510", "20240511", "20240512", "20240513", "20240514", "20240515", "20240516", "20240517", "20240518", "20240519", "20240520", "20240521", "20240522", "20240523", "20240524", "20240525", "20240526", "20240527", "20240528", "20240529", "20240530", "20240531", "20240601", "20240602", "20240603", "20240604", "20240605", "20240606", "20240607", "20240608", "20240609", "20240610", "20240611", "20240612", "20240613", "20240614", "20240615", "20240616", "20240617", "20240618", "20240619", "20240620", "20240621", "20240622", "20240623", "20240624", "20240625", "20240626", "20240627", "20240628", "20240629", "20240630", "20240701", "20240702", "20240703", "20240704", "20240705", "20240706", "20240707", "20240708", "20240709", "20240710", "20240711", "20240712", "20240713", "20240714", "20240715", "20240716", "20240717", "20240718", "20240719", "20240720", "20240721", "20240722", "20240723", "20240724", "20240725", "20240726", "20240727", "20240728", "20240729", "20240730", "20240731", "20240801", "20240802", "20240803", "20240804", "20240805", "20240806", "20240807", "20240808", "20240809", "20240810", "20240811", "20240812", "20240813", "20240814", "20240815", "20240816", "20240817", "20240818", "20240819", "20240820", "20240821", "20240822", "20240823", "20240824", "20240825", "20240826", "20240827", "20240828", "20240829", "20240830", "20240831", "20240901", "20240902", "20240903", "20240904", "20240905", "20240906", "20240907", "20240908", "20240909", "20240910", "20240911", "20240912", "20240913", "20240914", "20240915", "20240916", "20240917", "20240918", "20240919", "20240920", "20240921", "20240922", "20240923", "20240924", "20240925", "20240926", "20240927", "20240928", "20240929", "20240930", "20241001", "20241002", "20241003", "20241004", "20241005", "20241006", "20241007", "20241008", "20241009", "20241010", "20241011", "20241012", "20241013", "20241014", "20241015", "20241016", "20241017", "20241018", "20241019", "20241020", "20241021", "20241022", "20241023", "20241024", "20241025", "20241026", "20241027", "20241028", "20241029", "20241030", "20241031", "20241101", "20241102", "20241103", "20241104", "20241105", "20241106", "20241107", "20241108", "20241109", "20241110", "20241111", "20241112", "20241113", "20241114", "20241115", "20241116", "20241117", "20241118", "20241119", "20241120", "20241121", "20241122", "20241123", "20241124", "20241125", "20241126", "20241127", "20241128", "20241129", "20241130", "20241201", "20241202", "20241203", "20241204", "20241205", "20241206", "20241207", "20241208", "20241209", "20241210", "20241211", "20241212", "20241213", "20241214", "20241215", "20241216", "20241217", "20241218", "20241219", "20241220", "20241221", "20241222", "20241223", "20241224", "20241225", "20241226", "20241227", "20241228", "20241229", "20241230", "20241231"], "model": ["ICON"], "resolution": ["high"], "levtype": ["pl"], "levelist": ["1000", "925", "850", "700", "600", "500", "400", "300", "250", "200", "150", "100", "70", "50", "30", "20", "10", "5", "1"], "time": ["0000", "0100", "0200", "0300", "0400", "0500", "0600", "0700", "0800", "0900", "1000", "1100", "1200", "1300", "1400", "1500", "1600", "1700", "1800", "1900", "2000", "2100", "2200", "2300"], "param": ["60", "129", "130", "131", "132", "133", "135", "157", "246"]}, + {"class": ["d1"], "dataset": ["climate-dt"], "generation": [1], "realization": [1], "expver": ["0001"], "stream": ["clte"], "type": ["fc"], "activity": ["ScenarioMIP"], "experiment": ["SSP3-7.0"], "date": ["20200101", "20200102", "20200103", "20200104", "20200105", "20200106", "20200107", "20200108", "20200109", "20200110", "20200111", "20200112", "20200113", "20200114", "20200115", "20200116", "20200117", "20200118", "20200119", "20200120", "20200121", "20200122", "20200123", "20200124", "20200125", "20200126", "20200127", "20200128", "20200129", "20200130", "20200131", "20200201", "20200202", "20200203", "20200204", "20200205", "20200206", "20200207", "20200208", "20200209", "20200210", "20200211", "20200212", "20200213", "20200214", "20200215", "20200216", "20200217", "20200218", "20200219", "20200220", "20200221", "20200222", "20200223", "20200224", "20200225", "20200226", "20200227", "20200228", "20200229", "20200301", "20200302", "20200303", "20200304", "20200305", "20200306", "20200307", "20200308", "20200309", "20200310", "20200311", "20200312", "20200313", "20200314", "20200315", "20200316", "20200317", "20200318", "20200319", "20200320", "20200321", "20200322", "20200323", "20200324", "20200325", "20200326", "20200327", "20200328", "20200329", "20200330", "20200331", "20200401", "20200402", "20200403", "20200404", "20200405", "20200406", "20200407", "20200408", "20200409", "20200410", "20200411", "20200412", "20200413", "20200414", "20200415", "20200416", "20200417", "20200418", "20200419", "20200420", "20200421", "20200422", "20200423", "20200424", "20200425", "20200426", "20200427", "20200428", "20200429", "20200430", "20200501", "20200502", "20200503", "20200504", "20200505", "20200506", "20200507", "20200508", "20200509", "20200510", "20200511", "20200512", "20200513", "20200514", "20200515", "20200516", "20200517", "20200518", "20200519", "20200520", "20200521", "20200522", "20200523", "20200524", "20200525", "20200526", "20200527", "20200528", "20200529", "20200530", "20200531", "20200601", "20200602", "20200603", "20200604", "20200605", "20200606", "20200607", "20200608", "20200609", "20200610", "20200611", "20200612", "20200613", "20200614", "20200615", "20200616", "20200617", "20200618", "20200619", "20200620", "20200621", "20200622", "20200623", "20200624", "20200625", "20200626", "20200627", "20200628", "20200629", "20200630", "20200701", "20200702", "20200703", "20200704", "20200705", "20200706", "20200707", "20200708", "20200709", "20200710", "20200711", "20200712", "20200713", "20200714", "20200715", "20200716", "20200717", "20200718", "20200719", "20200720", "20200721", "20200722", "20200723", "20200724", "20200725", "20200726", "20200727", "20200728", "20200729", "20200730", "20200731", "20200801", "20200802", "20200803", "20200804", "20200805", "20200806", "20200807", "20200808", "20200809", "20200810", "20200811", "20200812", "20200813", "20200814", "20200815", "20200816", "20200817", "20200818", "20200819", "20200820", "20200821", "20200822", "20200823", "20200824", "20200825", "20200826", "20200827", "20200828", "20200829", "20200830", "20200831", "20200901", "20200902", "20200903", "20200904", "20200905", "20200906", "20200907", "20200908", "20200909", "20200910", "20200911", "20200912", "20200913", "20200914", "20200915", "20200916", "20200917", "20200918", "20200919", "20200920", "20200921", "20200922", "20200923", "20200924", "20200925", "20200926", "20200927", "20200928", "20200929", "20200930", "20201001", "20201002", "20201003", "20201004", "20201005", "20201006", "20201007", "20201008", "20201009", "20201010", "20201011", "20201012", "20201013", "20201014", "20201015", "20201016", "20201017", "20201018", "20201019", "20201020", "20201021", "20201022", "20201023", "20201024", "20201025", "20201026", "20201027", "20201028", "20201029", "20201030", "20201031", "20201101", "20201102", "20201103", "20201104", "20201105", "20201106", "20201107", "20201108", "20201109", "20201110", "20201111", "20201112", "20201113", "20201114", "20201115", "20201116", "20201117", "20201118", "20201119", "20201120", "20201121", "20201122", "20201123", "20201124", "20201125", "20201126", "20201127", "20201128", "20201129", "20201130", "20201201", "20201202", "20201203", "20201204", "20201205", "20201206", "20201207", "20201208", "20201209", "20201210", "20201211", "20201212", "20201213", "20201214", "20201215", "20201216", "20201217", "20201218", "20201219", "20201220", "20201221", "20201222", "20201223", "20201224", "20201225", "20201226", "20201227", "20201228", "20201229", "20201230", "20201231", "20210101", "20210102", "20210103", "20210104", "20210105", "20210106", "20210107", "20210108", "20210109", "20210110", "20210111", "20210112", "20210113", "20210114", "20210115", "20210116", "20210117", "20210118", "20210119", "20210120", "20210121", "20210122", "20210123", "20210124", "20210125", "20210126", "20210127", "20210128", "20210129", "20210130", "20210131", "20210201", "20210202", "20210203", "20210204", "20210205", "20210206", "20210207", "20210208", "20210209", "20210210", "20210211", "20210212", "20210213", "20210214", "20210215", "20210216", "20210217", "20210218", "20210219", "20210220", "20210221", "20210222", "20210223", "20210224", "20210225", "20210226", "20210227", "20210228", "20210301", "20210302", "20210303", "20210304", "20210305", "20210306", "20210307", "20210308", "20210309", "20210310", "20210311", "20210312", "20210313", "20210314", "20210315", "20210316", "20210317", "20210318", "20210319", "20210320", "20210321", "20210322", "20210323", "20210324", "20210325", "20210326", "20210327", "20210328", "20210329", "20210330", "20210331", "20210401", "20210402", "20210403", "20210404", "20210405", "20210406", "20210407", "20210408", "20210409", "20210410", "20210411", "20210412", "20210413", "20210414", "20210415", "20210416", "20210417", "20210418", "20210419", "20210420", "20210421", "20210422", "20210423", "20210424", "20210425", "20210426", "20210427", "20210428", "20210429", "20210430", "20210501", "20210502", "20210503", "20210504", "20210505", "20210506", "20210507", "20210508", "20210509", "20210510", "20210511", "20210512", "20210513", "20210514", "20210515", "20210516", "20210517", "20210518", "20210519", "20210520", "20210521", "20210522", "20210523", "20210524", "20210525", "20210526", "20210527", "20210528", "20210529", "20210530", "20210531", "20210601", "20210602", "20210603", "20210604", "20210605", "20210606", "20210607", "20210608", "20210609", "20210610", "20210611", "20210612", "20210613", "20210614", "20210615", "20210616", "20210617", "20210618", "20210619", "20210620", "20210621", "20210622", "20210623", "20210624", "20210625", "20210626", "20210627", "20210628", "20210629", "20210630", "20210701", "20210702", "20210703", "20210704", "20210705", "20210706", "20210707", "20210708", "20210709", "20210710", "20210711", "20210712", "20210713", "20210714", "20210715", "20210716", "20210717", "20210718", "20210719", "20210720", "20210721", "20210722", "20210723", "20210724", "20210725", "20210726", "20210727", "20210728", "20210729", "20210730", "20210731", "20210801", "20210802", "20210803", "20210804", "20210805", "20210806", "20210807", "20210808", "20210809", "20210810", "20210811", "20210812", "20210813", "20210814", "20210815", "20210816", "20210817", "20210818", "20210819", "20210820", "20210821", "20210822", "20210823", "20210824", "20210825", "20210826", "20210827", "20210828", "20210829", "20210830", "20210831", "20210901", "20210902", "20210903", "20210904", "20210905", "20210906", "20210907", "20210908", "20210909", "20210910", "20210911", "20210912", "20210913", "20210914", "20210915", "20210916", "20210917", "20210918", "20210919", "20210920", "20210921", "20210922", "20210923", "20210924", "20210925", "20210926", "20210927", "20210928", "20210929", "20210930", "20211001", "20211002", "20211003", "20211004", "20211005", "20211006", "20211007", "20211008", "20211009", "20211010", "20211011", "20211012", "20211013", "20211014", "20211015", "20211016", "20211017", "20211018", "20211019", "20211020", "20211021", "20211022", "20211023", "20211024", "20211025", "20211026", "20211027", "20211028", "20211029", "20211030", "20211031", "20211101", "20211102", "20211103", "20211104", "20211105", "20211106", "20211107", "20211108", "20211109", "20211110", "20211111", "20211112", "20211113", "20211114", "20211115", "20211116", "20211117", "20211118", "20211119", "20211120", "20211121", "20211122", "20211123", "20211124", "20211125", "20211126", "20211127", "20211128", "20211129", "20211130", "20211201", "20211202", "20211203", "20211204", "20211205", "20211206", "20211207", "20211208", "20211209", "20211210", "20211211", "20211212", "20211213", "20211214", "20211215", "20211216", "20211217", "20211218", "20211219", "20211220", "20211221", "20211222", "20211223", "20211224", "20211225", "20211226", "20211227", "20211228", "20211229", "20211230", "20211231", "20220101", "20220102", "20220103", "20220104", "20220105", "20220106", "20220107", "20220108", "20220109", "20220110", "20220111", "20220112", "20220113", "20220114", "20220115", "20220116", "20220117", "20220118", "20220119", "20220120", "20220121", "20220122", "20220123", "20220124", "20220125", "20220126", "20220127", "20220128", "20220129", "20220130", "20220131", "20220201", "20220202", "20220203", "20220204", "20220205", "20220206", "20220207", "20220208", "20220209", "20220210", "20220211", "20220212", "20220213", "20220214", "20220215", "20220216", "20220217", "20220218", "20220219", "20220220", "20220221", "20220222", "20220223", "20220224", "20220225", "20220226", "20220227", "20220228", "20220301", "20220302", "20220303", "20220304", "20220305", "20220306", "20220307", "20220308", "20220309", "20220310", "20220311", "20220312", "20220313", "20220314", "20220315", "20220316", "20220317", "20220318", "20220319", "20220320", "20220321", "20220322", "20220323", "20220324", "20220325", "20220326", "20220327", "20220328", "20220329", "20220330", "20220331", "20220401", "20220402", "20220403", "20220404", "20220405", "20220406", "20220407", "20220408", "20220409", "20220410", "20220411", "20220412", "20220413", "20220414", "20220415", "20220416", "20220417", "20220418", "20220419", "20220420", "20220421", "20220422", "20220423", "20220424", "20220425", "20220426", "20220427", "20220428", "20220429", "20220430", "20220501", "20220502", "20220503", "20220504", "20220505", "20220506", "20220507", "20220508", "20220509", "20220510", "20220511", "20220512", "20220513", "20220514", "20220515", "20220516", "20220517", "20220518", "20220519", "20220520", "20220521", "20220522", "20220523", "20220524", "20220525", "20220526", "20220527", "20220528", "20220529", "20220530", "20220531", "20220601", "20220602", "20220603", "20220604", "20220605", "20220606", "20220607", "20220608", "20220609", "20220610", "20220611", "20220612", "20220613", "20220614", "20220615", "20220616", "20220617", "20220618", "20220619", "20220620", "20220621", "20220622", "20220623", "20220624", "20220625", "20220626", "20220627", "20220628", "20220629", "20220630", "20220701", "20220702", "20220703", "20220704", "20220705", "20220706", "20220707", "20220708", "20220709", "20220710", "20220711", "20220712", "20220713", "20220714", "20220715", "20220716", "20220717", "20220718", "20220719", "20220720", "20220721", "20220722", "20220723", "20220724", "20220725", "20220726", "20220727", "20220728", "20220729", "20220730", "20220731", "20220801", "20220802", "20220803", "20220804", "20220805", "20220806", "20220807", "20220808", "20220809", "20220810", "20220811", "20220812", "20220813", "20220814", "20220815", "20220816", "20220817", "20220818", "20220819", "20220820", "20220821", "20220822", "20220823", "20220824", "20220825", "20220826", "20220827", "20220828", "20220829", "20220830", "20220831", "20220901", "20220902", "20220903", "20220904", "20220905", "20220906", "20220907", "20220908", "20220909", "20220910", "20220911", "20220912", "20220913", "20220914", "20220915", "20220916", "20220917", "20220918", "20220919", "20220920", "20220921", "20220922", "20220923", "20220924", "20220925", "20220926", "20220927", "20220928", "20220929", "20220930", "20221001", "20221002", "20221003", "20221004", "20221005", "20221006", "20221007", "20221008", "20221009", "20221010", "20221011", "20221012", "20221013", "20221014", "20221015", "20221016", "20221017", "20221018", "20221019", "20221020", "20221021", "20221022", "20221023", "20221024", "20221025", "20221026", "20221027", "20221028", "20221029", "20221030", "20221031", "20221101", "20221102", "20221103", "20221104", "20221105", "20221106", "20221107", "20221108", "20221109", "20221110", "20221111", "20221112", "20221113", "20221114", "20221115", "20221116", "20221117", "20221118", "20221119", "20221120", "20221121", "20221122", "20221123", "20221124", "20221125", "20221126", "20221127", "20221128", "20221129", "20221130", "20221201", "20221202", "20221203", "20221204", "20221205", "20221206", "20221207", "20221208", "20221209", "20221210", "20221211", "20221212", "20221213", "20221214", "20221215", "20221216", "20221217", "20221218", "20221219", "20221220", "20221221", "20221222", "20221223", "20221224", "20221225", "20221226", "20221227", "20221228", "20221229", "20221230", "20221231", "20230101", "20230102", "20230103", "20230104", "20230105", "20230106", "20230107", "20230108", "20230109", "20230110", "20230111", "20230112", "20230113", "20230114", "20230115", "20230116", "20230117", "20230118", "20230119", "20230120", "20230121", "20230122", "20230123", "20230124", "20230125", "20230126", "20230127", "20230128", "20230129", "20230130", "20230131", "20230201", "20230202", "20230203", "20230204", "20230205", "20230206", "20230207", "20230208", "20230209", "20230210", "20230211", "20230212", "20230213", "20230214", "20230215", "20230216", "20230217", "20230218", "20230219", "20230220", "20230221", "20230222", "20230223", "20230224", "20230225", "20230226", "20230227", "20230228", "20230301", "20230302", "20230303", "20230304", "20230305", "20230306", "20230307", "20230308", "20230309", "20230310", "20230311", "20230312", "20230313", "20230314", "20230315", "20230316", "20230317", "20230318", "20230319", "20230320", "20230321", "20230322", "20230323", "20230324", "20230325", "20230326", "20230327", "20230328", "20230329", "20230330", "20230331", "20230401", "20230402", "20230403", "20230404", "20230405", "20230406", "20230407", "20230408", "20230409", "20230410", "20230411", "20230412", "20230413", "20230414", "20230415", "20230416", "20230417", "20230418", "20230419", "20230420", "20230421", "20230422", "20230423", "20230424", "20230425", "20230426", "20230427", "20230428", "20230429", "20230430", "20230501", "20230502", "20230503", "20230504", "20230505", "20230506", "20230507", "20230508", "20230509", "20230510", "20230511", "20230512", "20230513", "20230514", "20230515", "20230516", "20230517", "20230518", "20230519", "20230520", "20230521", "20230522", "20230523", "20230524", "20230525", "20230526", "20230527", "20230528", "20230529", "20230530", "20230531", "20230601", "20230602", "20230603", "20230604", "20230605", "20230606", "20230607", "20230608", "20230609", "20230610", "20230611", "20230612", "20230613", "20230614", "20230615", "20230616", "20230617", "20230618", "20230619", "20230620", "20230621", "20230622", "20230623", "20230624", "20230625", "20230626", "20230627", "20230628", "20230629", "20230630", "20230701", "20230702", "20230703", "20230704", "20230705", "20230706", "20230707", "20230708", "20230709", "20230710", "20230711", "20230712", "20230713", "20230714", "20230715", "20230716", "20230717", "20230718", "20230719", "20230720", "20230721", "20230722", "20230723", "20230724", "20230725", "20230726", "20230727", "20230728", "20230729", "20230730", "20230731", "20230801", "20230802", "20230803", "20230804", "20230805", "20230806", "20230807", "20230808", "20230809", "20230810", "20230811", "20230812", "20230813", "20230814", "20230815", "20230816", "20230817", "20230818", "20230819", "20230820", "20230821", "20230822", "20230823", "20230824", "20230825", "20230826", "20230827", "20230828", "20230829", "20230830", "20230831", "20230901", "20230902", "20230903", "20230904", "20230905", "20230906", "20230907", "20230908", "20230909", "20230910", "20230911", "20230912", "20230913", "20230914", "20230915", "20230916", "20230917", "20230918", "20230919", "20230920", "20230921", "20230922", "20230923", "20230924", "20230925", "20230926", "20230927", "20230928", "20230929", "20230930", "20231001", "20231002", "20231003", "20231004", "20231005", "20231006", "20231007", "20231008", "20231009", "20231010", "20231011", "20231012", "20231013", "20231014", "20231015", "20231016", "20231017", "20231018", "20231019", "20231020", "20231021", "20231022", "20231023", "20231024", "20231025", "20231026", "20231027", "20231028", "20231029", "20231030", "20231031", "20231101", "20231102", "20231103", "20231104", "20231105", "20231106", "20231107", "20231108", "20231109", "20231110", "20231111", "20231112", "20231113", "20231114", "20231115", "20231116", "20231117", "20231118", "20231119", "20231120", "20231121", "20231122", "20231123", "20231124", "20231125", "20231126", "20231127", "20231128", "20231129", "20231130", "20231201", "20231202", "20231203", "20231204", "20231205", "20231206", "20231207", "20231208", "20231209", "20231210", "20231211", "20231212", "20231213", "20231214", "20231215", "20231216", "20231217", "20231218", "20231219", "20231220", "20231221", "20231222", "20231223", "20231224", "20231225", "20231226", "20231227", "20231228", "20231229", "20231230", "20231231", "20240101", "20240102", "20240103", "20240104", "20240105", "20240106", "20240107", "20240108", "20240109", "20240110", "20240111", "20240112", "20240113", "20240114", "20240115", "20240116", "20240117", "20240118", "20240119", "20240120", "20240121", "20240122", "20240123", "20240124", "20240125", "20240126", "20240127", "20240128", "20240129", "20240130", "20240131", "20240201", "20240202", "20240203", "20240204", "20240205", "20240206", "20240207", "20240208", "20240209", "20240210", "20240211", "20240212", "20240213", "20240214", "20240215", "20240216", "20240217", "20240218", "20240219", "20240220", "20240221", "20240222", "20240223", "20240224", "20240225", "20240226", "20240227", "20240228", "20240229", "20240301", "20240302", "20240303", "20240304", "20240305", "20240306", "20240307", "20240308", "20240309", "20240310", "20240311", "20240312", "20240313", "20240314", "20240315", "20240316", "20240317", "20240318", "20240319", "20240320", "20240321", "20240322", "20240323", "20240324", "20240325", "20240326", "20240327", "20240328", "20240329", "20240330", "20240331", "20240401", "20240402", "20240403", "20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412", "20240413", "20240414", "20240415", "20240416", "20240417", "20240418", "20240419", "20240420", "20240421", "20240422", "20240423", "20240424", "20240425", "20240426", "20240427", "20240428", "20240429", "20240430", "20240501", "20240502", "20240503", "20240504", "20240505", "20240506", "20240507", "20240508", "20240509", "20240510", "20240511", "20240512", "20240513", "20240514", "20240515", "20240516", "20240517", "20240518", "20240519", "20240520", "20240521", "20240522", "20240523", "20240524", "20240525", "20240526", "20240527", "20240528", "20240529", "20240530", "20240531", "20240601", "20240602", "20240603", "20240604", "20240605", "20240606", "20240607", "20240608", "20240609", "20240610", "20240611", "20240612", "20240613", "20240614", "20240615", "20240616", "20240617", "20240618", "20240619", "20240620", "20240621", "20240622", "20240623", "20240624", "20240625", "20240626", "20240627", "20240628", "20240629", "20240630", "20240701", "20240702", "20240703", "20240704", "20240705", "20240706", "20240707", "20240708", "20240709", "20240710", "20240711", "20240712", "20240713", "20240714", "20240715", "20240716", "20240717", "20240718", "20240719", "20240720", "20240721", "20240722", "20240723", "20240724", "20240725", "20240726", "20240727", "20240728", "20240729", "20240730", "20240731", "20240801", "20240802", "20240803", "20240804", "20240805", "20240806", "20240807", "20240808", "20240809", "20240810", "20240811", "20240812", "20240813", "20240814", "20240815", "20240816", "20240817", "20240818", "20240819", "20240820", "20240821", "20240822", "20240823", "20240824", "20240825", "20240826", "20240827", "20240828", "20240829", "20240830", "20240831", "20240901", "20240902", "20240903", "20240904", "20240905", "20240906", "20240907", "20240908", "20240909", "20240910", "20240911", "20240912", "20240913", "20240914", "20240915", "20240916", "20240917", "20240918", "20240919", "20240920", "20240921", "20240922", "20240923", "20240924", "20240925", "20240926", "20240927", "20240928", "20240929", "20240930", "20241001", "20241002", "20241003", "20241004", "20241005", "20241006", "20241007", "20241008", "20241009", "20241010", "20241011", "20241012", "20241013", "20241014", "20241015", "20241016", "20241017", "20241018", "20241019", "20241020", "20241021", "20241022", "20241023", "20241024", "20241025", "20241026", "20241027", "20241028", "20241029", "20241030", "20241031", "20241101", "20241102", "20241103", "20241104", "20241105", "20241106", "20241107", "20241108", "20241109", "20241110", "20241111", "20241112", "20241113", "20241114", "20241115", "20241116", "20241117", "20241118", "20241119", "20241120", "20241121", "20241122", "20241123", "20241124", "20241125", "20241126", "20241127", "20241128", "20241129", "20241130", "20241201", "20241202", "20241203", "20241204", "20241205", "20241206", "20241207", "20241208", "20241209", "20241210", "20241211", "20241212", "20241213", "20241214", "20241215", "20241216", "20241217", "20241218", "20241219", "20241220", "20241221", "20241222", "20241223", "20241224", "20241225", "20241226", "20241227", "20241228", "20241229", "20241230", "20241231"], "model": ["ICON"], "resolution": ["high"], "levtype": ["sfc"], "time": ["0000", "0100", "0200", "0300", "0400", "0500", "0600", "0700", "0800", "0900", "1000", "1100", "1200", "1300", "1400", "1500", "1600", "1700", "1800", "1900", "2000", "2100", "2200", "2300"], "param": ["78", "79", "134", "137", "151", "165", "166", "167", "168", "235", "228164", "260048", "147", "169", "175", "176", "177", "178", "179", "260654", "260655"]}, + {"class": ["d1"], "dataset": ["climate-dt"], "generation": [1], "realization": [1], "expver": ["0001"], "stream": ["clte"], "type": ["fc"], "activity": ["ScenarioMIP"], "experiment": ["SSP3-7.0"], "date": ["20200101", "20200102", "20200103", "20200104", "20200105", "20200106", "20200107", "20200108", "20200109", "20200110", "20200111", "20200112", "20200113", "20200114", "20200115", "20200116", "20200117", "20200118", "20200119", "20200120", "20200121", "20200122", "20200123", "20200124", "20200125", "20200126", "20200127", "20200128", "20200129", "20200130", "20200131", "20200201", "20200202", "20200203", "20200204", "20200205", "20200206", "20200207", "20200208", "20200209", "20200210", "20200211", "20200212", "20200213", "20200214", "20200215", "20200216", "20200217", "20200218", "20200219", "20200220", "20200221", "20200222", "20200223", "20200224", "20200225", "20200226", "20200227", "20200228", "20200229", "20200301", "20200302", "20200303", "20200304", "20200305", "20200306", "20200307", "20200308", "20200309", "20200310", "20200311", "20200312", "20200313", "20200314", "20200315", "20200316", "20200317", "20200318", "20200319", "20200320", "20200321", "20200322", "20200323", "20200324", "20200325", "20200326", "20200327", "20200328", "20200329", "20200330", "20200331", "20200401", "20200402", "20200403", "20200404", "20200405", "20200406", "20200407", "20200408", "20200409", "20200410", "20200411", "20200412", "20200413", "20200414", "20200415", "20200416", "20200417", "20200418", "20200419", "20200420", "20200421", "20200422", "20200423", "20200424", "20200425", "20200426", "20200427", "20200428", "20200429", "20200430", "20200501", "20200502", "20200503", "20200504", "20200505", "20200506", "20200507", "20200508", "20200509", "20200510", "20200511", "20200512", "20200513", "20200514", "20200515", "20200516", "20200517", "20200518", "20200519", "20200520", "20200521", "20200522", "20200523", "20200524", "20200525", "20200526", "20200527", "20200528", "20200529", "20200530", "20200531", "20200601", "20200602", "20200603", "20200604", "20200605", "20200606", "20200607", "20200608", "20200609", "20200610", "20200611", "20200612", "20200613", "20200614", "20200615", "20200616", "20200617", "20200618", "20200619", "20200620", "20200621", "20200622", "20200623", "20200624", "20200625", "20200626", "20200627", "20200628", "20200629", "20200630", "20200701", "20200702", "20200703", "20200704", "20200705", "20200706", "20200707", "20200708", "20200709", "20200710", "20200711", "20200712", "20200713", "20200714", "20200715", "20200716", "20200717", "20200718", "20200719", "20200720", "20200721", "20200722", "20200723", "20200724", "20200725", "20200726", "20200727", "20200728", "20200729", "20200730", "20200731", "20200801", "20200802", "20200803", "20200804", "20200805", "20200806", "20200807", "20200808", "20200809", "20200810", "20200811", "20200812", "20200813", "20200814", "20200815", "20200816", "20200817", "20200818", "20200819", "20200820", "20200821", "20200822", "20200823", "20200824", "20200825", "20200826", "20200827", "20200828", "20200829", "20200830", "20200831", "20200901", "20200902", "20200903", "20200904", "20200905", "20200906", "20200907", "20200908", "20200909", "20200910", "20200911", "20200912", "20200913", "20200914", "20200915", "20200916", "20200917", "20200918", "20200919", "20200920", "20200921", "20200922", "20200923", "20200924", "20200925", "20200926", "20200927", "20200928", "20200929", "20200930", "20201001", "20201002", "20201003", "20201004", "20201005", "20201006", "20201007", "20201008", "20201009", "20201010", "20201011", "20201012", "20201013", "20201014", "20201015", "20201016", "20201017", "20201018", "20201019", "20201020", "20201021", "20201022", "20201023", "20201024", "20201025", "20201026", "20201027", "20201028", "20201029", "20201030", "20201031", "20201101", "20201102", "20201103", "20201104", "20201105", "20201106", "20201107", "20201108", "20201109", "20201110", "20201111", "20201112", "20201113", "20201114", "20201115", "20201116", "20201117", "20201118", "20201119", "20201120", "20201121", "20201122", "20201123", "20201124", "20201125", "20201126", "20201127", "20201128", "20201129", "20201130", "20201201", "20201202", "20201203", "20201204", "20201205", "20201206", "20201207", "20201208", "20201209", "20201210", "20201211", "20201212", "20201213", "20201214", "20201215", "20201216", "20201217", "20201218", "20201219", "20201220", "20201221", "20201222", "20201223", "20201224", "20201225", "20201226", "20201227", "20201228", "20201229", "20201230", "20201231", "20210101", "20210102", "20210103", "20210104", "20210105", "20210106", "20210107", "20210108", "20210109", "20210110", "20210111", "20210112", "20210113", "20210114", "20210115", "20210116", "20210117", "20210118", "20210119", "20210120", "20210121", "20210122", "20210123", "20210124", "20210125", "20210126", "20210127", "20210128", "20210129", "20210130", "20210131", "20210201", "20210202", "20210203", "20210204", "20210205", "20210206", "20210207", "20210208", "20210209", "20210210", "20210211", "20210212", "20210213", "20210214", "20210215", "20210216", "20210217", "20210218", "20210219", "20210220", "20210221", "20210222", "20210223", "20210224", "20210225", "20210226", "20210227", "20210228", "20210301", "20210302", "20210303", "20210304", "20210305", "20210306", "20210307", "20210308", "20210309", "20210310", "20210311", "20210312", "20210313", "20210314", "20210315", "20210316", "20210317", "20210318", "20210319", "20210320", "20210321", "20210322", "20210323", "20210324", "20210325", "20210326", "20210327", "20210328", "20210329", "20210330", "20210331", "20210401", "20210402", "20210403", "20210404", "20210405", "20210406", "20210407", "20210408", "20210409", "20210410", "20210411", "20210412", "20210413", "20210414", "20210415", "20210416", "20210417", "20210418", "20210419", "20210420", "20210421", "20210422", "20210423", "20210424", "20210425", "20210426", "20210427", "20210428", "20210429", "20210430", "20210501", "20210502", "20210503", "20210504", "20210505", "20210506", "20210507", "20210508", "20210509", "20210510", "20210511", "20210512", "20210513", "20210514", "20210515", "20210516", "20210517", "20210518", "20210519", "20210520", "20210521", "20210522", "20210523", "20210524", "20210525", "20210526", "20210527", "20210528", "20210529", "20210530", "20210531", "20210601", "20210602", "20210603", "20210604", "20210605", "20210606", "20210607", "20210608", "20210609", "20210610", "20210611", "20210612", "20210613", "20210614", "20210615", "20210616", "20210617", "20210618", "20210619", "20210620", "20210621", "20210622", "20210623", "20210624", "20210625", "20210626", "20210627", "20210628", "20210629", "20210630", "20210701", "20210702", "20210703", "20210704", "20210705", "20210706", "20210707", "20210708", "20210709", "20210710", "20210711", "20210712", "20210713", "20210714", "20210715", "20210716", "20210717", "20210718", "20210719", "20210720", "20210721", "20210722", "20210723", "20210724", "20210725", "20210726", "20210727", "20210728", "20210729", "20210730", "20210731", "20210801", "20210802", "20210803", "20210804", "20210805", "20210806", "20210807", "20210808", "20210809", "20210810", "20210811", "20210812", "20210813", "20210814", "20210815", "20210816", "20210817", "20210818", "20210819", "20210820", "20210821", "20210822", "20210823", "20210824", "20210825", "20210826", "20210827", "20210828", "20210829", "20210830", "20210831", "20210901", "20210902", "20210903", "20210904", "20210905", "20210906", "20210907", "20210908", "20210909", "20210910", "20210911", "20210912", "20210913", "20210914", "20210915", "20210916", "20210917", "20210918", "20210919", "20210920", "20210921", "20210922", "20210923", "20210924", "20210925", "20210926", "20210927", "20210928", "20210929", "20210930", "20211001", "20211002", "20211003", "20211004", "20211005", "20211006", "20211007", "20211008", "20211009", "20211010", "20211011", "20211012", "20211013", "20211014", "20211015", "20211016", "20211017", "20211018", "20211019", "20211020", "20211021", "20211022", "20211023", "20211024", "20211025", "20211026", "20211027", "20211028", "20211029", "20211030", "20211031", "20211101", "20211102", "20211103", "20211104", "20211105", "20211106", "20211107", "20211108", "20211109", "20211110", "20211111", "20211112", "20211113", "20211114", "20211115", "20211116", "20211117", "20211118", "20211119", "20211120", "20211121", "20211122", "20211123", "20211124", "20211125", "20211126", "20211127", "20211128", "20211129", "20211130", "20211201", "20211202", "20211203", "20211204", "20211205", "20211206", "20211207", "20211208", "20211209", "20211210", "20211211", "20211212", "20211213", "20211214", "20211215", "20211216", "20211217", "20211218", "20211219", "20211220", "20211221", "20211222", "20211223", "20211224", "20211225", "20211226", "20211227", "20211228", "20211229", "20211230", "20211231", "20220101", "20220102", "20220103", "20220104", "20220105", "20220106", "20220107", "20220108", "20220109", "20220110", "20220111", "20220112", "20220113", "20220114", "20220115", "20220116", "20220117", "20220118", "20220119", "20220120", "20220121", "20220122", "20220123", "20220124", "20220125", "20220126", "20220127", "20220128", "20220129", "20220130", "20220131", "20220201", "20220202", "20220203", "20220204", "20220205", "20220206", "20220207", "20220208", "20220209", "20220210", "20220211", "20220212", "20220213", "20220214", "20220215", "20220216", "20220217", "20220218", "20220219", "20220220", "20220221", "20220222", "20220223", "20220224", "20220225", "20220226", "20220227", "20220228", "20220301", "20220302", "20220303", "20220304", "20220305", "20220306", "20220307", "20220308", "20220309", "20220310", "20220311", "20220312", "20220313", "20220314", "20220315", "20220316", "20220317", "20220318", "20220319", "20220320", "20220321", "20220322", "20220323", "20220324", "20220325", "20220326", "20220327", "20220328", "20220329", "20220330", "20220331", "20220401", "20220402", "20220403", "20220404", "20220405", "20220406", "20220407", "20220408", "20220409", "20220410", "20220411", "20220412", "20220413", "20220414", "20220415", "20220416", "20220417", "20220418", "20220419", "20220420", "20220421", "20220422", "20220423", "20220424", "20220425", "20220426", "20220427", "20220428", "20220429", "20220430", "20220501", "20220502", "20220503", "20220504", "20220505", "20220506", "20220507", "20220508", "20220509", "20220510", "20220511", "20220512", "20220513", "20220514", "20220515", "20220516", "20220517", "20220518", "20220519", "20220520", "20220521", "20220522", "20220523", "20220524", "20220525", "20220526", "20220527", "20220528", "20220529", "20220530", "20220531", "20220601", "20220602", "20220603", "20220604", "20220605", "20220606", "20220607", "20220608", "20220609", "20220610", "20220611", "20220612", "20220613", "20220614", "20220615", "20220616", "20220617", "20220618", "20220619", "20220620", "20220621", "20220622", "20220623", "20220624", "20220625", "20220626", "20220627", "20220628", "20220629", "20220630", "20220701", "20220702", "20220703", "20220704", "20220705", "20220706", "20220707", "20220708", "20220709", "20220710", "20220711", "20220712", "20220713", "20220714", "20220715", "20220716", "20220717", "20220718", "20220719", "20220720", "20220721", "20220722", "20220723", "20220724", "20220725", "20220726", "20220727", "20220728", "20220729", "20220730", "20220731", "20220801", "20220802", "20220803", "20220804", "20220805", "20220806", "20220807", "20220808", "20220809", "20220810", "20220811", "20220812", "20220813", "20220814", "20220815", "20220816", "20220817", "20220818", "20220819", "20220820", "20220821", "20220822", "20220823", "20220824", "20220825", "20220826", "20220827", "20220828", "20220829", "20220830", "20220831", "20220901", "20220902", "20220903", "20220904", "20220905", "20220906", "20220907", "20220908", "20220909", "20220910", "20220911", "20220912", "20220913", "20220914", "20220915", "20220916", "20220917", "20220918", "20220919", "20220920", "20220921", "20220922", "20220923", "20220924", "20220925", "20220926", "20220927", "20220928", "20220929", "20220930", "20221001", "20221002", "20221003", "20221004", "20221005", "20221006", "20221007", "20221008", "20221009", "20221010", "20221011", "20221012", "20221013", "20221014", "20221015", "20221016", "20221017", "20221018", "20221019", "20221020", "20221021", "20221022", "20221023", "20221024", "20221025", "20221026", "20221027", "20221028", "20221029", "20221030", "20221031", "20221101", "20221102", "20221103", "20221104", "20221105", "20221106", "20221107", "20221108", "20221109", "20221110", "20221111", "20221112", "20221113", "20221114", "20221115", "20221116", "20221117", "20221118", "20221119", "20221120", "20221121", "20221122", "20221123", "20221124", "20221125", "20221126", "20221127", "20221128", "20221129", "20221130", "20221201", "20221202", "20221203", "20221204", "20221205", "20221206", "20221207", "20221208", "20221209", "20221210", "20221211", "20221212", "20221213", "20221214", "20221215", "20221216", "20221217", "20221218", "20221219", "20221220", "20221221", "20221222", "20221223", "20221224", "20221225", "20221226", "20221227", "20221228", "20221229", "20221230", "20221231", "20230101", "20230102", "20230103", "20230104", "20230105", "20230106", "20230107", "20230108", "20230109", "20230110", "20230111", "20230112", "20230113", "20230114", "20230115", "20230116", "20230117", "20230118", "20230119", "20230120", "20230121", "20230122", "20230123", "20230124", "20230125", "20230126", "20230127", "20230128", "20230129", "20230130", "20230131", "20230201", "20230202", "20230203", "20230204", "20230205", "20230206", "20230207", "20230208", "20230209", "20230210", "20230211", "20230212", "20230213", "20230214", "20230215", "20230216", "20230217", "20230218", "20230219", "20230220", "20230221", "20230222", "20230223", "20230224", "20230225", "20230226", "20230227", "20230228", "20230301", "20230302", "20230303", "20230304", "20230305", "20230306", "20230307", "20230308", "20230309", "20230310", "20230311", "20230312", "20230313", "20230314", "20230315", "20230316", "20230317", "20230318", "20230319", "20230320", "20230321", "20230322", "20230323", "20230324", "20230325", "20230326", "20230327", "20230328", "20230329", "20230330", "20230331", "20230401", "20230402", "20230403", "20230404", "20230405", "20230406", "20230407", "20230408", "20230409", "20230410", "20230411", "20230412", "20230413", "20230414", "20230415", "20230416", "20230417", "20230418", "20230419", "20230420", "20230421", "20230422", "20230423", "20230424", "20230425", "20230426", "20230427", "20230428", "20230429", "20230430", "20230501", "20230502", "20230503", "20230504", "20230505", "20230506", "20230507", "20230508", "20230509", "20230510", "20230511", "20230512", "20230513", "20230514", "20230515", "20230516", "20230517", "20230518", "20230519", "20230520", "20230521", "20230522", "20230523", "20230524", "20230525", "20230526", "20230527", "20230528", "20230529", "20230530", "20230531", "20230601", "20230602", "20230603", "20230604", "20230605", "20230606", "20230607", "20230608", "20230609", "20230610", "20230611", "20230612", "20230613", "20230614", "20230615", "20230616", "20230617", "20230618", "20230619", "20230620", "20230621", "20230622", "20230623", "20230624", "20230625", "20230626", "20230627", "20230628", "20230629", "20230630", "20230701", "20230702", "20230703", "20230704", "20230705", "20230706", "20230707", "20230708", "20230709", "20230710", "20230711", "20230712", "20230713", "20230714", "20230715", "20230716", "20230717", "20230718", "20230719", "20230720", "20230721", "20230722", "20230723", "20230724", "20230725", "20230726", "20230727", "20230728", "20230729", "20230730", "20230731", "20230801", "20230802", "20230803", "20230804", "20230805", "20230806", "20230807", "20230808", "20230809", "20230810", "20230811", "20230812", "20230813", "20230814", "20230815", "20230816", "20230817", "20230818", "20230819", "20230820", "20230821", "20230822", "20230823", "20230824", "20230825", "20230826", "20230827", "20230828", "20230829", "20230830", "20230831", "20230901", "20230902", "20230903", "20230904", "20230905", "20230906", "20230907", "20230908", "20230909", "20230910", "20230911", "20230912", "20230913", "20230914", "20230915", "20230916", "20230917", "20230918", "20230919", "20230920", "20230921", "20230922", "20230923", "20230924", "20230925", "20230926", "20230927", "20230928", "20230929", "20230930", "20231001", "20231002", "20231003", "20231004", "20231005", "20231006", "20231007", "20231008", "20231009", "20231010", "20231011", "20231012", "20231013", "20231014", "20231015", "20231016", "20231017", "20231018", "20231019", "20231020", "20231021", "20231022", "20231023", "20231024", "20231025", "20231026", "20231027", "20231028", "20231029", "20231030", "20231031", "20231101", "20231102", "20231103", "20231104", "20231105", "20231106", "20231107", "20231108", "20231109", "20231110", "20231111", "20231112", "20231113", "20231114", "20231115", "20231116", "20231117", "20231118", "20231119", "20231120", "20231121", "20231122", "20231123", "20231124", "20231125", "20231126", "20231127", "20231128", "20231129", "20231130", "20231201", "20231202", "20231203", "20231204", "20231205", "20231206", "20231207", "20231208", "20231209", "20231210", "20231211", "20231212", "20231213", "20231214", "20231215", "20231216", "20231217", "20231218", "20231219", "20231220", "20231221", "20231222", "20231223", "20231224", "20231225", "20231226", "20231227", "20231228", "20231229", "20231230", "20231231", "20240101", "20240102", "20240103", "20240104", "20240105", "20240106", "20240107", "20240108", "20240109", "20240110", "20240111", "20240112", "20240113", "20240114", "20240115", "20240116", "20240117", "20240118", "20240119", "20240120", "20240121", "20240122", "20240123", "20240124", "20240125", "20240126", "20240127", "20240128", "20240129", "20240130", "20240131", "20240201", "20240202", "20240203", "20240204", "20240205", "20240206", "20240207", "20240208", "20240209", "20240210", "20240211", "20240212", "20240213", "20240214", "20240215", "20240216", "20240217", "20240218", "20240219", "20240220", "20240221", "20240222", "20240223", "20240224", "20240225", "20240226", "20240227", "20240228", "20240229", "20240301", "20240302", "20240303", "20240304", "20240305", "20240306", "20240307", "20240308", "20240309", "20240310", "20240311", "20240312", "20240313", "20240314", "20240315", "20240316", "20240317", "20240318", "20240319", "20240320", "20240321", "20240322", "20240323", "20240324", "20240325", "20240326", "20240327", "20240328", "20240329", "20240330", "20240331", "20240401", "20240402", "20240403", "20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412", "20240413", "20240414", "20240415", "20240416", "20240417", "20240418", "20240419", "20240420", "20240421", "20240422", "20240423", "20240424", "20240425", "20240426", "20240427", "20240428", "20240429", "20240430", "20240501", "20240502", "20240503", "20240504", "20240505", "20240506", "20240507", "20240508", "20240509", "20240510", "20240511", "20240512", "20240513", "20240514", "20240515", "20240516", "20240517", "20240518", "20240519", "20240520", "20240521", "20240522", "20240523", "20240524", "20240525", "20240526", "20240527", "20240528", "20240529", "20240530", "20240531", "20240601", "20240602", "20240603", "20240604", "20240605", "20240606", "20240607", "20240608", "20240609", "20240610", "20240611", "20240612", "20240613", "20240614", "20240615", "20240616", "20240617", "20240618", "20240619", "20240620", "20240621", "20240622", "20240623", "20240624", "20240625", "20240626", "20240627", "20240628", "20240629", "20240630", "20240701", "20240702", "20240703", "20240704", "20240705", "20240706", "20240707", "20240708", "20240709", "20240710", "20240711", "20240712", "20240713", "20240714", "20240715", "20240716", "20240717", "20240718", "20240719", "20240720", "20240721", "20240722", "20240723", "20240724", "20240725", "20240726", "20240727", "20240728", "20240729", "20240730", "20240731", "20240801", "20240802", "20240803", "20240804", "20240805", "20240806", "20240807", "20240808", "20240809", "20240810", "20240811", "20240812", "20240813", "20240814", "20240815", "20240816", "20240817", "20240818", "20240819", "20240820", "20240821", "20240822", "20240823", "20240824", "20240825", "20240826", "20240827", "20240828", "20240829", "20240830", "20240831", "20240901", "20240902", "20240903", "20240904", "20240905", "20240906", "20240907", "20240908", "20240909", "20240910", "20240911", "20240912", "20240913", "20240914", "20240915", "20240916", "20240917", "20240918", "20240919", "20240920", "20240921", "20240922", "20240923", "20240924", "20240925", "20240926", "20240927", "20240928", "20240929", "20240930", "20241001", "20241002", "20241003", "20241004", "20241005", "20241006", "20241007", "20241008", "20241009", "20241010", "20241011", "20241012", "20241013", "20241014", "20241015", "20241016", "20241017", "20241018", "20241019", "20241020", "20241021", "20241022", "20241023", "20241024", "20241025", "20241026", "20241027", "20241028", "20241029", "20241030", "20241031", "20241101", "20241102", "20241103", "20241104", "20241105", "20241106", "20241107", "20241108", "20241109", "20241110", "20241111", "20241112", "20241113", "20241114", "20241115", "20241116", "20241117", "20241118", "20241119", "20241120", "20241121", "20241122", "20241123", "20241124", "20241125", "20241126", "20241127", "20241128", "20241129", "20241130", "20241201", "20241202", "20241203", "20241204", "20241205", "20241206", "20241207", "20241208", "20241209", "20241210", "20241211", "20241212", "20241213", "20241214", "20241215", "20241216", "20241217", "20241218", "20241219", "20241220", "20241221", "20241222", "20241223", "20241224", "20241225", "20241226", "20241227", "20241228", "20241229", "20241230", "20241231"], "model": ["IFS-NEMO"], "resolution": ["standard", "high"], "levtype": ["hl"], "levelist": ["100"], "time": ["0000", "0100", "0200", "0300", "0400", "0500", "0600", "0700", "0800", "0900", "1000", "1100", "1200", "1300", "1400", "1500", "1600", "1700", "1800", "1900", "2000", "2100", "2200", "2300"], "param": ["228246", "228247"]}, + {"class": ["d1"], "dataset": ["climate-dt"], "generation": [1], "realization": [1], "expver": ["0001"], "stream": ["clte"], "type": ["fc"], "activity": ["ScenarioMIP"], "experiment": ["SSP3-7.0"], "date": ["20200101", "20200102", "20200103", "20200104", "20200105", "20200106", "20200107", "20200108", "20200109", "20200110", "20200111", "20200112", "20200113", "20200114", "20200115", "20200116", "20200117", "20200118", "20200119", "20200120", "20200121", "20200122", "20200123", "20200124", "20200125", "20200126", "20200127", "20200128", "20200129", "20200130", "20200131", "20200201", "20200202", "20200203", "20200204", "20200205", "20200206", "20200207", "20200208", "20200209", "20200210", "20200211", "20200212", "20200213", "20200214", "20200215", "20200216", "20200217", "20200218", "20200219", "20200220", "20200221", "20200222", "20200223", "20200224", "20200225", "20200226", "20200227", "20200228", "20200229", "20200301", "20200302", "20200303", "20200304", "20200305", "20200306", "20200307", "20200308", "20200309", "20200310", "20200311", "20200312", "20200313", "20200314", "20200315", "20200316", "20200317", "20200318", "20200319", "20200320", "20200321", "20200322", "20200323", "20200324", "20200325", "20200326", "20200327", "20200328", "20200329", "20200330", "20200331", "20200401", "20200402", "20200403", "20200404", "20200405", "20200406", "20200407", "20200408", "20200409", "20200410", "20200411", "20200412", "20200413", "20200414", "20200415", "20200416", "20200417", "20200418", "20200419", "20200420", "20200421", "20200422", "20200423", "20200424", "20200425", "20200426", "20200427", "20200428", "20200429", "20200430", "20200501", "20200502", "20200503", "20200504", "20200505", "20200506", "20200507", "20200508", "20200509", "20200510", "20200511", "20200512", "20200513", "20200514", "20200515", "20200516", "20200517", "20200518", "20200519", "20200520", "20200521", "20200522", "20200523", "20200524", "20200525", "20200526", "20200527", "20200528", "20200529", "20200530", "20200531", "20200601", "20200602", "20200603", "20200604", "20200605", "20200606", "20200607", "20200608", "20200609", "20200610", "20200611", "20200612", "20200613", "20200614", "20200615", "20200616", "20200617", "20200618", "20200619", "20200620", "20200621", "20200622", "20200623", "20200624", "20200625", "20200626", "20200627", "20200628", "20200629", "20200630", "20200701", "20200702", "20200703", "20200704", "20200705", "20200706", "20200707", "20200708", "20200709", "20200710", "20200711", "20200712", "20200713", "20200714", "20200715", "20200716", "20200717", "20200718", "20200719", "20200720", "20200721", "20200722", "20200723", "20200724", "20200725", "20200726", "20200727", "20200728", "20200729", "20200730", "20200731", "20200801", "20200802", "20200803", "20200804", "20200805", "20200806", "20200807", "20200808", "20200809", "20200810", "20200811", "20200812", "20200813", "20200814", "20200815", "20200816", "20200817", "20200818", "20200819", "20200820", "20200821", "20200822", "20200823", "20200824", "20200825", "20200826", "20200827", "20200828", "20200829", "20200830", "20200831", "20200901", "20200902", "20200903", "20200904", "20200905", "20200906", "20200907", "20200908", "20200909", "20200910", "20200911", "20200912", "20200913", "20200914", "20200915", "20200916", "20200917", "20200918", "20200919", "20200920", "20200921", "20200922", "20200923", "20200924", "20200925", "20200926", "20200927", "20200928", "20200929", "20200930", "20201001", "20201002", "20201003", "20201004", "20201005", "20201006", "20201007", "20201008", "20201009", "20201010", "20201011", "20201012", "20201013", "20201014", "20201015", "20201016", "20201017", "20201018", "20201019", "20201020", "20201021", "20201022", "20201023", "20201024", "20201025", "20201026", "20201027", "20201028", "20201029", "20201030", "20201031", "20201101", "20201102", "20201103", "20201104", "20201105", "20201106", "20201107", "20201108", "20201109", "20201110", "20201111", "20201112", "20201113", "20201114", "20201115", "20201116", "20201117", "20201118", "20201119", "20201120", "20201121", "20201122", "20201123", "20201124", "20201125", "20201126", "20201127", "20201128", "20201129", "20201130", "20201201", "20201202", "20201203", "20201204", "20201205", "20201206", "20201207", "20201208", "20201209", "20201210", "20201211", "20201212", "20201213", "20201214", "20201215", "20201216", "20201217", "20201218", "20201219", "20201220", "20201221", "20201222", "20201223", "20201224", "20201225", "20201226", "20201227", "20201228", "20201229", "20201230", "20201231", "20210101", "20210102", "20210103", "20210104", "20210105", "20210106", "20210107", "20210108", "20210109", "20210110", "20210111", "20210112", "20210113", "20210114", "20210115", "20210116", "20210117", "20210118", "20210119", "20210120", "20210121", "20210122", "20210123", "20210124", "20210125", "20210126", "20210127", "20210128", "20210129", "20210130", "20210131", "20210201", "20210202", "20210203", "20210204", "20210205", "20210206", "20210207", "20210208", "20210209", "20210210", "20210211", "20210212", "20210213", "20210214", "20210215", "20210216", "20210217", "20210218", "20210219", "20210220", "20210221", "20210222", "20210223", "20210224", "20210225", "20210226", "20210227", "20210228", "20210301", "20210302", "20210303", "20210304", "20210305", "20210306", "20210307", "20210308", "20210309", "20210310", "20210311", "20210312", "20210313", "20210314", "20210315", "20210316", "20210317", "20210318", "20210319", "20210320", "20210321", "20210322", "20210323", "20210324", "20210325", "20210326", "20210327", "20210328", "20210329", "20210330", "20210331", "20210401", "20210402", "20210403", "20210404", "20210405", "20210406", "20210407", "20210408", "20210409", "20210410", "20210411", "20210412", "20210413", "20210414", "20210415", "20210416", "20210417", "20210418", "20210419", "20210420", "20210421", "20210422", "20210423", "20210424", "20210425", "20210426", "20210427", "20210428", "20210429", "20210430", "20210501", "20210502", "20210503", "20210504", "20210505", "20210506", "20210507", "20210508", "20210509", "20210510", "20210511", "20210512", "20210513", "20210514", "20210515", "20210516", "20210517", "20210518", "20210519", "20210520", "20210521", "20210522", "20210523", "20210524", "20210525", "20210526", "20210527", "20210528", "20210529", "20210530", "20210531", "20210601", "20210602", "20210603", "20210604", "20210605", "20210606", "20210607", "20210608", "20210609", "20210610", "20210611", "20210612", "20210613", "20210614", "20210615", "20210616", "20210617", "20210618", "20210619", "20210620", "20210621", "20210622", "20210623", "20210624", "20210625", "20210626", "20210627", "20210628", "20210629", "20210630", "20210701", "20210702", "20210703", "20210704", "20210705", "20210706", "20210707", "20210708", "20210709", "20210710", "20210711", "20210712", "20210713", "20210714", "20210715", "20210716", "20210717", "20210718", "20210719", "20210720", "20210721", "20210722", "20210723", "20210724", "20210725", "20210726", "20210727", "20210728", "20210729", "20210730", "20210731", "20210801", "20210802", "20210803", "20210804", "20210805", "20210806", "20210807", "20210808", "20210809", "20210810", "20210811", "20210812", "20210813", "20210814", "20210815", "20210816", "20210817", "20210818", "20210819", "20210820", "20210821", "20210822", "20210823", "20210824", "20210825", "20210826", "20210827", "20210828", "20210829", "20210830", "20210831", "20210901", "20210902", "20210903", "20210904", "20210905", "20210906", "20210907", "20210908", "20210909", "20210910", "20210911", "20210912", "20210913", "20210914", "20210915", "20210916", "20210917", "20210918", "20210919", "20210920", "20210921", "20210922", "20210923", "20210924", "20210925", "20210926", "20210927", "20210928", "20210929", "20210930", "20211001", "20211002", "20211003", "20211004", "20211005", "20211006", "20211007", "20211008", "20211009", "20211010", "20211011", "20211012", "20211013", "20211014", "20211015", "20211016", "20211017", "20211018", "20211019", "20211020", "20211021", "20211022", "20211023", "20211024", "20211025", "20211026", "20211027", "20211028", "20211029", "20211030", "20211031", "20211101", "20211102", "20211103", "20211104", "20211105", "20211106", "20211107", "20211108", "20211109", "20211110", "20211111", "20211112", "20211113", "20211114", "20211115", "20211116", "20211117", "20211118", "20211119", "20211120", "20211121", "20211122", "20211123", "20211124", "20211125", "20211126", "20211127", "20211128", "20211129", "20211130", "20211201", "20211202", "20211203", "20211204", "20211205", "20211206", "20211207", "20211208", "20211209", "20211210", "20211211", "20211212", "20211213", "20211214", "20211215", "20211216", "20211217", "20211218", "20211219", "20211220", "20211221", "20211222", "20211223", "20211224", "20211225", "20211226", "20211227", "20211228", "20211229", "20211230", "20211231", "20220101", "20220102", "20220103", "20220104", "20220105", "20220106", "20220107", "20220108", "20220109", "20220110", "20220111", "20220112", "20220113", "20220114", "20220115", "20220116", "20220117", "20220118", "20220119", "20220120", "20220121", "20220122", "20220123", "20220124", "20220125", "20220126", "20220127", "20220128", "20220129", "20220130", "20220131", "20220201", "20220202", "20220203", "20220204", "20220205", "20220206", "20220207", "20220208", "20220209", "20220210", "20220211", "20220212", "20220213", "20220214", "20220215", "20220216", "20220217", "20220218", "20220219", "20220220", "20220221", "20220222", "20220223", "20220224", "20220225", "20220226", "20220227", "20220228", "20220301", "20220302", "20220303", "20220304", "20220305", "20220306", "20220307", "20220308", "20220309", "20220310", "20220311", "20220312", "20220313", "20220314", "20220315", "20220316", "20220317", "20220318", "20220319", "20220320", "20220321", "20220322", "20220323", "20220324", "20220325", "20220326", "20220327", "20220328", "20220329", "20220330", "20220331", "20220401", "20220402", "20220403", "20220404", "20220405", "20220406", "20220407", "20220408", "20220409", "20220410", "20220411", "20220412", "20220413", "20220414", "20220415", "20220416", "20220417", "20220418", "20220419", "20220420", "20220421", "20220422", "20220423", "20220424", "20220425", "20220426", "20220427", "20220428", "20220429", "20220430", "20220501", "20220502", "20220503", "20220504", "20220505", "20220506", "20220507", "20220508", "20220509", "20220510", "20220511", "20220512", "20220513", "20220514", "20220515", "20220516", "20220517", "20220518", "20220519", "20220520", "20220521", "20220522", "20220523", "20220524", "20220525", "20220526", "20220527", "20220528", "20220529", "20220530", "20220531", "20220601", "20220602", "20220603", "20220604", "20220605", "20220606", "20220607", "20220608", "20220609", "20220610", "20220611", "20220612", "20220613", "20220614", "20220615", "20220616", "20220617", "20220618", "20220619", "20220620", "20220621", "20220622", "20220623", "20220624", "20220625", "20220626", "20220627", "20220628", "20220629", "20220630", "20220701", "20220702", "20220703", "20220704", "20220705", "20220706", "20220707", "20220708", "20220709", "20220710", "20220711", "20220712", "20220713", "20220714", "20220715", "20220716", "20220717", "20220718", "20220719", "20220720", "20220721", "20220722", "20220723", "20220724", "20220725", "20220726", "20220727", "20220728", "20220729", "20220730", "20220731", "20220801", "20220802", "20220803", "20220804", "20220805", "20220806", "20220807", "20220808", "20220809", "20220810", "20220811", "20220812", "20220813", "20220814", "20220815", "20220816", "20220817", "20220818", "20220819", "20220820", "20220821", "20220822", "20220823", "20220824", "20220825", "20220826", "20220827", "20220828", "20220829", "20220830", "20220831", "20220901", "20220902", "20220903", "20220904", "20220905", "20220906", "20220907", "20220908", "20220909", "20220910", "20220911", "20220912", "20220913", "20220914", "20220915", "20220916", "20220917", "20220918", "20220919", "20220920", "20220921", "20220922", "20220923", "20220924", "20220925", "20220926", "20220927", "20220928", "20220929", "20220930", "20221001", "20221002", "20221003", "20221004", "20221005", "20221006", "20221007", "20221008", "20221009", "20221010", "20221011", "20221012", "20221013", "20221014", "20221015", "20221016", "20221017", "20221018", "20221019", "20221020", "20221021", "20221022", "20221023", "20221024", "20221025", "20221026", "20221027", "20221028", "20221029", "20221030", "20221031", "20221101", "20221102", "20221103", "20221104", "20221105", "20221106", "20221107", "20221108", "20221109", "20221110", "20221111", "20221112", "20221113", "20221114", "20221115", "20221116", "20221117", "20221118", "20221119", "20221120", "20221121", "20221122", "20221123", "20221124", "20221125", "20221126", "20221127", "20221128", "20221129", "20221130", "20221201", "20221202", "20221203", "20221204", "20221205", "20221206", "20221207", "20221208", "20221209", "20221210", "20221211", "20221212", "20221213", "20221214", "20221215", "20221216", "20221217", "20221218", "20221219", "20221220", "20221221", "20221222", "20221223", "20221224", "20221225", "20221226", "20221227", "20221228", "20221229", "20221230", "20221231", "20230101", "20230102", "20230103", "20230104", "20230105", "20230106", "20230107", "20230108", "20230109", "20230110", "20230111", "20230112", "20230113", "20230114", "20230115", "20230116", "20230117", "20230118", "20230119", "20230120", "20230121", "20230122", "20230123", "20230124", "20230125", "20230126", "20230127", "20230128", "20230129", "20230130", "20230131", "20230201", "20230202", "20230203", "20230204", "20230205", "20230206", "20230207", "20230208", "20230209", "20230210", "20230211", "20230212", "20230213", "20230214", "20230215", "20230216", "20230217", "20230218", "20230219", "20230220", "20230221", "20230222", "20230223", "20230224", "20230225", "20230226", "20230227", "20230228", "20230301", "20230302", "20230303", "20230304", "20230305", "20230306", "20230307", "20230308", "20230309", "20230310", "20230311", "20230312", "20230313", "20230314", "20230315", "20230316", "20230317", "20230318", "20230319", "20230320", "20230321", "20230322", "20230323", "20230324", "20230325", "20230326", "20230327", "20230328", "20230329", "20230330", "20230331", "20230401", "20230402", "20230403", "20230404", "20230405", "20230406", "20230407", "20230408", "20230409", "20230410", "20230411", "20230412", "20230413", "20230414", "20230415", "20230416", "20230417", "20230418", "20230419", "20230420", "20230421", "20230422", "20230423", "20230424", "20230425", "20230426", "20230427", "20230428", "20230429", "20230430", "20230501", "20230502", "20230503", "20230504", "20230505", "20230506", "20230507", "20230508", "20230509", "20230510", "20230511", "20230512", "20230513", "20230514", "20230515", "20230516", "20230517", "20230518", "20230519", "20230520", "20230521", "20230522", "20230523", "20230524", "20230525", "20230526", "20230527", "20230528", "20230529", "20230530", "20230531", "20230601", "20230602", "20230603", "20230604", "20230605", "20230606", "20230607", "20230608", "20230609", "20230610", "20230611", "20230612", "20230613", "20230614", "20230615", "20230616", "20230617", "20230618", "20230619", "20230620", "20230621", "20230622", "20230623", "20230624", "20230625", "20230626", "20230627", "20230628", "20230629", "20230630", "20230701", "20230702", "20230703", "20230704", "20230705", "20230706", "20230707", "20230708", "20230709", "20230710", "20230711", "20230712", "20230713", "20230714", "20230715", "20230716", "20230717", "20230718", "20230719", "20230720", "20230721", "20230722", "20230723", "20230724", "20230725", "20230726", "20230727", "20230728", "20230729", "20230730", "20230731", "20230801", "20230802", "20230803", "20230804", "20230805", "20230806", "20230807", "20230808", "20230809", "20230810", "20230811", "20230812", "20230813", "20230814", "20230815", "20230816", "20230817", "20230818", "20230819", "20230820", "20230821", "20230822", "20230823", "20230824", "20230825", "20230826", "20230827", "20230828", "20230829", "20230830", "20230831", "20230901", "20230902", "20230903", "20230904", "20230905", "20230906", "20230907", "20230908", "20230909", "20230910", "20230911", "20230912", "20230913", "20230914", "20230915", "20230916", "20230917", "20230918", "20230919", "20230920", "20230921", "20230922", "20230923", "20230924", "20230925", "20230926", "20230927", "20230928", "20230929", "20230930", "20231001", "20231002", "20231003", "20231004", "20231005", "20231006", "20231007", "20231008", "20231009", "20231010", "20231011", "20231012", "20231013", "20231014", "20231015", "20231016", "20231017", "20231018", "20231019", "20231020", "20231021", "20231022", "20231023", "20231024", "20231025", "20231026", "20231027", "20231028", "20231029", "20231030", "20231031", "20231101", "20231102", "20231103", "20231104", "20231105", "20231106", "20231107", "20231108", "20231109", "20231110", "20231111", "20231112", "20231113", "20231114", "20231115", "20231116", "20231117", "20231118", "20231119", "20231120", "20231121", "20231122", "20231123", "20231124", "20231125", "20231126", "20231127", "20231128", "20231129", "20231130", "20231201", "20231202", "20231203", "20231204", "20231205", "20231206", "20231207", "20231208", "20231209", "20231210", "20231211", "20231212", "20231213", "20231214", "20231215", "20231216", "20231217", "20231218", "20231219", "20231220", "20231221", "20231222", "20231223", "20231224", "20231225", "20231226", "20231227", "20231228", "20231229", "20231230", "20231231", "20240101", "20240102", "20240103", "20240104", "20240105", "20240106", "20240107", "20240108", "20240109", "20240110", "20240111", "20240112", "20240113", "20240114", "20240115", "20240116", "20240117", "20240118", "20240119", "20240120", "20240121", "20240122", "20240123", "20240124", "20240125", "20240126", "20240127", "20240128", "20240129", "20240130", "20240131", "20240201", "20240202", "20240203", "20240204", "20240205", "20240206", "20240207", "20240208", "20240209", "20240210", "20240211", "20240212", "20240213", "20240214", "20240215", "20240216", "20240217", "20240218", "20240219", "20240220", "20240221", "20240222", "20240223", "20240224", "20240225", "20240226", "20240227", "20240228", "20240229", "20240301", "20240302", "20240303", "20240304", "20240305", "20240306", "20240307", "20240308", "20240309", "20240310", "20240311", "20240312", "20240313", "20240314", "20240315", "20240316", "20240317", "20240318", "20240319", "20240320", "20240321", "20240322", "20240323", "20240324", "20240325", "20240326", "20240327", "20240328", "20240329", "20240330", "20240331", "20240401", "20240402", "20240403", "20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412", "20240413", "20240414", "20240415", "20240416", "20240417", "20240418", "20240419", "20240420", "20240421", "20240422", "20240423", "20240424", "20240425", "20240426", "20240427", "20240428", "20240429", "20240430", "20240501", "20240502", "20240503", "20240504", "20240505", "20240506", "20240507", "20240508", "20240509", "20240510", "20240511", "20240512", "20240513", "20240514", "20240515", "20240516", "20240517", "20240518", "20240519", "20240520", "20240521", "20240522", "20240523", "20240524", "20240525", "20240526", "20240527", "20240528", "20240529", "20240530", "20240531", "20240601", "20240602", "20240603", "20240604", "20240605", "20240606", "20240607", "20240608", "20240609", "20240610", "20240611", "20240612", "20240613", "20240614", "20240615", "20240616", "20240617", "20240618", "20240619", "20240620", "20240621", "20240622", "20240623", "20240624", "20240625", "20240626", "20240627", "20240628", "20240629", "20240630", "20240701", "20240702", "20240703", "20240704", "20240705", "20240706", "20240707", "20240708", "20240709", "20240710", "20240711", "20240712", "20240713", "20240714", "20240715", "20240716", "20240717", "20240718", "20240719", "20240720", "20240721", "20240722", "20240723", "20240724", "20240725", "20240726", "20240727", "20240728", "20240729", "20240730", "20240731", "20240801", "20240802", "20240803", "20240804", "20240805", "20240806", "20240807", "20240808", "20240809", "20240810", "20240811", "20240812", "20240813", "20240814", "20240815", "20240816", "20240817", "20240818", "20240819", "20240820", "20240821", "20240822", "20240823", "20240824", "20240825", "20240826", "20240827", "20240828", "20240829", "20240830", "20240831", "20240901", "20240902", "20240903", "20240904", "20240905", "20240906", "20240907", "20240908", "20240909", "20240910", "20240911", "20240912", "20240913", "20240914", "20240915", "20240916", "20240917", "20240918", "20240919", "20240920", "20240921", "20240922", "20240923", "20240924", "20240925", "20240926", "20240927", "20240928", "20240929", "20240930", "20241001", "20241002", "20241003", "20241004", "20241005", "20241006", "20241007", "20241008", "20241009", "20241010", "20241011", "20241012", "20241013", "20241014", "20241015", "20241016", "20241017", "20241018", "20241019", "20241020", "20241021", "20241022", "20241023", "20241024", "20241025", "20241026", "20241027", "20241028", "20241029", "20241030", "20241031", "20241101", "20241102", "20241103", "20241104", "20241105", "20241106", "20241107", "20241108", "20241109", "20241110", "20241111", "20241112", "20241113", "20241114", "20241115", "20241116", "20241117", "20241118", "20241119", "20241120", "20241121", "20241122", "20241123", "20241124", "20241125", "20241126", "20241127", "20241128", "20241129", "20241130", "20241201", "20241202", "20241203", "20241204", "20241205", "20241206", "20241207", "20241208", "20241209", "20241210", "20241211", "20241212", "20241213", "20241214", "20241215", "20241216", "20241217", "20241218", "20241219", "20241220", "20241221", "20241222", "20241223", "20241224", "20241225", "20241226", "20241227", "20241228", "20241229", "20241230", "20241231"], "model": ["IFS-NEMO"], "resolution": ["standard", "high"], "levtype": ["o2d"], "time": ["0000"], "param": ["263000", "263001", "263003", "263004", "263008", "263009", "263021", "263022", "263100", "263101", "263121", "263122", "263124"]}, + {"class": ["d1"], "dataset": ["climate-dt"], "generation": [1], "realization": [1], "expver": ["0001"], "stream": ["clte"], "type": ["fc"], "activity": ["ScenarioMIP"], "experiment": ["SSP3-7.0"], "date": ["20200101", "20200102", "20200103", "20200104", "20200105", "20200106", "20200107", "20200108", "20200109", "20200110", "20200111", "20200112", "20200113", "20200114", "20200115", "20200116", "20200117", "20200118", "20200119", "20200120", "20200121", "20200122", "20200123", "20200124", "20200125", "20200126", "20200127", "20200128", "20200129", "20200130", "20200131", "20200201", "20200202", "20200203", "20200204", "20200205", "20200206", "20200207", "20200208", "20200209", "20200210", "20200211", "20200212", "20200213", "20200214", "20200215", "20200216", "20200217", "20200218", "20200219", "20200220", "20200221", "20200222", "20200223", "20200224", "20200225", "20200226", "20200227", "20200228", "20200229", "20200301", "20200302", "20200303", "20200304", "20200305", "20200306", "20200307", "20200308", "20200309", "20200310", "20200311", "20200312", "20200313", "20200314", "20200315", "20200316", "20200317", "20200318", "20200319", "20200320", "20200321", "20200322", "20200323", "20200324", "20200325", "20200326", "20200327", "20200328", "20200329", "20200330", "20200331", "20200401", "20200402", "20200403", "20200404", "20200405", "20200406", "20200407", "20200408", "20200409", "20200410", "20200411", "20200412", "20200413", "20200414", "20200415", "20200416", "20200417", "20200418", "20200419", "20200420", "20200421", "20200422", "20200423", "20200424", "20200425", "20200426", "20200427", "20200428", "20200429", "20200430", "20200501", "20200502", "20200503", "20200504", "20200505", "20200506", "20200507", "20200508", "20200509", "20200510", "20200511", "20200512", "20200513", "20200514", "20200515", "20200516", "20200517", "20200518", "20200519", "20200520", "20200521", "20200522", "20200523", "20200524", "20200525", "20200526", "20200527", "20200528", "20200529", "20200530", "20200531", "20200601", "20200602", "20200603", "20200604", "20200605", "20200606", "20200607", "20200608", "20200609", "20200610", "20200611", "20200612", "20200613", "20200614", "20200615", "20200616", "20200617", "20200618", "20200619", "20200620", "20200621", "20200622", "20200623", "20200624", "20200625", "20200626", "20200627", "20200628", "20200629", "20200630", "20200701", "20200702", "20200703", "20200704", "20200705", "20200706", "20200707", "20200708", "20200709", "20200710", "20200711", "20200712", "20200713", "20200714", "20200715", "20200716", "20200717", "20200718", "20200719", "20200720", "20200721", "20200722", "20200723", "20200724", "20200725", "20200726", "20200727", "20200728", "20200729", "20200730", "20200731", "20200801", "20200802", "20200803", "20200804", "20200805", "20200806", "20200807", "20200808", "20200809", "20200810", "20200811", "20200812", "20200813", "20200814", "20200815", "20200816", "20200817", "20200818", "20200819", "20200820", "20200821", "20200822", "20200823", "20200824", "20200825", "20200826", "20200827", "20200828", "20200829", "20200830", "20200831", "20200901", "20200902", "20200903", "20200904", "20200905", "20200906", "20200907", "20200908", "20200909", "20200910", "20200911", "20200912", "20200913", "20200914", "20200915", "20200916", "20200917", "20200918", "20200919", "20200920", "20200921", "20200922", "20200923", "20200924", "20200925", "20200926", "20200927", "20200928", "20200929", "20200930", "20201001", "20201002", "20201003", "20201004", "20201005", "20201006", "20201007", "20201008", "20201009", "20201010", "20201011", "20201012", "20201013", "20201014", "20201015", "20201016", "20201017", "20201018", "20201019", "20201020", "20201021", "20201022", "20201023", "20201024", "20201025", "20201026", "20201027", "20201028", "20201029", "20201030", "20201031", "20201101", "20201102", "20201103", "20201104", "20201105", "20201106", "20201107", "20201108", "20201109", "20201110", "20201111", "20201112", "20201113", "20201114", "20201115", "20201116", "20201117", "20201118", "20201119", "20201120", "20201121", "20201122", "20201123", "20201124", "20201125", "20201126", "20201127", "20201128", "20201129", "20201130", "20201201", "20201202", "20201203", "20201204", "20201205", "20201206", "20201207", "20201208", "20201209", "20201210", "20201211", "20201212", "20201213", "20201214", "20201215", "20201216", "20201217", "20201218", "20201219", "20201220", "20201221", "20201222", "20201223", "20201224", "20201225", "20201226", "20201227", "20201228", "20201229", "20201230", "20201231", "20210101", "20210102", "20210103", "20210104", "20210105", "20210106", "20210107", "20210108", "20210109", "20210110", "20210111", "20210112", "20210113", "20210114", "20210115", "20210116", "20210117", "20210118", "20210119", "20210120", "20210121", "20210122", "20210123", "20210124", "20210125", "20210126", "20210127", "20210128", "20210129", "20210130", "20210131", "20210201", "20210202", "20210203", "20210204", "20210205", "20210206", "20210207", "20210208", "20210209", "20210210", "20210211", "20210212", "20210213", "20210214", "20210215", "20210216", "20210217", "20210218", "20210219", "20210220", "20210221", "20210222", "20210223", "20210224", "20210225", "20210226", "20210227", "20210228", "20210301", "20210302", "20210303", "20210304", "20210305", "20210306", "20210307", "20210308", "20210309", "20210310", "20210311", "20210312", "20210313", "20210314", "20210315", "20210316", "20210317", "20210318", "20210319", "20210320", "20210321", "20210322", "20210323", "20210324", "20210325", "20210326", "20210327", "20210328", "20210329", "20210330", "20210331", "20210401", "20210402", "20210403", "20210404", "20210405", "20210406", "20210407", "20210408", "20210409", "20210410", "20210411", "20210412", "20210413", "20210414", "20210415", "20210416", "20210417", "20210418", "20210419", "20210420", "20210421", "20210422", "20210423", "20210424", "20210425", "20210426", "20210427", "20210428", "20210429", "20210430", "20210501", "20210502", "20210503", "20210504", "20210505", "20210506", "20210507", "20210508", "20210509", "20210510", "20210511", "20210512", "20210513", "20210514", "20210515", "20210516", "20210517", "20210518", "20210519", "20210520", "20210521", "20210522", "20210523", "20210524", "20210525", "20210526", "20210527", "20210528", "20210529", "20210530", "20210531", "20210601", "20210602", "20210603", "20210604", "20210605", "20210606", "20210607", "20210608", "20210609", "20210610", "20210611", "20210612", "20210613", "20210614", "20210615", "20210616", "20210617", "20210618", "20210619", "20210620", "20210621", "20210622", "20210623", "20210624", "20210625", "20210626", "20210627", "20210628", "20210629", "20210630", "20210701", "20210702", "20210703", "20210704", "20210705", "20210706", "20210707", "20210708", "20210709", "20210710", "20210711", "20210712", "20210713", "20210714", "20210715", "20210716", "20210717", "20210718", "20210719", "20210720", "20210721", "20210722", "20210723", "20210724", "20210725", "20210726", "20210727", "20210728", "20210729", "20210730", "20210731", "20210801", "20210802", "20210803", "20210804", "20210805", "20210806", "20210807", "20210808", "20210809", "20210810", "20210811", "20210812", "20210813", "20210814", "20210815", "20210816", "20210817", "20210818", "20210819", "20210820", "20210821", "20210822", "20210823", "20210824", "20210825", "20210826", "20210827", "20210828", "20210829", "20210830", "20210831", "20210901", "20210902", "20210903", "20210904", "20210905", "20210906", "20210907", "20210908", "20210909", "20210910", "20210911", "20210912", "20210913", "20210914", "20210915", "20210916", "20210917", "20210918", "20210919", "20210920", "20210921", "20210922", "20210923", "20210924", "20210925", "20210926", "20210927", "20210928", "20210929", "20210930", "20211001", "20211002", "20211003", "20211004", "20211005", "20211006", "20211007", "20211008", "20211009", "20211010", "20211011", "20211012", "20211013", "20211014", "20211015", "20211016", "20211017", "20211018", "20211019", "20211020", "20211021", "20211022", "20211023", "20211024", "20211025", "20211026", "20211027", "20211028", "20211029", "20211030", "20211031", "20211101", "20211102", "20211103", "20211104", "20211105", "20211106", "20211107", "20211108", "20211109", "20211110", "20211111", "20211112", "20211113", "20211114", "20211115", "20211116", "20211117", "20211118", "20211119", "20211120", "20211121", "20211122", "20211123", "20211124", "20211125", "20211126", "20211127", "20211128", "20211129", "20211130", "20211201", "20211202", "20211203", "20211204", "20211205", "20211206", "20211207", "20211208", "20211209", "20211210", "20211211", "20211212", "20211213", "20211214", "20211215", "20211216", "20211217", "20211218", "20211219", "20211220", "20211221", "20211222", "20211223", "20211224", "20211225", "20211226", "20211227", "20211228", "20211229", "20211230", "20211231", "20220101", "20220102", "20220103", "20220104", "20220105", "20220106", "20220107", "20220108", "20220109", "20220110", "20220111", "20220112", "20220113", "20220114", "20220115", "20220116", "20220117", "20220118", "20220119", "20220120", "20220121", "20220122", "20220123", "20220124", "20220125", "20220126", "20220127", "20220128", "20220129", "20220130", "20220131", "20220201", "20220202", "20220203", "20220204", "20220205", "20220206", "20220207", "20220208", "20220209", "20220210", "20220211", "20220212", "20220213", "20220214", "20220215", "20220216", "20220217", "20220218", "20220219", "20220220", "20220221", "20220222", "20220223", "20220224", "20220225", "20220226", "20220227", "20220228", "20220301", "20220302", "20220303", "20220304", "20220305", "20220306", "20220307", "20220308", "20220309", "20220310", "20220311", "20220312", "20220313", "20220314", "20220315", "20220316", "20220317", "20220318", "20220319", "20220320", "20220321", "20220322", "20220323", "20220324", "20220325", "20220326", "20220327", "20220328", "20220329", "20220330", "20220331", "20220401", "20220402", "20220403", "20220404", "20220405", "20220406", "20220407", "20220408", "20220409", "20220410", "20220411", "20220412", "20220413", "20220414", "20220415", "20220416", "20220417", "20220418", "20220419", "20220420", "20220421", "20220422", "20220423", "20220424", "20220425", "20220426", "20220427", "20220428", "20220429", "20220430", "20220501", "20220502", "20220503", "20220504", "20220505", "20220506", "20220507", "20220508", "20220509", "20220510", "20220511", "20220512", "20220513", "20220514", "20220515", "20220516", "20220517", "20220518", "20220519", "20220520", "20220521", "20220522", "20220523", "20220524", "20220525", "20220526", "20220527", "20220528", "20220529", "20220530", "20220531", "20220601", "20220602", "20220603", "20220604", "20220605", "20220606", "20220607", "20220608", "20220609", "20220610", "20220611", "20220612", "20220613", "20220614", "20220615", "20220616", "20220617", "20220618", "20220619", "20220620", "20220621", "20220622", "20220623", "20220624", "20220625", "20220626", "20220627", "20220628", "20220629", "20220630", "20220701", "20220702", "20220703", "20220704", "20220705", "20220706", "20220707", "20220708", "20220709", "20220710", "20220711", "20220712", "20220713", "20220714", "20220715", "20220716", "20220717", "20220718", "20220719", "20220720", "20220721", "20220722", "20220723", "20220724", "20220725", "20220726", "20220727", "20220728", "20220729", "20220730", "20220731", "20220801", "20220802", "20220803", "20220804", "20220805", "20220806", "20220807", "20220808", "20220809", "20220810", "20220811", "20220812", "20220813", "20220814", "20220815", "20220816", "20220817", "20220818", "20220819", "20220820", "20220821", "20220822", "20220823", "20220824", "20220825", "20220826", "20220827", "20220828", "20220829", "20220830", "20220831", "20220901", "20220902", "20220903", "20220904", "20220905", "20220906", "20220907", "20220908", "20220909", "20220910", "20220911", "20220912", "20220913", "20220914", "20220915", "20220916", "20220917", "20220918", "20220919", "20220920", "20220921", "20220922", "20220923", "20220924", "20220925", "20220926", "20220927", "20220928", "20220929", "20220930", "20221001", "20221002", "20221003", "20221004", "20221005", "20221006", "20221007", "20221008", "20221009", "20221010", "20221011", "20221012", "20221013", "20221014", "20221015", "20221016", "20221017", "20221018", "20221019", "20221020", "20221021", "20221022", "20221023", "20221024", "20221025", "20221026", "20221027", "20221028", "20221029", "20221030", "20221031", "20221101", "20221102", "20221103", "20221104", "20221105", "20221106", "20221107", "20221108", "20221109", "20221110", "20221111", "20221112", "20221113", "20221114", "20221115", "20221116", "20221117", "20221118", "20221119", "20221120", "20221121", "20221122", "20221123", "20221124", "20221125", "20221126", "20221127", "20221128", "20221129", "20221130", "20221201", "20221202", "20221203", "20221204", "20221205", "20221206", "20221207", "20221208", "20221209", "20221210", "20221211", "20221212", "20221213", "20221214", "20221215", "20221216", "20221217", "20221218", "20221219", "20221220", "20221221", "20221222", "20221223", "20221224", "20221225", "20221226", "20221227", "20221228", "20221229", "20221230", "20221231", "20230101", "20230102", "20230103", "20230104", "20230105", "20230106", "20230107", "20230108", "20230109", "20230110", "20230111", "20230112", "20230113", "20230114", "20230115", "20230116", "20230117", "20230118", "20230119", "20230120", "20230121", "20230122", "20230123", "20230124", "20230125", "20230126", "20230127", "20230128", "20230129", "20230130", "20230131", "20230201", "20230202", "20230203", "20230204", "20230205", "20230206", "20230207", "20230208", "20230209", "20230210", "20230211", "20230212", "20230213", "20230214", "20230215", "20230216", "20230217", "20230218", "20230219", "20230220", "20230221", "20230222", "20230223", "20230224", "20230225", "20230226", "20230227", "20230228", "20230301", "20230302", "20230303", "20230304", "20230305", "20230306", "20230307", "20230308", "20230309", "20230310", "20230311", "20230312", "20230313", "20230314", "20230315", "20230316", "20230317", "20230318", "20230319", "20230320", "20230321", "20230322", "20230323", "20230324", "20230325", "20230326", "20230327", "20230328", "20230329", "20230330", "20230331", "20230401", "20230402", "20230403", "20230404", "20230405", "20230406", "20230407", "20230408", "20230409", "20230410", "20230411", "20230412", "20230413", "20230414", "20230415", "20230416", "20230417", "20230418", "20230419", "20230420", "20230421", "20230422", "20230423", "20230424", "20230425", "20230426", "20230427", "20230428", "20230429", "20230430", "20230501", "20230502", "20230503", "20230504", "20230505", "20230506", "20230507", "20230508", "20230509", "20230510", "20230511", "20230512", "20230513", "20230514", "20230515", "20230516", "20230517", "20230518", "20230519", "20230520", "20230521", "20230522", "20230523", "20230524", "20230525", "20230526", "20230527", "20230528", "20230529", "20230530", "20230531", "20230601", "20230602", "20230603", "20230604", "20230605", "20230606", "20230607", "20230608", "20230609", "20230610", "20230611", "20230612", "20230613", "20230614", "20230615", "20230616", "20230617", "20230618", "20230619", "20230620", "20230621", "20230622", "20230623", "20230624", "20230625", "20230626", "20230627", "20230628", "20230629", "20230630", "20230701", "20230702", "20230703", "20230704", "20230705", "20230706", "20230707", "20230708", "20230709", "20230710", "20230711", "20230712", "20230713", "20230714", "20230715", "20230716", "20230717", "20230718", "20230719", "20230720", "20230721", "20230722", "20230723", "20230724", "20230725", "20230726", "20230727", "20230728", "20230729", "20230730", "20230731", "20230801", "20230802", "20230803", "20230804", "20230805", "20230806", "20230807", "20230808", "20230809", "20230810", "20230811", "20230812", "20230813", "20230814", "20230815", "20230816", "20230817", "20230818", "20230819", "20230820", "20230821", "20230822", "20230823", "20230824", "20230825", "20230826", "20230827", "20230828", "20230829", "20230830", "20230831", "20230901", "20230902", "20230903", "20230904", "20230905", "20230906", "20230907", "20230908", "20230909", "20230910", "20230911", "20230912", "20230913", "20230914", "20230915", "20230916", "20230917", "20230918", "20230919", "20230920", "20230921", "20230922", "20230923", "20230924", "20230925", "20230926", "20230927", "20230928", "20230929", "20230930", "20231001", "20231002", "20231003", "20231004", "20231005", "20231006", "20231007", "20231008", "20231009", "20231010", "20231011", "20231012", "20231013", "20231014", "20231015", "20231016", "20231017", "20231018", "20231019", "20231020", "20231021", "20231022", "20231023", "20231024", "20231025", "20231026", "20231027", "20231028", "20231029", "20231030", "20231031", "20231101", "20231102", "20231103", "20231104", "20231105", "20231106", "20231107", "20231108", "20231109", "20231110", "20231111", "20231112", "20231113", "20231114", "20231115", "20231116", "20231117", "20231118", "20231119", "20231120", "20231121", "20231122", "20231123", "20231124", "20231125", "20231126", "20231127", "20231128", "20231129", "20231130", "20231201", "20231202", "20231203", "20231204", "20231205", "20231206", "20231207", "20231208", "20231209", "20231210", "20231211", "20231212", "20231213", "20231214", "20231215", "20231216", "20231217", "20231218", "20231219", "20231220", "20231221", "20231222", "20231223", "20231224", "20231225", "20231226", "20231227", "20231228", "20231229", "20231230", "20231231", "20240101", "20240102", "20240103", "20240104", "20240105", "20240106", "20240107", "20240108", "20240109", "20240110", "20240111", "20240112", "20240113", "20240114", "20240115", "20240116", "20240117", "20240118", "20240119", "20240120", "20240121", "20240122", "20240123", "20240124", "20240125", "20240126", "20240127", "20240128", "20240129", "20240130", "20240131", "20240201", "20240202", "20240203", "20240204", "20240205", "20240206", "20240207", "20240208", "20240209", "20240210", "20240211", "20240212", "20240213", "20240214", "20240215", "20240216", "20240217", "20240218", "20240219", "20240220", "20240221", "20240222", "20240223", "20240224", "20240225", "20240226", "20240227", "20240228", "20240229", "20240301", "20240302", "20240303", "20240304", "20240305", "20240306", "20240307", "20240308", "20240309", "20240310", "20240311", "20240312", "20240313", "20240314", "20240315", "20240316", "20240317", "20240318", "20240319", "20240320", "20240321", "20240322", "20240323", "20240324", "20240325", "20240326", "20240327", "20240328", "20240329", "20240330", "20240331", "20240401", "20240402", "20240403", "20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412", "20240413", "20240414", "20240415", "20240416", "20240417", "20240418", "20240419", "20240420", "20240421", "20240422", "20240423", "20240424", "20240425", "20240426", "20240427", "20240428", "20240429", "20240430", "20240501", "20240502", "20240503", "20240504", "20240505", "20240506", "20240507", "20240508", "20240509", "20240510", "20240511", "20240512", "20240513", "20240514", "20240515", "20240516", "20240517", "20240518", "20240519", "20240520", "20240521", "20240522", "20240523", "20240524", "20240525", "20240526", "20240527", "20240528", "20240529", "20240530", "20240531", "20240601", "20240602", "20240603", "20240604", "20240605", "20240606", "20240607", "20240608", "20240609", "20240610", "20240611", "20240612", "20240613", "20240614", "20240615", "20240616", "20240617", "20240618", "20240619", "20240620", "20240621", "20240622", "20240623", "20240624", "20240625", "20240626", "20240627", "20240628", "20240629", "20240630", "20240701", "20240702", "20240703", "20240704", "20240705", "20240706", "20240707", "20240708", "20240709", "20240710", "20240711", "20240712", "20240713", "20240714", "20240715", "20240716", "20240717", "20240718", "20240719", "20240720", "20240721", "20240722", "20240723", "20240724", "20240725", "20240726", "20240727", "20240728", "20240729", "20240730", "20240731", "20240801", "20240802", "20240803", "20240804", "20240805", "20240806", "20240807", "20240808", "20240809", "20240810", "20240811", "20240812", "20240813", "20240814", "20240815", "20240816", "20240817", "20240818", "20240819", "20240820", "20240821", "20240822", "20240823", "20240824", "20240825", "20240826", "20240827", "20240828", "20240829", "20240830", "20240831", "20240901", "20240902", "20240903", "20240904", "20240905", "20240906", "20240907", "20240908", "20240909", "20240910", "20240911", "20240912", "20240913", "20240914", "20240915", "20240916", "20240917", "20240918", "20240919", "20240920", "20240921", "20240922", "20240923", "20240924", "20240925", "20240926", "20240927", "20240928", "20240929", "20240930", "20241001", "20241002", "20241003", "20241004", "20241005", "20241006", "20241007", "20241008", "20241009", "20241010", "20241011", "20241012", "20241013", "20241014", "20241015", "20241016", "20241017", "20241018", "20241019", "20241020", "20241021", "20241022", "20241023", "20241024", "20241025", "20241026", "20241027", "20241028", "20241029", "20241030", "20241031", "20241101", "20241102", "20241103", "20241104", "20241105", "20241106", "20241107", "20241108", "20241109", "20241110", "20241111", "20241112", "20241113", "20241114", "20241115", "20241116", "20241117", "20241118", "20241119", "20241120", "20241121", "20241122", "20241123", "20241124", "20241125", "20241126", "20241127", "20241128", "20241129", "20241130", "20241201", "20241202", "20241203", "20241204", "20241205", "20241206", "20241207", "20241208", "20241209", "20241210", "20241211", "20241212", "20241213", "20241214", "20241215", "20241216", "20241217", "20241218", "20241219", "20241220", "20241221", "20241222", "20241223", "20241224", "20241225", "20241226", "20241227", "20241228", "20241229", "20241230", "20241231"], "model": ["IFS-NEMO"], "resolution": ["standard", "high"], "levtype": ["o3d"], "levelist": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75"], "time": ["0000"], "param": ["263500", "263501", "263505", "263506", "263507"]}, + {"class": ["d1"], "dataset": ["climate-dt"], "generation": [1], "realization": [1], "expver": ["0001"], "stream": ["clte"], "type": ["fc"], "activity": ["ScenarioMIP"], "experiment": ["SSP3-7.0"], "date": ["20200101", "20200102", "20200103", "20200104", "20200105", "20200106", "20200107", "20200108", "20200109", "20200110", "20200111", "20200112", "20200113", "20200114", "20200115", "20200116", "20200117", "20200118", "20200119", "20200120", "20200121", "20200122", "20200123", "20200124", "20200125", "20200126", "20200127", "20200128", "20200129", "20200130", "20200131", "20200201", "20200202", "20200203", "20200204", "20200205", "20200206", "20200207", "20200208", "20200209", "20200210", "20200211", "20200212", "20200213", "20200214", "20200215", "20200216", "20200217", "20200218", "20200219", "20200220", "20200221", "20200222", "20200223", "20200224", "20200225", "20200226", "20200227", "20200228", "20200229", "20200301", "20200302", "20200303", "20200304", "20200305", "20200306", "20200307", "20200308", "20200309", "20200310", "20200311", "20200312", "20200313", "20200314", "20200315", "20200316", "20200317", "20200318", "20200319", "20200320", "20200321", "20200322", "20200323", "20200324", "20200325", "20200326", "20200327", "20200328", "20200329", "20200330", "20200331", "20200401", "20200402", "20200403", "20200404", "20200405", "20200406", "20200407", "20200408", "20200409", "20200410", "20200411", "20200412", "20200413", "20200414", "20200415", "20200416", "20200417", "20200418", "20200419", "20200420", "20200421", "20200422", "20200423", "20200424", "20200425", "20200426", "20200427", "20200428", "20200429", "20200430", "20200501", "20200502", "20200503", "20200504", "20200505", "20200506", "20200507", "20200508", "20200509", "20200510", "20200511", "20200512", "20200513", "20200514", "20200515", "20200516", "20200517", "20200518", "20200519", "20200520", "20200521", "20200522", "20200523", "20200524", "20200525", "20200526", "20200527", "20200528", "20200529", "20200530", "20200531", "20200601", "20200602", "20200603", "20200604", "20200605", "20200606", "20200607", "20200608", "20200609", "20200610", "20200611", "20200612", "20200613", "20200614", "20200615", "20200616", "20200617", "20200618", "20200619", "20200620", "20200621", "20200622", "20200623", "20200624", "20200625", "20200626", "20200627", "20200628", "20200629", "20200630", "20200701", "20200702", "20200703", "20200704", "20200705", "20200706", "20200707", "20200708", "20200709", "20200710", "20200711", "20200712", "20200713", "20200714", "20200715", "20200716", "20200717", "20200718", "20200719", "20200720", "20200721", "20200722", "20200723", "20200724", "20200725", "20200726", "20200727", "20200728", "20200729", "20200730", "20200731", "20200801", "20200802", "20200803", "20200804", "20200805", "20200806", "20200807", "20200808", "20200809", "20200810", "20200811", "20200812", "20200813", "20200814", "20200815", "20200816", "20200817", "20200818", "20200819", "20200820", "20200821", "20200822", "20200823", "20200824", "20200825", "20200826", "20200827", "20200828", "20200829", "20200830", "20200831", "20200901", "20200902", "20200903", "20200904", "20200905", "20200906", "20200907", "20200908", "20200909", "20200910", "20200911", "20200912", "20200913", "20200914", "20200915", "20200916", "20200917", "20200918", "20200919", "20200920", "20200921", "20200922", "20200923", "20200924", "20200925", "20200926", "20200927", "20200928", "20200929", "20200930", "20201001", "20201002", "20201003", "20201004", "20201005", "20201006", "20201007", "20201008", "20201009", "20201010", "20201011", "20201012", "20201013", "20201014", "20201015", "20201016", "20201017", "20201018", "20201019", "20201020", "20201021", "20201022", "20201023", "20201024", "20201025", "20201026", "20201027", "20201028", "20201029", "20201030", "20201031", "20201101", "20201102", "20201103", "20201104", "20201105", "20201106", "20201107", "20201108", "20201109", "20201110", "20201111", "20201112", "20201113", "20201114", "20201115", "20201116", "20201117", "20201118", "20201119", "20201120", "20201121", "20201122", "20201123", "20201124", "20201125", "20201126", "20201127", "20201128", "20201129", "20201130", "20201201", "20201202", "20201203", "20201204", "20201205", "20201206", "20201207", "20201208", "20201209", "20201210", "20201211", "20201212", "20201213", "20201214", "20201215", "20201216", "20201217", "20201218", "20201219", "20201220", "20201221", "20201222", "20201223", "20201224", "20201225", "20201226", "20201227", "20201228", "20201229", "20201230", "20201231", "20210101", "20210102", "20210103", "20210104", "20210105", "20210106", "20210107", "20210108", "20210109", "20210110", "20210111", "20210112", "20210113", "20210114", "20210115", "20210116", "20210117", "20210118", "20210119", "20210120", "20210121", "20210122", "20210123", "20210124", "20210125", "20210126", "20210127", "20210128", "20210129", "20210130", "20210131", "20210201", "20210202", "20210203", "20210204", "20210205", "20210206", "20210207", "20210208", "20210209", "20210210", "20210211", "20210212", "20210213", "20210214", "20210215", "20210216", "20210217", "20210218", "20210219", "20210220", "20210221", "20210222", "20210223", "20210224", "20210225", "20210226", "20210227", "20210228", "20210301", "20210302", "20210303", "20210304", "20210305", "20210306", "20210307", "20210308", "20210309", "20210310", "20210311", "20210312", "20210313", "20210314", "20210315", "20210316", "20210317", "20210318", "20210319", "20210320", "20210321", "20210322", "20210323", "20210324", "20210325", "20210326", "20210327", "20210328", "20210329", "20210330", "20210331", "20210401", "20210402", "20210403", "20210404", "20210405", "20210406", "20210407", "20210408", "20210409", "20210410", "20210411", "20210412", "20210413", "20210414", "20210415", "20210416", "20210417", "20210418", "20210419", "20210420", "20210421", "20210422", "20210423", "20210424", "20210425", "20210426", "20210427", "20210428", "20210429", "20210430", "20210501", "20210502", "20210503", "20210504", "20210505", "20210506", "20210507", "20210508", "20210509", "20210510", "20210511", "20210512", "20210513", "20210514", "20210515", "20210516", "20210517", "20210518", "20210519", "20210520", "20210521", "20210522", "20210523", "20210524", "20210525", "20210526", "20210527", "20210528", "20210529", "20210530", "20210531", "20210601", "20210602", "20210603", "20210604", "20210605", "20210606", "20210607", "20210608", "20210609", "20210610", "20210611", "20210612", "20210613", "20210614", "20210615", "20210616", "20210617", "20210618", "20210619", "20210620", "20210621", "20210622", "20210623", "20210624", "20210625", "20210626", "20210627", "20210628", "20210629", "20210630", "20210701", "20210702", "20210703", "20210704", "20210705", "20210706", "20210707", "20210708", "20210709", "20210710", "20210711", "20210712", "20210713", "20210714", "20210715", "20210716", "20210717", "20210718", "20210719", "20210720", "20210721", "20210722", "20210723", "20210724", "20210725", "20210726", "20210727", "20210728", "20210729", "20210730", "20210731", "20210801", "20210802", "20210803", "20210804", "20210805", "20210806", "20210807", "20210808", "20210809", "20210810", "20210811", "20210812", "20210813", "20210814", "20210815", "20210816", "20210817", "20210818", "20210819", "20210820", "20210821", "20210822", "20210823", "20210824", "20210825", "20210826", "20210827", "20210828", "20210829", "20210830", "20210831", "20210901", "20210902", "20210903", "20210904", "20210905", "20210906", "20210907", "20210908", "20210909", "20210910", "20210911", "20210912", "20210913", "20210914", "20210915", "20210916", "20210917", "20210918", "20210919", "20210920", "20210921", "20210922", "20210923", "20210924", "20210925", "20210926", "20210927", "20210928", "20210929", "20210930", "20211001", "20211002", "20211003", "20211004", "20211005", "20211006", "20211007", "20211008", "20211009", "20211010", "20211011", "20211012", "20211013", "20211014", "20211015", "20211016", "20211017", "20211018", "20211019", "20211020", "20211021", "20211022", "20211023", "20211024", "20211025", "20211026", "20211027", "20211028", "20211029", "20211030", "20211031", "20211101", "20211102", "20211103", "20211104", "20211105", "20211106", "20211107", "20211108", "20211109", "20211110", "20211111", "20211112", "20211113", "20211114", "20211115", "20211116", "20211117", "20211118", "20211119", "20211120", "20211121", "20211122", "20211123", "20211124", "20211125", "20211126", "20211127", "20211128", "20211129", "20211130", "20211201", "20211202", "20211203", "20211204", "20211205", "20211206", "20211207", "20211208", "20211209", "20211210", "20211211", "20211212", "20211213", "20211214", "20211215", "20211216", "20211217", "20211218", "20211219", "20211220", "20211221", "20211222", "20211223", "20211224", "20211225", "20211226", "20211227", "20211228", "20211229", "20211230", "20211231", "20220101", "20220102", "20220103", "20220104", "20220105", "20220106", "20220107", "20220108", "20220109", "20220110", "20220111", "20220112", "20220113", "20220114", "20220115", "20220116", "20220117", "20220118", "20220119", "20220120", "20220121", "20220122", "20220123", "20220124", "20220125", "20220126", "20220127", "20220128", "20220129", "20220130", "20220131", "20220201", "20220202", "20220203", "20220204", "20220205", "20220206", "20220207", "20220208", "20220209", "20220210", "20220211", "20220212", "20220213", "20220214", "20220215", "20220216", "20220217", "20220218", "20220219", "20220220", "20220221", "20220222", "20220223", "20220224", "20220225", "20220226", "20220227", "20220228", "20220301", "20220302", "20220303", "20220304", "20220305", "20220306", "20220307", "20220308", "20220309", "20220310", "20220311", "20220312", "20220313", "20220314", "20220315", "20220316", "20220317", "20220318", "20220319", "20220320", "20220321", "20220322", "20220323", "20220324", "20220325", "20220326", "20220327", "20220328", "20220329", "20220330", "20220331", "20220401", "20220402", "20220403", "20220404", "20220405", "20220406", "20220407", "20220408", "20220409", "20220410", "20220411", "20220412", "20220413", "20220414", "20220415", "20220416", "20220417", "20220418", "20220419", "20220420", "20220421", "20220422", "20220423", "20220424", "20220425", "20220426", "20220427", "20220428", "20220429", "20220430", "20220501", "20220502", "20220503", "20220504", "20220505", "20220506", "20220507", "20220508", "20220509", "20220510", "20220511", "20220512", "20220513", "20220514", "20220515", "20220516", "20220517", "20220518", "20220519", "20220520", "20220521", "20220522", "20220523", "20220524", "20220525", "20220526", "20220527", "20220528", "20220529", "20220530", "20220531", "20220601", "20220602", "20220603", "20220604", "20220605", "20220606", "20220607", "20220608", "20220609", "20220610", "20220611", "20220612", "20220613", "20220614", "20220615", "20220616", "20220617", "20220618", "20220619", "20220620", "20220621", "20220622", "20220623", "20220624", "20220625", "20220626", "20220627", "20220628", "20220629", "20220630", "20220701", "20220702", "20220703", "20220704", "20220705", "20220706", "20220707", "20220708", "20220709", "20220710", "20220711", "20220712", "20220713", "20220714", "20220715", "20220716", "20220717", "20220718", "20220719", "20220720", "20220721", "20220722", "20220723", "20220724", "20220725", "20220726", "20220727", "20220728", "20220729", "20220730", "20220731", "20220801", "20220802", "20220803", "20220804", "20220805", "20220806", "20220807", "20220808", "20220809", "20220810", "20220811", "20220812", "20220813", "20220814", "20220815", "20220816", "20220817", "20220818", "20220819", "20220820", "20220821", "20220822", "20220823", "20220824", "20220825", "20220826", "20220827", "20220828", "20220829", "20220830", "20220831", "20220901", "20220902", "20220903", "20220904", "20220905", "20220906", "20220907", "20220908", "20220909", "20220910", "20220911", "20220912", "20220913", "20220914", "20220915", "20220916", "20220917", "20220918", "20220919", "20220920", "20220921", "20220922", "20220923", "20220924", "20220925", "20220926", "20220927", "20220928", "20220929", "20220930", "20221001", "20221002", "20221003", "20221004", "20221005", "20221006", "20221007", "20221008", "20221009", "20221010", "20221011", "20221012", "20221013", "20221014", "20221015", "20221016", "20221017", "20221018", "20221019", "20221020", "20221021", "20221022", "20221023", "20221024", "20221025", "20221026", "20221027", "20221028", "20221029", "20221030", "20221031", "20221101", "20221102", "20221103", "20221104", "20221105", "20221106", "20221107", "20221108", "20221109", "20221110", "20221111", "20221112", "20221113", "20221114", "20221115", "20221116", "20221117", "20221118", "20221119", "20221120", "20221121", "20221122", "20221123", "20221124", "20221125", "20221126", "20221127", "20221128", "20221129", "20221130", "20221201", "20221202", "20221203", "20221204", "20221205", "20221206", "20221207", "20221208", "20221209", "20221210", "20221211", "20221212", "20221213", "20221214", "20221215", "20221216", "20221217", "20221218", "20221219", "20221220", "20221221", "20221222", "20221223", "20221224", "20221225", "20221226", "20221227", "20221228", "20221229", "20221230", "20221231", "20230101", "20230102", "20230103", "20230104", "20230105", "20230106", "20230107", "20230108", "20230109", "20230110", "20230111", "20230112", "20230113", "20230114", "20230115", "20230116", "20230117", "20230118", "20230119", "20230120", "20230121", "20230122", "20230123", "20230124", "20230125", "20230126", "20230127", "20230128", "20230129", "20230130", "20230131", "20230201", "20230202", "20230203", "20230204", "20230205", "20230206", "20230207", "20230208", "20230209", "20230210", "20230211", "20230212", "20230213", "20230214", "20230215", "20230216", "20230217", "20230218", "20230219", "20230220", "20230221", "20230222", "20230223", "20230224", "20230225", "20230226", "20230227", "20230228", "20230301", "20230302", "20230303", "20230304", "20230305", "20230306", "20230307", "20230308", "20230309", "20230310", "20230311", "20230312", "20230313", "20230314", "20230315", "20230316", "20230317", "20230318", "20230319", "20230320", "20230321", "20230322", "20230323", "20230324", "20230325", "20230326", "20230327", "20230328", "20230329", "20230330", "20230331", "20230401", "20230402", "20230403", "20230404", "20230405", "20230406", "20230407", "20230408", "20230409", "20230410", "20230411", "20230412", "20230413", "20230414", "20230415", "20230416", "20230417", "20230418", "20230419", "20230420", "20230421", "20230422", "20230423", "20230424", "20230425", "20230426", "20230427", "20230428", "20230429", "20230430", "20230501", "20230502", "20230503", "20230504", "20230505", "20230506", "20230507", "20230508", "20230509", "20230510", "20230511", "20230512", "20230513", "20230514", "20230515", "20230516", "20230517", "20230518", "20230519", "20230520", "20230521", "20230522", "20230523", "20230524", "20230525", "20230526", "20230527", "20230528", "20230529", "20230530", "20230531", "20230601", "20230602", "20230603", "20230604", "20230605", "20230606", "20230607", "20230608", "20230609", "20230610", "20230611", "20230612", "20230613", "20230614", "20230615", "20230616", "20230617", "20230618", "20230619", "20230620", "20230621", "20230622", "20230623", "20230624", "20230625", "20230626", "20230627", "20230628", "20230629", "20230630", "20230701", "20230702", "20230703", "20230704", "20230705", "20230706", "20230707", "20230708", "20230709", "20230710", "20230711", "20230712", "20230713", "20230714", "20230715", "20230716", "20230717", "20230718", "20230719", "20230720", "20230721", "20230722", "20230723", "20230724", "20230725", "20230726", "20230727", "20230728", "20230729", "20230730", "20230731", "20230801", "20230802", "20230803", "20230804", "20230805", "20230806", "20230807", "20230808", "20230809", "20230810", "20230811", "20230812", "20230813", "20230814", "20230815", "20230816", "20230817", "20230818", "20230819", "20230820", "20230821", "20230822", "20230823", "20230824", "20230825", "20230826", "20230827", "20230828", "20230829", "20230830", "20230831", "20230901", "20230902", "20230903", "20230904", "20230905", "20230906", "20230907", "20230908", "20230909", "20230910", "20230911", "20230912", "20230913", "20230914", "20230915", "20230916", "20230917", "20230918", "20230919", "20230920", "20230921", "20230922", "20230923", "20230924", "20230925", "20230926", "20230927", "20230928", "20230929", "20230930", "20231001", "20231002", "20231003", "20231004", "20231005", "20231006", "20231007", "20231008", "20231009", "20231010", "20231011", "20231012", "20231013", "20231014", "20231015", "20231016", "20231017", "20231018", "20231019", "20231020", "20231021", "20231022", "20231023", "20231024", "20231025", "20231026", "20231027", "20231028", "20231029", "20231030", "20231031", "20231101", "20231102", "20231103", "20231104", "20231105", "20231106", "20231107", "20231108", "20231109", "20231110", "20231111", "20231112", "20231113", "20231114", "20231115", "20231116", "20231117", "20231118", "20231119", "20231120", "20231121", "20231122", "20231123", "20231124", "20231125", "20231126", "20231127", "20231128", "20231129", "20231130", "20231201", "20231202", "20231203", "20231204", "20231205", "20231206", "20231207", "20231208", "20231209", "20231210", "20231211", "20231212", "20231213", "20231214", "20231215", "20231216", "20231217", "20231218", "20231219", "20231220", "20231221", "20231222", "20231223", "20231224", "20231225", "20231226", "20231227", "20231228", "20231229", "20231230", "20231231", "20240101", "20240102", "20240103", "20240104", "20240105", "20240106", "20240107", "20240108", "20240109", "20240110", "20240111", "20240112", "20240113", "20240114", "20240115", "20240116", "20240117", "20240118", "20240119", "20240120", "20240121", "20240122", "20240123", "20240124", "20240125", "20240126", "20240127", "20240128", "20240129", "20240130", "20240131", "20240201", "20240202", "20240203", "20240204", "20240205", "20240206", "20240207", "20240208", "20240209", "20240210", "20240211", "20240212", "20240213", "20240214", "20240215", "20240216", "20240217", "20240218", "20240219", "20240220", "20240221", "20240222", "20240223", "20240224", "20240225", "20240226", "20240227", "20240228", "20240229", "20240301", "20240302", "20240303", "20240304", "20240305", "20240306", "20240307", "20240308", "20240309", "20240310", "20240311", "20240312", "20240313", "20240314", "20240315", "20240316", "20240317", "20240318", "20240319", "20240320", "20240321", "20240322", "20240323", "20240324", "20240325", "20240326", "20240327", "20240328", "20240329", "20240330", "20240331", "20240401", "20240402", "20240403", "20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412", "20240413", "20240414", "20240415", "20240416", "20240417", "20240418", "20240419", "20240420", "20240421", "20240422", "20240423", "20240424", "20240425", "20240426", "20240427", "20240428", "20240429", "20240430", "20240501", "20240502", "20240503", "20240504", "20240505", "20240506", "20240507", "20240508", "20240509", "20240510", "20240511", "20240512", "20240513", "20240514", "20240515", "20240516", "20240517", "20240518", "20240519", "20240520", "20240521", "20240522", "20240523", "20240524", "20240525", "20240526", "20240527", "20240528", "20240529", "20240530", "20240531", "20240601", "20240602", "20240603", "20240604", "20240605", "20240606", "20240607", "20240608", "20240609", "20240610", "20240611", "20240612", "20240613", "20240614", "20240615", "20240616", "20240617", "20240618", "20240619", "20240620", "20240621", "20240622", "20240623", "20240624", "20240625", "20240626", "20240627", "20240628", "20240629", "20240630", "20240701", "20240702", "20240703", "20240704", "20240705", "20240706", "20240707", "20240708", "20240709", "20240710", "20240711", "20240712", "20240713", "20240714", "20240715", "20240716", "20240717", "20240718", "20240719", "20240720", "20240721", "20240722", "20240723", "20240724", "20240725", "20240726", "20240727", "20240728", "20240729", "20240730", "20240731", "20240801", "20240802", "20240803", "20240804", "20240805", "20240806", "20240807", "20240808", "20240809", "20240810", "20240811", "20240812", "20240813", "20240814", "20240815", "20240816", "20240817", "20240818", "20240819", "20240820", "20240821", "20240822", "20240823", "20240824", "20240825", "20240826", "20240827", "20240828", "20240829", "20240830", "20240831", "20240901", "20240902", "20240903", "20240904", "20240905", "20240906", "20240907", "20240908", "20240909", "20240910", "20240911", "20240912", "20240913", "20240914", "20240915", "20240916", "20240917", "20240918", "20240919", "20240920", "20240921", "20240922", "20240923", "20240924", "20240925", "20240926", "20240927", "20240928", "20240929", "20240930", "20241001", "20241002", "20241003", "20241004", "20241005", "20241006", "20241007", "20241008", "20241009", "20241010", "20241011", "20241012", "20241013", "20241014", "20241015", "20241016", "20241017", "20241018", "20241019", "20241020", "20241021", "20241022", "20241023", "20241024", "20241025", "20241026", "20241027", "20241028", "20241029", "20241030", "20241031", "20241101", "20241102", "20241103", "20241104", "20241105", "20241106", "20241107", "20241108", "20241109", "20241110", "20241111", "20241112", "20241113", "20241114", "20241115", "20241116", "20241117", "20241118", "20241119", "20241120", "20241121", "20241122", "20241123", "20241124", "20241125", "20241126", "20241127", "20241128", "20241129", "20241130", "20241201", "20241202", "20241203", "20241204", "20241205", "20241206", "20241207", "20241208", "20241209", "20241210", "20241211", "20241212", "20241213", "20241214", "20241215", "20241216", "20241217", "20241218", "20241219", "20241220", "20241221", "20241222", "20241223", "20241224", "20241225", "20241226", "20241227", "20241228", "20241229", "20241230", "20241231"], "model": ["IFS-NEMO"], "resolution": ["standard", "high"], "levtype": ["pl"], "levelist": ["1000", "925", "850", "700", "600", "500", "400", "300", "250", "200", "150", "100", "70", "50", "30", "20", "10", "5", "1"], "time": ["0000", "0100", "0200", "0300", "0400", "0500", "0600", "0700", "0800", "0900", "1000", "1100", "1200", "1300", "1400", "1500", "1600", "1700", "1800", "1900", "2000", "2100", "2200", "2300"], "param": ["60", "129", "130", "131", "132", "133", "135", "157", "246"]}, + {"class": ["d1"], "dataset": ["climate-dt"], "generation": [1], "realization": [1], "expver": ["0001"], "stream": ["clte"], "type": ["fc"], "activity": ["ScenarioMIP"], "experiment": ["SSP3-7.0"], "date": ["20200101", "20200102", "20200103", "20200104", "20200105", "20200106", "20200107", "20200108", "20200109", "20200110", "20200111", "20200112", "20200113", "20200114", "20200115", "20200116", "20200117", "20200118", "20200119", "20200120", "20200121", "20200122", "20200123", "20200124", "20200125", "20200126", "20200127", "20200128", "20200129", "20200130", "20200131", "20200201", "20200202", "20200203", "20200204", "20200205", "20200206", "20200207", "20200208", "20200209", "20200210", "20200211", "20200212", "20200213", "20200214", "20200215", "20200216", "20200217", "20200218", "20200219", "20200220", "20200221", "20200222", "20200223", "20200224", "20200225", "20200226", "20200227", "20200228", "20200229", "20200301", "20200302", "20200303", "20200304", "20200305", "20200306", "20200307", "20200308", "20200309", "20200310", "20200311", "20200312", "20200313", "20200314", "20200315", "20200316", "20200317", "20200318", "20200319", "20200320", "20200321", "20200322", "20200323", "20200324", "20200325", "20200326", "20200327", "20200328", "20200329", "20200330", "20200331", "20200401", "20200402", "20200403", "20200404", "20200405", "20200406", "20200407", "20200408", "20200409", "20200410", "20200411", "20200412", "20200413", "20200414", "20200415", "20200416", "20200417", "20200418", "20200419", "20200420", "20200421", "20200422", "20200423", "20200424", "20200425", "20200426", "20200427", "20200428", "20200429", "20200430", "20200501", "20200502", "20200503", "20200504", "20200505", "20200506", "20200507", "20200508", "20200509", "20200510", "20200511", "20200512", "20200513", "20200514", "20200515", "20200516", "20200517", "20200518", "20200519", "20200520", "20200521", "20200522", "20200523", "20200524", "20200525", "20200526", "20200527", "20200528", "20200529", "20200530", "20200531", "20200601", "20200602", "20200603", "20200604", "20200605", "20200606", "20200607", "20200608", "20200609", "20200610", "20200611", "20200612", "20200613", "20200614", "20200615", "20200616", "20200617", "20200618", "20200619", "20200620", "20200621", "20200622", "20200623", "20200624", "20200625", "20200626", "20200627", "20200628", "20200629", "20200630", "20200701", "20200702", "20200703", "20200704", "20200705", "20200706", "20200707", "20200708", "20200709", "20200710", "20200711", "20200712", "20200713", "20200714", "20200715", "20200716", "20200717", "20200718", "20200719", "20200720", "20200721", "20200722", "20200723", "20200724", "20200725", "20200726", "20200727", "20200728", "20200729", "20200730", "20200731", "20200801", "20200802", "20200803", "20200804", "20200805", "20200806", "20200807", "20200808", "20200809", "20200810", "20200811", "20200812", "20200813", "20200814", "20200815", "20200816", "20200817", "20200818", "20200819", "20200820", "20200821", "20200822", "20200823", "20200824", "20200825", "20200826", "20200827", "20200828", "20200829", "20200830", "20200831", "20200901", "20200902", "20200903", "20200904", "20200905", "20200906", "20200907", "20200908", "20200909", "20200910", "20200911", "20200912", "20200913", "20200914", "20200915", "20200916", "20200917", "20200918", "20200919", "20200920", "20200921", "20200922", "20200923", "20200924", "20200925", "20200926", "20200927", "20200928", "20200929", "20200930", "20201001", "20201002", "20201003", "20201004", "20201005", "20201006", "20201007", "20201008", "20201009", "20201010", "20201011", "20201012", "20201013", "20201014", "20201015", "20201016", "20201017", "20201018", "20201019", "20201020", "20201021", "20201022", "20201023", "20201024", "20201025", "20201026", "20201027", "20201028", "20201029", "20201030", "20201031", "20201101", "20201102", "20201103", "20201104", "20201105", "20201106", "20201107", "20201108", "20201109", "20201110", "20201111", "20201112", "20201113", "20201114", "20201115", "20201116", "20201117", "20201118", "20201119", "20201120", "20201121", "20201122", "20201123", "20201124", "20201125", "20201126", "20201127", "20201128", "20201129", "20201130", "20201201", "20201202", "20201203", "20201204", "20201205", "20201206", "20201207", "20201208", "20201209", "20201210", "20201211", "20201212", "20201213", "20201214", "20201215", "20201216", "20201217", "20201218", "20201219", "20201220", "20201221", "20201222", "20201223", "20201224", "20201225", "20201226", "20201227", "20201228", "20201229", "20201230", "20201231", "20210101", "20210102", "20210103", "20210104", "20210105", "20210106", "20210107", "20210108", "20210109", "20210110", "20210111", "20210112", "20210113", "20210114", "20210115", "20210116", "20210117", "20210118", "20210119", "20210120", "20210121", "20210122", "20210123", "20210124", "20210125", "20210126", "20210127", "20210128", "20210129", "20210130", "20210131", "20210201", "20210202", "20210203", "20210204", "20210205", "20210206", "20210207", "20210208", "20210209", "20210210", "20210211", "20210212", "20210213", "20210214", "20210215", "20210216", "20210217", "20210218", "20210219", "20210220", "20210221", "20210222", "20210223", "20210224", "20210225", "20210226", "20210227", "20210228", "20210301", "20210302", "20210303", "20210304", "20210305", "20210306", "20210307", "20210308", "20210309", "20210310", "20210311", "20210312", "20210313", "20210314", "20210315", "20210316", "20210317", "20210318", "20210319", "20210320", "20210321", "20210322", "20210323", "20210324", "20210325", "20210326", "20210327", "20210328", "20210329", "20210330", "20210331", "20210401", "20210402", "20210403", "20210404", "20210405", "20210406", "20210407", "20210408", "20210409", "20210410", "20210411", "20210412", "20210413", "20210414", "20210415", "20210416", "20210417", "20210418", "20210419", "20210420", "20210421", "20210422", "20210423", "20210424", "20210425", "20210426", "20210427", "20210428", "20210429", "20210430", "20210501", "20210502", "20210503", "20210504", "20210505", "20210506", "20210507", "20210508", "20210509", "20210510", "20210511", "20210512", "20210513", "20210514", "20210515", "20210516", "20210517", "20210518", "20210519", "20210520", "20210521", "20210522", "20210523", "20210524", "20210525", "20210526", "20210527", "20210528", "20210529", "20210530", "20210531", "20210601", "20210602", "20210603", "20210604", "20210605", "20210606", "20210607", "20210608", "20210609", "20210610", "20210611", "20210612", "20210613", "20210614", "20210615", "20210616", "20210617", "20210618", "20210619", "20210620", "20210621", "20210622", "20210623", "20210624", "20210625", "20210626", "20210627", "20210628", "20210629", "20210630", "20210701", "20210702", "20210703", "20210704", "20210705", "20210706", "20210707", "20210708", "20210709", "20210710", "20210711", "20210712", "20210713", "20210714", "20210715", "20210716", "20210717", "20210718", "20210719", "20210720", "20210721", "20210722", "20210723", "20210724", "20210725", "20210726", "20210727", "20210728", "20210729", "20210730", "20210731", "20210801", "20210802", "20210803", "20210804", "20210805", "20210806", "20210807", "20210808", "20210809", "20210810", "20210811", "20210812", "20210813", "20210814", "20210815", "20210816", "20210817", "20210818", "20210819", "20210820", "20210821", "20210822", "20210823", "20210824", "20210825", "20210826", "20210827", "20210828", "20210829", "20210830", "20210831", "20210901", "20210902", "20210903", "20210904", "20210905", "20210906", "20210907", "20210908", "20210909", "20210910", "20210911", "20210912", "20210913", "20210914", "20210915", "20210916", "20210917", "20210918", "20210919", "20210920", "20210921", "20210922", "20210923", "20210924", "20210925", "20210926", "20210927", "20210928", "20210929", "20210930", "20211001", "20211002", "20211003", "20211004", "20211005", "20211006", "20211007", "20211008", "20211009", "20211010", "20211011", "20211012", "20211013", "20211014", "20211015", "20211016", "20211017", "20211018", "20211019", "20211020", "20211021", "20211022", "20211023", "20211024", "20211025", "20211026", "20211027", "20211028", "20211029", "20211030", "20211031", "20211101", "20211102", "20211103", "20211104", "20211105", "20211106", "20211107", "20211108", "20211109", "20211110", "20211111", "20211112", "20211113", "20211114", "20211115", "20211116", "20211117", "20211118", "20211119", "20211120", "20211121", "20211122", "20211123", "20211124", "20211125", "20211126", "20211127", "20211128", "20211129", "20211130", "20211201", "20211202", "20211203", "20211204", "20211205", "20211206", "20211207", "20211208", "20211209", "20211210", "20211211", "20211212", "20211213", "20211214", "20211215", "20211216", "20211217", "20211218", "20211219", "20211220", "20211221", "20211222", "20211223", "20211224", "20211225", "20211226", "20211227", "20211228", "20211229", "20211230", "20211231", "20220101", "20220102", "20220103", "20220104", "20220105", "20220106", "20220107", "20220108", "20220109", "20220110", "20220111", "20220112", "20220113", "20220114", "20220115", "20220116", "20220117", "20220118", "20220119", "20220120", "20220121", "20220122", "20220123", "20220124", "20220125", "20220126", "20220127", "20220128", "20220129", "20220130", "20220131", "20220201", "20220202", "20220203", "20220204", "20220205", "20220206", "20220207", "20220208", "20220209", "20220210", "20220211", "20220212", "20220213", "20220214", "20220215", "20220216", "20220217", "20220218", "20220219", "20220220", "20220221", "20220222", "20220223", "20220224", "20220225", "20220226", "20220227", "20220228", "20220301", "20220302", "20220303", "20220304", "20220305", "20220306", "20220307", "20220308", "20220309", "20220310", "20220311", "20220312", "20220313", "20220314", "20220315", "20220316", "20220317", "20220318", "20220319", "20220320", "20220321", "20220322", "20220323", "20220324", "20220325", "20220326", "20220327", "20220328", "20220329", "20220330", "20220331", "20220401", "20220402", "20220403", "20220404", "20220405", "20220406", "20220407", "20220408", "20220409", "20220410", "20220411", "20220412", "20220413", "20220414", "20220415", "20220416", "20220417", "20220418", "20220419", "20220420", "20220421", "20220422", "20220423", "20220424", "20220425", "20220426", "20220427", "20220428", "20220429", "20220430", "20220501", "20220502", "20220503", "20220504", "20220505", "20220506", "20220507", "20220508", "20220509", "20220510", "20220511", "20220512", "20220513", "20220514", "20220515", "20220516", "20220517", "20220518", "20220519", "20220520", "20220521", "20220522", "20220523", "20220524", "20220525", "20220526", "20220527", "20220528", "20220529", "20220530", "20220531", "20220601", "20220602", "20220603", "20220604", "20220605", "20220606", "20220607", "20220608", "20220609", "20220610", "20220611", "20220612", "20220613", "20220614", "20220615", "20220616", "20220617", "20220618", "20220619", "20220620", "20220621", "20220622", "20220623", "20220624", "20220625", "20220626", "20220627", "20220628", "20220629", "20220630", "20220701", "20220702", "20220703", "20220704", "20220705", "20220706", "20220707", "20220708", "20220709", "20220710", "20220711", "20220712", "20220713", "20220714", "20220715", "20220716", "20220717", "20220718", "20220719", "20220720", "20220721", "20220722", "20220723", "20220724", "20220725", "20220726", "20220727", "20220728", "20220729", "20220730", "20220731", "20220801", "20220802", "20220803", "20220804", "20220805", "20220806", "20220807", "20220808", "20220809", "20220810", "20220811", "20220812", "20220813", "20220814", "20220815", "20220816", "20220817", "20220818", "20220819", "20220820", "20220821", "20220822", "20220823", "20220824", "20220825", "20220826", "20220827", "20220828", "20220829", "20220830", "20220831", "20220901", "20220902", "20220903", "20220904", "20220905", "20220906", "20220907", "20220908", "20220909", "20220910", "20220911", "20220912", "20220913", "20220914", "20220915", "20220916", "20220917", "20220918", "20220919", "20220920", "20220921", "20220922", "20220923", "20220924", "20220925", "20220926", "20220927", "20220928", "20220929", "20220930", "20221001", "20221002", "20221003", "20221004", "20221005", "20221006", "20221007", "20221008", "20221009", "20221010", "20221011", "20221012", "20221013", "20221014", "20221015", "20221016", "20221017", "20221018", "20221019", "20221020", "20221021", "20221022", "20221023", "20221024", "20221025", "20221026", "20221027", "20221028", "20221029", "20221030", "20221031", "20221101", "20221102", "20221103", "20221104", "20221105", "20221106", "20221107", "20221108", "20221109", "20221110", "20221111", "20221112", "20221113", "20221114", "20221115", "20221116", "20221117", "20221118", "20221119", "20221120", "20221121", "20221122", "20221123", "20221124", "20221125", "20221126", "20221127", "20221128", "20221129", "20221130", "20221201", "20221202", "20221203", "20221204", "20221205", "20221206", "20221207", "20221208", "20221209", "20221210", "20221211", "20221212", "20221213", "20221214", "20221215", "20221216", "20221217", "20221218", "20221219", "20221220", "20221221", "20221222", "20221223", "20221224", "20221225", "20221226", "20221227", "20221228", "20221229", "20221230", "20221231", "20230101", "20230102", "20230103", "20230104", "20230105", "20230106", "20230107", "20230108", "20230109", "20230110", "20230111", "20230112", "20230113", "20230114", "20230115", "20230116", "20230117", "20230118", "20230119", "20230120", "20230121", "20230122", "20230123", "20230124", "20230125", "20230126", "20230127", "20230128", "20230129", "20230130", "20230131", "20230201", "20230202", "20230203", "20230204", "20230205", "20230206", "20230207", "20230208", "20230209", "20230210", "20230211", "20230212", "20230213", "20230214", "20230215", "20230216", "20230217", "20230218", "20230219", "20230220", "20230221", "20230222", "20230223", "20230224", "20230225", "20230226", "20230227", "20230228", "20230301", "20230302", "20230303", "20230304", "20230305", "20230306", "20230307", "20230308", "20230309", "20230310", "20230311", "20230312", "20230313", "20230314", "20230315", "20230316", "20230317", "20230318", "20230319", "20230320", "20230321", "20230322", "20230323", "20230324", "20230325", "20230326", "20230327", "20230328", "20230329", "20230330", "20230331", "20230401", "20230402", "20230403", "20230404", "20230405", "20230406", "20230407", "20230408", "20230409", "20230410", "20230411", "20230412", "20230413", "20230414", "20230415", "20230416", "20230417", "20230418", "20230419", "20230420", "20230421", "20230422", "20230423", "20230424", "20230425", "20230426", "20230427", "20230428", "20230429", "20230430", "20230501", "20230502", "20230503", "20230504", "20230505", "20230506", "20230507", "20230508", "20230509", "20230510", "20230511", "20230512", "20230513", "20230514", "20230515", "20230516", "20230517", "20230518", "20230519", "20230520", "20230521", "20230522", "20230523", "20230524", "20230525", "20230526", "20230527", "20230528", "20230529", "20230530", "20230531", "20230601", "20230602", "20230603", "20230604", "20230605", "20230606", "20230607", "20230608", "20230609", "20230610", "20230611", "20230612", "20230613", "20230614", "20230615", "20230616", "20230617", "20230618", "20230619", "20230620", "20230621", "20230622", "20230623", "20230624", "20230625", "20230626", "20230627", "20230628", "20230629", "20230630", "20230701", "20230702", "20230703", "20230704", "20230705", "20230706", "20230707", "20230708", "20230709", "20230710", "20230711", "20230712", "20230713", "20230714", "20230715", "20230716", "20230717", "20230718", "20230719", "20230720", "20230721", "20230722", "20230723", "20230724", "20230725", "20230726", "20230727", "20230728", "20230729", "20230730", "20230731", "20230801", "20230802", "20230803", "20230804", "20230805", "20230806", "20230807", "20230808", "20230809", "20230810", "20230811", "20230812", "20230813", "20230814", "20230815", "20230816", "20230817", "20230818", "20230819", "20230820", "20230821", "20230822", "20230823", "20230824", "20230825", "20230826", "20230827", "20230828", "20230829", "20230830", "20230831", "20230901", "20230902", "20230903", "20230904", "20230905", "20230906", "20230907", "20230908", "20230909", "20230910", "20230911", "20230912", "20230913", "20230914", "20230915", "20230916", "20230917", "20230918", "20230919", "20230920", "20230921", "20230922", "20230923", "20230924", "20230925", "20230926", "20230927", "20230928", "20230929", "20230930", "20231001", "20231002", "20231003", "20231004", "20231005", "20231006", "20231007", "20231008", "20231009", "20231010", "20231011", "20231012", "20231013", "20231014", "20231015", "20231016", "20231017", "20231018", "20231019", "20231020", "20231021", "20231022", "20231023", "20231024", "20231025", "20231026", "20231027", "20231028", "20231029", "20231030", "20231031", "20231101", "20231102", "20231103", "20231104", "20231105", "20231106", "20231107", "20231108", "20231109", "20231110", "20231111", "20231112", "20231113", "20231114", "20231115", "20231116", "20231117", "20231118", "20231119", "20231120", "20231121", "20231122", "20231123", "20231124", "20231125", "20231126", "20231127", "20231128", "20231129", "20231130", "20231201", "20231202", "20231203", "20231204", "20231205", "20231206", "20231207", "20231208", "20231209", "20231210", "20231211", "20231212", "20231213", "20231214", "20231215", "20231216", "20231217", "20231218", "20231219", "20231220", "20231221", "20231222", "20231223", "20231224", "20231225", "20231226", "20231227", "20231228", "20231229", "20231230", "20231231", "20240101", "20240102", "20240103", "20240104", "20240105", "20240106", "20240107", "20240108", "20240109", "20240110", "20240111", "20240112", "20240113", "20240114", "20240115", "20240116", "20240117", "20240118", "20240119", "20240120", "20240121", "20240122", "20240123", "20240124", "20240125", "20240126", "20240127", "20240128", "20240129", "20240130", "20240131", "20240201", "20240202", "20240203", "20240204", "20240205", "20240206", "20240207", "20240208", "20240209", "20240210", "20240211", "20240212", "20240213", "20240214", "20240215", "20240216", "20240217", "20240218", "20240219", "20240220", "20240221", "20240222", "20240223", "20240224", "20240225", "20240226", "20240227", "20240228", "20240229", "20240301", "20240302", "20240303", "20240304", "20240305", "20240306", "20240307", "20240308", "20240309", "20240310", "20240311", "20240312", "20240313", "20240314", "20240315", "20240316", "20240317", "20240318", "20240319", "20240320", "20240321", "20240322", "20240323", "20240324", "20240325", "20240326", "20240327", "20240328", "20240329", "20240330", "20240331", "20240401", "20240402", "20240403", "20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412", "20240413", "20240414", "20240415", "20240416", "20240417", "20240418", "20240419", "20240420", "20240421", "20240422", "20240423", "20240424", "20240425", "20240426", "20240427", "20240428", "20240429", "20240430", "20240501", "20240502", "20240503", "20240504", "20240505", "20240506", "20240507", "20240508", "20240509", "20240510", "20240511", "20240512", "20240513", "20240514", "20240515", "20240516", "20240517", "20240518", "20240519", "20240520", "20240521", "20240522", "20240523", "20240524", "20240525", "20240526", "20240527", "20240528", "20240529", "20240530", "20240531", "20240601", "20240602", "20240603", "20240604", "20240605", "20240606", "20240607", "20240608", "20240609", "20240610", "20240611", "20240612", "20240613", "20240614", "20240615", "20240616", "20240617", "20240618", "20240619", "20240620", "20240621", "20240622", "20240623", "20240624", "20240625", "20240626", "20240627", "20240628", "20240629", "20240630", "20240701", "20240702", "20240703", "20240704", "20240705", "20240706", "20240707", "20240708", "20240709", "20240710", "20240711", "20240712", "20240713", "20240714", "20240715", "20240716", "20240717", "20240718", "20240719", "20240720", "20240721", "20240722", "20240723", "20240724", "20240725", "20240726", "20240727", "20240728", "20240729", "20240730", "20240731", "20240801", "20240802", "20240803", "20240804", "20240805", "20240806", "20240807", "20240808", "20240809", "20240810", "20240811", "20240812", "20240813", "20240814", "20240815", "20240816", "20240817", "20240818", "20240819", "20240820", "20240821", "20240822", "20240823", "20240824", "20240825", "20240826", "20240827", "20240828", "20240829", "20240830", "20240831", "20240901", "20240902", "20240903", "20240904", "20240905", "20240906", "20240907", "20240908", "20240909", "20240910", "20240911", "20240912", "20240913", "20240914", "20240915", "20240916", "20240917", "20240918", "20240919", "20240920", "20240921", "20240922", "20240923", "20240924", "20240925", "20240926", "20240927", "20240928", "20240929", "20240930", "20241001", "20241002", "20241003", "20241004", "20241005", "20241006", "20241007", "20241008", "20241009", "20241010", "20241011", "20241012", "20241013", "20241014", "20241015", "20241016", "20241017", "20241018", "20241019", "20241020", "20241021", "20241022", "20241023", "20241024", "20241025", "20241026", "20241027", "20241028", "20241029", "20241030", "20241031", "20241101", "20241102", "20241103", "20241104", "20241105", "20241106", "20241107", "20241108", "20241109", "20241110", "20241111", "20241112", "20241113", "20241114", "20241115", "20241116", "20241117", "20241118", "20241119", "20241120", "20241121", "20241122", "20241123", "20241124", "20241125", "20241126", "20241127", "20241128", "20241129", "20241130", "20241201", "20241202", "20241203", "20241204", "20241205", "20241206", "20241207", "20241208", "20241209", "20241210", "20241211", "20241212", "20241213", "20241214", "20241215", "20241216", "20241217", "20241218", "20241219", "20241220", "20241221", "20241222", "20241223", "20241224", "20241225", "20241226", "20241227", "20241228", "20241229", "20241230", "20241231"], "model": ["IFS-NEMO"], "resolution": ["standard", "high"], "levtype": ["sfc"], "time": ["0000", "0100", "0200", "0300", "0400", "0500", "0600", "0700", "0800", "0900", "1000", "1100", "1200", "1300", "1400", "1500", "1600", "1700", "1800", "1900", "2000", "2100", "2200", "2300"], "param": ["78", "79", "134", "137", "141", "148", "151", "159", "164", "165", "166", "167", "168", "186", "187", "188", "235", "260048", "8", "9", "144", "146", "147", "169", "175", "176", "177", "178", "179", "180", "181", "182", "212", "228"]}, + {"class": ["d1"], "dataset": ["climate-dt"], "generation": [1], "realization": [1], "expver": ["0001"], "stream": ["clte"], "type": ["fc"], "activity": ["ScenarioMIP"], "experiment": ["SSP3-7.0"], "date": ["20200101", "20200102", "20200103", "20200104", "20200105", "20200106", "20200107", "20200108", "20200109", "20200110", "20200111", "20200112", "20200113", "20200114", "20200115", "20200116", "20200117", "20200118", "20200119", "20200120", "20200121", "20200122", "20200123", "20200124", "20200125", "20200126", "20200127", "20200128", "20200129", "20200130", "20200131", "20200201", "20200202", "20200203", "20200204", "20200205", "20200206", "20200207", "20200208", "20200209", "20200210", "20200211", "20200212", "20200213", "20200214", "20200215", "20200216", "20200217", "20200218", "20200219", "20200220", "20200221", "20200222", "20200223", "20200224", "20200225", "20200226", "20200227", "20200228", "20200229", "20200301", "20200302", "20200303", "20200304", "20200305", "20200306", "20200307", "20200308", "20200309", "20200310", "20200311", "20200312", "20200313", "20200314", "20200315", "20200316", "20200317", "20200318", "20200319", "20200320", "20200321", "20200322", "20200323", "20200324", "20200325", "20200326", "20200327", "20200328", "20200329", "20200330", "20200331", "20200401", "20200402", "20200403", "20200404", "20200405", "20200406", "20200407", "20200408", "20200409", "20200410", "20200411", "20200412", "20200413", "20200414", "20200415", "20200416", "20200417", "20200418", "20200419", "20200420", "20200421", "20200422", "20200423", "20200424", "20200425", "20200426", "20200427", "20200428", "20200429", "20200430", "20200501", "20200502", "20200503", "20200504", "20200505", "20200506", "20200507", "20200508", "20200509", "20200510", "20200511", "20200512", "20200513", "20200514", "20200515", "20200516", "20200517", "20200518", "20200519", "20200520", "20200521", "20200522", "20200523", "20200524", "20200525", "20200526", "20200527", "20200528", "20200529", "20200530", "20200531", "20200601", "20200602", "20200603", "20200604", "20200605", "20200606", "20200607", "20200608", "20200609", "20200610", "20200611", "20200612", "20200613", "20200614", "20200615", "20200616", "20200617", "20200618", "20200619", "20200620", "20200621", "20200622", "20200623", "20200624", "20200625", "20200626", "20200627", "20200628", "20200629", "20200630", "20200701", "20200702", "20200703", "20200704", "20200705", "20200706", "20200707", "20200708", "20200709", "20200710", "20200711", "20200712", "20200713", "20200714", "20200715", "20200716", "20200717", "20200718", "20200719", "20200720", "20200721", "20200722", "20200723", "20200724", "20200725", "20200726", "20200727", "20200728", "20200729", "20200730", "20200731", "20200801", "20200802", "20200803", "20200804", "20200805", "20200806", "20200807", "20200808", "20200809", "20200810", "20200811", "20200812", "20200813", "20200814", "20200815", "20200816", "20200817", "20200818", "20200819", "20200820", "20200821", "20200822", "20200823", "20200824", "20200825", "20200826", "20200827", "20200828", "20200829", "20200830", "20200831", "20200901", "20200902", "20200903", "20200904", "20200905", "20200906", "20200907", "20200908", "20200909", "20200910", "20200911", "20200912", "20200913", "20200914", "20200915", "20200916", "20200917", "20200918", "20200919", "20200920", "20200921", "20200922", "20200923", "20200924", "20200925", "20200926", "20200927", "20200928", "20200929", "20200930", "20201001", "20201002", "20201003", "20201004", "20201005", "20201006", "20201007", "20201008", "20201009", "20201010", "20201011", "20201012", "20201013", "20201014", "20201015", "20201016", "20201017", "20201018", "20201019", "20201020", "20201021", "20201022", "20201023", "20201024", "20201025", "20201026", "20201027", "20201028", "20201029", "20201030", "20201031", "20201101", "20201102", "20201103", "20201104", "20201105", "20201106", "20201107", "20201108", "20201109", "20201110", "20201111", "20201112", "20201113", "20201114", "20201115", "20201116", "20201117", "20201118", "20201119", "20201120", "20201121", "20201122", "20201123", "20201124", "20201125", "20201126", "20201127", "20201128", "20201129", "20201130", "20201201", "20201202", "20201203", "20201204", "20201205", "20201206", "20201207", "20201208", "20201209", "20201210", "20201211", "20201212", "20201213", "20201214", "20201215", "20201216", "20201217", "20201218", "20201219", "20201220", "20201221", "20201222", "20201223", "20201224", "20201225", "20201226", "20201227", "20201228", "20201229", "20201230", "20201231", "20210101", "20210102", "20210103", "20210104", "20210105", "20210106", "20210107", "20210108", "20210109", "20210110", "20210111", "20210112", "20210113", "20210114", "20210115", "20210116", "20210117", "20210118", "20210119", "20210120", "20210121", "20210122", "20210123", "20210124", "20210125", "20210126", "20210127", "20210128", "20210129", "20210130", "20210131", "20210201", "20210202", "20210203", "20210204", "20210205", "20210206", "20210207", "20210208", "20210209", "20210210", "20210211", "20210212", "20210213", "20210214", "20210215", "20210216", "20210217", "20210218", "20210219", "20210220", "20210221", "20210222", "20210223", "20210224", "20210225", "20210226", "20210227", "20210228", "20210301", "20210302", "20210303", "20210304", "20210305", "20210306", "20210307", "20210308", "20210309", "20210310", "20210311", "20210312", "20210313", "20210314", "20210315", "20210316", "20210317", "20210318", "20210319", "20210320", "20210321", "20210322", "20210323", "20210324", "20210325", "20210326", "20210327", "20210328", "20210329", "20210330", "20210331", "20210401", "20210402", "20210403", "20210404", "20210405", "20210406", "20210407", "20210408", "20210409", "20210410", "20210411", "20210412", "20210413", "20210414", "20210415", "20210416", "20210417", "20210418", "20210419", "20210420", "20210421", "20210422", "20210423", "20210424", "20210425", "20210426", "20210427", "20210428", "20210429", "20210430", "20210501", "20210502", "20210503", "20210504", "20210505", "20210506", "20210507", "20210508", "20210509", "20210510", "20210511", "20210512", "20210513", "20210514", "20210515", "20210516", "20210517", "20210518", "20210519", "20210520", "20210521", "20210522", "20210523", "20210524", "20210525", "20210526", "20210527", "20210528", "20210529", "20210530", "20210531", "20210601", "20210602", "20210603", "20210604", "20210605", "20210606", "20210607", "20210608", "20210609", "20210610", "20210611", "20210612", "20210613", "20210614", "20210615", "20210616", "20210617", "20210618", "20210619", "20210620", "20210621", "20210622", "20210623", "20210624", "20210625", "20210626", "20210627", "20210628", "20210629", "20210630", "20210701", "20210702", "20210703", "20210704", "20210705", "20210706", "20210707", "20210708", "20210709", "20210710", "20210711", "20210712", "20210713", "20210714", "20210715", "20210716", "20210717", "20210718", "20210719", "20210720", "20210721", "20210722", "20210723", "20210724", "20210725", "20210726", "20210727", "20210728", "20210729", "20210730", "20210731", "20210801", "20210802", "20210803", "20210804", "20210805", "20210806", "20210807", "20210808", "20210809", "20210810", "20210811", "20210812", "20210813", "20210814", "20210815", "20210816", "20210817", "20210818", "20210819", "20210820", "20210821", "20210822", "20210823", "20210824", "20210825", "20210826", "20210827", "20210828", "20210829", "20210830", "20210831", "20210901", "20210902", "20210903", "20210904", "20210905", "20210906", "20210907", "20210908", "20210909", "20210910", "20210911", "20210912", "20210913", "20210914", "20210915", "20210916", "20210917", "20210918", "20210919", "20210920", "20210921", "20210922", "20210923", "20210924", "20210925", "20210926", "20210927", "20210928", "20210929", "20210930", "20211001", "20211002", "20211003", "20211004", "20211005", "20211006", "20211007", "20211008", "20211009", "20211010", "20211011", "20211012", "20211013", "20211014", "20211015", "20211016", "20211017", "20211018", "20211019", "20211020", "20211021", "20211022", "20211023", "20211024", "20211025", "20211026", "20211027", "20211028", "20211029", "20211030", "20211031", "20211101", "20211102", "20211103", "20211104", "20211105", "20211106", "20211107", "20211108", "20211109", "20211110", "20211111", "20211112", "20211113", "20211114", "20211115", "20211116", "20211117", "20211118", "20211119", "20211120", "20211121", "20211122", "20211123", "20211124", "20211125", "20211126", "20211127", "20211128", "20211129", "20211130", "20211201", "20211202", "20211203", "20211204", "20211205", "20211206", "20211207", "20211208", "20211209", "20211210", "20211211", "20211212", "20211213", "20211214", "20211215", "20211216", "20211217", "20211218", "20211219", "20211220", "20211221", "20211222", "20211223", "20211224", "20211225", "20211226", "20211227", "20211228", "20211229", "20211230", "20211231", "20220101", "20220102", "20220103", "20220104", "20220105", "20220106", "20220107", "20220108", "20220109", "20220110", "20220111", "20220112", "20220113", "20220114", "20220115", "20220116", "20220117", "20220118", "20220119", "20220120", "20220121", "20220122", "20220123", "20220124", "20220125", "20220126", "20220127", "20220128", "20220129", "20220130", "20220131", "20220201", "20220202", "20220203", "20220204", "20220205", "20220206", "20220207", "20220208", "20220209", "20220210", "20220211", "20220212", "20220213", "20220214", "20220215", "20220216", "20220217", "20220218", "20220219", "20220220", "20220221", "20220222", "20220223", "20220224", "20220225", "20220226", "20220227", "20220228", "20220301", "20220302", "20220303", "20220304", "20220305", "20220306", "20220307", "20220308", "20220309", "20220310", "20220311", "20220312", "20220313", "20220314", "20220315", "20220316", "20220317", "20220318", "20220319", "20220320", "20220321", "20220322", "20220323", "20220324", "20220325", "20220326", "20220327", "20220328", "20220329", "20220330", "20220331", "20220401", "20220402", "20220403", "20220404", "20220405", "20220406", "20220407", "20220408", "20220409", "20220410", "20220411", "20220412", "20220413", "20220414", "20220415", "20220416", "20220417", "20220418", "20220419", "20220420", "20220421", "20220422", "20220423", "20220424", "20220425", "20220426", "20220427", "20220428", "20220429", "20220430", "20220501", "20220502", "20220503", "20220504", "20220505", "20220506", "20220507", "20220508", "20220509", "20220510", "20220511", "20220512", "20220513", "20220514", "20220515", "20220516", "20220517", "20220518", "20220519", "20220520", "20220521", "20220522", "20220523", "20220524", "20220525", "20220526", "20220527", "20220528", "20220529", "20220530", "20220531", "20220601", "20220602", "20220603", "20220604", "20220605", "20220606", "20220607", "20220608", "20220609", "20220610", "20220611", "20220612", "20220613", "20220614", "20220615", "20220616", "20220617", "20220618", "20220619", "20220620", "20220621", "20220622", "20220623", "20220624", "20220625", "20220626", "20220627", "20220628", "20220629", "20220630", "20220701", "20220702", "20220703", "20220704", "20220705", "20220706", "20220707", "20220708", "20220709", "20220710", "20220711", "20220712", "20220713", "20220714", "20220715", "20220716", "20220717", "20220718", "20220719", "20220720", "20220721", "20220722", "20220723", "20220724", "20220725", "20220726", "20220727", "20220728", "20220729", "20220730", "20220731", "20220801", "20220802", "20220803", "20220804", "20220805", "20220806", "20220807", "20220808", "20220809", "20220810", "20220811", "20220812", "20220813", "20220814", "20220815", "20220816", "20220817", "20220818", "20220819", "20220820", "20220821", "20220822", "20220823", "20220824", "20220825", "20220826", "20220827", "20220828", "20220829", "20220830", "20220831", "20220901", "20220902", "20220903", "20220904", "20220905", "20220906", "20220907", "20220908", "20220909", "20220910", "20220911", "20220912", "20220913", "20220914", "20220915", "20220916", "20220917", "20220918", "20220919", "20220920", "20220921", "20220922", "20220923", "20220924", "20220925", "20220926", "20220927", "20220928", "20220929", "20220930", "20221001", "20221002", "20221003", "20221004", "20221005", "20221006", "20221007", "20221008", "20221009", "20221010", "20221011", "20221012", "20221013", "20221014", "20221015", "20221016", "20221017", "20221018", "20221019", "20221020", "20221021", "20221022", "20221023", "20221024", "20221025", "20221026", "20221027", "20221028", "20221029", "20221030", "20221031", "20221101", "20221102", "20221103", "20221104", "20221105", "20221106", "20221107", "20221108", "20221109", "20221110", "20221111", "20221112", "20221113", "20221114", "20221115", "20221116", "20221117", "20221118", "20221119", "20221120", "20221121", "20221122", "20221123", "20221124", "20221125", "20221126", "20221127", "20221128", "20221129", "20221130", "20221201", "20221202", "20221203", "20221204", "20221205", "20221206", "20221207", "20221208", "20221209", "20221210", "20221211", "20221212", "20221213", "20221214", "20221215", "20221216", "20221217", "20221218", "20221219", "20221220", "20221221", "20221222", "20221223", "20221224", "20221225", "20221226", "20221227", "20221228", "20221229", "20221230", "20221231", "20230101", "20230102", "20230103", "20230104", "20230105", "20230106", "20230107", "20230108", "20230109", "20230110", "20230111", "20230112", "20230113", "20230114", "20230115", "20230116", "20230117", "20230118", "20230119", "20230120", "20230121", "20230122", "20230123", "20230124", "20230125", "20230126", "20230127", "20230128", "20230129", "20230130", "20230131", "20230201", "20230202", "20230203", "20230204", "20230205", "20230206", "20230207", "20230208", "20230209", "20230210", "20230211", "20230212", "20230213", "20230214", "20230215", "20230216", "20230217", "20230218", "20230219", "20230220", "20230221", "20230222", "20230223", "20230224", "20230225", "20230226", "20230227", "20230228", "20230301", "20230302", "20230303", "20230304", "20230305", "20230306", "20230307", "20230308", "20230309", "20230310", "20230311", "20230312", "20230313", "20230314", "20230315", "20230316", "20230317", "20230318", "20230319", "20230320", "20230321", "20230322", "20230323", "20230324", "20230325", "20230326", "20230327", "20230328", "20230329", "20230330", "20230331", "20230401", "20230402", "20230403", "20230404", "20230405", "20230406", "20230407", "20230408", "20230409", "20230410", "20230411", "20230412", "20230413", "20230414", "20230415", "20230416", "20230417", "20230418", "20230419", "20230420", "20230421", "20230422", "20230423", "20230424", "20230425", "20230426", "20230427", "20230428", "20230429", "20230430", "20230501", "20230502", "20230503", "20230504", "20230505", "20230506", "20230507", "20230508", "20230509", "20230510", "20230511", "20230512", "20230513", "20230514", "20230515", "20230516", "20230517", "20230518", "20230519", "20230520", "20230521", "20230522", "20230523", "20230524", "20230525", "20230526", "20230527", "20230528", "20230529", "20230530", "20230531", "20230601", "20230602", "20230603", "20230604", "20230605", "20230606", "20230607", "20230608", "20230609", "20230610", "20230611", "20230612", "20230613", "20230614", "20230615", "20230616", "20230617", "20230618", "20230619", "20230620", "20230621", "20230622", "20230623", "20230624", "20230625", "20230626", "20230627", "20230628", "20230629", "20230630", "20230701", "20230702", "20230703", "20230704", "20230705", "20230706", "20230707", "20230708", "20230709", "20230710", "20230711", "20230712", "20230713", "20230714", "20230715", "20230716", "20230717", "20230718", "20230719", "20230720", "20230721", "20230722", "20230723", "20230724", "20230725", "20230726", "20230727", "20230728", "20230729", "20230730", "20230731", "20230801", "20230802", "20230803", "20230804", "20230805", "20230806", "20230807", "20230808", "20230809", "20230810", "20230811", "20230812", "20230813", "20230814", "20230815", "20230816", "20230817", "20230818", "20230819", "20230820", "20230821", "20230822", "20230823", "20230824", "20230825", "20230826", "20230827", "20230828", "20230829", "20230830", "20230831", "20230901", "20230902", "20230903", "20230904", "20230905", "20230906", "20230907", "20230908", "20230909", "20230910", "20230911", "20230912", "20230913", "20230914", "20230915", "20230916", "20230917", "20230918", "20230919", "20230920", "20230921", "20230922", "20230923", "20230924", "20230925", "20230926", "20230927", "20230928", "20230929", "20230930", "20231001", "20231002", "20231003", "20231004", "20231005", "20231006", "20231007", "20231008", "20231009", "20231010", "20231011", "20231012", "20231013", "20231014", "20231015", "20231016", "20231017", "20231018", "20231019", "20231020", "20231021", "20231022", "20231023", "20231024", "20231025", "20231026", "20231027", "20231028", "20231029", "20231030", "20231031", "20231101", "20231102", "20231103", "20231104", "20231105", "20231106", "20231107", "20231108", "20231109", "20231110", "20231111", "20231112", "20231113", "20231114", "20231115", "20231116", "20231117", "20231118", "20231119", "20231120", "20231121", "20231122", "20231123", "20231124", "20231125", "20231126", "20231127", "20231128", "20231129", "20231130", "20231201", "20231202", "20231203", "20231204", "20231205", "20231206", "20231207", "20231208", "20231209", "20231210", "20231211", "20231212", "20231213", "20231214", "20231215", "20231216", "20231217", "20231218", "20231219", "20231220", "20231221", "20231222", "20231223", "20231224", "20231225", "20231226", "20231227", "20231228", "20231229", "20231230", "20231231", "20240101", "20240102", "20240103", "20240104", "20240105", "20240106", "20240107", "20240108", "20240109", "20240110", "20240111", "20240112", "20240113", "20240114", "20240115", "20240116", "20240117", "20240118", "20240119", "20240120", "20240121", "20240122", "20240123", "20240124", "20240125", "20240126", "20240127", "20240128", "20240129", "20240130", "20240131", "20240201", "20240202", "20240203", "20240204", "20240205", "20240206", "20240207", "20240208", "20240209", "20240210", "20240211", "20240212", "20240213", "20240214", "20240215", "20240216", "20240217", "20240218", "20240219", "20240220", "20240221", "20240222", "20240223", "20240224", "20240225", "20240226", "20240227", "20240228", "20240229", "20240301", "20240302", "20240303", "20240304", "20240305", "20240306", "20240307", "20240308", "20240309", "20240310", "20240311", "20240312", "20240313", "20240314", "20240315", "20240316", "20240317", "20240318", "20240319", "20240320", "20240321", "20240322", "20240323", "20240324", "20240325", "20240326", "20240327", "20240328", "20240329", "20240330", "20240331", "20240401", "20240402", "20240403", "20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412", "20240413", "20240414", "20240415", "20240416", "20240417", "20240418", "20240419", "20240420", "20240421", "20240422", "20240423", "20240424", "20240425", "20240426", "20240427", "20240428", "20240429", "20240430", "20240501", "20240502", "20240503", "20240504", "20240505", "20240506", "20240507", "20240508", "20240509", "20240510", "20240511", "20240512", "20240513", "20240514", "20240515", "20240516", "20240517", "20240518", "20240519", "20240520", "20240521", "20240522", "20240523", "20240524", "20240525", "20240526", "20240527", "20240528", "20240529", "20240530", "20240531", "20240601", "20240602", "20240603", "20240604", "20240605", "20240606", "20240607", "20240608", "20240609", "20240610", "20240611", "20240612", "20240613", "20240614", "20240615", "20240616", "20240617", "20240618", "20240619", "20240620", "20240621", "20240622", "20240623", "20240624", "20240625", "20240626", "20240627", "20240628", "20240629", "20240630", "20240701", "20240702", "20240703", "20240704", "20240705", "20240706", "20240707", "20240708", "20240709", "20240710", "20240711", "20240712", "20240713", "20240714", "20240715", "20240716", "20240717", "20240718", "20240719", "20240720", "20240721", "20240722", "20240723", "20240724", "20240725", "20240726", "20240727", "20240728", "20240729", "20240730", "20240731", "20240801", "20240802", "20240803", "20240804", "20240805", "20240806", "20240807", "20240808", "20240809", "20240810", "20240811", "20240812", "20240813", "20240814", "20240815", "20240816", "20240817", "20240818", "20240819", "20240820", "20240821", "20240822", "20240823", "20240824", "20240825", "20240826", "20240827", "20240828", "20240829", "20240830", "20240831", "20240901", "20240902", "20240903", "20240904", "20240905", "20240906", "20240907", "20240908", "20240909", "20240910", "20240911", "20240912", "20240913", "20240914", "20240915", "20240916", "20240917", "20240918", "20240919", "20240920", "20240921", "20240922", "20240923", "20240924", "20240925", "20240926", "20240927", "20240928", "20240929", "20240930", "20241001", "20241002", "20241003", "20241004", "20241005", "20241006", "20241007", "20241008", "20241009", "20241010", "20241011", "20241012", "20241013", "20241014", "20241015", "20241016", "20241017", "20241018", "20241019", "20241020", "20241021", "20241022", "20241023", "20241024", "20241025", "20241026", "20241027", "20241028", "20241029", "20241030", "20241031", "20241101", "20241102", "20241103", "20241104", "20241105", "20241106", "20241107", "20241108", "20241109", "20241110", "20241111", "20241112", "20241113", "20241114", "20241115", "20241116", "20241117", "20241118", "20241119", "20241120", "20241121", "20241122", "20241123", "20241124", "20241125", "20241126", "20241127", "20241128", "20241129", "20241130", "20241201", "20241202", "20241203", "20241204", "20241205", "20241206", "20241207", "20241208", "20241209", "20241210", "20241211", "20241212", "20241213", "20241214", "20241215", "20241216", "20241217", "20241218", "20241219", "20241220", "20241221", "20241222", "20241223", "20241224", "20241225", "20241226", "20241227", "20241228", "20241229", "20241230", "20241231"], "model": ["IFS-NEMO"], "resolution": ["standard", "high"], "levtype": ["sfc"], "time": ["0000"], "param": ["129", "172"]}, + {"class": ["d1"], "dataset": ["climate-dt"], "generation": [1], "realization": [1], "expver": ["0001"], "stream": ["clte"], "type": ["fc"], "activity": ["ScenarioMIP"], "experiment": ["SSP3-7.0"], "date": ["20200101", "20200102", "20200103", "20200104", "20200105", "20200106", "20200107", "20200108", "20200109", "20200110", "20200111", "20200112", "20200113", "20200114", "20200115", "20200116", "20200117", "20200118", "20200119", "20200120", "20200121", "20200122", "20200123", "20200124", "20200125", "20200126", "20200127", "20200128", "20200129", "20200130", "20200131", "20200201", "20200202", "20200203", "20200204", "20200205", "20200206", "20200207", "20200208", "20200209", "20200210", "20200211", "20200212", "20200213", "20200214", "20200215", "20200216", "20200217", "20200218", "20200219", "20200220", "20200221", "20200222", "20200223", "20200224", "20200225", "20200226", "20200227", "20200228", "20200229", "20200301", "20200302", "20200303", "20200304", "20200305", "20200306", "20200307", "20200308", "20200309", "20200310", "20200311", "20200312", "20200313", "20200314", "20200315", "20200316", "20200317", "20200318", "20200319", "20200320", "20200321", "20200322", "20200323", "20200324", "20200325", "20200326", "20200327", "20200328", "20200329", "20200330", "20200331", "20200401", "20200402", "20200403", "20200404", "20200405", "20200406", "20200407", "20200408", "20200409", "20200410", "20200411", "20200412", "20200413", "20200414", "20200415", "20200416", "20200417", "20200418", "20200419", "20200420", "20200421", "20200422", "20200423", "20200424", "20200425", "20200426", "20200427", "20200428", "20200429", "20200430", "20200501", "20200502", "20200503", "20200504", "20200505", "20200506", "20200507", "20200508", "20200509", "20200510", "20200511", "20200512", "20200513", "20200514", "20200515", "20200516", "20200517", "20200518", "20200519", "20200520", "20200521", "20200522", "20200523", "20200524", "20200525", "20200526", "20200527", "20200528", "20200529", "20200530", "20200531", "20200601", "20200602", "20200603", "20200604", "20200605", "20200606", "20200607", "20200608", "20200609", "20200610", "20200611", "20200612", "20200613", "20200614", "20200615", "20200616", "20200617", "20200618", "20200619", "20200620", "20200621", "20200622", "20200623", "20200624", "20200625", "20200626", "20200627", "20200628", "20200629", "20200630", "20200701", "20200702", "20200703", "20200704", "20200705", "20200706", "20200707", "20200708", "20200709", "20200710", "20200711", "20200712", "20200713", "20200714", "20200715", "20200716", "20200717", "20200718", "20200719", "20200720", "20200721", "20200722", "20200723", "20200724", "20200725", "20200726", "20200727", "20200728", "20200729", "20200730", "20200731", "20200801", "20200802", "20200803", "20200804", "20200805", "20200806", "20200807", "20200808", "20200809", "20200810", "20200811", "20200812", "20200813", "20200814", "20200815", "20200816", "20200817", "20200818", "20200819", "20200820", "20200821", "20200822", "20200823", "20200824", "20200825", "20200826", "20200827", "20200828", "20200829", "20200830", "20200831", "20200901", "20200902", "20200903", "20200904", "20200905", "20200906", "20200907", "20200908", "20200909", "20200910", "20200911", "20200912", "20200913", "20200914", "20200915", "20200916", "20200917", "20200918", "20200919", "20200920", "20200921", "20200922", "20200923", "20200924", "20200925", "20200926", "20200927", "20200928", "20200929", "20200930", "20201001", "20201002", "20201003", "20201004", "20201005", "20201006", "20201007", "20201008", "20201009", "20201010", "20201011", "20201012", "20201013", "20201014", "20201015", "20201016", "20201017", "20201018", "20201019", "20201020", "20201021", "20201022", "20201023", "20201024", "20201025", "20201026", "20201027", "20201028", "20201029", "20201030", "20201031", "20201101", "20201102", "20201103", "20201104", "20201105", "20201106", "20201107", "20201108", "20201109", "20201110", "20201111", "20201112", "20201113", "20201114", "20201115", "20201116", "20201117", "20201118", "20201119", "20201120", "20201121", "20201122", "20201123", "20201124", "20201125", "20201126", "20201127", "20201128", "20201129", "20201130", "20201201", "20201202", "20201203", "20201204", "20201205", "20201206", "20201207", "20201208", "20201209", "20201210", "20201211", "20201212", "20201213", "20201214", "20201215", "20201216", "20201217", "20201218", "20201219", "20201220", "20201221", "20201222", "20201223", "20201224", "20201225", "20201226", "20201227", "20201228", "20201229", "20201230", "20201231", "20210101", "20210102", "20210103", "20210104", "20210105", "20210106", "20210107", "20210108", "20210109", "20210110", "20210111", "20210112", "20210113", "20210114", "20210115", "20210116", "20210117", "20210118", "20210119", "20210120", "20210121", "20210122", "20210123", "20210124", "20210125", "20210126", "20210127", "20210128", "20210129", "20210130", "20210131", "20210201", "20210202", "20210203", "20210204", "20210205", "20210206", "20210207", "20210208", "20210209", "20210210", "20210211", "20210212", "20210213", "20210214", "20210215", "20210216", "20210217", "20210218", "20210219", "20210220", "20210221", "20210222", "20210223", "20210224", "20210225", "20210226", "20210227", "20210228", "20210301", "20210302", "20210303", "20210304", "20210305", "20210306", "20210307", "20210308", "20210309", "20210310", "20210311", "20210312", "20210313", "20210314", "20210315", "20210316", "20210317", "20210318", "20210319", "20210320", "20210321", "20210322", "20210323", "20210324", "20210325", "20210326", "20210327", "20210328", "20210329", "20210330", "20210331", "20210401", "20210402", "20210403", "20210404", "20210405", "20210406", "20210407", "20210408", "20210409", "20210410", "20210411", "20210412", "20210413", "20210414", "20210415", "20210416", "20210417", "20210418", "20210419", "20210420", "20210421", "20210422", "20210423", "20210424", "20210425", "20210426", "20210427", "20210428", "20210429", "20210430", "20210501", "20210502", "20210503", "20210504", "20210505", "20210506", "20210507", "20210508", "20210509", "20210510", "20210511", "20210512", "20210513", "20210514", "20210515", "20210516", "20210517", "20210518", "20210519", "20210520", "20210521", "20210522", "20210523", "20210524", "20210525", "20210526", "20210527", "20210528", "20210529", "20210530", "20210531", "20210601", "20210602", "20210603", "20210604", "20210605", "20210606", "20210607", "20210608", "20210609", "20210610", "20210611", "20210612", "20210613", "20210614", "20210615", "20210616", "20210617", "20210618", "20210619", "20210620", "20210621", "20210622", "20210623", "20210624", "20210625", "20210626", "20210627", "20210628", "20210629", "20210630", "20210701", "20210702", "20210703", "20210704", "20210705", "20210706", "20210707", "20210708", "20210709", "20210710", "20210711", "20210712", "20210713", "20210714", "20210715", "20210716", "20210717", "20210718", "20210719", "20210720", "20210721", "20210722", "20210723", "20210724", "20210725", "20210726", "20210727", "20210728", "20210729", "20210730", "20210731", "20210801", "20210802", "20210803", "20210804", "20210805", "20210806", "20210807", "20210808", "20210809", "20210810", "20210811", "20210812", "20210813", "20210814", "20210815", "20210816", "20210817", "20210818", "20210819", "20210820", "20210821", "20210822", "20210823", "20210824", "20210825", "20210826", "20210827", "20210828", "20210829", "20210830", "20210831", "20210901", "20210902", "20210903", "20210904", "20210905", "20210906", "20210907", "20210908", "20210909", "20210910", "20210911", "20210912", "20210913", "20210914", "20210915", "20210916", "20210917", "20210918", "20210919", "20210920", "20210921", "20210922", "20210923", "20210924", "20210925", "20210926", "20210927", "20210928", "20210929", "20210930", "20211001", "20211002", "20211003", "20211004", "20211005", "20211006", "20211007", "20211008", "20211009", "20211010", "20211011", "20211012", "20211013", "20211014", "20211015", "20211016", "20211017", "20211018", "20211019", "20211020", "20211021", "20211022", "20211023", "20211024", "20211025", "20211026", "20211027", "20211028", "20211029", "20211030", "20211031", "20211101", "20211102", "20211103", "20211104", "20211105", "20211106", "20211107", "20211108", "20211109", "20211110", "20211111", "20211112", "20211113", "20211114", "20211115", "20211116", "20211117", "20211118", "20211119", "20211120", "20211121", "20211122", "20211123", "20211124", "20211125", "20211126", "20211127", "20211128", "20211129", "20211130", "20211201", "20211202", "20211203", "20211204", "20211205", "20211206", "20211207", "20211208", "20211209", "20211210", "20211211", "20211212", "20211213", "20211214", "20211215", "20211216", "20211217", "20211218", "20211219", "20211220", "20211221", "20211222", "20211223", "20211224", "20211225", "20211226", "20211227", "20211228", "20211229", "20211230", "20211231", "20220101", "20220102", "20220103", "20220104", "20220105", "20220106", "20220107", "20220108", "20220109", "20220110", "20220111", "20220112", "20220113", "20220114", "20220115", "20220116", "20220117", "20220118", "20220119", "20220120", "20220121", "20220122", "20220123", "20220124", "20220125", "20220126", "20220127", "20220128", "20220129", "20220130", "20220131", "20220201", "20220202", "20220203", "20220204", "20220205", "20220206", "20220207", "20220208", "20220209", "20220210", "20220211", "20220212", "20220213", "20220214", "20220215", "20220216", "20220217", "20220218", "20220219", "20220220", "20220221", "20220222", "20220223", "20220224", "20220225", "20220226", "20220227", "20220228", "20220301", "20220302", "20220303", "20220304", "20220305", "20220306", "20220307", "20220308", "20220309", "20220310", "20220311", "20220312", "20220313", "20220314", "20220315", "20220316", "20220317", "20220318", "20220319", "20220320", "20220321", "20220322", "20220323", "20220324", "20220325", "20220326", "20220327", "20220328", "20220329", "20220330", "20220331", "20220401", "20220402", "20220403", "20220404", "20220405", "20220406", "20220407", "20220408", "20220409", "20220410", "20220411", "20220412", "20220413", "20220414", "20220415", "20220416", "20220417", "20220418", "20220419", "20220420", "20220421", "20220422", "20220423", "20220424", "20220425", "20220426", "20220427", "20220428", "20220429", "20220430", "20220501", "20220502", "20220503", "20220504", "20220505", "20220506", "20220507", "20220508", "20220509", "20220510", "20220511", "20220512", "20220513", "20220514", "20220515", "20220516", "20220517", "20220518", "20220519", "20220520", "20220521", "20220522", "20220523", "20220524", "20220525", "20220526", "20220527", "20220528", "20220529", "20220530", "20220531", "20220601", "20220602", "20220603", "20220604", "20220605", "20220606", "20220607", "20220608", "20220609", "20220610", "20220611", "20220612", "20220613", "20220614", "20220615", "20220616", "20220617", "20220618", "20220619", "20220620", "20220621", "20220622", "20220623", "20220624", "20220625", "20220626", "20220627", "20220628", "20220629", "20220630", "20220701", "20220702", "20220703", "20220704", "20220705", "20220706", "20220707", "20220708", "20220709", "20220710", "20220711", "20220712", "20220713", "20220714", "20220715", "20220716", "20220717", "20220718", "20220719", "20220720", "20220721", "20220722", "20220723", "20220724", "20220725", "20220726", "20220727", "20220728", "20220729", "20220730", "20220731", "20220801", "20220802", "20220803", "20220804", "20220805", "20220806", "20220807", "20220808", "20220809", "20220810", "20220811", "20220812", "20220813", "20220814", "20220815", "20220816", "20220817", "20220818", "20220819", "20220820", "20220821", "20220822", "20220823", "20220824", "20220825", "20220826", "20220827", "20220828", "20220829", "20220830", "20220831", "20220901", "20220902", "20220903", "20220904", "20220905", "20220906", "20220907", "20220908", "20220909", "20220910", "20220911", "20220912", "20220913", "20220914", "20220915", "20220916", "20220917", "20220918", "20220919", "20220920", "20220921", "20220922", "20220923", "20220924", "20220925", "20220926", "20220927", "20220928", "20220929", "20220930", "20221001", "20221002", "20221003", "20221004", "20221005", "20221006", "20221007", "20221008", "20221009", "20221010", "20221011", "20221012", "20221013", "20221014", "20221015", "20221016", "20221017", "20221018", "20221019", "20221020", "20221021", "20221022", "20221023", "20221024", "20221025", "20221026", "20221027", "20221028", "20221029", "20221030", "20221031", "20221101", "20221102", "20221103", "20221104", "20221105", "20221106", "20221107", "20221108", "20221109", "20221110", "20221111", "20221112", "20221113", "20221114", "20221115", "20221116", "20221117", "20221118", "20221119", "20221120", "20221121", "20221122", "20221123", "20221124", "20221125", "20221126", "20221127", "20221128", "20221129", "20221130", "20221201", "20221202", "20221203", "20221204", "20221205", "20221206", "20221207", "20221208", "20221209", "20221210", "20221211", "20221212", "20221213", "20221214", "20221215", "20221216", "20221217", "20221218", "20221219", "20221220", "20221221", "20221222", "20221223", "20221224", "20221225", "20221226", "20221227", "20221228", "20221229", "20221230", "20221231", "20230101", "20230102", "20230103", "20230104", "20230105", "20230106", "20230107", "20230108", "20230109", "20230110", "20230111", "20230112", "20230113", "20230114", "20230115", "20230116", "20230117", "20230118", "20230119", "20230120", "20230121", "20230122", "20230123", "20230124", "20230125", "20230126", "20230127", "20230128", "20230129", "20230130", "20230131", "20230201", "20230202", "20230203", "20230204", "20230205", "20230206", "20230207", "20230208", "20230209", "20230210", "20230211", "20230212", "20230213", "20230214", "20230215", "20230216", "20230217", "20230218", "20230219", "20230220", "20230221", "20230222", "20230223", "20230224", "20230225", "20230226", "20230227", "20230228", "20230301", "20230302", "20230303", "20230304", "20230305", "20230306", "20230307", "20230308", "20230309", "20230310", "20230311", "20230312", "20230313", "20230314", "20230315", "20230316", "20230317", "20230318", "20230319", "20230320", "20230321", "20230322", "20230323", "20230324", "20230325", "20230326", "20230327", "20230328", "20230329", "20230330", "20230331", "20230401", "20230402", "20230403", "20230404", "20230405", "20230406", "20230407", "20230408", "20230409", "20230410", "20230411", "20230412", "20230413", "20230414", "20230415", "20230416", "20230417", "20230418", "20230419", "20230420", "20230421", "20230422", "20230423", "20230424", "20230425", "20230426", "20230427", "20230428", "20230429", "20230430", "20230501", "20230502", "20230503", "20230504", "20230505", "20230506", "20230507", "20230508", "20230509", "20230510", "20230511", "20230512", "20230513", "20230514", "20230515", "20230516", "20230517", "20230518", "20230519", "20230520", "20230521", "20230522", "20230523", "20230524", "20230525", "20230526", "20230527", "20230528", "20230529", "20230530", "20230531", "20230601", "20230602", "20230603", "20230604", "20230605", "20230606", "20230607", "20230608", "20230609", "20230610", "20230611", "20230612", "20230613", "20230614", "20230615", "20230616", "20230617", "20230618", "20230619", "20230620", "20230621", "20230622", "20230623", "20230624", "20230625", "20230626", "20230627", "20230628", "20230629", "20230630", "20230701", "20230702", "20230703", "20230704", "20230705", "20230706", "20230707", "20230708", "20230709", "20230710", "20230711", "20230712", "20230713", "20230714", "20230715", "20230716", "20230717", "20230718", "20230719", "20230720", "20230721", "20230722", "20230723", "20230724", "20230725", "20230726", "20230727", "20230728", "20230729", "20230730", "20230731", "20230801", "20230802", "20230803", "20230804", "20230805", "20230806", "20230807", "20230808", "20230809", "20230810", "20230811", "20230812", "20230813", "20230814", "20230815", "20230816", "20230817", "20230818", "20230819", "20230820", "20230821", "20230822", "20230823", "20230824", "20230825", "20230826", "20230827", "20230828", "20230829", "20230830", "20230831", "20230901", "20230902", "20230903", "20230904", "20230905", "20230906", "20230907", "20230908", "20230909", "20230910", "20230911", "20230912", "20230913", "20230914", "20230915", "20230916", "20230917", "20230918", "20230919", "20230920", "20230921", "20230922", "20230923", "20230924", "20230925", "20230926", "20230927", "20230928", "20230929", "20230930", "20231001", "20231002", "20231003", "20231004", "20231005", "20231006", "20231007", "20231008", "20231009", "20231010", "20231011", "20231012", "20231013", "20231014", "20231015", "20231016", "20231017", "20231018", "20231019", "20231020", "20231021", "20231022", "20231023", "20231024", "20231025", "20231026", "20231027", "20231028", "20231029", "20231030", "20231031", "20231101", "20231102", "20231103", "20231104", "20231105", "20231106", "20231107", "20231108", "20231109", "20231110", "20231111", "20231112", "20231113", "20231114", "20231115", "20231116", "20231117", "20231118", "20231119", "20231120", "20231121", "20231122", "20231123", "20231124", "20231125", "20231126", "20231127", "20231128", "20231129", "20231130", "20231201", "20231202", "20231203", "20231204", "20231205", "20231206", "20231207", "20231208", "20231209", "20231210", "20231211", "20231212", "20231213", "20231214", "20231215", "20231216", "20231217", "20231218", "20231219", "20231220", "20231221", "20231222", "20231223", "20231224", "20231225", "20231226", "20231227", "20231228", "20231229", "20231230", "20231231", "20240101", "20240102", "20240103", "20240104", "20240105", "20240106", "20240107", "20240108", "20240109", "20240110", "20240111", "20240112", "20240113", "20240114", "20240115", "20240116", "20240117", "20240118", "20240119", "20240120", "20240121", "20240122", "20240123", "20240124", "20240125", "20240126", "20240127", "20240128", "20240129", "20240130", "20240131", "20240201", "20240202", "20240203", "20240204", "20240205", "20240206", "20240207", "20240208", "20240209", "20240210", "20240211", "20240212", "20240213", "20240214", "20240215", "20240216", "20240217", "20240218", "20240219", "20240220", "20240221", "20240222", "20240223", "20240224", "20240225", "20240226", "20240227", "20240228", "20240229", "20240301", "20240302", "20240303", "20240304", "20240305", "20240306", "20240307", "20240308", "20240309", "20240310", "20240311", "20240312", "20240313", "20240314", "20240315", "20240316", "20240317", "20240318", "20240319", "20240320", "20240321", "20240322", "20240323", "20240324", "20240325", "20240326", "20240327", "20240328", "20240329", "20240330", "20240331", "20240401", "20240402", "20240403", "20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412", "20240413", "20240414", "20240415", "20240416", "20240417", "20240418", "20240419", "20240420", "20240421", "20240422", "20240423", "20240424", "20240425", "20240426", "20240427", "20240428", "20240429", "20240430", "20240501", "20240502", "20240503", "20240504", "20240505", "20240506", "20240507", "20240508", "20240509", "20240510", "20240511", "20240512", "20240513", "20240514", "20240515", "20240516", "20240517", "20240518", "20240519", "20240520", "20240521", "20240522", "20240523", "20240524", "20240525", "20240526", "20240527", "20240528", "20240529", "20240530", "20240531", "20240601", "20240602", "20240603", "20240604", "20240605", "20240606", "20240607", "20240608", "20240609", "20240610", "20240611", "20240612", "20240613", "20240614", "20240615", "20240616", "20240617", "20240618", "20240619", "20240620", "20240621", "20240622", "20240623", "20240624", "20240625", "20240626", "20240627", "20240628", "20240629", "20240630", "20240701", "20240702", "20240703", "20240704", "20240705", "20240706", "20240707", "20240708", "20240709", "20240710", "20240711", "20240712", "20240713", "20240714", "20240715", "20240716", "20240717", "20240718", "20240719", "20240720", "20240721", "20240722", "20240723", "20240724", "20240725", "20240726", "20240727", "20240728", "20240729", "20240730", "20240731", "20240801", "20240802", "20240803", "20240804", "20240805", "20240806", "20240807", "20240808", "20240809", "20240810", "20240811", "20240812", "20240813", "20240814", "20240815", "20240816", "20240817", "20240818", "20240819", "20240820", "20240821", "20240822", "20240823", "20240824", "20240825", "20240826", "20240827", "20240828", "20240829", "20240830", "20240831", "20240901", "20240902", "20240903", "20240904", "20240905", "20240906", "20240907", "20240908", "20240909", "20240910", "20240911", "20240912", "20240913", "20240914", "20240915", "20240916", "20240917", "20240918", "20240919", "20240920", "20240921", "20240922", "20240923", "20240924", "20240925", "20240926", "20240927", "20240928", "20240929", "20240930", "20241001", "20241002", "20241003", "20241004", "20241005", "20241006", "20241007", "20241008", "20241009", "20241010", "20241011", "20241012", "20241013", "20241014", "20241015", "20241016", "20241017", "20241018", "20241019", "20241020", "20241021", "20241022", "20241023", "20241024", "20241025", "20241026", "20241027", "20241028", "20241029", "20241030", "20241031", "20241101", "20241102", "20241103", "20241104", "20241105", "20241106", "20241107", "20241108", "20241109", "20241110", "20241111", "20241112", "20241113", "20241114", "20241115", "20241116", "20241117", "20241118", "20241119", "20241120", "20241121", "20241122", "20241123", "20241124", "20241125", "20241126", "20241127", "20241128", "20241129", "20241130", "20241201", "20241202", "20241203", "20241204", "20241205", "20241206", "20241207", "20241208", "20241209", "20241210", "20241211", "20241212", "20241213", "20241214", "20241215", "20241216", "20241217", "20241218", "20241219", "20241220", "20241221", "20241222", "20241223", "20241224", "20241225", "20241226", "20241227", "20241228", "20241229", "20241230", "20241231"], "model": ["IFS-NEMO"], "resolution": ["standard", "high"], "levtype": ["sol"], "levelist": ["1", "2", "3", "4", "5"], "time": ["0000", "0100", "0200", "0300", "0400", "0500", "0600", "0700", "0800", "0900", "1000", "1100", "1200", "1300", "1400", "1500", "1600", "1700", "1800", "1900", "2000", "2100", "2200", "2300"], "param": ["228141"]} +] diff --git a/eodag/resources/constraints/extremes-dt.json b/eodag/resources/constraints/extremes-dt.json new file mode 100644 index 000000000..658ef1e27 --- /dev/null +++ b/eodag/resources/constraints/extremes-dt.json @@ -0,0 +1,8 @@ +[ + {"class": ["d1"], "dataset": ["extremes-dt"], "expver": ["0001"], "type": ["fc"], "date": ["20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412"], "time": ["0000"], "stream": ["oper"], "levtype": ["hl"], "levelist": ["100"], "step": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96"], "param": ["228246", "228247"]}, + {"class": ["d1"], "dataset": ["extremes-dt"], "expver": ["0001"], "type": ["fc"], "date": ["20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412"], "time": ["0000"], "stream": ["oper"], "levtype": ["pl"], "levelist": ["1000", "925", "850", "700", "600", "500", "400", "300", "250", "200", "150", "100", "70", "50", "30", "20", "10", "5", "1"], "step": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96"], "param": ["129", "130", "131", "132", "133", "157"]}, + {"class": ["d1"], "dataset": ["extremes-dt"], "expver": ["0001"], "type": ["fc"], "date": ["20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412"], "time": ["0000"], "stream": ["oper"], "levtype": ["sfc"], "step": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96"], "param": ["31", "34", "78", "134", "136", "137", "151", "165", "166", "167", "168", "3020", "228029", "228050", "228218", "228219", "228221", "228235", "260015"]}, + {"class": ["d1"], "dataset": ["extremes-dt"], "expver": ["0001"], "type": ["fc"], "date": ["20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412"], "time": ["0000"], "stream": ["oper"], "levtype": ["sfc"], "step": ["0-1", "1-2", "2-3", "3-4", "4-5", "5-6", "6-7", "7-8", "8-9", "9-10", "10-11", "11-12", "12-13", "13-14", "14-15", "15-16", "16-17", "17-18", "18-19", "19-20", "20-21", "21-22", "22-23", "23-24", "24-25", "25-26", "26-27", "27-28", "28-29", "29-30", "30-31", "31-32", "32-33", "33-34", "34-35", "35-36", "36-37", "37-38", "38-39", "39-40", "40-41", "41-42", "42-43", "43-44", "44-45", "45-46", "46-47", "47-48", "48-49", "49-50", "50-51", "51-52", "52-53", "53-54", "54-55", "55-56", "56-57", "57-58", "58-59", "59-60", "60-61", "61-62", "62-63", "63-64", "64-65", "65-66", "66-67", "67-68", "68-69", "69-70", "70-71", "71-72", "72-73", "73-74", "74-75", "75-76", "76-77", "77-78", "78-79", "79-80", "80-81", "81-82", "82-83", "83-84", "84-85", "85-86", "86-87", "87-88", "88-89", "89-90", "90-91", "91-92", "92-93", "93-94", "94-95", "95-96"], "param": ["142", "144", "169", "175", "176", "177", "178", "179", "180", "181", "205", "228", "228216"]}, + {"class": ["d1"], "dataset": ["extremes-dt"], "expver": ["0001"], "type": ["fc"], "date": ["20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412"], "time": ["0000"], "stream": ["oper"], "levtype": ["sfc"], "step": ["0-6", "6-12", "12-18", "18-24", "24-30", "30-36", "36-42", "42-48", "48-54", "54-60", "60-66", "66-72", "72-78", "78-84", "84-90", "90-96"], "param": ["228058"]}, + {"class": ["d1"], "dataset": ["extremes-dt"], "expver": ["0001"], "type": ["fc"], "date": ["20240404", "20240405", "20240406", "20240407", "20240408", "20240409", "20240410", "20240411", "20240412"], "time": ["0000"], "stream": ["wave"], "levtype": ["sfc"], "step": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96"], "param": ["140221", "140229", "140230", "140231", "140232"]} +] diff --git a/eodag/resources/ext_product_types.json b/eodag/resources/ext_product_types.json index 989fd46a5..af0dea485 100644 --- a/eodag/resources/ext_product_types.json +++ b/eodag/resources/ext_product_types.json @@ -1 +1 @@ -{"astraea_eod": {"providers_config": {"landsat8_c2l1t1": {"productType": "landsat8_c2l1t1"}, "mcd43a4": {"productType": "mcd43a4"}, "mod11a1": {"productType": "mod11a1"}, "mod13a1": {"productType": "mod13a1"}, "myd11a1": {"productType": "myd11a1"}, "myd13a1": {"productType": "myd13a1"}, "maxar_open_data": {"productType": "maxar_open_data"}, "naip": {"productType": "naip"}, "sentinel1_l1c_grd": {"productType": "sentinel1_l1c_grd"}, "sentinel2_l1c": {"productType": "sentinel2_l1c"}, "sentinel2_l2a": {"productType": "sentinel2_l2a"}, "spacenet7": {"productType": "spacenet7"}, "umbra_open_data": {"productType": "umbra_open_data"}}, "product_types_config": {"landsat8_c2l1t1": {"abstract": "Landsat 8 Collection 2 Tier 1 Precision Terrain from Landsat 8 Operational Land Imager (OLI) and Thermal Infrared Sensor (TIRS) data", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "landsat8-c2l1t1", "license": "PDDL-1.0", "title": "Landsat 8 - Level 1", "missionStartDate": "2013-03-18T15:59:02.333Z"}, "mcd43a4": {"abstract": "MCD43A4: MODIS/Terra and Aqua Nadir BRDF-Adjusted Reflectance Daily L3 Global 500 m SIN Grid V006", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "mcd43a4", "license": "CC-PDDC", "title": "MCD43A4 NBAR", "missionStartDate": "2000-02-16T00:00:00.000Z"}, "mod11a1": {"abstract": "MOD11A1: MODIS/Terra Land Surface Temperature/Emissivity Daily L3 Global 1 km SIN Grid V006", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "mod11a1", "license": "CC-PDDC", "title": "MOD11A1 LST", "missionStartDate": "2000-02-24T00:00:00.000Z"}, "mod13a1": {"abstract": "MOD13A1: MODIS/Terra Vegetation Indices 16-Day L3 Global 500 m SIN Grid V006", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "mod13a1", "license": "CC-PDDC", "title": "MOD13A1 VI", "missionStartDate": "2000-02-18T00:00:00.000Z"}, "myd11a1": {"abstract": "MYD11A1: MODIS/Aqua Land Surface Temperature/Emissivity Daily L3 Global 1 km SIN Grid V006", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "myd11a1", "license": "CC-PDDC", "title": "MYD11A1 LST", "missionStartDate": "2002-07-04T00:00:00.000Z"}, "myd13a1": {"abstract": "MYD13A1: MODIS/Aqua Vegetation Indices 16-Day L3 Global 500 m SIN Grid V006", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "myd13a1", "license": "CC-PDDC", "title": "MYD13A1 VI", "missionStartDate": "2002-07-04T00:00:00.000Z"}, "maxar_open_data": {"abstract": "Maxar Open Data", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "maxar-open-data", "license": "CC-BY-NC-4.0", "title": "Maxar Open Data", "missionStartDate": "2008-01-15T00:00:00.000Z"}, "naip": {"abstract": "National Agriculture Imagery Program aerial imagery", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "naip", "license": "CC-PDDC", "title": "NAIP", "missionStartDate": "2012-04-23T12:00:00.000Z"}, "sentinel1_l1c_grd": {"abstract": "Sentinel-1 Level-1 Ground Range Detected data", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "sentinel1-l1c-grd", "license": "CC-BY-SA-3.0", "title": "Sentinel-1 L1C GRD", "missionStartDate": "2017-09-27T14:19:16.000"}, "sentinel2_l1c": {"abstract": "Sentinel-2 Level-1C top of atmosphere", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "sentinel2-l1c", "license": "CC-BY-SA-3.0", "title": "Sentinel-2 L1C", "missionStartDate": "2015-06-27T10:25:31.456Z"}, "sentinel2_l2a": {"abstract": "Sentinel-2 Level-2A atmospherically corrected data", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "sentinel2-l2a", "license": "CC-BY-SA-3.0", "title": "Sentinel-2 L2A", "missionStartDate": "2018-04-01T07:02:22.463Z"}, "spacenet7": {"abstract": "SpaceNet 7 Imagery and Labels", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "spacenet7", "license": "CC-BY-SA-4.0", "title": "SpaceNet 7", "missionStartDate": "2018-01-01T00:00:00.000Z"}, "umbra_open_data": {"abstract": "Umbra Open Data", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "umbra-open-data", "license": "proprietary", "title": "Umbra Open Data", "missionStartDate": null}}}, "creodias": {"providers_config": {"Sentinel1": {"collection": "Sentinel1"}, "Sentinel1RTC": {"collection": "Sentinel1RTC"}, "Sentinel2": {"collection": "Sentinel2"}, "Sentinel3": {"collection": "Sentinel3"}, "Sentinel5P": {"collection": "Sentinel5P"}, "Sentinel6": {"collection": "Sentinel6"}, "Landsat5": {"collection": "Landsat5"}, "Landsat7": {"collection": "Landsat7"}, "Landsat8": {"collection": "Landsat8"}, "Envisat": {"collection": "Envisat"}, "SMOS": {"collection": "SMOS"}, "S2GLC": {"collection": "S2GLC"}, "CopDem": {"collection": "CopDem"}}, "product_types_config": {"Sentinel1": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "sentinel1", "license": null, "title": null, "missionStartDate": null}, "Sentinel1RTC": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "sentinel1rtc", "license": null, "title": null, "missionStartDate": null}, "Sentinel2": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "sentinel2", "license": null, "title": null, "missionStartDate": null}, "Sentinel3": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "sentinel3", "license": null, "title": null, "missionStartDate": null}, "Sentinel5P": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "sentinel5p", "license": null, "title": null, "missionStartDate": null}, "Sentinel6": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "sentinel6", "license": null, "title": null, "missionStartDate": null}, "Landsat5": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "landsat5", "license": null, "title": null, "missionStartDate": null}, "Landsat7": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "landsat7", "license": null, "title": null, "missionStartDate": null}, "Landsat8": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "landsat8", "license": null, "title": null, "missionStartDate": null}, "Envisat": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "envisat", "license": null, "title": null, "missionStartDate": null}, "SMOS": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "smos", "license": null, "title": null, "missionStartDate": null}, "S2GLC": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "s2glc", "license": null, "title": null, "missionStartDate": null}, "CopDem": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "copdem", "license": null, "title": null, "missionStartDate": null}}}, "earth_search": {"providers_config": {"cop-dem-glo-30": {"productType": "cop-dem-glo-30"}, "naip": {"productType": "naip"}, "sentinel-2-l2a": {"productType": "sentinel-2-l2a"}, "sentinel-2-l1c": {"productType": "sentinel-2-l1c"}, "cop-dem-glo-90": {"productType": "cop-dem-glo-90"}, "landsat-c2-l2": {"productType": "landsat-c2-l2"}, "sentinel-1-grd": {"productType": "sentinel-1-grd"}, "sentinel-2-c1-l2a": {"productType": "sentinel-2-c1-l2a"}}, "product_types_config": {"cop-dem-glo-30": {"abstract": "The Copernicus DEM is a Digital Surface Model (DSM) which represents the surface of the Earth including buildings, infrastructure and vegetation. GLO-30 Public provides limited worldwide coverage at 30 meters because a small subset of tiles covering specific countries are not yet released to the public by the Copernicus Programme.", "instrument": null, "platform": null, "platformSerialIdentifier": "tandem-x", "processingLevel": null, "keywords": "cop-dem-glo-30,copernicus,dem,dsm,elevation,tandem-x", "license": "proprietary", "title": "Copernicus DEM GLO-30", "missionStartDate": "2021-04-22T00:00:00Z"}, "naip": {"abstract": "The [National Agriculture Imagery Program](https://www.fsa.usda.gov/programs-and-services/aerial-photography/imagery-programs/naip-imagery/) (NAIP) provides U.S.-wide, high-resolution aerial imagery, with four spectral bands (R, G, B, IR). NAIP is administered by the [Aerial Field Photography Office](https://www.fsa.usda.gov/programs-and-services/aerial-photography/) (AFPO) within the [US Department of Agriculture](https://www.usda.gov/) (USDA). Data are captured at least once every three years for each state. This dataset represents NAIP data from 2010-present, in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "aerial,afpo,agriculture,imagery,naip,united-states,usda", "license": "proprietary", "title": "NAIP: National Agriculture Imagery Program", "missionStartDate": "2010-01-01T00:00:00Z"}, "sentinel-2-l2a": {"abstract": "Global Sentinel-2 data from the Multispectral Instrument (MSI) onboard Sentinel-2", "instrument": "msi", "platform": "sentinel-2", "platformSerialIdentifier": "sentinel-2a,sentinel-2b", "processingLevel": null, "keywords": "earth-observation,esa,msi,sentinel,sentinel-2,sentinel-2-l2a,sentinel-2a,sentinel-2b", "license": "proprietary", "title": "Sentinel-2 Level 2A", "missionStartDate": "2015-06-27T10:25:31.456000Z"}, "sentinel-2-l1c": {"abstract": "Global Sentinel-2 data from the Multispectral Instrument (MSI) onboard Sentinel-2", "instrument": "msi", "platform": "sentinel-2", "platformSerialIdentifier": "sentinel-2a,sentinel-2b", "processingLevel": null, "keywords": "earth-observation,esa,msi,sentinel,sentinel-2,sentinel-2-l1c,sentinel-2a,sentinel-2b", "license": "proprietary", "title": "Sentinel-2 Level 1C", "missionStartDate": "2015-06-27T10:25:31.456000Z"}, "cop-dem-glo-90": {"abstract": "The Copernicus DEM is a Digital Surface Model (DSM) which represents the surface of the Earth including buildings, infrastructure and vegetation. GLO-90 provides worldwide coverage at 90 meters.", "instrument": null, "platform": null, "platformSerialIdentifier": "tandem-x", "processingLevel": null, "keywords": "cop-dem-glo-90,copernicus,dem,elevation,tandem-x", "license": "proprietary", "title": "Copernicus DEM GLO-90", "missionStartDate": "2021-04-22T00:00:00Z"}, "landsat-c2-l2": {"abstract": "Atmospherically corrected global Landsat Collection 2 Level-2 data from the Thematic Mapper (TM) onboard Landsat 4 and 5, the Enhanced Thematic Mapper Plus (ETM+) onboard Landsat 7, and the Operational Land Imager (OLI) and Thermal Infrared Sensor (TIRS) onboard Landsat 8 and 9.", "instrument": "tm,etm+,oli,tirs", "platform": null, "platformSerialIdentifier": "landsat-4,landsat-5,landsat-7,landsat-8,landsat-9", "processingLevel": null, "keywords": "etm+,global,imagery,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2-l2,nasa,oli,reflectance,satellite,temperature,tirs,tm,usgs", "license": "proprietary", "title": "Landsat Collection 2 Level-2", "missionStartDate": "1982-08-22T00:00:00Z"}, "sentinel-1-grd": {"abstract": "Sentinel-1 is a pair of Synthetic Aperture Radar (SAR) imaging satellites launched in 2014 and 2016 by the European Space Agency (ESA). Their 6 day revisit cycle and ability to observe through clouds makes this dataset perfect for sea and land monitoring, emergency response due to environmental disasters, and economic applications. This dataset represents the global Sentinel-1 GRD archive, from beginning to the present, converted to cloud-optimized GeoTIFF format.", "instrument": null, "platform": "sentinel-1", "platformSerialIdentifier": "sentinel-1a,sentinel-1b", "processingLevel": null, "keywords": "c-band,copernicus,esa,grd,sar,sentinel,sentinel-1,sentinel-1-grd,sentinel-1a,sentinel-1b", "license": "proprietary", "title": "Sentinel-1 Level 1C Ground Range Detected (GRD)", "missionStartDate": "2014-10-10T00:28:21Z"}, "sentinel-2-c1-l2a": {"abstract": "Sentinel-2 Collection 1 L2A, data from the Multispectral Instrument (MSI) onboard Sentinel-2", "instrument": "msi", "platform": "sentinel-2", "platformSerialIdentifier": "sentinel-2a,sentinel-2b", "processingLevel": null, "keywords": "earth-observation,esa,msi,sentinel,sentinel-2,sentinel-2-c1-l2a,sentinel-2a,sentinel-2b", "license": "proprietary", "title": "Sentinel-2 Collection 1 Level-2A", "missionStartDate": "2015-06-27T10:25:31.456000Z"}}}, "earth_search_cog": null, "earth_search_gcs": null, "planetary_computer": {"providers_config": {"daymet-annual-pr": {"productType": "daymet-annual-pr"}, "daymet-daily-hi": {"productType": "daymet-daily-hi"}, "3dep-seamless": {"productType": "3dep-seamless"}, "3dep-lidar-dsm": {"productType": "3dep-lidar-dsm"}, "fia": {"productType": "fia"}, "sentinel-1-rtc": {"productType": "sentinel-1-rtc"}, "gridmet": {"productType": "gridmet"}, "daymet-annual-na": {"productType": "daymet-annual-na"}, "daymet-monthly-na": {"productType": "daymet-monthly-na"}, "daymet-annual-hi": {"productType": "daymet-annual-hi"}, "daymet-monthly-hi": {"productType": "daymet-monthly-hi"}, "daymet-monthly-pr": {"productType": "daymet-monthly-pr"}, "gnatsgo-tables": {"productType": "gnatsgo-tables"}, "hgb": {"productType": "hgb"}, "cop-dem-glo-30": {"productType": "cop-dem-glo-30"}, "cop-dem-glo-90": {"productType": "cop-dem-glo-90"}, "goes-cmi": {"productType": "goes-cmi"}, "terraclimate": {"productType": "terraclimate"}, "nasa-nex-gddp-cmip6": {"productType": "nasa-nex-gddp-cmip6"}, "gpm-imerg-hhr": {"productType": "gpm-imerg-hhr"}, "gnatsgo-rasters": {"productType": "gnatsgo-rasters"}, "3dep-lidar-hag": {"productType": "3dep-lidar-hag"}, "io-lulc-annual-v02": {"productType": "io-lulc-annual-v02"}, "3dep-lidar-intensity": {"productType": "3dep-lidar-intensity"}, "3dep-lidar-pointsourceid": {"productType": "3dep-lidar-pointsourceid"}, "mtbs": {"productType": "mtbs"}, "noaa-c-cap": {"productType": "noaa-c-cap"}, "3dep-lidar-copc": {"productType": "3dep-lidar-copc"}, "modis-64A1-061": {"productType": "modis-64A1-061"}, "alos-fnf-mosaic": {"productType": "alos-fnf-mosaic"}, "3dep-lidar-returns": {"productType": "3dep-lidar-returns"}, "mobi": {"productType": "mobi"}, "landsat-c2-l2": {"productType": "landsat-c2-l2"}, "era5-pds": {"productType": "era5-pds"}, "chloris-biomass": {"productType": "chloris-biomass"}, "kaza-hydroforecast": {"productType": "kaza-hydroforecast"}, "planet-nicfi-analytic": {"productType": "planet-nicfi-analytic"}, "modis-17A2H-061": {"productType": "modis-17A2H-061"}, "modis-11A2-061": {"productType": "modis-11A2-061"}, "daymet-daily-pr": {"productType": "daymet-daily-pr"}, "3dep-lidar-dtm-native": {"productType": "3dep-lidar-dtm-native"}, "3dep-lidar-classification": {"productType": "3dep-lidar-classification"}, "3dep-lidar-dtm": {"productType": "3dep-lidar-dtm"}, "gap": {"productType": "gap"}, "modis-17A2HGF-061": {"productType": "modis-17A2HGF-061"}, "planet-nicfi-visual": {"productType": "planet-nicfi-visual"}, "gbif": {"productType": "gbif"}, "modis-17A3HGF-061": {"productType": "modis-17A3HGF-061"}, "modis-09A1-061": {"productType": "modis-09A1-061"}, "alos-dem": {"productType": "alos-dem"}, "alos-palsar-mosaic": {"productType": "alos-palsar-mosaic"}, "deltares-water-availability": {"productType": "deltares-water-availability"}, "modis-16A3GF-061": {"productType": "modis-16A3GF-061"}, "modis-21A2-061": {"productType": "modis-21A2-061"}, "us-census": {"productType": "us-census"}, "jrc-gsw": {"productType": "jrc-gsw"}, "deltares-floods": {"productType": "deltares-floods"}, "modis-43A4-061": {"productType": "modis-43A4-061"}, "modis-09Q1-061": {"productType": "modis-09Q1-061"}, "modis-14A1-061": {"productType": "modis-14A1-061"}, "hrea": {"productType": "hrea"}, "modis-13Q1-061": {"productType": "modis-13Q1-061"}, "modis-14A2-061": {"productType": "modis-14A2-061"}, "sentinel-2-l2a": {"productType": "sentinel-2-l2a"}, "modis-15A2H-061": {"productType": "modis-15A2H-061"}, "modis-11A1-061": {"productType": "modis-11A1-061"}, "modis-15A3H-061": {"productType": "modis-15A3H-061"}, "modis-13A1-061": {"productType": "modis-13A1-061"}, "daymet-daily-na": {"productType": "daymet-daily-na"}, "nrcan-landcover": {"productType": "nrcan-landcover"}, "modis-10A2-061": {"productType": "modis-10A2-061"}, "ecmwf-forecast": {"productType": "ecmwf-forecast"}, "noaa-mrms-qpe-24h-pass2": {"productType": "noaa-mrms-qpe-24h-pass2"}, "sentinel-1-grd": {"productType": "sentinel-1-grd"}, "nasadem": {"productType": "nasadem"}, "io-lulc": {"productType": "io-lulc"}, "landsat-c2-l1": {"productType": "landsat-c2-l1"}, "drcog-lulc": {"productType": "drcog-lulc"}, "chesapeake-lc-7": {"productType": "chesapeake-lc-7"}, "chesapeake-lc-13": {"productType": "chesapeake-lc-13"}, "chesapeake-lu": {"productType": "chesapeake-lu"}, "noaa-mrms-qpe-1h-pass1": {"productType": "noaa-mrms-qpe-1h-pass1"}, "noaa-mrms-qpe-1h-pass2": {"productType": "noaa-mrms-qpe-1h-pass2"}, "noaa-nclimgrid-monthly": {"productType": "noaa-nclimgrid-monthly"}, "goes-glm": {"productType": "goes-glm"}, "usda-cdl": {"productType": "usda-cdl"}, "eclipse": {"productType": "eclipse"}, "esa-cci-lc": {"productType": "esa-cci-lc"}, "esa-cci-lc-netcdf": {"productType": "esa-cci-lc-netcdf"}, "fws-nwi": {"productType": "fws-nwi"}, "usgs-lcmap-conus-v13": {"productType": "usgs-lcmap-conus-v13"}, "usgs-lcmap-hawaii-v10": {"productType": "usgs-lcmap-hawaii-v10"}, "noaa-climate-normals-tabular": {"productType": "noaa-climate-normals-tabular"}, "noaa-climate-normals-netcdf": {"productType": "noaa-climate-normals-netcdf"}, "noaa-climate-normals-gridded": {"productType": "noaa-climate-normals-gridded"}, "aster-l1t": {"productType": "aster-l1t"}, "cil-gdpcir-cc-by-sa": {"productType": "cil-gdpcir-cc-by-sa"}, "naip": {"productType": "naip"}, "io-lulc-9-class": {"productType": "io-lulc-9-class"}, "io-biodiversity": {"productType": "io-biodiversity"}, "noaa-cdr-sea-surface-temperature-whoi": {"productType": "noaa-cdr-sea-surface-temperature-whoi"}, "noaa-cdr-ocean-heat-content": {"productType": "noaa-cdr-ocean-heat-content"}, "cil-gdpcir-cc0": {"productType": "cil-gdpcir-cc0"}, "cil-gdpcir-cc-by": {"productType": "cil-gdpcir-cc-by"}, "noaa-cdr-sea-surface-temperature-whoi-netcdf": {"productType": "noaa-cdr-sea-surface-temperature-whoi-netcdf"}, "noaa-cdr-sea-surface-temperature-optimum-interpolation": {"productType": "noaa-cdr-sea-surface-temperature-optimum-interpolation"}, "modis-10A1-061": {"productType": "modis-10A1-061"}, "sentinel-5p-l2-netcdf": {"productType": "sentinel-5p-l2-netcdf"}, "sentinel-3-olci-wfr-l2-netcdf": {"productType": "sentinel-3-olci-wfr-l2-netcdf"}, "noaa-cdr-ocean-heat-content-netcdf": {"productType": "noaa-cdr-ocean-heat-content-netcdf"}, "sentinel-3-synergy-aod-l2-netcdf": {"productType": "sentinel-3-synergy-aod-l2-netcdf"}, "sentinel-3-synergy-v10-l2-netcdf": {"productType": "sentinel-3-synergy-v10-l2-netcdf"}, "sentinel-3-olci-lfr-l2-netcdf": {"productType": "sentinel-3-olci-lfr-l2-netcdf"}, "sentinel-3-sral-lan-l2-netcdf": {"productType": "sentinel-3-sral-lan-l2-netcdf"}, "sentinel-3-slstr-lst-l2-netcdf": {"productType": "sentinel-3-slstr-lst-l2-netcdf"}, "sentinel-3-slstr-wst-l2-netcdf": {"productType": "sentinel-3-slstr-wst-l2-netcdf"}, "sentinel-3-sral-wat-l2-netcdf": {"productType": "sentinel-3-sral-wat-l2-netcdf"}, "ms-buildings": {"productType": "ms-buildings"}, "sentinel-3-slstr-frp-l2-netcdf": {"productType": "sentinel-3-slstr-frp-l2-netcdf"}, "sentinel-3-synergy-syn-l2-netcdf": {"productType": "sentinel-3-synergy-syn-l2-netcdf"}, "sentinel-3-synergy-vgp-l2-netcdf": {"productType": "sentinel-3-synergy-vgp-l2-netcdf"}, "sentinel-3-synergy-vg1-l2-netcdf": {"productType": "sentinel-3-synergy-vg1-l2-netcdf"}, "esa-worldcover": {"productType": "esa-worldcover"}}, "product_types_config": {"daymet-annual-pr": {"abstract": "Annual climate summaries derived from [Daymet](https://daymet.ornl.gov) Version 4 daily data at a 1 km x 1 km spatial resolution for five variables: minimum and maximum temperature, precipitation, vapor pressure, and snow water equivalent. Annual averages are provided for minimum and maximum temperature, vapor pressure, and snow water equivalent, and annual totals are provided for the precipitation variable.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1852](https://doi.org/10.3334/ORNLDAAC/1852) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#annual). \n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,daymet,daymet-annual-pr,precipitation,puerto-rico,temperature,vapor-pressure", "license": "proprietary", "title": "Daymet Annual Puerto Rico", "missionStartDate": "1980-07-01T12:00:00Z"}, "daymet-daily-hi": {"abstract": "Gridded estimates of daily weather parameters. [Daymet](https://daymet.ornl.gov) Version 4 variables include the following parameters: minimum temperature, maximum temperature, precipitation, shortwave radiation, vapor pressure, snow water equivalent, and day length.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1840](https://doi.org/10.3334/ORNLDAAC/1840) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#daily).\n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "daymet,daymet-daily-hi,hawaii,precipitation,temperature,vapor-pressure,weather", "license": "proprietary", "title": "Daymet Daily Hawaii", "missionStartDate": "1980-01-01T12:00:00Z"}, "3dep-seamless": {"abstract": "U.S.-wide digital elevation data at horizontal resolutions ranging from one to sixty meters.\n\nThe [USGS 3D Elevation Program (3DEP) Datasets](https://www.usgs.gov/core-science-systems/ngp/3dep) from the [National Map](https://www.usgs.gov/core-science-systems/national-geospatial-program/national-map) are the primary elevation data product produced and distributed by the USGS. The 3DEP program provides raster elevation data for the conterminous United States, Alaska, Hawaii, and the island territories, at a variety of spatial resolutions. The seamless DEM layers produced by the 3DEP program are updated frequently to integrate newly available, improved elevation source data. \n\nDEM layers are available nationally at grid spacings of 1 arc-second (approximately 30 meters) for the conterminous United States, and at approximately 1, 3, and 9 meters for parts of the United States. Most seamless DEM data for Alaska is available at a resolution of approximately 60 meters, where only lower resolution source data exist.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-seamless,dem,elevation,ned,usgs", "license": "PDDL-1.0", "title": "USGS 3DEP Seamless DEMs", "missionStartDate": "1925-01-01T00:00:00Z"}, "3dep-lidar-dsm": {"abstract": "This collection is derived from the [USGS 3DEP COPC collection](https://planetarycomputer.microsoft.com/dataset/3dep-lidar-copc). It creates a Digital Surface Model (DSM) using [`pdal.filters.range`](https://pdal.io/stages/filters.range.html#filters-range) to output a collection of Cloud Optimized GeoTIFFs, removing all points that have been classified as noise.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-dsm,cog,dsm,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Digital Surface Model", "missionStartDate": "2012-01-01T00:00:00Z"}, "fia": {"abstract": "Status and trends on U.S. forest location, health, growth, mortality, and production, from the U.S. Forest Service's [Forest Inventory and Analysis](https://www.fia.fs.fed.us/) (FIA) program.\n\nThe Forest Inventory and Analysis (FIA) dataset is a nationwide survey of the forest assets of the United States. The FIA research program has been in existence since 1928. FIA's primary objective is to determine the extent, condition, volume, growth, and use of trees on the nation's forest land.\n\nDomain: continental U.S., 1928-2018\n\nResolution: plot-level (irregular polygon)\n\nThis dataset was curated and brought to Azure by [CarbonPlan](https://carbonplan.org/).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "biomass,carbon,fia,forest,forest-service,species,usda", "license": "CC0-1.0", "title": "Forest Inventory and Analysis", "missionStartDate": "2020-06-01T00:00:00Z"}, "sentinel-1-rtc": {"abstract": "The [Sentinel-1](https://sentinel.esa.int/web/sentinel/missions/sentinel-1) mission is a constellation of two polar-orbiting satellites, operating day and night performing C-band synthetic aperture radar imaging. The Sentinel-1 Radiometrically Terrain Corrected (RTC) data in this collection is a radiometrically terrain corrected product derived from the [Ground Range Detected (GRD) Level-1](https://planetarycomputer.microsoft.com/dataset/sentinel-1-grd) products produced by the European Space Agency. The RTC processing is performed by [Catalyst](https://catalyst.earth/).\n\nRadiometric Terrain Correction accounts for terrain variations that affect both the position of a given point on the Earth's surface and the brightness of the radar return, as expressed in radar geometry. Without treatment, the hill-slope modulations of the radiometry threaten to overwhelm weaker thematic land cover-induced backscatter differences. Additionally, comparison of backscatter from multiple satellites, modes, or tracks loses meaning.\n\nA Planetary Computer account is required to retrieve SAS tokens to read the RTC data. See the [documentation](http://planetarycomputer.microsoft.com/docs/concepts/sas/#when-an-account-is-needed) for more information.\n\n### Methodology\n\nThe Sentinel-1 GRD product is converted to calibrated intensity using the conversion algorithm described in the ESA technical note ESA-EOPG-CSCOP-TN-0002, [Radiometric Calibration of S-1 Level-1 Products Generated by the S-1 IPF](https://ai4edatasetspublicassets.blob.core.windows.net/assets/pdfs/sentinel-1/S1-Radiometric-Calibration-V1.0.pdf). The flat earth calibration values for gamma correction (i.e. perpendicular to the radar line of sight) are extracted from the GRD metadata. The calibration coefficients are applied as a two-dimensional correction in range (by sample number) and azimuth (by time). All available polarizations are calibrated and written as separate layers of a single file. The calibrated SAR output is reprojected to nominal map orientation with north at the top and west to the left.\n\nThe data is then radiometrically terrain corrected using PlanetDEM as the elevation source. The correction algorithm is nominally based upon D. Small, [\u201cFlattening Gamma: Radiometric Terrain Correction for SAR Imagery\u201d](https://ai4edatasetspublicassets.blob.core.windows.net/assets/pdfs/sentinel-1/2011_Flattening_Gamma.pdf), IEEE Transactions on Geoscience and Remote Sensing, Vol 49, No 8., August 2011, pp 3081-3093. For each image scan line, the digital elevation model is interpolated to determine the elevation corresponding to the position associated with the known near slant range distance and arc length for each input pixel. The elevations at the four corners of each pixel are estimated using bilinear resampling. The four elevations are divided into two triangular facets and reprojected onto the plane perpendicular to the radar line of sight to provide an estimate of the area illuminated by the radar for each earth flattened pixel. The uncalibrated sum at each earth flattened pixel is normalized by dividing by the flat earth surface area. The adjustment for gamma intensity is given by dividing the normalized result by the cosine of the incident angle. Pixels which are not illuminated by the radar due to the viewing geometry are flagged as shadow.\n\nCalibrated data is then orthorectified to the appropriate UTM projection. The orthorectified output maintains the original sample sizes (in range and azimuth) and was not shifted to any specific grid.\n\nRTC data is processed only for the Interferometric Wide Swath (IW) mode, which is the main acquisition mode over land and satisfies the majority of service requirements.\n", "instrument": null, "platform": "Sentinel-1", "platformSerialIdentifier": "SENTINEL-1A,SENTINEL-1B", "processingLevel": null, "keywords": "c-band,copernicus,esa,rtc,sar,sentinel,sentinel-1,sentinel-1-rtc,sentinel-1a,sentinel-1b", "license": "CC-BY-4.0", "title": "Sentinel 1 Radiometrically Terrain Corrected (RTC)", "missionStartDate": "2014-10-10T00:28:21Z"}, "gridmet": {"abstract": "gridMET is a dataset of daily surface meteorological data at approximately four-kilometer resolution, covering the contiguous U.S. from 1979 to the present. These data can provide important inputs for ecological, agricultural, and hydrological models.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,gridmet,precipitation,temperature,vapor-pressure,water", "license": "CC0-1.0", "title": "gridMET", "missionStartDate": "1979-01-01T00:00:00Z"}, "daymet-annual-na": {"abstract": "Annual climate summaries derived from [Daymet](https://daymet.ornl.gov) Version 4 daily data at a 1 km x 1 km spatial resolution for five variables: minimum and maximum temperature, precipitation, vapor pressure, and snow water equivalent. Annual averages are provided for minimum and maximum temperature, vapor pressure, and snow water equivalent, and annual totals are provided for the precipitation variable.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1852](https://doi.org/10.3334/ORNLDAAC/1852) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#annual). \n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,daymet,daymet-annual-na,north-america,precipitation,temperature,vapor-pressure", "license": "proprietary", "title": "Daymet Annual North America", "missionStartDate": "1980-07-01T12:00:00Z"}, "daymet-monthly-na": {"abstract": "Monthly climate summaries derived from [Daymet](https://daymet.ornl.gov) Version 4 daily data at a 1 km x 1 km spatial resolution for five variables: minimum and maximum temperature, precipitation, vapor pressure, and snow water equivalent. Annual averages are provided for minimum and maximum temperature, vapor pressure, and snow water equivalent, and annual totals are provided for the precipitation variable.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1855](https://doi.org/10.3334/ORNLDAAC/1855) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#monthly).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,daymet,daymet-monthly-na,north-america,precipitation,temperature,vapor-pressure", "license": "proprietary", "title": "Daymet Monthly North America", "missionStartDate": "1980-01-16T12:00:00Z"}, "daymet-annual-hi": {"abstract": "Annual climate summaries derived from [Daymet](https://daymet.ornl.gov) Version 4 daily data at a 1 km x 1 km spatial resolution for five variables: minimum and maximum temperature, precipitation, vapor pressure, and snow water equivalent. Annual averages are provided for minimum and maximum temperature, vapor pressure, and snow water equivalent, and annual totals are provided for the precipitation variable.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1852](https://doi.org/10.3334/ORNLDAAC/1852) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#annual). \n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,daymet,daymet-annual-hi,hawaii,precipitation,temperature,vapor-pressure", "license": "proprietary", "title": "Daymet Annual Hawaii", "missionStartDate": "1980-07-01T12:00:00Z"}, "daymet-monthly-hi": {"abstract": "Monthly climate summaries derived from [Daymet](https://daymet.ornl.gov) Version 4 daily data at a 1 km x 1 km spatial resolution for five variables: minimum and maximum temperature, precipitation, vapor pressure, and snow water equivalent. Annual averages are provided for minimum and maximum temperature, vapor pressure, and snow water equivalent, and annual totals are provided for the precipitation variable.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1855](https://doi.org/10.3334/ORNLDAAC/1855) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#monthly).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,daymet,daymet-monthly-hi,hawaii,precipitation,temperature,vapor-pressure", "license": "proprietary", "title": "Daymet Monthly Hawaii", "missionStartDate": "1980-01-16T12:00:00Z"}, "daymet-monthly-pr": {"abstract": "Monthly climate summaries derived from [Daymet](https://daymet.ornl.gov) Version 4 daily data at a 1 km x 1 km spatial resolution for five variables: minimum and maximum temperature, precipitation, vapor pressure, and snow water equivalent. Annual averages are provided for minimum and maximum temperature, vapor pressure, and snow water equivalent, and annual totals are provided for the precipitation variable.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1855](https://doi.org/10.3334/ORNLDAAC/1855) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#monthly).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,daymet,daymet-monthly-pr,precipitation,puerto-rico,temperature,vapor-pressure", "license": "proprietary", "title": "Daymet Monthly Puerto Rico", "missionStartDate": "1980-01-16T12:00:00Z"}, "gnatsgo-tables": {"abstract": "This collection contains the table data for gNATSGO. This table data can be used to determine the values of raster data cells for Items in the [gNATSGO Rasters](https://planetarycomputer.microsoft.com/dataset/gnatsgo-rasters) Collection.\n\nThe gridded National Soil Survey Geographic Database (gNATSGO) is a USDA-NRCS Soil & Plant Science Division (SPSD) composite database that provides complete coverage of the best available soils information for all areas of the United States and Island Territories. It was created by combining data from the Soil Survey Geographic Database (SSURGO), State Soil Geographic Database (STATSGO2), and Raster Soil Survey Databases (RSS) into a single seamless ESRI file geodatabase.\n\nSSURGO is the SPSD flagship soils database that has over 100 years of field-validated detailed soil mapping data. SSURGO contains soils information for more than 90 percent of the United States and island territories, but unmapped land remains. STATSGO2 is a general soil map that has soils data for all of the United States and island territories, but the data is not as detailed as the SSURGO data. The Raster Soil Surveys (RSSs) are the next generation soil survey databases developed using advanced digital soil mapping methods.\n\nThe gNATSGO database is composed primarily of SSURGO data, but STATSGO2 data was used to fill in the gaps. The RSSs are newer product with relatively limited spatial extent. These RSSs were merged into the gNATSGO after combining the SSURGO and STATSGO2 data. The extent of RSS is expected to increase in the coming years.\n\nSee the [official documentation](https://www.nrcs.usda.gov/wps/portal/nrcs/detail/soils/survey/geo/?cid=nrcseprd1464625)", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "gnatsgo-tables,natsgo,rss,soils,ssurgo,statsgo2,united-states,usda", "license": "CC0-1.0", "title": "gNATSGO Soil Database - Tables", "missionStartDate": "2020-07-01T00:00:00Z"}, "hgb": {"abstract": "This dataset provides temporally consistent and harmonized global maps of aboveground and belowground biomass carbon density for the year 2010 at 300m resolution. The aboveground biomass map integrates land-cover-specific, remotely sensed maps of woody, grassland, cropland, and tundra biomass. Input maps were amassed from the published literature and, where necessary, updated to cover the focal extent or time period. The belowground biomass map similarly integrates matching maps derived from each aboveground biomass map and land-cover-specific empirical models. Aboveground and belowground maps were then integrated separately using ancillary maps of percent tree/land cover and a rule-based decision tree. Maps reporting the accumulated uncertainty of pixel-level estimates are also provided.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "biomass,carbon,hgb,ornl", "license": "proprietary", "title": "HGB: Harmonized Global Biomass for 2010", "missionStartDate": "2010-12-31T00:00:00Z"}, "cop-dem-glo-30": {"abstract": "The Copernicus DEM is a digital surface model (DSM), which represents the surface of the Earth including buildings, infrastructure, and vegetation. This DSM is based on radar satellite data acquired during the TanDEM-X Mission, which was funded by a public-private partnership between the German Aerospace Centre (DLR) and Airbus Defence and Space.\n\nCopernicus DEM is available at both 30-meter and 90-meter resolution; this dataset has a horizontal resolution of approximately 30 meters.\n\nSee the [Product Handbook](https://object.cloud.sdsc.edu/v1/AUTH_opentopography/www/metadata/Copernicus_metadata.pdf) for more information.\n\nSee the dataset page on OpenTopography: \n\n", "instrument": null, "platform": null, "platformSerialIdentifier": "tandem-x", "processingLevel": null, "keywords": "cop-dem-glo-30,copernicus,dem,dsm,elevation,tandem-x", "license": "proprietary", "title": "Copernicus DEM GLO-30", "missionStartDate": "2021-04-22T00:00:00Z"}, "cop-dem-glo-90": {"abstract": "The Copernicus DEM is a digital surface model (DSM), which represents the surface of the Earth including buildings, infrastructure, and vegetation. This DSM is based on radar satellite data acquired during the TanDEM-X Mission, which was funded by a public-private partnership between the German Aerospace Centre (DLR) and Airbus Defence and Space.\n\nCopernicus DEM is available at both 30-meter and 90-meter resolution; this dataset has a horizontal resolution of approximately 90 meters.\n\nSee the [Product Handbook](https://object.cloud.sdsc.edu/v1/AUTH_opentopography/www/metadata/Copernicus_metadata.pdf) for more information.\n\nSee the dataset page on OpenTopography: \n\n", "instrument": null, "platform": null, "platformSerialIdentifier": "tandem-x", "processingLevel": null, "keywords": "cop-dem-glo-90,copernicus,dem,elevation,tandem-x", "license": "proprietary", "title": "Copernicus DEM GLO-90", "missionStartDate": "2021-04-22T00:00:00Z"}, "goes-cmi": {"abstract": "The GOES-R Advanced Baseline Imager (ABI) L2 Cloud and Moisture Imagery product provides 16 reflective and emissive bands at high temporal cadence over the Western Hemisphere.\n\nThe GOES-R series is the latest in the Geostationary Operational Environmental Satellites (GOES) program, which has been operated in a collaborative effort by NOAA and NASA since 1975. The operational GOES-R Satellites, GOES-16, GOES-17, and GOES-18, capture 16-band imagery from geostationary orbits over the Western Hemisphere via the Advance Baseline Imager (ABI) radiometer. The ABI captures 2 visible, 4 near-infrared, and 10 infrared channels at resolutions between 0.5km and 2km.\n\n### Geographic coverage\n\nThe ABI captures three levels of coverage, each at a different temporal cadence depending on the modes described below. The geographic coverage for each image is described by the `goes:image-type` STAC Item property.\n\n- _FULL DISK_: a circular image depicting nearly full coverage of the Western Hemisphere.\n- _CONUS_: a 3,000 (lat) by 5,000 (lon) km rectangular image depicting the Continental U.S. (GOES-16) or the Pacific Ocean including Hawaii (GOES-17).\n- _MESOSCALE_: a 1,000 by 1,000 km rectangular image. GOES-16 and 17 both alternate between two different mesoscale geographic regions.\n\n### Modes\n\nThere are three standard scanning modes for the ABI instrument: Mode 3, Mode 4, and Mode 6.\n\n- Mode _3_ consists of one observation of the full disk scene of the Earth, three observations of the continental United States (CONUS), and thirty observations for each of two distinct mesoscale views every fifteen minutes.\n- Mode _4_ consists of the observation of the full disk scene every five minutes.\n- Mode _6_ consists of one observation of the full disk scene of the Earth, two observations of the continental United States (CONUS), and twenty observations for each of two distinct mesoscale views every ten minutes.\n\nThe mode that each image was captured with is described by the `goes:mode` STAC Item property.\n\nSee this [ABI Scan Mode Demonstration](https://youtu.be/_c5H6R-M0s8) video for an idea of how the ABI scans multiple geographic regions over time.\n\n### Cloud and Moisture Imagery\n\nThe Cloud and Moisture Imagery product contains one or more images with pixel values identifying \"brightness values\" that are scaled to support visual analysis. Cloud and Moisture Imagery product (CMIP) files are generated for each of the sixteen ABI reflective and emissive bands. In addition, there is a multi-band product file that includes the imagery at all bands (MCMIP).\n\nThe Planetary Computer STAC Collection `goes-cmi` captures both the CMIP and MCMIP product files into individual STAC Items for each observation from a GOES-R satellite. It contains the original CMIP and MCMIP NetCDF files, as well as cloud-optimized GeoTIFF (COG) exports of the data from each MCMIP band (2km); the full-resolution CMIP band for bands 1, 2, 3, and 5; and a Web Mercator COG of bands 1, 2 and 3, which are useful for rendering.\n\nThis product is not in a standard coordinate reference system (CRS), which can cause issues with some tooling that does not handle non-standard large geographic regions.\n\n### For more information\n- [Beginner\u2019s Guide to GOES-R Series Data](https://www.goes-r.gov/downloads/resources/documents/Beginners_Guide_to_GOES-R_Series_Data.pdf)\n- [GOES-R Series Product Definition and Users\u2019 Guide: Volume 5 (Level 2A+ Products)](https://www.goes-r.gov/products/docs/PUG-L2+-vol5.pdf) ([Spanish verison](https://github.com/NOAA-Big-Data-Program/bdp-data-docs/raw/main/GOES/QuickGuides/Spanish/Guia%20introductoria%20para%20datos%20de%20la%20serie%20GOES-R%20V1.1%20FINAL2%20-%20Copy.pdf))\n\n", "instrument": "ABI", "platform": null, "platformSerialIdentifier": "GOES-16,GOES-17,GOES-18", "processingLevel": null, "keywords": "abi,cloud,goes,goes-16,goes-17,goes-18,goes-cmi,moisture,nasa,noaa,satellite", "license": "proprietary", "title": "GOES-R Cloud & Moisture Imagery", "missionStartDate": "2017-02-28T00:16:52Z"}, "terraclimate": {"abstract": "[TerraClimate](http://www.climatologylab.org/terraclimate.html) is a dataset of monthly climate and climatic water balance for global terrestrial surfaces from 1958 to the present. These data provide important inputs for ecological and hydrological studies at global scales that require high spatial resolution and time-varying data. All data have monthly temporal resolution and a ~4-km (1/24th degree) spatial resolution. This dataset is provided in [Zarr](https://zarr.readthedocs.io/) format.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,precipitation,temperature,terraclimate,vapor-pressure,water", "license": "CC0-1.0", "title": "TerraClimate", "missionStartDate": "1958-01-01T00:00:00Z"}, "nasa-nex-gddp-cmip6": {"abstract": "The NEX-GDDP-CMIP6 dataset is comprised of global downscaled climate scenarios derived from the General Circulation Model (GCM) runs conducted under the Coupled Model Intercomparison Project Phase 6 (CMIP6) and across two of the four \u201cTier 1\u201d greenhouse gas emissions scenarios known as Shared Socioeconomic Pathways (SSPs). The CMIP6 GCM runs were developed in support of the Sixth Assessment Report of the Intergovernmental Panel on Climate Change (IPCC AR6). This dataset includes downscaled projections from ScenarioMIP model runs for which daily scenarios were produced and distributed through the Earth System Grid Federation. The purpose of this dataset is to provide a set of global, high resolution, bias-corrected climate change projections that can be used to evaluate climate change impacts on processes that are sensitive to finer-scale climate gradients and the effects of local topography on climate conditions.\n\nThe [NASA Center for Climate Simulation](https://www.nccs.nasa.gov/) maintains the [next-gddp-cmip6 product page](https://www.nccs.nasa.gov/services/data-collections/land-based-products/nex-gddp-cmip6) where you can find more information about these datasets. Users are encouraged to review the [technote](https://www.nccs.nasa.gov/sites/default/files/NEX-GDDP-CMIP6-Tech_Note.pdf), provided alongside the data set, where more detailed information, references and acknowledgements can be found.\n\nThis collection contains many NetCDF files. There is one NetCDF file per `(model, scenario, variable, year)` tuple.\n\n- **model** is the name of a modeling group (e.g. \"ACCESS-CM-2\"). See the `cmip6:model` summary in the STAC collection for a full list of models.\n- **scenario** is one of \"historical\", \"ssp245\" or \"ssp585\".\n- **variable** is one of \"hurs\", \"huss\", \"pr\", \"rlds\", \"rsds\", \"sfcWind\", \"tas\", \"tasmax\", \"tasmin\".\n- **year** depends on the value of *scenario*. For \"historical\", the values range from 1950 to 2014 (inclusive). For \"ssp245\" and \"ssp585\", the years range from 2015 to 2100 (inclusive).\n\nIn addition to the NetCDF files, we provide some *experimental* **reference files** as collection-level dataset assets. These are JSON files implementing the [references specification](https://fsspec.github.io/kerchunk/spec.html).\nThese files include the positions of data variables within the binary NetCDF files, which can speed up reading the metadata. See the example notebook for more.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,cmip6,humidity,nasa,nasa-nex-gddp-cmip6,precipitation,temperature", "license": "proprietary", "title": "Earth Exchange Global Daily Downscaled Projections (NEX-GDDP-CMIP6)", "missionStartDate": "1950-01-01T00:00:00Z"}, "gpm-imerg-hhr": {"abstract": "The Integrated Multi-satellitE Retrievals for GPM (IMERG) algorithm combines information from the [GPM satellite constellation](https://gpm.nasa.gov/missions/gpm/constellation) to estimate precipitation over the majority of the Earth's surface. This algorithm is particularly valuable over the majority of the Earth's surface that lacks precipitation-measuring instruments on the ground. Now in the latest Version 06 release of IMERG the algorithm fuses the early precipitation estimates collected during the operation of the TRMM satellite (2000 - 2015) with more recent precipitation estimates collected during operation of the GPM satellite (2014 - present). The longer the record, the more valuable it is, as researchers and application developers will attest. By being able to compare and contrast past and present data, researchers are better informed to make climate and weather models more accurate, better understand normal and extreme rain and snowfall around the world, and strengthen applications for current and future disasters, disease, resource management, energy production and food security.\n\nFor more, see the [IMERG homepage](https://gpm.nasa.gov/data/imerg) The [IMERG Technical documentation](https://gpm.nasa.gov/sites/default/files/2020-10/IMERG_doc_201006.pdf) provides more information on the algorithm, input datasets, and output products.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "gpm,gpm-imerg-hhr,imerg,precipitation", "license": "proprietary", "title": "GPM IMERG", "missionStartDate": "2000-06-01T00:00:00Z"}, "gnatsgo-rasters": {"abstract": "This collection contains the raster data for gNATSGO. In order to use the map unit values contained in the `mukey` raster asset, you'll need to join to tables represented as Items in the [gNATSGO Tables](https://planetarycomputer.microsoft.com/dataset/gnatsgo-tables) Collection. Many items have commonly used values encoded in additional raster assets.\n\nThe gridded National Soil Survey Geographic Database (gNATSGO) is a USDA-NRCS Soil & Plant Science Division (SPSD) composite database that provides complete coverage of the best available soils information for all areas of the United States and Island Territories. It was created by combining data from the Soil Survey Geographic Database (SSURGO), State Soil Geographic Database (STATSGO2), and Raster Soil Survey Databases (RSS) into a single seamless ESRI file geodatabase.\n\nSSURGO is the SPSD flagship soils database that has over 100 years of field-validated detailed soil mapping data. SSURGO contains soils information for more than 90 percent of the United States and island territories, but unmapped land remains. STATSGO2 is a general soil map that has soils data for all of the United States and island territories, but the data is not as detailed as the SSURGO data. The Raster Soil Surveys (RSSs) are the next generation soil survey databases developed using advanced digital soil mapping methods.\n\nThe gNATSGO database is composed primarily of SSURGO data, but STATSGO2 data was used to fill in the gaps. The RSSs are newer product with relatively limited spatial extent. These RSSs were merged into the gNATSGO after combining the SSURGO and STATSGO2 data. The extent of RSS is expected to increase in the coming years.\n\nSee the [official documentation](https://www.nrcs.usda.gov/wps/portal/nrcs/detail/soils/survey/geo/?cid=nrcseprd1464625)", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "gnatsgo-rasters,natsgo,rss,soils,ssurgo,statsgo2,united-states,usda", "license": "CC0-1.0", "title": "gNATSGO Soil Database - Rasters", "missionStartDate": "2020-07-01T00:00:00Z"}, "3dep-lidar-hag": {"abstract": "This COG type is generated using the Z dimension of the [COPC data](https://planetarycomputer.microsoft.com/dataset/3dep-lidar-copc) data and removes noise, water, and using [`pdal.filters.smrf`](https://pdal.io/stages/filters.smrf.html#filters-smrf) followed by [pdal.filters.hag_nn](https://pdal.io/stages/filters.hag_nn.html#filters-hag-nn).\n\nThe Height Above Ground Nearest Neighbor filter takes as input a point cloud with Classification set to 2 for ground points. It creates a new dimension, HeightAboveGround, that contains the normalized height values.\n\nGround points may be generated with [`pdal.filters.pmf`](https://pdal.io/stages/filters.pmf.html#filters-pmf) or [`pdal.filters.smrf`](https://pdal.io/stages/filters.smrf.html#filters-smrf), but you can use any method you choose, as long as the ground returns are marked.\n\nNormalized heights are a commonly used attribute of point cloud data. This can also be referred to as height above ground (HAG) or above ground level (AGL) heights. In the end, it is simply a measure of a point's relative height as opposed to its raw elevation value.\n\nThe filter finds the number of ground points nearest to the non-ground point under consideration. It calculates an average ground height weighted by the distance of each ground point from the non-ground point. The HeightAboveGround is the difference between the Z value of the non-ground point and the interpolated ground height.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-hag,cog,elevation,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Height above Ground", "missionStartDate": "2012-01-01T00:00:00Z"}, "io-lulc-annual-v02": {"abstract": "Time series of annual global maps of land use and land cover (LULC). It currently has data from 2017-2023. The maps are derived from ESA Sentinel-2 imagery at 10m resolution. Each map is a composite of LULC predictions for 9 classes throughout the year in order to generate a representative snapshot of each year.\n\nThis dataset, produced by [Impact Observatory](http://impactobservatory.com/), Microsoft, and Esri, displays a global map of land use and land cover (LULC) derived from ESA Sentinel-2 imagery at 10 meter resolution for the years 2017 - 2023. Each map is a composite of LULC predictions for 9 classes throughout the year in order to generate a representative snapshot of each year. This dataset was generated by Impact Observatory, which used billions of human-labeled pixels (curated by the National Geographic Society) to train a deep learning model for land classification. Each global map was produced by applying this model to the Sentinel-2 annual scene collections from the Mircosoft Planetary Computer. Each of the maps has an assessed average accuracy of over 75%.\n\nThese maps have been improved from Impact Observatory\u2019s [previous release](https://planetarycomputer.microsoft.com/dataset/io-lulc-9-class) and provide a relative reduction in the amount of anomalous change between classes, particularly between \u201cBare\u201d and any of the vegetative classes \u201cTrees,\u201d \u201cCrops,\u201d \u201cFlooded Vegetation,\u201d and \u201cRangeland\u201d. This updated time series of annual global maps is also re-aligned to match the ESA UTM tiling grid for Sentinel-2 imagery.\n\nAll years are available under a Creative Commons BY-4.0.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "global,io-lulc-annual-v02,land-cover,land-use,sentinel", "license": "CC-BY-4.0", "title": "10m Annual Land Use Land Cover (9-class) V2", "missionStartDate": "2017-01-01T00:00:00Z"}, "3dep-lidar-intensity": {"abstract": "This collection is derived from the [USGS 3DEP COPC collection](https://planetarycomputer.microsoft.com/dataset/3dep-lidar-copc). It is a collection of Cloud Optimized GeoTIFFs representing the pulse return magnitude.\n\nThe values are based on the Intensity [PDAL dimension](https://pdal.io/dimensions.html) and uses [`pdal.filters.outlier`](https://pdal.io/stages/filters.outlier.html#filters-outlier) and [`pdal.filters.range`](https://pdal.io/stages/filters.range.html#filters-range) to remove outliers and noise.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-intensity,cog,intensity,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Intensity", "missionStartDate": "2012-01-01T00:00:00Z"}, "3dep-lidar-pointsourceid": {"abstract": "This collection is derived from the [USGS 3DEP COPC collection](https://planetarycomputer.microsoft.com/dataset/3dep-lidar-copc). It is a collection of Cloud Optimized GeoTIFFs representing the file source ID from which the point originated. Zero indicates that the point originated in the current file.\n\nThis values are based on the PointSourceId [PDAL dimension](https://pdal.io/dimensions.html) and uses [`pdal.filters.outlier`](https://pdal.io/stages/filters.outlier.html#filters-outlier) and [`pdal.filters.range`](https://pdal.io/stages/filters.range.html#filters-range) to remove outliers and noise.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-pointsourceid,cog,pointsourceid,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Point Source", "missionStartDate": "2012-01-01T00:00:00Z"}, "mtbs": {"abstract": "[Monitoring Trends in Burn Severity](https://www.mtbs.gov/) (MTBS) is an inter-agency program whose goal is to consistently map the burn severity and extent of large fires across the United States from 1984 to the present. This includes all fires 1000 acres or greater in the Western United States and 500 acres or greater in the Eastern United States. The burn severity mosaics in this dataset consist of thematic raster images of MTBS burn severity classes for all currently completed MTBS fires for the continental United States and Alaska.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "fire,forest,mtbs,usda,usfs,usgs", "license": "proprietary", "title": "MTBS: Monitoring Trends in Burn Severity", "missionStartDate": "1984-12-31T00:00:00Z"}, "noaa-c-cap": {"abstract": "Nationally standardized, raster-based inventories of land cover for the coastal areas of the U.S. Data are derived, through the Coastal Change Analysis Program, from the analysis of multiple dates of remotely sensed imagery. Two file types are available: individual dates that supply a wall-to-wall map, and change files that compare one date to another. The use of standardized data and procedures assures consistency through time and across geographies. C-CAP data forms the coastal expression of the National Land Cover Database (NLCD) and the A-16 land cover theme of the National Spatial Data Infrastructure. The data are updated every 5 years.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal,land-cover,land-use,noaa,noaa-c-cap", "license": "proprietary", "title": "C-CAP Regional Land Cover and Change", "missionStartDate": "1975-01-01T00:00:00Z"}, "3dep-lidar-copc": {"abstract": "This collection contains source data from the [USGS 3DEP program](https://www.usgs.gov/3d-elevation-program) reformatted into the [COPC](https://copc.io) format. A COPC file is a LAZ 1.4 file that stores point data organized in a clustered octree. It contains a VLR that describes the octree organization of data that are stored in LAZ 1.4 chunks. The end product is a one-to-one mapping of LAZ to UTM-reprojected COPC files.\n\nLAZ data is geospatial [LiDAR point cloud](https://en.wikipedia.org/wiki/Point_cloud) (LPC) content stored in the compressed [LASzip](https://laszip.org?) format. Data were reorganized and stored in LAZ-compatible [COPC](https://copc.io) organization for use in Planetary Computer, which supports incremental spatial access and cloud streaming.\n\nLPC can be summarized for construction of digital terrain models (DTM), filtered for extraction of features like vegetation and buildings, and visualized to provide a point cloud map of the physical spaces the laser scanner interacted with. LPC content from 3DEP is used to compute and extract a variety of landscape characterization products, and some of them are provided by Planetary Computer, including Height Above Ground, Relative Intensity Image, and DTM and Digital Surface Models.\n\nThe LAZ tiles represent a one-to-one mapping of original tiled content as provided by the [USGS 3DEP program](https://www.usgs.gov/3d-elevation-program), with the exception that the data were reprojected and normalized into appropriate UTM zones for their location without adjustment to the vertical datum. In some cases, vertical datum description may not match actual data values, especially for pre-2010 USGS 3DEP point cloud data.\n\nIn addition to these COPC files, various higher-level derived products are available as Cloud Optimized GeoTIFFs in [other collections](https://planetarycomputer.microsoft.com/dataset/group/3dep-lidar).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-copc,cog,point-cloud,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Point Cloud", "missionStartDate": "2012-01-01T00:00:00Z"}, "modis-64A1-061": {"abstract": "The Terra and Aqua combined MCD64A1 Version 6.1 Burned Area data product is a monthly, global gridded 500 meter (m) product containing per-pixel burned-area and quality information. The MCD64A1 burned-area mapping approach employs 500 m Moderate Resolution Imaging Spectroradiometer (MODIS) Surface Reflectance imagery coupled with 1 kilometer (km) MODIS active fire observations. The algorithm uses a burn sensitive Vegetation Index (VI) to create dynamic thresholds that are applied to the composite data. The VI is derived from MODIS shortwave infrared atmospherically corrected surface reflectance bands 5 and 7 with a measure of temporal texture. The algorithm identifies the date of burn for the 500 m grid cells within each individual MODIS tile. The date is encoded in a single data layer as the ordinal day of the calendar year on which the burn occurred with values assigned to unburned land pixels and additional special values reserved for missing data and water grid cells. The data layers provided in the MCD64A1 product include Burn Date, Burn Data Uncertainty, Quality Assurance, along with First Day and Last Day of reliable change detection of the year.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,fire,global,imagery,mcd64a1,modis,modis-64a1-061,nasa,satellite,terra", "license": "proprietary", "title": "MODIS Burned Area Monthly", "missionStartDate": "2000-11-01T00:00:00Z"}, "alos-fnf-mosaic": {"abstract": "The global 25m resolution SAR mosaics and forest/non-forest maps are free and open annual datasets generated by [JAXA](https://www.eorc.jaxa.jp/ALOS/en/dataset/fnf_e.htm) using the L-band Synthetic Aperture Radar sensors on the Advanced Land Observing Satellite-2 (ALOS-2 PALSAR-2), the Advanced Land Observing Satellite (ALOS PALSAR) and the Japanese Earth Resources Satellite-1 (JERS-1 SAR).\n\nThe global forest/non-forest maps (FNF) were generated by a Random Forest machine learning-based classification method, with the re-processed global 25m resolution [PALSAR-2 mosaic dataset](https://planetarycomputer.microsoft.com/dataset/alos-palsar-mosaic) (Ver. 2.0.0) as input. Here, the \"forest\" is defined as the tree covered land with an area larger than 0.5 ha and a canopy cover of over 10 %, in accordance with the FAO definition of forest. The classification results are presented in four categories, with two categories of forest areas: forests with a canopy cover of 90 % or more and forests with a canopy cover of 10 % to 90 %, depending on the density of the forest area.\n\nSee the [Product Description](https://www.eorc.jaxa.jp/ALOS/en/dataset/pdf/DatasetDescription_PALSAR2_FNF_V200.pdf) for more details.\n", "instrument": "PALSAR,PALSAR-2", "platform": null, "platformSerialIdentifier": "ALOS,ALOS-2", "processingLevel": null, "keywords": "alos,alos-2,alos-fnf-mosaic,forest,global,jaxa,land-cover,palsar,palsar-2", "license": "proprietary", "title": "ALOS Forest/Non-Forest Annual Mosaic", "missionStartDate": "2015-01-01T00:00:00Z"}, "3dep-lidar-returns": {"abstract": "This collection is derived from the [USGS 3DEP COPC collection](https://planetarycomputer.microsoft.com/dataset/3dep-lidar-copc). It is a collection of Cloud Optimized GeoTIFFs representing the number of returns for a given pulse.\n\nThis values are based on the PointSourceId [PDAL dimension](https://pdal.io/dimensions.html) and uses [`pdal.filters.outlier`](https://pdal.io/stages/filters.outlier.html#filters-outlier) and [`pdal.filters.range`](https://pdal.io/stages/filters.range.html#filters-range) to remove outliers and noise.\n\nThe values are based on the NumberOfReturns [PDAL dimension](https://pdal.io/dimensions.html) and uses [`pdal.filters.outlier`](https://pdal.io/stages/filters.outlier.html#filters-outlier) and [`pdal.filters.range`](https://pdal.io/stages/filters.range.html#filters-range) to remove outliers and noise.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-returns,cog,numberofreturns,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Returns", "missionStartDate": "2012-01-01T00:00:00Z"}, "mobi": {"abstract": "The [Map of Biodiversity Importance](https://www.natureserve.org/conservation-tools/projects/map-biodiversity-importance) (MoBI) consists of raster maps that combine habitat information for 2,216 imperiled species occurring in the conterminous United States, using weightings based on range size and degree of protection to identify areas of high importance for biodiversity conservation. Species included in the project are those which, as of September 2018, had a global conservation status of G1 (critical imperiled) or G2 (imperiled) or which are listed as threatened or endangered at the full species level under the United States Endangered Species Act. Taxonomic groups included in the project are vertebrates (birds, mammals, amphibians, reptiles, turtles, crocodilians, and freshwater and anadromous fishes), vascular plants, selected aquatic invertebrates (freshwater mussels and crayfish) and selected pollinators (bumblebees, butterflies, and skippers).\n\nThere are three types of spatial data provided, described in more detail below: species richness, range-size rarity, and protection-weighted range-size rarity. For each type, this data set includes five different layers – one for all species combined, and four additional layers that break the data down by taxonomic group (vertebrates, plants, freshwater invertebrates, and pollinators) – for a total of fifteen layers.\n\nThese data layers are intended to identify areas of high potential value for on-the-ground biodiversity protection efforts. As a synthesis of predictive models, they cannot guarantee either the presence or absence of imperiled species at a given location. For site-specific decision-making, these data should be used in conjunction with field surveys and/or documented occurrence data, such as is available from the [NatureServe Network](https://www.natureserve.org/natureserve-network).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "biodiversity,mobi,natureserve,united-states", "license": "proprietary", "title": "MoBI: Map of Biodiversity Importance", "missionStartDate": "2020-04-14T00:00:00Z"}, "landsat-c2-l2": {"abstract": "Landsat Collection 2 Level-2 [Science Products](https://www.usgs.gov/landsat-missions/landsat-collection-2-level-2-science-products), consisting of atmospherically corrected [surface reflectance](https://www.usgs.gov/landsat-missions/landsat-collection-2-surface-reflectance) and [surface temperature](https://www.usgs.gov/landsat-missions/landsat-collection-2-surface-temperature) image data. Collection 2 Level-2 Science Products are available from August 22, 1982 to present.\n\nThis dataset represents the global archive of Level-2 data from [Landsat Collection 2](https://www.usgs.gov/core-science-systems/nli/landsat/landsat-collection-2) acquired by the [Thematic Mapper](https://landsat.gsfc.nasa.gov/thematic-mapper/) onboard Landsat 4 and 5, the [Enhanced Thematic Mapper](https://landsat.gsfc.nasa.gov/the-enhanced-thematic-mapper-plus-etm/) onboard Landsat 7, and the [Operatational Land Imager](https://landsat.gsfc.nasa.gov/satellites/landsat-8/spacecraft-instruments/operational-land-imager/) and [Thermal Infrared Sensor](https://landsat.gsfc.nasa.gov/satellites/landsat-8/spacecraft-instruments/thermal-infrared-sensor/) onboard Landsat 8 and 9. Images are stored in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.\n", "instrument": "tm,etm+,oli,tirs", "platform": null, "platformSerialIdentifier": "landsat-4,landsat-5,landsat-7,landsat-8,landsat-9", "processingLevel": null, "keywords": "etm+,global,imagery,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2-l2,nasa,oli,reflectance,satellite,temperature,tirs,tm,usgs", "license": "proprietary", "title": "Landsat Collection 2 Level-2", "missionStartDate": "1982-08-22T00:00:00Z"}, "era5-pds": {"abstract": "ERA5 is the fifth generation ECMWF atmospheric reanalysis of the global climate\ncovering the period from January 1950 to present. ERA5 is produced by the\nCopernicus Climate Change Service (C3S) at ECMWF.\n\nReanalysis combines model data with observations from across the world into a\nglobally complete and consistent dataset using the laws of physics. This\nprinciple, called data assimilation, is based on the method used by numerical\nweather prediction centres, where every so many hours (12 hours at ECMWF) a\nprevious forecast is combined with newly available observations in an optimal\nway to produce a new best estimate of the state of the atmosphere, called\nanalysis, from which an updated, improved forecast is issued. Reanalysis works\nin the same way, but at reduced resolution to allow for the provision of a\ndataset spanning back several decades. Reanalysis does not have the constraint\nof issuing timely forecasts, so there is more time to collect observations, and\nwhen going further back in time, to allow for the ingestion of improved versions\nof the original observations, which all benefit the quality of the reanalysis\nproduct.\n\nThis dataset was converted to Zarr by [Planet OS](https://planetos.com/).\nSee [their documentation](https://github.com/planet-os/notebooks/blob/master/aws/era5-pds.md)\nfor more.\n\n## STAC Metadata\n\nTwo types of data variables are provided: \"forecast\" (`fc`) and \"analysis\" (`an`).\n\n* An **analysis**, of the atmospheric conditions, is a blend of observations\n with a previous forecast. An analysis can only provide\n [instantaneous](https://confluence.ecmwf.int/display/CKB/Model+grid+box+and+time+step)\n parameters (parameters valid at a specific time, e.g temperature at 12:00),\n but not accumulated parameters, mean rates or min/max parameters.\n* A **forecast** starts with an analysis at a specific time (the 'initialization\n time'), and a model computes the atmospheric conditions for a number of\n 'forecast steps', at increasing 'validity times', into the future. A forecast\n can provide\n [instantaneous](https://confluence.ecmwf.int/display/CKB/Model+grid+box+and+time+step)\n parameters, accumulated parameters, mean rates, and min/max parameters.\n\nEach [STAC](https://stacspec.org/) item in this collection covers a single month\nand the entire globe. There are two STAC items per month, one for each type of data\nvariable (`fc` and `an`). The STAC items include an `ecmwf:kind` properties to\nindicate which kind of variables that STAC item catalogs.\n\n## How to acknowledge, cite and refer to ERA5\n\nAll users of data on the Climate Data Store (CDS) disks (using either the web interface or the CDS API) must provide clear and visible attribution to the Copernicus programme and are asked to cite and reference the dataset provider:\n\nAcknowledge according to the [licence to use Copernicus Products](https://cds.climate.copernicus.eu/api/v2/terms/static/licence-to-use-copernicus-products.pdf).\n\nCite each dataset used as indicated on the relevant CDS entries (see link to \"Citation\" under References on the Overview page of the dataset entry).\n\nThroughout the content of your publication, the dataset used is referred to as Author (YYYY).\n\nThe 3-steps procedure above is illustrated with this example: [Use Case 2: ERA5 hourly data on single levels from 1979 to present](https://confluence.ecmwf.int/display/CKB/Use+Case+2%3A+ERA5+hourly+data+on+single+levels+from+1979+to+present).\n\nFor complete details, please refer to [How to acknowledge and cite a Climate Data Store (CDS) catalogue entry and the data published as part of it](https://confluence.ecmwf.int/display/CKB/How+to+acknowledge+and+cite+a+Climate+Data+Store+%28CDS%29+catalogue+entry+and+the+data+published+as+part+of+it).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "ecmwf,era5,era5-pds,precipitation,reanalysis,temperature,weather", "license": "proprietary", "title": "ERA5 - PDS", "missionStartDate": "1979-01-01T00:00:00Z"}, "chloris-biomass": {"abstract": "The Chloris Global Biomass 2003 - 2019 dataset provides estimates of stock and change in aboveground biomass for Earth's terrestrial woody vegetation ecosystems. It covers the period 2003 - 2019, at annual time steps. The global dataset has a circa 4.6 km spatial resolution.\n\nThe maps and data sets were generated by combining multiple remote sensing measurements from space borne satellites, processed using state-of-the-art machine learning and statistical methods, validated with field data from multiple countries. The dataset provides direct estimates of aboveground stock and change, and are not based on land use or land cover area change, and as such they include gains and losses of carbon stock in all types of woody vegetation - whether natural or plantations.\n\nAnnual stocks are expressed in units of tons of biomass. Annual changes in stocks are expressed in units of CO2 equivalent, i.e., the amount of CO2 released from or taken up by terrestrial ecosystems for that specific pixel.\n\nThe spatial data sets are available on [Microsoft\u2019s Planetary Computer](https://planetarycomputer.microsoft.com/dataset/chloris-biomass) under a Creative Common license of the type Attribution-Non Commercial-Share Alike [CC BY-NC-SA](https://spdx.org/licenses/CC-BY-NC-SA-4.0.html).\n\n[Chloris Geospatial](https://chloris.earth/) is a mission-driven technology company that develops software and data products on the state of natural capital for use by business, governments, and the social sector.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "biomass,carbon,chloris,chloris-biomass,modis", "license": "CC-BY-NC-SA-4.0", "title": "Chloris Biomass", "missionStartDate": "2003-07-31T00:00:00Z"}, "kaza-hydroforecast": {"abstract": "This dataset is a daily updated set of HydroForecast seasonal river flow forecasts at six locations in the Kwando and Upper Zambezi river basins. More details about the locations, project context, and to interactively view current and previous forecasts, visit our [public website](https://dashboard.hydroforecast.com/public/wwf-kaza).\n\n## Flow forecast dataset and model description\n\n[HydroForecast](https://www.upstream.tech/hydroforecast) is a theory-guided machine learning hydrologic model that predicts streamflow in basins across the world. For the Kwando and Upper Zambezi, HydroForecast makes daily predictions of streamflow rates using a [seasonal analog approach](https://support.upstream.tech/article/125-seasonal-analog-model-a-technical-overview). The model's output is probabilistic and the mean, median and a range of quantiles are available at each forecast step.\n\nThe underlying model has the following attributes: \n\n* Timestep: 10 days\n* Horizon: 10 to 180 days \n* Update frequency: daily\n* Units: cubic meters per second (m\u00b3/s)\n \n## Site details\n\nThe model produces output for six locations in the Kwando and Upper Zambezi river basins.\n\n* Upper Zambezi sites\n * Zambezi at Chavuma\n * Luanginga at Kalabo\n* Kwando basin sites\n * Kwando at Kongola -- total basin flows\n * Kwando Sub-basin 1\n * Kwando Sub-basin 2 \n * Kwando Sub-basin 3\n * Kwando Sub-basin 4\n * Kwando Kongola Sub-basin\n\n## STAC metadata\n\nThere is one STAC item per location. Each STAC item has a single asset linking to a Parquet file in Azure Blob Storage.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "hydroforecast,hydrology,kaza-hydroforecast,streamflow,upstream-tech,water", "license": "CDLA-Sharing-1.0", "title": "HydroForecast - Kwando & Upper Zambezi Rivers", "missionStartDate": "2022-01-01T00:00:00Z"}, "planet-nicfi-analytic": {"abstract": "*Note: Assets in this collection are only available to winners of the [GEO-Microsoft Planetary Computer RFP](https://www.earthobservations.org/geo_blog_obs.php?id=528). Others wishing to use the data can sign up and access it from Planet at [https://www.planet.com/nicfi/](https://www.planet.com/nicfi/) and email [planetarycomputer@microsoft.com](mailto:planetarycomputer@microsoft.com).*\n\nThrough Norway\u2019s International Climate & Forests Initiative (NICFI), users can access Planet\u2019s high-resolution, analysis-ready mosaics of the world\u2019s tropics in order to help reduce and reverse the loss of tropical forests, combat climate change, conserve biodiversity, and facilitate sustainable development.\n\nIn support of NICFI\u2019s mission, you can use this data for a number of projects including, but not limited to:\n\n* Advance scientific research about the world\u2019s tropical forests and the critical services they provide.\n* Implement and improve policies for sustainable forest management and land use in developing tropical forest countries and jurisdictions.\n* Increase transparency and accountability in the tropics.\n* Protect and improve the rights of indigenous peoples and local communities in tropical forest countries.\n* Innovate solutions towards reducing pressure on forests from global commodities and financial markets.\n* In short, the primary purpose of the NICFI Program is to support reducing and reversing the loss of tropical forests, contributing to combating climate change, conserving biodiversity, contributing to forest regrowth, restoration, and enhancement, and facilitating sustainable development, all of which must be Non-Commercial Use.\n\nTo learn how more about the NICFI program, streaming and downloading basemaps please read the [NICFI Data Program User Guide](https://assets.planet.com/docs/NICFI_UserGuidesFAQ.pdf).\n\nThis collection contains both monthly and biannual mosaics. Biannual mosaics are available from December 2015 - August 2020. Monthly mosaics are available from September 2020. The STAC items include a `planet-nicfi:cadence` field indicating the type of mosaic.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "imagery,nicfi,planet,planet-nicfi-analytic,satellite,tropics", "license": "proprietary", "title": "Planet-NICFI Basemaps (Analytic)", "missionStartDate": "2015-12-01T00:00:00Z"}, "modis-17A2H-061": {"abstract": "The Version 6.1 Gross Primary Productivity (GPP) product is a cumulative 8-day composite of values with 500 meter (m) pixel size based on the radiation use efficiency concept that can be potentially used as inputs to data models to calculate terrestrial energy, carbon, water cycle processes, and biogeochemistry of vegetation. The Moderate Resolution Imaging Spectroradiometer (MODIS) data product includes information about GPP and Net Photosynthesis (PSN). The PSN band values are the GPP less the Maintenance Respiration (MR). The data product also contains a PSN Quality Control (QC) layer. The quality layer contains quality information for both the GPP and the PSN.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod17a2h,modis,modis-17a2h-061,myd17a2h,nasa,satellite,terra,vegetation", "license": "proprietary", "title": "MODIS Gross Primary Productivity 8-Day", "missionStartDate": "2000-02-18T00:00:00Z"}, "modis-11A2-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) Land Surface Temperature/Emissivity 8-Day Version 6.1 product provides an average 8-day per-pixel Land Surface Temperature and Emissivity (LST&E) with a 1 kilometer (km) spatial resolution in a 1,200 by 1,200 km grid. Each pixel value in the MOD11A2 is a simple average of all the corresponding MOD11A1 LST pixels collected within that 8-day period. The 8-day compositing period was chosen because twice that period is the exact ground track repeat period of the Terra and Aqua platforms. Provided along with the daytime and nighttime surface temperature bands are associated quality control assessments, observation times, view zenith angles, and clear-sky coverages along with bands 31 and 32 emissivities from land cover types.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod11a2,modis,modis-11a2-061,myd11a2,nasa,satellite,temperature,terra", "license": "proprietary", "title": "MODIS Land Surface Temperature/Emissivity 8-Day", "missionStartDate": "2000-02-18T00:00:00Z"}, "daymet-daily-pr": {"abstract": "Gridded estimates of daily weather parameters. [Daymet](https://daymet.ornl.gov) Version 4 variables include the following parameters: minimum temperature, maximum temperature, precipitation, shortwave radiation, vapor pressure, snow water equivalent, and day length.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1840](https://doi.org/10.3334/ORNLDAAC/1840) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#daily).\n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "daymet,daymet-daily-pr,precipitation,puerto-rico,temperature,vapor-pressure,weather", "license": "proprietary", "title": "Daymet Daily Puerto Rico", "missionStartDate": "1980-01-01T12:00:00Z"}, "3dep-lidar-dtm-native": {"abstract": "This collection is derived from the [USGS 3DEP COPC collection](https://planetarycomputer.microsoft.com/dataset/3dep-lidar-copc). It creates a Digital Terrain Model (DTM) using the vendor provided (native) ground classification and [`pdal.filters.range`](https://pdal.io/stages/filters.range.html#filters-range) to output a collection of Cloud Optimized GeoTIFFs, removing all points that have been classified as noise.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-dtm-native,cog,dtm,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Digital Terrain Model (Native)", "missionStartDate": "2012-01-01T00:00:00Z"}, "3dep-lidar-classification": {"abstract": "This collection is derived from the [USGS 3DEP COPC collection](https://planetarycomputer.microsoft.com/dataset/3dep-lidar-copc). It uses the [ASPRS](https://www.asprs.org/) (American Society for Photogrammetry and Remote Sensing) [Lidar point classification](https://desktop.arcgis.com/en/arcmap/latest/manage-data/las-dataset/lidar-point-classification.htm). See [LAS specification](https://www.ogc.org/standards/LAS) for details.\n\nThis COG type is based on the Classification [PDAL dimension](https://pdal.io/dimensions.html) and uses [`pdal.filters.range`](https://pdal.io/stages/filters.range.html) to select a subset of interesting classifications. Do note that not all LiDAR collections contain a full compliment of classification labels.\nTo remove outliers, the PDAL pipeline uses a noise filter and then outputs the Classification dimension.\n\nThe STAC collection implements the [`item_assets`](https://github.com/stac-extensions/item-assets) and [`classification`](https://github.com/stac-extensions/classification) extensions. These classes are displayed in the \"Item assets\" below. You can programmatically access the full list of class values and descriptions using the `classification:classes` field form the `data` asset on the STAC collection.\n\nClassification rasters were produced as a subset of LiDAR classification categories:\n\n```\n0, Never Classified\n1, Unclassified\n2, Ground\n3, Low Vegetation\n4, Medium Vegetation\n5, High Vegetation\n6, Building\n9, Water\n10, Rail\n11, Road\n17, Bridge Deck\n```\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-classification,classification,cog,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Classification", "missionStartDate": "2012-01-01T00:00:00Z"}, "3dep-lidar-dtm": {"abstract": "This collection is derived from the [USGS 3DEP COPC collection](https://planetarycomputer.microsoft.com/dataset/3dep-lidar-copc). It creates a Digital Terrain Model (DTM) using [`pdal.filters.smrf`](https://pdal.io/stages/filters.smrf.html#filters-smrf) to output a collection of Cloud Optimized GeoTIFFs.\n\nThe Simple Morphological Filter (SMRF) classifies ground points based on the approach outlined in [Pingel2013](https://pdal.io/references.html#pingel2013).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-dtm,cog,dtm,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Digital Terrain Model", "missionStartDate": "2012-01-01T00:00:00Z"}, "gap": {"abstract": "The [USGS GAP/LANDFIRE National Terrestrial Ecosystems data](https://www.sciencebase.gov/catalog/item/573cc51be4b0dae0d5e4b0c5), based on the [NatureServe Terrestrial Ecological Systems](https://www.natureserve.org/products/terrestrial-ecological-systems-united-states), are the foundation of the most detailed, consistent map of vegetation available for the United States. These data facilitate planning and management for biological diversity on a regional and national scale.\n\nThis dataset includes the [land cover](https://www.usgs.gov/core-science-systems/science-analytics-and-synthesis/gap/science/land-cover) component of the GAP/LANDFIRE project.\n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "gap,land-cover,landfire,united-states,usgs", "license": "proprietary", "title": "USGS Gap Land Cover", "missionStartDate": "1999-01-01T00:00:00Z"}, "modis-17A2HGF-061": {"abstract": "The Version 6.1 Gross Primary Productivity (GPP) product is a cumulative 8-day composite of values with 500 meter (m) pixel size based on the radiation use efficiency concept that can be potentially used as inputs to data models to calculate terrestrial energy, carbon, water cycle processes, and biogeochemistry of vegetation. The Moderate Resolution Imaging Spectroradiometer (MODIS) data product includes information about GPP and Net Photosynthesis (PSN). The PSN band values are the GPP less the Maintenance Respiration (MR). The data product also contains a PSN Quality Control (QC) layer. The quality layer contains quality information for both the GPP and the PSN. This product will be generated at the end of each year when the entire yearly 8-day 15A2H is available. Hence, the gap-filled A2HGF is the improved 17, which has cleaned the poor-quality inputs from 8-day Leaf Area Index and Fraction of Photosynthetically Active Radiation (FPAR/LAI) based on the Quality Control (QC) label for every pixel. If any LAI/FPAR pixel did not meet the quality screening criteria, its value is determined through linear interpolation. However, users cannot get this product in near-real time because it will be generated only at the end of a given year.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod17a2hgf,modis,modis-17a2hgf-061,myd17a2hgf,nasa,satellite,terra,vegetation", "license": "proprietary", "title": "MODIS Gross Primary Productivity 8-Day Gap-Filled", "missionStartDate": "2000-02-18T00:00:00Z"}, "planet-nicfi-visual": {"abstract": "*Note: Assets in this collection are only available to winners of the [GEO-Microsoft Planetary Computer RFP](https://www.earthobservations.org/geo_blog_obs.php?id=528). Others wishing to use the data can sign up and access it from Planet at [https://www.planet.com/nicfi/](https://www.planet.com/nicfi/) and email [planetarycomputer@microsoft.com](mailto:planetarycomputer@microsoft.com).*\n\nThrough Norway\u2019s International Climate & Forests Initiative (NICFI), users can access Planet\u2019s high-resolution, analysis-ready mosaics of the world\u2019s tropics in order to help reduce and reverse the loss of tropical forests, combat climate change, conserve biodiversity, and facilitate sustainable development.\n\nIn support of NICFI\u2019s mission, you can use this data for a number of projects including, but not limited to:\n\n* Advance scientific research about the world\u2019s tropical forests and the critical services they provide.\n* Implement and improve policies for sustainable forest management and land use in developing tropical forest countries and jurisdictions.\n* Increase transparency and accountability in the tropics.\n* Protect and improve the rights of indigenous peoples and local communities in tropical forest countries.\n* Innovate solutions towards reducing pressure on forests from global commodities and financial markets.\n* In short, the primary purpose of the NICFI Program is to support reducing and reversing the loss of tropical forests, contributing to combating climate change, conserving biodiversity, contributing to forest regrowth, restoration, and enhancement, and facilitating sustainable development, all of which must be Non-Commercial Use.\n\nTo learn how more about the NICFI program, streaming and downloading basemaps please read the [NICFI Data Program User Guide](https://assets.planet.com/docs/NICFI_UserGuidesFAQ.pdf).\n\nThis collection contains both monthly and biannual mosaics. Biannual mosaics are available from December 2015 - August 2020. Monthly mosaics are available from September 2020. The STAC items include a `planet-nicfi:cadence` field indicating the type of mosaic.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "imagery,nicfi,planet,planet-nicfi-visual,satellite,tropics", "license": "proprietary", "title": "Planet-NICFI Basemaps (Visual)", "missionStartDate": "2015-12-01T00:00:00Z"}, "gbif": {"abstract": "The [Global Biodiversity Information Facility](https://www.gbif.org) (GBIF) is an international network and data infrastructure funded by the world's governments, providing global data that document the occurrence of species. GBIF currently integrates datasets documenting over 1.6 billion species occurrences.\n\nThe GBIF occurrence dataset combines data from a wide array of sources, including specimen-related data from natural history museums, observations from citizen science networks, and automated environmental surveys. While these data are constantly changing at [GBIF.org](https://www.gbif.org), periodic snapshots are taken and made available here. \n\nData are stored in [Parquet](https://parquet.apache.org/) format; the Parquet file schema is described below. Most field names correspond to [terms from the Darwin Core standard](https://dwc.tdwg.org/terms/), and have been interpreted by GBIF's systems to align taxonomy, location, dates, etc. Additional information may be retrieved using the [GBIF API](https://www.gbif.org/developer/summary).\n\nPlease refer to the GBIF [citation guidelines](https://www.gbif.org/citation-guidelines) for information about how to cite GBIF data in publications.. For analyses using the whole dataset, please use the following citation:\n\n> GBIF.org ([Date]) GBIF Occurrence Data [DOI of dataset]\n\nFor analyses where data are significantly filtered, please track the datasetKeys used and use a \"[derived dataset](https://www.gbif.org/citation-guidelines#derivedDatasets)\" record for citing the data.\n\nThe [GBIF data blog](https://data-blog.gbif.org/categories/gbif/) contains a number of articles that can help you analyze GBIF data.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "biodiversity,gbif,species", "license": "proprietary", "title": "Global Biodiversity Information Facility (GBIF)", "missionStartDate": "2021-04-13T00:00:00Z"}, "modis-17A3HGF-061": {"abstract": "The Version 6.1 product provides information about annual Net Primary Production (NPP) at 500 meter (m) pixel resolution. Annual Moderate Resolution Imaging Spectroradiometer (MODIS) NPP is derived from the sum of all 8-day Net Photosynthesis (PSN) products (MOD17A2H) from the given year. The PSN value is the difference of the Gross Primary Productivity (GPP) and the Maintenance Respiration (MR). The product will be generated at the end of each year when the entire yearly 8-day 15A2H is available. Hence, the gap-filled product is the improved 17, which has cleaned the poor-quality inputs from 8-day Leaf Area Index and Fraction of Photosynthetically Active Radiation (LAI/FPAR) based on the Quality Control (QC) label for every pixel. If any LAI/FPAR pixel did not meet the quality screening criteria, its value is determined through linear interpolation. However, users cannot get this product in near-real time because it will be generated only at the end of a given year.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod17a3hgf,modis,modis-17a3hgf-061,myd17a3hgf,nasa,satellite,terra,vegetation", "license": "proprietary", "title": "MODIS Net Primary Production Yearly Gap-Filled", "missionStartDate": "2000-02-18T00:00:00Z"}, "modis-09A1-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) 09A1 Version 6.1 product provides an estimate of the surface spectral reflectance of MODIS Bands 1 through 7 corrected for atmospheric conditions such as gasses, aerosols, and Rayleigh scattering. Along with the seven 500 meter (m) reflectance bands are two quality layers and four observation bands. For each pixel, a value is selected from all the acquisitions within the 8-day composite period. The criteria for the pixel choice include cloud and solar zenith. When several acquisitions meet the criteria the pixel with the minimum channel 3 (blue) value is used.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,imagery,mod09a1,modis,modis-09a1-061,myd09a1,nasa,reflectance,satellite,terra", "license": "proprietary", "title": "MODIS Surface Reflectance 8-Day (500m)", "missionStartDate": "2000-02-18T00:00:00Z"}, "alos-dem": {"abstract": "The \"ALOS World 3D-30m\" (AW3D30) dataset is a 30 meter resolution global digital surface model (DSM), developed by the Japan Aerospace Exploration Agency (JAXA). AWD30 was constructed from the Panchromatic Remote-sensing Instrument for Stereo Mapping (PRISM) on board Advanced Land Observing Satellite (ALOS), operated from 2006 to 2011.\n\nSee the [Product Description](https://www.eorc.jaxa.jp/ALOS/en/aw3d30/aw3d30v3.2_product_e_e1.2.pdf) for more details.\n", "instrument": "prism", "platform": null, "platformSerialIdentifier": "alos", "processingLevel": null, "keywords": "alos,alos-dem,dem,dsm,elevation,jaxa,prism", "license": "proprietary", "title": "ALOS World 3D-30m", "missionStartDate": "2016-12-07T00:00:00Z"}, "alos-palsar-mosaic": {"abstract": "Global 25 m Resolution PALSAR-2/PALSAR Mosaic (MOS)", "instrument": "PALSAR,PALSAR-2", "platform": null, "platformSerialIdentifier": "ALOS,ALOS-2", "processingLevel": null, "keywords": "alos,alos-2,alos-palsar-mosaic,global,jaxa,palsar,palsar-2,remote-sensing", "license": "proprietary", "title": "ALOS PALSAR Annual Mosaic", "missionStartDate": "2015-01-01T00:00:00Z"}, "deltares-water-availability": {"abstract": "[Deltares](https://www.deltares.nl/en/) has produced a hydrological model approach to simulate historical daily reservoir variations for 3,236 locations across the globe for the period 1970-2020 using the distributed [wflow_sbm](https://deltares.github.io/Wflow.jl/stable/model_docs/model_configurations/) model. The model outputs long-term daily information on reservoir volume, inflow and outflow dynamics, as well as information on upstream hydrological forcing.\n\nThey hydrological model was forced with 5 different precipitation products. Two products (ERA5 and CHIRPS) are available at the global scale, while for Europe, USA and Australia a regional product was use (i.e. EOBS, NLDAS and BOM, respectively). Using these different precipitation products, it becomes possible to assess the impact of uncertainty in the model forcing. A different number of basins upstream of reservoirs are simulated, given the spatial coverage of each precipitation product.\n\nSee the complete [methodology documentation](https://ai4edatasetspublicassets.blob.core.windows.net/assets/aod_docs/pc-deltares-water-availability-documentation.pdf) for more information.\n\n## Dataset coverages\n\n| Name | Scale | Period | Number of basins |\n|--------|--------------------------|-----------|------------------|\n| ERA5 | Global | 1967-2020 | 3236 |\n| CHIRPS | Global (+/- 50 latitude) | 1981-2020 | 2951 |\n| EOBS | Europe/North Africa | 1979-2020 | 682 |\n| NLDAS | USA | 1979-2020 | 1090 |\n| BOM | Australia | 1979-2020 | 116 |\n\n## STAC Metadata\n\nThis STAC collection includes one STAC item per dataset. The item includes a `deltares:reservoir` property that can be used to query for the URL of a specific dataset.\n\n## Contact\n\nFor questions about this dataset, contact [`aiforearthdatasets@microsoft.com`](mailto:aiforearthdatasets@microsoft.com?subject=deltares-floods%20question).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "deltares,deltares-water-availability,precipitation,reservoir,water,water-availability", "license": "CDLA-Permissive-1.0", "title": "Deltares Global Water Availability", "missionStartDate": "1970-01-01T00:00:00Z"}, "modis-16A3GF-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) MOD16A3GF Version 6.1 Evapotranspiration/Latent Heat Flux (ET/LE) product is a year-end gap-filled yearly composite dataset produced at 500 meter (m) pixel resolution. The algorithm used for the MOD16 data product collection is based on the logic of the Penman-Monteith equation, which includes inputs of daily meteorological reanalysis data along with MODIS remotely sensed data products such as vegetation property dynamics, albedo, and land cover. The product will be generated at the end of each year when the entire yearly 8-day MOD15A2H/MYD15A2H is available. Hence, the gap-filled product is the improved 16, which has cleaned the poor-quality inputs from yearly Leaf Area Index and Fraction of Photosynthetically Active Radiation (LAI/FPAR) based on the Quality Control (QC) label for every pixel. If any LAI/FPAR pixel did not meet the quality screening criteria, its value is determined through linear interpolation. However, users cannot get this product in near-real time because it will be generated only at the end of a given year. Provided in the product are layers for composited ET, LE, Potential ET (PET), and Potential LE (PLE) along with a quality control layer. Two low resolution browse images, ET and LE, are also available for each granule. The pixel values for the two Evapotranspiration layers (ET and PET) are the sum for all days within the defined year, and the pixel values for the two Latent Heat layers (LE and PLE) are the average of all days within the defined year.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod16a3gf,modis,modis-16a3gf-061,myd16a3gf,nasa,satellite,terra,vegetation", "license": "proprietary", "title": "MODIS Net Evapotranspiration Yearly Gap-Filled", "missionStartDate": "2001-01-01T00:00:00Z"}, "modis-21A2-061": {"abstract": "A suite of Moderate Resolution Imaging Spectroradiometer (MODIS) Land Surface Temperature and Emissivity (LST&E) products are available in Collection 6.1. The MOD21 Land Surface Temperatuer (LST) algorithm differs from the algorithm of the MOD11 LST products, in that the MOD21 algorithm is based on the ASTER Temperature/Emissivity Separation (TES) technique, whereas the MOD11 uses the split-window technique. The MOD21 TES algorithm uses a physics-based algorithm to dynamically retrieve both the LST and spectral emissivity simultaneously from the MODIS thermal infrared bands 29, 31, and 32. The TES algorithm is combined with an improved Water Vapor Scaling (WVS) atmospheric correction scheme to stabilize the retrieval during very warm and humid conditions. This dataset is an 8-day composite LST product at 1,000 meter spatial resolution that uses an algorithm based on a simple averaging method. The algorithm calculates the average from all the cloud free 21A1D and 21A1N daily acquisitions from the 8-day period. Unlike the 21A1 data sets where the daytime and nighttime acquisitions are separate products, the 21A2 contains both daytime and nighttime acquisitions as separate Science Dataset (SDS) layers within a single Hierarchical Data Format (HDF) file. The LST, Quality Control (QC), view zenith angle, and viewing time have separate day and night SDS layers, while the values for the MODIS emissivity bands 29, 31, and 32 are the average of both the nighttime and daytime acquisitions. Additional details regarding the method used to create this Level 3 (L3) product are available in the Algorithm Theoretical Basis Document (ATBD).", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod21a2,modis,modis-21a2-061,myd21a2,nasa,satellite,temperature,terra", "license": "proprietary", "title": "MODIS Land Surface Temperature/3-Band Emissivity 8-Day", "missionStartDate": "2000-02-16T00:00:00Z"}, "us-census": {"abstract": "The [2020 Census](https://www.census.gov/programs-surveys/decennial-census/decade/2020/2020-census-main.html) counted every person living in the United States and the five U.S. territories. It marked the 24th census in U.S. history and the first time that households were invited to respond to the census online.\n\nThe tables included on the Planetary Computer provide information on population and geographic boundaries at various levels of cartographic aggregation.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "administrative-boundaries,demographics,population,us-census,us-census-bureau", "license": "proprietary", "title": "US Census", "missionStartDate": "2021-08-01T00:00:00Z"}, "jrc-gsw": {"abstract": "Global surface water products from the European Commission Joint Research Centre, based on Landsat 5, 7, and 8 imagery. Layers in this collection describe the occurrence, change, and seasonality of surface water from 1984-2020. Complete documentation for each layer is available in the [Data Users Guide](https://storage.cloud.google.com/global-surface-water/downloads_ancillary/DataUsersGuidev2020.pdf).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "global,jrc-gsw,landsat,water", "license": "proprietary", "title": "JRC Global Surface Water", "missionStartDate": "1984-03-01T00:00:00Z"}, "deltares-floods": {"abstract": "[Deltares](https://www.deltares.nl/en/) has produced inundation maps of flood depth using a model that takes into account water level attenuation and is forced by sea level. At the coastline, the model is forced by extreme water levels containing surge and tide from GTSMip6. The water level at the coastline is extended landwards to all areas that are hydrodynamically connected to the coast following a \u2018bathtub\u2019 like approach and calculates the flood depth as the difference between the water level and the topography. Unlike a simple 'bathtub' model, this model attenuates the water level over land with a maximum attenuation factor of 0.5\u2009m\u2009km-1. The attenuation factor simulates the dampening of the flood levels due to the roughness over land.\n\nIn its current version, the model does not account for varying roughness over land and permanent water bodies such as rivers and lakes, and it does not account for the compound effects of waves, rainfall, and river discharge on coastal flooding. It also does not include the mitigating effect of coastal flood protection. Flood extents must thus be interpreted as the area that is potentially exposed to flooding without coastal protection.\n\nSee the complete [methodology documentation](https://ai4edatasetspublicassets.blob.core.windows.net/assets/aod_docs/11206409-003-ZWS-0003_v0.1-Planetary-Computer-Deltares-global-flood-docs.pdf) for more information.\n\n## Digital elevation models (DEMs)\n\nThis documentation will refer to three DEMs:\n\n* `NASADEM` is the SRTM-derived [NASADEM](https://planetarycomputer.microsoft.com/dataset/nasadem) product.\n* `MERITDEM` is the [Multi-Error-Removed Improved Terrain DEM](http://hydro.iis.u-tokyo.ac.jp/~yamadai/MERIT_DEM/), derived from SRTM and AW3D.\n* `LIDAR` is the [Global LiDAR Lowland DTM (GLL_DTM_v1)](https://data.mendeley.com/datasets/v5x4vpnzds/1).\n\n## Global datasets\n\nThis collection includes multiple global flood datasets derived from three different DEMs (`NASA`, `MERIT`, and `LIDAR`) and at different resolutions. Not all DEMs have all resolutions:\n\n* `NASADEM` and `MERITDEM` are available at `90m` and `1km` resolutions\n* `LIDAR` is available at `5km` resolution\n\n## Historic event datasets\n\nThis collection also includes historical storm event data files that follow similar DEM and resolution conventions. Not all storms events are available for each DEM and resolution combination, but generally follow the format of:\n\n`events/[DEM]_[resolution]-wm_final/[storm_name]_[event_year]_masked.nc`\n\nFor example, a flood map for the MERITDEM-derived 90m flood data for the \"Omar\" storm in 2008 is available at:\n\n\n\n## Contact\n\nFor questions about this dataset, contact [`aiforearthdatasets@microsoft.com`](mailto:aiforearthdatasets@microsoft.com?subject=deltares-floods%20question).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "deltares,deltares-floods,flood,global,sea-level-rise,water", "license": "CDLA-Permissive-1.0", "title": "Deltares Global Flood Maps", "missionStartDate": "2018-01-01T00:00:00Z"}, "modis-43A4-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) MCD43A4 Version 6.1 Nadir Bidirectional Reflectance Distribution Function (BRDF)-Adjusted Reflectance (NBAR) dataset is produced daily using 16 days of Terra and Aqua MODIS data at 500 meter (m) resolution. The view angle effects are removed from the directional reflectances, resulting in a stable and consistent NBAR product. Data are temporally weighted to the ninth day which is reflected in the Julian date in the file name. Users are urged to use the band specific quality flags to isolate the highest quality full inversion results for their own science applications as described in the User Guide. The MCD43A4 provides NBAR and simplified mandatory quality layers for MODIS bands 1 through 7. Essential quality information provided in the corresponding MCD43A2 data file should be consulted when using this product.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,imagery,mcd43a4,modis,modis-43a4-061,nasa,reflectance,satellite,terra", "license": "proprietary", "title": "MODIS Nadir BRDF-Adjusted Reflectance (NBAR) Daily", "missionStartDate": "2000-02-16T00:00:00Z"}, "modis-09Q1-061": {"abstract": "The 09Q1 Version 6.1 product provides an estimate of the surface spectral reflectance of Moderate Resolution Imaging Spectroradiometer (MODIS) Bands 1 and 2, corrected for atmospheric conditions such as gasses, aerosols, and Rayleigh scattering. Provided along with the 250 meter (m) surface reflectance bands are two quality layers. For each pixel, a value is selected from all the acquisitions within the 8-day composite period. The criteria for the pixel choice include cloud and solar zenith. When several acquisitions meet the criteria the pixel with the minimum channel 3 (blue) value is used.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,imagery,mod09q1,modis,modis-09q1-061,myd09q1,nasa,reflectance,satellite,terra", "license": "proprietary", "title": "MODIS Surface Reflectance 8-Day (250m)", "missionStartDate": "2000-02-18T00:00:00Z"}, "modis-14A1-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) Thermal Anomalies and Fire Daily Version 6.1 data are generated every eight days at 1 kilometer (km) spatial resolution as a Level 3 product. MOD14A1 contains eight consecutive days of fire data conveniently packaged into a single file. The Science Dataset (SDS) layers include the fire mask, pixel quality indicators, maximum fire radiative power (MaxFRP), and the position of the fire pixel within the scan. Each layer consists of daily per pixel information for each of the eight days of data acquisition.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,fire,global,mod14a1,modis,modis-14a1-061,myd14a1,nasa,satellite,terra", "license": "proprietary", "title": "MODIS Thermal Anomalies/Fire Daily", "missionStartDate": "2000-02-18T00:00:00Z"}, "hrea": {"abstract": "The [HREA](http://www-personal.umich.edu/~brianmin/HREA/index.html) project aims to provide open access to new indicators of electricity access and reliability across the world. Leveraging satellite imagery with computational methods, these high-resolution data provide new tools to track progress toward reliable and sustainable energy access across the world.\n\nThis dataset includes settlement-level measures of electricity access, reliability, and usage for 89 nations, derived from nightly VIIRS satellite imagery. Specifically, this dataset provides the following annual values at country-level granularity:\n\n1. **Access**: Predicted likelihood that a settlement is electrified, based on night-by-night comparisons of each settlement against matched uninhabited areas over a calendar year.\n\n2. **Reliability**: Proportion of nights a settlement is statistically brighter than matched uninhabited areas. Areas with more frequent power outages or service interruptions have lower rates.\n\n3. **Usage**: Higher levels of brightness indicate more robust usage of outdoor lighting, which is highly correlated with overall energy consumption.\n\n4. **Nighttime Lights**: Annual composites of VIIRS nighttime light output.\n\nFor more information and methodology, please visit the [HREA website](http://www-personal.umich.edu/~brianmin/HREA/index.html).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "electricity,hrea,viirs", "license": "CC-BY-4.0", "title": "HREA: High Resolution Electricity Access", "missionStartDate": "2012-12-31T00:00:00Z"}, "modis-13Q1-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) Vegetation Indices Version 6.1 data are generated every 16 days at 250 meter (m) spatial resolution as a Level 3 product. The MOD13Q1 product provides two primary vegetation layers. The first is the Normalized Difference Vegetation Index (NDVI) which is referred to as the continuity index to the existing National Oceanic and Atmospheric Administration-Advanced Very High Resolution Radiometer (NOAA-AVHRR) derived NDVI. The second vegetation layer is the Enhanced Vegetation Index (EVI), which has improved sensitivity over high biomass regions. The algorithm chooses the best available pixel value from all the acquisitions from the 16 day period. The criteria used is low clouds, low view angle, and the highest NDVI/EVI value. Along with the vegetation layers and the two quality layers, the HDF file will have MODIS reflectance bands 1 (red), 2 (near-infrared), 3 (blue), and 7 (mid-infrared), as well as four observation layers.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod13q1,modis,modis-13q1-061,myd13q1,nasa,satellite,terra,vegetation", "license": "proprietary", "title": "MODIS Vegetation Indices 16-Day (250m)", "missionStartDate": "2000-02-18T00:00:00Z"}, "modis-14A2-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) Thermal Anomalies and Fire 8-Day Version 6.1 data are generated at 1 kilometer (km) spatial resolution as a Level 3 product. The MOD14A2 gridded composite contains the maximum value of the individual fire pixel classes detected during the eight days of acquisition. The Science Dataset (SDS) layers include the fire mask and pixel quality indicators.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,fire,global,mod14a2,modis,modis-14a2-061,myd14a2,nasa,satellite,terra", "license": "proprietary", "title": "MODIS Thermal Anomalies/Fire 8-Day", "missionStartDate": "2000-02-18T00:00:00Z"}, "sentinel-2-l2a": {"abstract": "The [Sentinel-2](https://sentinel.esa.int/web/sentinel/missions/sentinel-2) program provides global imagery in thirteen spectral bands at 10m-60m resolution and a revisit time of approximately five days. This dataset represents the global Sentinel-2 archive, from 2016 to the present, processed to L2A (bottom-of-atmosphere) using [Sen2Cor](https://step.esa.int/main/snap-supported-plugins/sen2cor/) and converted to [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.", "instrument": "msi", "platform": "sentinel-2", "platformSerialIdentifier": "Sentinel-2A,Sentinel-2B", "processingLevel": null, "keywords": "copernicus,esa,global,imagery,msi,reflectance,satellite,sentinel,sentinel-2,sentinel-2-l2a,sentinel-2a,sentinel-2b", "license": "proprietary", "title": "Sentinel-2 Level-2A", "missionStartDate": "2015-06-27T10:25:31Z"}, "modis-15A2H-061": {"abstract": "The Version 6.1 Moderate Resolution Imaging Spectroradiometer (MODIS) Level 4, Combined Fraction of Photosynthetically Active Radiation (FPAR), and Leaf Area Index (LAI) product is an 8-day composite dataset with 500 meter pixel size. The algorithm chooses the best pixel available from within the 8-day period. LAI is defined as the one-sided green leaf area per unit ground area in broadleaf canopies and as one-half the total needle surface area per unit ground area in coniferous canopies. FPAR is defined as the fraction of incident photosynthetically active radiation (400-700 nm) absorbed by the green elements of a vegetation canopy.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mcd15a2h,mod15a2h,modis,modis-15a2h-061,myd15a2h,nasa,satellite,terra,vegetation", "license": "proprietary", "title": "MODIS Leaf Area Index/FPAR 8-Day", "missionStartDate": "2002-07-04T00:00:00Z"}, "modis-11A1-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) Land Surface Temperature/Emissivity Daily Version 6.1 product provides daily per-pixel Land Surface Temperature and Emissivity (LST&E) with 1 kilometer (km) spatial resolution in a 1,200 by 1,200 km grid. The pixel temperature value is derived from the MOD11_L2 swath product. Above 30 degrees latitude, some pixels may have multiple observations where the criteria for clear-sky are met. When this occurs, the pixel value is a result of the average of all qualifying observations. Provided along with the daytime and nighttime surface temperature bands are associated quality control assessments, observation times, view zenith angles, and clear-sky coverages along with bands 31 and 32 emissivities from land cover types", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod11a1,modis,modis-11a1-061,myd11a1,nasa,satellite,temperature,terra", "license": "proprietary", "title": "MODIS Land Surface Temperature/Emissivity Daily", "missionStartDate": "2000-02-24T00:00:00Z"}, "modis-15A3H-061": {"abstract": "The MCD15A3H Version 6.1 Moderate Resolution Imaging Spectroradiometer (MODIS) Level 4, Combined Fraction of Photosynthetically Active Radiation (FPAR), and Leaf Area Index (LAI) product is a 4-day composite data set with 500 meter pixel size. The algorithm chooses the best pixel available from all the acquisitions of both MODIS sensors located on NASA's Terra and Aqua satellites from within the 4-day period. LAI is defined as the one-sided green leaf area per unit ground area in broadleaf canopies and as one-half the total needle surface area per unit ground area in coniferous canopies. FPAR is defined as the fraction of incident photosynthetically active radiation (400-700 nm) absorbed by the green elements of a vegetation canopy.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mcd15a3h,modis,modis-15a3h-061,nasa,satellite,terra,vegetation", "license": "proprietary", "title": "MODIS Leaf Area Index/FPAR 4-Day", "missionStartDate": "2002-07-04T00:00:00Z"}, "modis-13A1-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) Vegetation Indices 16-Day Version 6.1 product provides Vegetation Index (VI) values at a per pixel basis at 500 meter (m) spatial resolution. There are two primary vegetation layers. The first is the Normalized Difference Vegetation Index (NDVI), which is referred to as the continuity index to the existing National Oceanic and Atmospheric Administration-Advanced Very High Resolution Radiometer (NOAA-AVHRR) derived NDVI. The second vegetation layer is the Enhanced Vegetation Index (EVI), which has improved sensitivity over high biomass regions. The algorithm for this product chooses the best available pixel value from all the acquisitions from the 16 day period. The criteria used is low clouds, low view angle, and the highest NDVI/EVI value. Provided along with the vegetation layers and two quality assurance (QA) layers are reflectance bands 1 (red), 2 (near-infrared), 3 (blue), and 7 (mid-infrared), as well as four observation layers.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod13a1,modis,modis-13a1-061,myd13a1,nasa,satellite,terra,vegetation", "license": "proprietary", "title": "MODIS Vegetation Indices 16-Day (500m)", "missionStartDate": "2000-02-18T00:00:00Z"}, "daymet-daily-na": {"abstract": "Gridded estimates of daily weather parameters. [Daymet](https://daymet.ornl.gov) Version 4 variables include the following parameters: minimum temperature, maximum temperature, precipitation, shortwave radiation, vapor pressure, snow water equivalent, and day length.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1840](https://doi.org/10.3334/ORNLDAAC/1840) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#daily).\n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "daymet,daymet-daily-na,north-america,precipitation,temperature,vapor-pressure,weather", "license": "proprietary", "title": "Daymet Daily North America", "missionStartDate": "1980-01-01T12:00:00Z"}, "nrcan-landcover": {"abstract": "Collection of Land Cover products for Canada as produced by Natural Resources Canada using Landsat satellite imagery. This collection of cartographic products offers classified Land Cover of Canada at a 30 metre scale, updated on a 5 year basis.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "canada,land-cover,landsat,north-america,nrcan-landcover,remote-sensing", "license": "OGL-Canada-2.0", "title": "Land Cover of Canada", "missionStartDate": "2015-01-01T00:00:00Z"}, "modis-10A2-061": {"abstract": "This global Level-3 (L3) data set provides the maximum snow cover extent observed over an eight-day period within 10degx10deg MODIS sinusoidal grid tiles. Tiles are generated by compositing 500 m observations from the 'MODIS Snow Cover Daily L3 Global 500m Grid' data set. A bit flag index is used to track the eight-day snow/no-snow chronology for each 500 m cell.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod10a2,modis,modis-10a2-061,myd10a2,nasa,satellite,snow,terra", "license": "proprietary", "title": "MODIS Snow Cover 8-day", "missionStartDate": "2000-02-18T00:00:00Z"}, "ecmwf-forecast": {"abstract": "The [ECMWF catalog of real-time products](https://www.ecmwf.int/en/forecasts/datasets/catalogue-ecmwf-real-time-products) offers real-time meterological and oceanographic productions from the ECMWF forecast system. Users should consult the [ECMWF Forecast User Guide](https://confluence.ecmwf.int/display/FUG/1+Introduction) for detailed information on each of the products.\n\n## Overview of products\n\nThe following diagram shows the publishing schedule of the various products.\n\n\n\nThe vertical axis shows the various products, defined below, which are grouped by combinations of `stream`, `forecast type`, and `reference time`. The horizontal axis shows *forecast times* in 3-hour intervals out from the reference time. A black square over a particular forecast time, or step, indicates that a forecast is made for that forecast time, for that particular `stream`, `forecast type`, `reference time` combination.\n\n* **stream** is the forecasting system that produced the data. The values are available in the `ecmwf:stream` summary of the STAC collection. They are:\n * `enfo`: [ensemble forecast](https://confluence.ecmwf.int/display/FUG/ENS+-+Ensemble+Forecasts), atmospheric fields\n * `mmsf`: [multi-model seasonal forecasts](https://confluence.ecmwf.int/display/FUG/Long-Range+%28Seasonal%29+Forecast) fields from the ECMWF model only.\n * `oper`: [high-resolution forecast](https://confluence.ecmwf.int/display/FUG/HRES+-+High-Resolution+Forecast), atmospheric fields \n * `scda`: short cut-off high-resolution forecast, atmospheric fields (also known as \"high-frequency products\")\n * `scwv`: short cut-off high-resolution forecast, ocean wave fields (also known as \"high-frequency products\") and\n * `waef`: [ensemble forecast](https://confluence.ecmwf.int/display/FUG/ENS+-+Ensemble+Forecasts), ocean wave fields,\n * `wave`: wave model\n* **type** is the forecast type. The values are available in the `ecmwf:type` summary of the STAC collection. They are:\n * `fc`: forecast\n * `ef`: ensemble forecast\n * `pf`: ensemble probabilities\n * `tf`: trajectory forecast for tropical cyclone tracks\n* **reference time** is the hours after midnight when the model was run. Each stream / type will produce assets for different forecast times (steps from the reference datetime) depending on the reference time.\n\nVisit the [ECMWF's User Guide](https://confluence.ecmwf.int/display/UDOC/ECMWF+Open+Data+-+Real+Time) for more details on each of the various products.\n\nAssets are available for the previous 30 days.\n\n## Asset overview\n\nThe data are provided as [GRIB2 files](https://confluence.ecmwf.int/display/CKB/What+are+GRIB+files+and+how+can+I+read+them).\nAdditionally, [index files](https://confluence.ecmwf.int/display/UDOC/ECMWF+Open+Data+-+Real+Time#ECMWFOpenDataRealTime-IndexFilesIndexfiles) are provided, which can be used to read subsets of the data from Azure Blob Storage.\n\nWithin each `stream`, `forecast type`, `reference time`, the structure of the data are mostly consistent. Each GRIB2 file will have the\nsame data variables, coordinates (aside from `time` as the *reference time* changes and `step` as the *forecast time* changes). The exception\nis the `enfo-ep` and `waef-ep` products, which have more `step`s in the 240-hour forecast than in the 360-hour forecast. \n\nSee the example notebook for more on how to access the data.\n\n## STAC metadata\n\nThe Planetary Computer provides a single STAC item per GRIB2 file. Each GRIB2 file is global in extent, so every item has the same\n`bbox` and `geometry`.\n\nA few custom properties are available on each STAC item, which can be used in searches to narrow down the data to items of interest:\n\n* `ecmwf:stream`: The forecasting system (see above for definitions). The full set of values is available in the Collection's summaries.\n* `ecmwf:type`: The forecast type (see above for definitions). The full set of values is available in the Collection's summaries.\n* `ecmwf:step`: The offset from the reference datetime, expressed as ``, for example `\"3h\"` means \"3 hours from the reference datetime\". \n* `ecmwf:reference_datetime`: The datetime when the model was run. This indicates when the forecast *was made*, rather than when it's valid for.\n* `ecmwf:forecast_datetime`: The datetime for which the forecast is valid. This is also set as the item's `datetime`.\n\nSee the example notebook for more on how to use the STAC metadata to query for particular data.\n\n## Attribution\n\nThe products listed and described on this page are available to the public and their use is governed by the [Creative Commons CC-4.0-BY license and the ECMWF Terms of Use](https://apps.ecmwf.int/datasets/licences/general/). This means that the data may be redistributed and used commercially, subject to appropriate attribution.\n\nThe following wording should be attached to the use of this ECMWF dataset: \n\n1. Copyright statement: Copyright \"\u00a9 [year] European Centre for Medium-Range Weather Forecasts (ECMWF)\".\n2. Source [www.ecmwf.int](http://www.ecmwf.int/)\n3. License Statement: This data is published under a Creative Commons Attribution 4.0 International (CC BY 4.0). [https://creativecommons.org/licenses/by/4.0/](https://creativecommons.org/licenses/by/4.0/)\n4. Disclaimer: ECMWF does not accept any liability whatsoever for any error or omission in the data, their availability, or for any loss or damage arising from their use.\n5. Where applicable, an indication if the material has been modified and an indication of previous modifications.\n\nThe following wording shall be attached to services created with this ECMWF dataset:\n\n1. Copyright statement: Copyright \"This service is based on data and products of the European Centre for Medium-Range Weather Forecasts (ECMWF)\".\n2. Source www.ecmwf.int\n3. License Statement: This ECMWF data is published under a Creative Commons Attribution 4.0 International (CC BY 4.0). [https://creativecommons.org/licenses/by/4.0/](https://creativecommons.org/licenses/by/4.0/)\n4. Disclaimer: ECMWF does not accept any liability whatsoever for any error or omission in the data, their availability, or for any loss or damage arising from their use.\n5. Where applicable, an indication if the material has been modified and an indication of previous modifications\n\n## More information\n\nFor more, see the [ECMWF's User Guide](https://confluence.ecmwf.int/display/UDOC/ECMWF+Open+Data+-+Real+Time) and [example notebooks](https://github.com/ecmwf/notebook-examples/tree/master/opencharts).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "ecmwf,ecmwf-forecast,forecast,weather", "license": "CC-BY-4.0", "title": "ECMWF Open Data (real-time)", "missionStartDate": null}, "noaa-mrms-qpe-24h-pass2": {"abstract": "The [Multi-Radar Multi-Sensor (MRMS) Quantitative Precipitation Estimation (QPE)](https://www.nssl.noaa.gov/projects/mrms/) products are seamless 1-km mosaics of precipitation accumulation covering the continental United States, Alaska, Hawaii, the Caribbean, and Guam. The products are automatically generated through integration of data from multiple radars and radar networks, surface and satellite observations, numerical weather prediction (NWP) models, and climatology. The products are updated hourly at the top of the hour.\n\nMRMS QPE is available as a \"Pass 1\" or \"Pass 2\" product. The Pass 1 product is available with a 60-minute latency and includes 60-65% of gauges. The Pass 2 product has a higher latency of 120 minutes, but includes 99% of gauges. The Pass 1 and Pass 2 products are broken into 1-, 3-, 6-, 12-, 24-, 48-, and 72-hour accumulation sub-products.\n\nThis Collection contains the **24-Hour Pass 2** sub-product, i.e., 24-hour cumulative precipitation accumulation with a 2-hour latency. The data are available in [Cloud Optimized GeoTIFF](https://www.cogeo.org/) format as well as the original source GRIB2 format files. The GRIB2 files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "caribbean,guam,mrms,noaa,noaa-mrms-qpe-24h-pass2,precipitation,qpe,united-states,weather", "license": "proprietary", "title": "NOAA MRMS QPE 24-Hour Pass 2", "missionStartDate": "2022-07-21T20:00:00Z"}, "sentinel-1-grd": {"abstract": "The [Sentinel-1](https://sentinel.esa.int/web/sentinel/missions/sentinel-1) mission is a constellation of two polar-orbiting satellites, operating day and night performing C-band synthetic aperture radar imaging. The Level-1 Ground Range Detected (GRD) products in this Collection consist of focused SAR data that has been detected, multi-looked and projected to ground range using the Earth ellipsoid model WGS84. The ellipsoid projection of the GRD products is corrected using the terrain height specified in the product general annotation. The terrain height used varies in azimuth but is constant in range (but can be different for each IW/EW sub-swath).\n\nGround range coordinates are the slant range coordinates projected onto the ellipsoid of the Earth. Pixel values represent detected amplitude. Phase information is lost. The resulting product has approximately square resolution pixels and square pixel spacing with reduced speckle at a cost of reduced spatial resolution.\n\nFor the IW and EW GRD products, multi-looking is performed on each burst individually. All bursts in all sub-swaths are then seamlessly merged to form a single, contiguous, ground range, detected image per polarization.\n\nFor more information see the [ESA documentation](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-1-sar/product-types-processing-levels/level-1)\n\n### Terrain Correction\n\nUsers might want to geometrically or radiometrically terrain correct the Sentinel-1 GRD data from this collection. The [Sentinel-1-RTC Collection](https://planetarycomputer.microsoft.com/dataset/sentinel-1-rtc) collection is a global radiometrically terrain corrected dataset derived from Sentinel-1 GRD. Additionally, users can terrain-correct on the fly using [any DEM available on the Planetary Computer](https://planetarycomputer.microsoft.com/catalog?tags=DEM). See [Customizable radiometric terrain correction](https://planetarycomputer.microsoft.com/docs/tutorials/customizable-rtc-sentinel1/) for more.", "instrument": null, "platform": "Sentinel-1", "platformSerialIdentifier": "SENTINEL-1A,SENTINEL-1B", "processingLevel": null, "keywords": "c-band,copernicus,esa,grd,sar,sentinel,sentinel-1,sentinel-1-grd,sentinel-1a,sentinel-1b", "license": "proprietary", "title": "Sentinel 1 Level-1 Ground Range Detected (GRD)", "missionStartDate": "2014-10-10T00:28:21Z"}, "nasadem": {"abstract": "[NASADEM](https://earthdata.nasa.gov/esds/competitive-programs/measures/nasadem) provides global topographic data at 1 arc-second (~30m) horizontal resolution, derived primarily from data captured via the [Shuttle Radar Topography Mission](https://www2.jpl.nasa.gov/srtm/) (SRTM).\n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "dem,elevation,jpl,nasa,nasadem,nga,srtm,usgs", "license": "proprietary", "title": "NASADEM HGT v001", "missionStartDate": "2000-02-20T00:00:00Z"}, "io-lulc": {"abstract": "__Note__: _A new version of this item is available for your use. This mature version of the map remains available for use in existing applications. This item will be retired in December 2024. There is 2020 data available in the newer [9-class dataset](https://planetarycomputer.microsoft.com/dataset/io-lulc-9-class)._\n\nGlobal estimates of 10-class land use/land cover (LULC) for 2020, derived from ESA Sentinel-2 imagery at 10m resolution. This dataset was generated by [Impact Observatory](http://impactobservatory.com/), who used billions of human-labeled pixels (curated by the National Geographic Society) to train a deep learning model for land classification. The global map was produced by applying this model to the relevant yearly Sentinel-2 scenes on the Planetary Computer.\n\nThis dataset is also available on the [ArcGIS Living Atlas of the World](https://livingatlas.arcgis.com/landcover/).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "global,io-lulc,land-cover,land-use,sentinel", "license": "CC-BY-4.0", "title": "Esri 10-Meter Land Cover (10-class)", "missionStartDate": "2017-01-01T00:00:00Z"}, "landsat-c2-l1": {"abstract": "Landsat Collection 2 Level-1 data, consisting of quantized and calibrated scaled Digital Numbers (DN) representing the multispectral image data. These [Level-1](https://www.usgs.gov/landsat-missions/landsat-collection-2-level-1-data) data can be [rescaled](https://www.usgs.gov/landsat-missions/using-usgs-landsat-level-1-data-product) to top of atmosphere (TOA) reflectance and/or radiance. Thermal band data can be rescaled to TOA brightness temperature.\n\nThis dataset represents the global archive of Level-1 data from [Landsat Collection 2](https://www.usgs.gov/core-science-systems/nli/landsat/landsat-collection-2) acquired by the [Multispectral Scanner System](https://landsat.gsfc.nasa.gov/multispectral-scanner-system/) onboard Landsat 1 through Landsat 5 from July 7, 1972 to January 7, 2013. Images are stored in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.\n", "instrument": "mss", "platform": null, "platformSerialIdentifier": "landsat-1,landsat-2,landsat-3,landsat-4,landsat-5", "processingLevel": null, "keywords": "global,imagery,landsat,landsat-1,landsat-2,landsat-3,landsat-4,landsat-5,landsat-c2-l1,mss,nasa,satellite,usgs", "license": "proprietary", "title": "Landsat Collection 2 Level-1", "missionStartDate": "1972-07-25T00:00:00Z"}, "drcog-lulc": {"abstract": "The [Denver Regional Council of Governments (DRCOG) Land Use/Land Cover (LULC)](https://drcog.org/services-and-resources/data-maps-and-modeling/regional-land-use-land-cover-project) datasets are developed in partnership with the [Babbit Center for Land and Water Policy](https://www.lincolninst.edu/our-work/babbitt-center-land-water-policy) and the [Chesapeake Conservancy](https://www.chesapeakeconservancy.org/)'s Conservation Innovation Center (CIC). DRCOG LULC includes 2018 data at 3.28ft (1m) resolution covering 1,000 square miles and 2020 data at 1ft resolution covering 6,000 square miles of the Denver, Colorado region. The classification data is derived from the USDA's 1m National Agricultural Imagery Program (NAIP) aerial imagery and leaf-off aerial ortho-imagery captured as part of the [Denver Regional Aerial Photography Project](https://drcog.org/services-and-resources/data-maps-and-modeling/denver-regional-aerial-photography-project) (6in resolution everywhere except the mountainous regions to the west, which are 1ft resolution).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "drcog-lulc,land-cover,land-use,naip,usda", "license": "proprietary", "title": "Denver Regional Council of Governments Land Use Land Cover", "missionStartDate": "2018-01-01T00:00:00Z"}, "chesapeake-lc-7": {"abstract": "A high-resolution 1-meter [land cover data product](https://www.chesapeakeconservancy.org/conservation-innovation-center/high-resolution-data/land-cover-data-project/) in raster format for the entire Chesapeake Bay watershed based on 2013-2014 imagery from the National Agriculture Imagery Program (NAIP). The product area encompasses over 250,000 square kilometers in New York, Pennsylvania, Maryland, Delaware, West Virginia, Virginia, and the District of Columbia. The dataset was created by the [Chesapeake Conservancy](https://www.chesapeakeconservancy.org/) [Conservation Innovation Center](https://www.chesapeakeconservancy.org/conservation-innovation-center/) for the [Chesapeake Bay Program](https://www.chesapeakebay.net/), which is a regional partnership of EPA, other federal, state, and local agencies and governments, nonprofits, and academic institutions, that leads and directs Chesapeake Bay restoration efforts. \n\nThe dataset is composed of a uniform set of 7 land cover classes. Additional information is available in a [User Guide](https://www.chesapeakeconservancy.org/wp-content/uploads/2020/06/Chesapeake_Conservancy_LandCover101Guide_June2020.pdf). Images are stored in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "chesapeake-bay-watershed,chesapeake-conservancy,chesapeake-lc-7,land-cover", "license": "proprietary", "title": "Chesapeake Land Cover (7-class)", "missionStartDate": "2013-01-01T00:00:00Z"}, "chesapeake-lc-13": {"abstract": "A high-resolution 1-meter [land cover data product](https://www.chesapeakeconservancy.org/conservation-innovation-center/high-resolution-data/land-cover-data-project/) in raster format for the entire Chesapeake Bay watershed based on 2013-2014 imagery from the National Agriculture Imagery Program (NAIP). The product area encompasses over 250,000 square kilometers in New York, Pennsylvania, Maryland, Delaware, West Virginia, Virginia, and the District of Columbia. The dataset was created by the [Chesapeake Conservancy](https://www.chesapeakeconservancy.org/) [Conservation Innovation Center](https://www.chesapeakeconservancy.org/conservation-innovation-center/) for the [Chesapeake Bay Program](https://www.chesapeakebay.net/), which is a regional partnership of EPA, other federal, state, and local agencies and governments, nonprofits, and academic institutions, that leads and directs Chesapeake Bay restoration efforts. \n\nThe dataset is composed of 13 land cover classes, although not all classes are used in all areas. Additional information is available in a [User Guide](https://www.chesapeakeconservancy.org/wp-content/uploads/2020/06/Chesapeake_Conservancy_LandCover101Guide_June2020.pdf) and [Class Description](https://www.chesapeakeconservancy.org/wp-content/uploads/2020/03/LC_Class_Descriptions.pdf) document. Images are stored in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "chesapeake-bay-watershed,chesapeake-conservancy,chesapeake-lc-13,land-cover", "license": "proprietary", "title": "Chesapeake Land Cover (13-class)", "missionStartDate": "2013-01-01T00:00:00Z"}, "chesapeake-lu": {"abstract": "A high-resolution 1-meter [land use data product](https://www.chesapeakeconservancy.org/conservation-innovation-center/high-resolution-data/land-use-data-project/) in raster format for the entire Chesapeake Bay watershed. The dataset was created by modifying the 2013-2014 high-resolution [land cover dataset](https://www.chesapeakeconservancy.org/conservation-innovation-center/high-resolution-data/land-cover-data-project/) using 13 ancillary datasets including data on zoning, land use, parcel boundaries, landfills, floodplains, and wetlands. The product area encompasses over 250,000 square kilometers in New York, Pennsylvania, Maryland, Delaware, West Virginia, Virginia, and the District of Columbia. The dataset was created by the [Chesapeake Conservancy](https://www.chesapeakeconservancy.org/) [Conservation Innovation Center](https://www.chesapeakeconservancy.org/conservation-innovation-center/) for the [Chesapeake Bay Program](https://www.chesapeakebay.net/), which is a regional partnership of EPA, other federal, state, and local agencies and governments, nonprofits, and academic institutions that leads and directs Chesapeake Bay restoration efforts.\n\nThe dataset is composed of 17 land use classes in Virginia and 16 classes in all other jurisdictions. Additional information is available in a land use [Class Description](https://www.chesapeakeconservancy.org/wp-content/uploads/2018/11/2013-Phase-6-Mapped-Land-Use-Definitions-Updated-PC-11302018.pdf) document. Images are stored in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "chesapeake-bay-watershed,chesapeake-conservancy,chesapeake-lu,land-use", "license": "proprietary", "title": "Chesapeake Land Use", "missionStartDate": "2013-01-01T00:00:00Z"}, "noaa-mrms-qpe-1h-pass1": {"abstract": "The [Multi-Radar Multi-Sensor (MRMS) Quantitative Precipitation Estimation (QPE)](https://www.nssl.noaa.gov/projects/mrms/) products are seamless 1-km mosaics of precipitation accumulation covering the continental United States, Alaska, Hawaii, the Caribbean, and Guam. The products are automatically generated through integration of data from multiple radars and radar networks, surface and satellite observations, numerical weather prediction (NWP) models, and climatology. The products are updated hourly at the top of the hour.\n\nMRMS QPE is available as a \"Pass 1\" or \"Pass 2\" product. The Pass 1 product is available with a 60-minute latency and includes 60-65% of gauges. The Pass 2 product has a higher latency of 120 minutes, but includes 99% of gauges. The Pass 1 and Pass 2 products are broken into 1-, 3-, 6-, 12-, 24-, 48-, and 72-hour accumulation sub-products.\n\nThis Collection contains the **1-Hour Pass 1** sub-product, i.e., 1-hour cumulative precipitation accumulation with a 1-hour latency. The data are available in [Cloud Optimized GeoTIFF](https://www.cogeo.org/) format as well as the original source GRIB2 format files. The GRIB2 files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "caribbean,guam,mrms,noaa,noaa-mrms-qpe-1h-pass1,precipitation,qpe,united-states,weather", "license": "proprietary", "title": "NOAA MRMS QPE 1-Hour Pass 1", "missionStartDate": "2022-07-21T20:00:00Z"}, "noaa-mrms-qpe-1h-pass2": {"abstract": "The [Multi-Radar Multi-Sensor (MRMS) Quantitative Precipitation Estimation (QPE)](https://www.nssl.noaa.gov/projects/mrms/) products are seamless 1-km mosaics of precipitation accumulation covering the continental United States, Alaska, Hawaii, the Caribbean, and Guam. The products are automatically generated through integration of data from multiple radars and radar networks, surface and satellite observations, numerical weather prediction (NWP) models, and climatology. The products are updated hourly at the top of the hour.\n\nMRMS QPE is available as a \"Pass 1\" or \"Pass 2\" product. The Pass 1 product is available with a 60-minute latency and includes 60-65% of gauges. The Pass 2 product has a higher latency of 120 minutes, but includes 99% of gauges. The Pass 1 and Pass 2 products are broken into 1-, 3-, 6-, 12-, 24-, 48-, and 72-hour accumulation sub-products.\n\nThis Collection contains the **1-Hour Pass 2** sub-product, i.e., 1-hour cumulative precipitation accumulation with a 2-hour latency. The data are available in [Cloud Optimized GeoTIFF](https://www.cogeo.org/) format as well as the original source GRIB2 format files. The GRIB2 files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "caribbean,guam,mrms,noaa,noaa-mrms-qpe-1h-pass2,precipitation,qpe,united-states,weather", "license": "proprietary", "title": "NOAA MRMS QPE 1-Hour Pass 2", "missionStartDate": "2022-07-21T20:00:00Z"}, "noaa-nclimgrid-monthly": {"abstract": "The [NOAA U.S. Climate Gridded Dataset (NClimGrid)](https://www.ncei.noaa.gov/access/metadata/landing-page/bin/iso?id=gov.noaa.ncdc:C00332) consists of four climate variables derived from the [Global Historical Climatology Network daily (GHCNd)](https://www.ncei.noaa.gov/products/land-based-station/global-historical-climatology-network-daily) dataset: maximum temperature, minimum temperature, average temperature, and precipitation. The data is provided in 1/24 degree lat/lon (nominal 5x5 kilometer) grids for the Continental United States (CONUS). \n\nNClimGrid data is available in monthly and daily temporal intervals, with the daily data further differentiated as \"prelim\" (preliminary) or \"scaled\". Preliminary daily data is available within approximately three days of collection. Once a calendar month of preliminary daily data has been collected, it is scaled to match the corresponding monthly value. Monthly data is available from 1895 to the present. Daily preliminary and daily scaled data is available from 1951 to the present. \n\nThis Collection contains **Monthly** data. See the journal publication [\"Improved Historical Temperature and Precipitation Time Series for U.S. Climate Divisions\"](https://journals.ametsoc.org/view/journals/apme/53/5/jamc-d-13-0248.1.xml) for more information about monthly gridded data.\n\nUsers of all NClimGrid data product should be aware that [NOAA advertises](https://www.ncei.noaa.gov/access/metadata/landing-page/bin/iso?id=gov.noaa.ncdc:C00332) that:\n>\"On an annual basis, approximately one year of 'final' NClimGrid data is submitted to replace the initially supplied 'preliminary' data for the same time period. Users should be sure to ascertain which level of data is required for their research.\"\n\nThe source NetCDF files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\n\n*Note*: The Planetary Computer currently has STAC metadata for just the monthly collection. We'll have STAC metadata for daily data in our next release. In the meantime, you can access the daily NetCDF data directly from Blob Storage using the storage container at `https://nclimgridwesteurope.blob.core.windows.net/nclimgrid`. See https://planetarycomputer.microsoft.com/docs/concepts/data-catalog/#access-patterns for more.*\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,nclimgrid,noaa,noaa-nclimgrid-monthly,precipitation,temperature,united-states", "license": "proprietary", "title": "Monthly NOAA U.S. Climate Gridded Dataset (NClimGrid)", "missionStartDate": "1895-01-01T00:00:00Z"}, "goes-glm": {"abstract": "The [Geostationary Lightning Mapper (GLM)](https://www.goes-r.gov/spacesegment/glm.html) is a single-channel, near-infrared optical transient detector that can detect the momentary changes in an optical scene, indicating the presence of lightning. GLM measures total lightning (in-cloud, cloud-to-cloud and cloud-to-ground) activity continuously over the Americas and adjacent ocean regions with near-uniform spatial resolution of approximately 10 km. GLM collects information such as the frequency, location and extent of lightning discharges to identify intensifying thunderstorms and tropical cyclones. Trends in total lightning available from the GLM provide critical information to forecasters, allowing them to focus on developing severe storms much earlier and before these storms produce damaging winds, hail or even tornadoes.\n\nThe GLM data product consists of a hierarchy of earth-located lightning radiant energy measures including events, groups, and flashes:\n\n- Lightning events are detected by the instrument.\n- Lightning groups are a collection of one or more lightning events that satisfy temporal and spatial coincidence thresholds.\n- Similarly, lightning flashes are a collection of one or more lightning groups that satisfy temporal and spatial coincidence thresholds.\n\nThe product includes the relationship among lightning events, groups, and flashes, and the area coverage of lightning groups and flashes. The product also includes processing and data quality metadata, and satellite state and location information. \n\nThis Collection contains GLM L2 data in tabular ([GeoParquet](https://github.com/opengeospatial/geoparquet)) format and the original source NetCDF format. The NetCDF files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).", "instrument": "FM1,FM2", "platform": "GOES", "platformSerialIdentifier": "GOES-16,GOES-17", "processingLevel": ["L2"], "keywords": "fm1,fm2,goes,goes-16,goes-17,goes-glm,l2,lightning,nasa,noaa,satellite,weather", "license": "proprietary", "title": "GOES-R Lightning Detection", "missionStartDate": "2018-02-13T16:10:00Z"}, "usda-cdl": {"abstract": "The Cropland Data Layer (CDL) is a product of the USDA National Agricultural Statistics Service (NASS) with the mission \"to provide timely, accurate and useful statistics in service to U.S. agriculture\" (Johnson and Mueller, 2010, p. 1204). The CDL is a crop-specific land cover classification product of more than 100 crop categories grown in the United States. CDLs are derived using a supervised land cover classification of satellite imagery. The supervised classification relies on first manually identifying pixels within certain images, often called training sites, which represent the same crop or land cover type. Using these training sites, a spectral signature is developed for each crop type that is then used by the analysis software to identify all other pixels in the satellite image representing the same crop. Using this method, a new CDL is compiled annually and released to the public a few months after the end of the growing season.\n\nThis collection includes Cropland, Confidence, Cultivated, and Frequency products.\n\n- Cropland: Crop-specific land cover data created annually. There are currently four individual crop frequency data layers that represent four major crops: corn, cotton, soybeans, and wheat.\n- Confidence: The predicted confidence associated with an output pixel. A value of zero indicates low confidence, while a value of 100 indicates high confidence.\n- Cultivated: cultivated and non-cultivated land cover for CONUS based on land cover information derived from the 2017 through 2021 Cropland products.\n- Frequency: crop specific planting frequency based on land cover information derived from the 2008 through 2021 Cropland products.\n\nFor more, visit the [Cropland Data Layer homepage](https://www.nass.usda.gov/Research_and_Science/Cropland/SARS1a.php).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "agriculture,land-cover,land-use,united-states,usda,usda-cdl", "license": "proprietary", "title": "USDA Cropland Data Layers (CDLs)", "missionStartDate": "2008-01-01T00:00:00Z"}, "eclipse": {"abstract": "The [Project Eclipse](https://www.microsoft.com/en-us/research/project/project-eclipse/) Network is a low-cost air quality sensing network for cities and a research project led by the [Urban Innovation Group]( https://www.microsoft.com/en-us/research/urban-innovation-research/) at Microsoft Research.\n\nProject Eclipse currently includes over 100 locations in Chicago, Illinois, USA.\n\nThis network was deployed starting in July, 2021, through a collaboration with the City of Chicago, the Array of Things Project, JCDecaux Chicago, and the Environmental Law and Policy Center as well as local environmental justice organizations in the city. [This talk]( https://www.microsoft.com/en-us/research/video/technology-demo-project-eclipse-hyperlocal-air-quality-monitoring-for-cities/) documents the network design and data calibration strategy.\n\n## Storage resources\n\nData are stored in [Parquet](https://parquet.apache.org/) files in Azure Blob Storage in the West Europe Azure region, in the following blob container:\n\n`https://ai4edataeuwest.blob.core.windows.net/eclipse`\n\nWithin that container, the periodic occurrence snapshots are stored in `Chicago/YYYY-MM-DD`, where `YYYY-MM-DD` corresponds to the date of the snapshot.\nEach snapshot contains a sensor readings from the next 7-days in Parquet format starting with date on the folder name YYYY-MM-DD.\nTherefore, the data files for the first snapshot are at\n\n`https://ai4edataeuwest.blob.core.windows.net/eclipse/chicago/2022-01-01/data_*.parquet\n\nThe Parquet file schema is as described below. \n\n## Additional Documentation\n\nFor details on Calibration of Pm2.5, O3 and NO2, please see [this PDF](https://ai4edatasetspublicassets.blob.core.windows.net/assets/aod_docs/Calibration_Doc_v1.1.pdf).\n\n## License and attribution\nPlease cite: Daepp, Cabral, Ranganathan et al. (2022) [Eclipse: An End-to-End Platform for Low-Cost, Hyperlocal Environmental Sensing in Cities. ACM/IEEE Information Processing in Sensor Networks. Milan, Italy.](https://www.microsoft.com/en-us/research/uploads/prod/2022/05/ACM_2022-IPSN_FINAL_Eclipse.pdf)\n\n## Contact\n\nFor questions about this dataset, contact [`msrurbanops@microsoft.com`](mailto:msrurbanops@microsoft.com?subject=eclipse%20question) \n\n\n## Learn more\n\nThe [Eclipse Project](https://www.microsoft.com/en-us/research/urban-innovation-research/) contains an overview of the Project Eclipse at Microsoft Research.\n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "air-pollution,eclipse,pm25", "license": "proprietary", "title": "Urban Innovation Eclipse Sensor Data", "missionStartDate": "2021-01-01T00:00:00Z"}, "esa-cci-lc": {"abstract": "The ESA Climate Change Initiative (CCI) [Land Cover dataset](https://cds.climate.copernicus.eu/cdsapp#!/dataset/satellite-land-cover?tab=overview) provides consistent global annual land cover maps at 300m spatial resolution from 1992 to 2020. The land cover classes are defined using the United Nations Food and Agriculture Organization's (UN FAO) [Land Cover Classification System](https://www.fao.org/land-water/land/land-governance/land-resources-planning-toolbox/category/details/en/c/1036361/) (LCCS). In addition to the land cover maps, four quality flags are produced to document the reliability of the classification and change detection. \n\nThe data in this Collection have been converted from the [original NetCDF data](https://planetarycomputer.microsoft.com/dataset/esa-cci-lc-netcdf) to a set of tiled [Cloud Optimized GeoTIFFs](https://www.cogeo.org/) (COGs).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "cci,esa,esa-cci-lc,global,land-cover", "license": "proprietary", "title": "ESA Climate Change Initiative Land Cover Maps (Cloud Optimized GeoTIFF)", "missionStartDate": "1992-01-01T00:00:00Z"}, "esa-cci-lc-netcdf": {"abstract": "The ESA Climate Change Initiative (CCI) [Land Cover dataset](https://cds.climate.copernicus.eu/cdsapp#!/dataset/satellite-land-cover?tab=overview) provides consistent global annual land cover maps at 300m spatial resolution from 1992 to 2020. The land cover classes are defined using the United Nations Food and Agriculture Organization's (UN FAO) [Land Cover Classification System](https://www.fao.org/land-water/land/land-governance/land-resources-planning-toolbox/category/details/en/c/1036361/) (LCCS). In addition to the land cover maps, four quality flags are produced to document the reliability of the classification and change detection. \n\nThe data in this Collection are the original NetCDF files accessed from the [Copernicus Climate Data Store](https://cds.climate.copernicus.eu/#!/home). We recommend users use the [`esa-cci-lc` Collection](planetarycomputer.microsoft.com/dataset/esa-cci-lc), which provides the data as Cloud Optimized GeoTIFFs.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "cci,esa,esa-cci-lc-netcdf,global,land-cover", "license": "proprietary", "title": "ESA Climate Change Initiative Land Cover Maps (NetCDF)", "missionStartDate": "1992-01-01T00:00:00Z"}, "fws-nwi": {"abstract": "The Wetlands Data Layer is the product of over 45 years of work by the National Wetlands Inventory (NWI) and its collaborators and currently contains more than 35 million wetland and deepwater features. This dataset, covering the conterminous United States, Hawaii, Puerto Rico, the Virgin Islands, Guam, the major Northern Mariana Islands and Alaska, continues to grow at a rate of 50 to 100 million acres annually as data are updated.\n\n**NOTE:** Due to the variation in use and analysis of this data by the end user, each state's wetlands data extends beyond the state boundary. Each state includes wetlands data that intersect the 1:24,000 quadrangles that contain part of that state (1:2,000,000 source data). This allows the user to clip the data to their specific analysis datasets. Beware that two adjacent states will contain some of the same data along their borders.\n\nFor more information, visit the National Wetlands Inventory [homepage](https://www.fws.gov/program/national-wetlands-inventory).\n\n## STAC Metadata\n\nIn addition to the `zip` asset in every STAC item, each item has its own assets unique to its wetlands. In general, each item will have several assets, each linking to a [geoparquet](https://github.com/opengeospatial/geoparquet) asset with data for the entire region or a sub-region within that state. Use the `cloud-optimized` [role](https://github.com/radiantearth/stac-spec/blob/master/item-spec/item-spec.md#asset-roles) to select just the geoparquet assets. See the Example Notebook for more.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "fws-nwi,united-states,usfws,wetlands", "license": "proprietary", "title": "FWS National Wetlands Inventory", "missionStartDate": "2022-10-01T00:00:00Z"}, "usgs-lcmap-conus-v13": {"abstract": "The [Land Change Monitoring, Assessment, and Projection](https://www.usgs.gov/special-topics/lcmap) (LCMAP) product provides land cover mapping and change monitoring from the U.S. Geological Survey's [Earth Resources Observation and Science](https://www.usgs.gov/centers/eros) (EROS) Center. LCMAP's Science Products are developed by applying time-series modeling on a per-pixel basis to [Landsat Analysis Ready Data](https://www.usgs.gov/landsat-missions/landsat-us-analysis-ready-data) (ARD) using an implementation of the [Continuous Change Detection and Classification](https://doi.org/10.1016/j.rse.2014.01.011) (CCDC) algorithm. All available clear (non-cloudy) U.S. Landsat ARD observations are fit to a harmonic model to predict future Landsat-like surface reflectance. Where Landsat surface reflectance observations differ significantly from those predictions, a change is identified. Attributes of the resulting model sequences (e.g., start/end dates, residuals, model coefficients) are then used to produce a set of land surface change products and as inputs to the subsequent classification to thematic land cover. \n\nThis [STAC](https://stacspec.org/en) Collection contains [LCMAP CONUS Collection 1.3](https://www.usgs.gov/special-topics/lcmap/collection-13-conus-science-products), which was released in August 2022 for years 1985-2021. The data are tiled according to the Landsat ARD tile grid and consist of [Cloud Optimized GeoTIFFs](https://www.cogeo.org/) (COGs) and corresponding metadata files. Note that the provided COGs differ slightly from those in the USGS source data. They have been reprocessed to add overviews, \"nodata\" values where appropriate, and an updated projection definition.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "conus,land-cover,land-cover-change,lcmap,usgs,usgs-lcmap-conus-v13", "license": "proprietary", "title": "USGS LCMAP CONUS Collection 1.3", "missionStartDate": "1985-01-01T00:00:00Z"}, "usgs-lcmap-hawaii-v10": {"abstract": "The [Land Change Monitoring, Assessment, and Projection](https://www.usgs.gov/special-topics/lcmap) (LCMAP) product provides land cover mapping and change monitoring from the U.S. Geological Survey's [Earth Resources Observation and Science](https://www.usgs.gov/centers/eros) (EROS) Center. LCMAP's Science Products are developed by applying time-series modeling on a per-pixel basis to [Landsat Analysis Ready Data](https://www.usgs.gov/landsat-missions/landsat-us-analysis-ready-data) (ARD) using an implementation of the [Continuous Change Detection and Classification](https://doi.org/10.1016/j.rse.2014.01.011) (CCDC) algorithm. All available clear (non-cloudy) U.S. Landsat ARD observations are fit to a harmonic model to predict future Landsat-like surface reflectance. Where Landsat surface reflectance observations differ significantly from those predictions, a change is identified. Attributes of the resulting model sequences (e.g., start/end dates, residuals, model coefficients) are then used to produce a set of land surface change products and as inputs to the subsequent classification to thematic land cover. \n\nThis [STAC](https://stacspec.org/en) Collection contains [LCMAP Hawaii Collection 1.0](https://www.usgs.gov/special-topics/lcmap/collection-1-hawaii-science-products), which was released in January 2022 for years 2000-2020. The data are tiled according to the Landsat ARD tile grid and consist of [Cloud Optimized GeoTIFFs](https://www.cogeo.org/) (COGs) and corresponding metadata files. Note that the provided COGs differ slightly from those in the USGS source data. They have been reprocessed to add overviews, \"nodata\" values where appropriate, and an updated projection definition.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "hawaii,land-cover,land-cover-change,lcmap,usgs,usgs-lcmap-hawaii-v10", "license": "proprietary", "title": "USGS LCMAP Hawaii Collection 1.0", "missionStartDate": "2000-01-01T00:00:00Z"}, "noaa-climate-normals-tabular": {"abstract": "The [NOAA United States Climate Normals](https://www.ncei.noaa.gov/products/land-based-station/us-climate-normals) provide information about typical climate conditions for thousands of weather station locations across the United States. Normals act both as a ruler to compare current weather and as a predictor of conditions in the near future. The official normals are calculated for a uniform 30 year period, and consist of annual/seasonal, monthly, daily, and hourly averages and statistics of temperature, precipitation, and other climatological variables for each weather station. \n\nNOAA produces Climate Normals in accordance with the [World Meteorological Organization](https://public.wmo.int/en) (WMO), of which the United States is a member. The WMO requires each member nation to compute 30-year meteorological quantity averages at least every 30 years, and recommends an update each decade, in part to incorporate newer weather stations. The 1991\u20132020 U.S. Climate Normals are the latest in a series of decadal normals first produced in the 1950s. \n\nThis Collection contains tabular weather variable data at weather station locations in GeoParquet format, converted from the source CSV files. The source NetCDF files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\n\nData are provided for annual/seasonal, monthly, daily, and hourly frequencies for the following time periods:\n\n- Legacy 30-year normals (1981\u20132010)\n- Supplemental 15-year normals (2006\u20132020)\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate-normals,climatology,conus,noaa,noaa-climate-normals-tabular,surface-observations,weather", "license": "proprietary", "title": "NOAA US Tabular Climate Normals", "missionStartDate": "1981-01-01T00:00:00Z"}, "noaa-climate-normals-netcdf": {"abstract": "The [NOAA Gridded United States Climate Normals](https://www.ncei.noaa.gov/products/land-based-station/us-climate-normals#tab-1027) provide a continuous grid of temperature and precipitation data across the contiguous United States (CONUS). The grids are derived from NOAA's [NClimGrid dataset](https://planetarycomputer.microsoft.com/dataset/group/noaa-nclimgrid), and resolutions (nominal 5x5 kilometer) and spatial extents (CONUS) therefore match that of NClimGrid. Monthly, seasonal, and annual gridded normals are computed from simple averages of the NClimGrid data and are provided for three time-periods: 1901\u20132020, 1991\u20132020, and 2006\u20132020. Daily gridded normals are smoothed for a smooth transition from one day to another and are provided for two time-periods: 1991\u20132020, and 2006\u20132020.\n\nNOAA produces Climate Normals in accordance with the [World Meteorological Organization](https://public.wmo.int/en) (WMO), of which the United States is a member. The WMO requires each member nation to compute 30-year meteorological quantity averages at least every 30 years, and recommends an update each decade, in part to incorporate newer weather stations. The 1991\u20132020 U.S. Climate Normals are the latest in a series of decadal normals first produced in the 1950s. \n\nThe data in this Collection are the original NetCDF files provided by NOAA's National Centers for Environmental Information. This Collection contains gridded data for the following frequencies and time periods:\n\n- Annual, seasonal, and monthly normals\n - 100-year (1901\u20132000)\n - 30-year (1991\u20132020)\n - 15-year (2006\u20132020)\n- Daily normals\n - 30-year (1991\u20132020)\n - 15-year (2006\u20132020)\n\nFor most use-cases, we recommend using the [`noaa-climate-normals-gridded`](https://planetarycomputer.microsoft.com/dataset/noaa-climate-normals-gridded) collection, which contains the same data in Cloud Optimized GeoTIFF format. The NetCDF files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate-normals,climatology,conus,noaa,noaa-climate-normals-netcdf,surface-observations,weather", "license": "proprietary", "title": "NOAA US Gridded Climate Normals (NetCDF)", "missionStartDate": "1901-01-01T00:00:00Z"}, "noaa-climate-normals-gridded": {"abstract": "The [NOAA Gridded United States Climate Normals](https://www.ncei.noaa.gov/products/land-based-station/us-climate-normals#tab-1027) provide a continuous grid of temperature and precipitation data across the contiguous United States (CONUS). The grids are derived from NOAA's [NClimGrid dataset](https://planetarycomputer.microsoft.com/dataset/group/noaa-nclimgrid), and resolutions (nominal 5x5 kilometer) and spatial extents (CONUS) therefore match that of NClimGrid. Monthly, seasonal, and annual gridded normals are computed from simple averages of the NClimGrid data and are provided for three time-periods: 1901\u20132020, 1991\u20132020, and 2006\u20132020. Daily gridded normals are smoothed for a smooth transition from one day to another and are provided for two time-periods: 1991\u20132020, and 2006\u20132020.\n\nNOAA produces Climate Normals in accordance with the [World Meteorological Organization](https://public.wmo.int/en) (WMO), of which the United States is a member. The WMO requires each member nation to compute 30-year meteorological quantity averages at least every 30 years, and recommends an update each decade, in part to incorporate newer weather stations. The 1991\u20132020 U.S. Climate Normals are the latest in a series of decadal normals first produced in the 1950s. \n\nThis Collection contains gridded data for the following frequencies and time periods:\n\n- Annual, seasonal, and monthly normals\n - 100-year (1901\u20132000)\n - 30-year (1991\u20132020)\n - 15-year (2006\u20132020)\n- Daily normals\n - 30-year (1991\u20132020)\n - 15-year (2006\u20132020)\n\nThe data in this Collection have been converted from the original NetCDF format to Cloud Optimized GeoTIFFs (COGs). The source NetCDF files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\n\n## STAC Metadata\n\nThe STAC items in this collection contain several custom fields that can be used to further filter the data.\n\n* `noaa_climate_normals:period`: Climate normal time period. This can be \"1901-2000\", \"1991-2020\", or \"2006-2020\".\n* `noaa_climate_normals:frequency`: Climate normal temporal interval (frequency). This can be \"daily\", \"monthly\", \"seasonal\" , or \"annual\"\n* `noaa_climate_normals:time_index`: Time step index, e.g., month of year (1-12).\n\nThe `description` field of the assets varies by frequency. Using `prcp_norm` as an example, the descriptions are\n\n* annual: \"Annual precipitation normals from monthly precipitation normal values\"\n* seasonal: \"Seasonal precipitation normals (WSSF) from monthly normals\"\n* monthly: \"Monthly precipitation normals from monthly precipitation values\"\n* daily: \"Precipitation normals from daily averages\"\n\nCheck the assets on individual items for the appropriate description.\n\nThe STAC keys for most assets consist of two abbreviations. A \"variable\":\n\n\n| Abbreviation | Description |\n| ------------ | ---------------------------------------- |\n| prcp | Precipitation over the time period |\n| tavg | Mean temperature over the time period |\n| tmax | Maximum temperature over the time period |\n| tmin | Minimum temperature over the time period |\n\nAnd an \"aggregation\":\n\n| Abbreviation | Description |\n| ------------ | ------------------------------------------------------------------------------ |\n| max | Maximum of the variable over the time period |\n| min | Minimum of the variable over the time period |\n| std | Standard deviation of the value over the time period |\n| flag | An count of the number of inputs (months, years, etc.) to calculate the normal |\n| norm | The normal for the variable over the time period |\n\nSo, for example, `prcp_max` for monthly data is the \"Maximum values of all input monthly precipitation normal values\".\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate-normals,climatology,conus,noaa,noaa-climate-normals-gridded,surface-observations,weather", "license": "proprietary", "title": "NOAA US Gridded Climate Normals (Cloud-Optimized GeoTIFF)", "missionStartDate": "1901-01-01T00:00:00Z"}, "aster-l1t": {"abstract": "The [ASTER](https://terra.nasa.gov/about/terra-instruments/aster) instrument, launched on-board NASA's [Terra](https://terra.nasa.gov/) satellite in 1999, provides multispectral images of the Earth at 15m-90m resolution. ASTER images provide information about land surface temperature, color, elevation, and mineral composition.\n\nThis dataset represents ASTER [L1T](https://lpdaac.usgs.gov/products/ast_l1tv003/) data from 2000-2006. L1T images have been terrain-corrected and rotated to a north-up UTM projection. Images are in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.\n", "instrument": "aster", "platform": null, "platformSerialIdentifier": "terra", "processingLevel": null, "keywords": "aster,aster-l1t,global,nasa,satellite,terra,usgs", "license": "proprietary", "title": "ASTER L1T", "missionStartDate": "2000-03-04T12:00:00Z"}, "cil-gdpcir-cc-by-sa": {"abstract": "The World Climate Research Programme's [6th Coupled Model Intercomparison Project (CMIP6)](https://www.wcrp-climate.org/wgcm-cmip/wgcm-cmip6) represents an enormous advance in the quality, detail, and scope of climate modeling.\n\nThe [Global Downscaled Projections for Climate Impacts Research](https://github.com/ClimateImpactLab/downscaleCMIP6) dataset makes this modeling more applicable to understanding the impacts of changes in the climate on humans and society with two key developments: trend-preserving bias correction and downscaling. In this dataset, the [Climate Impact Lab](https://impactlab.org) provides global, daily minimum and maximum air temperature at the surface (`tasmin` and `tasmax`) and daily cumulative surface precipitation (`pr`) corresponding to the CMIP6 historical, ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 scenarios for 25 global climate models on a 1/4-degree regular global grid.\n\n## Accessing the data\n\nGDPCIR data can be accessed on the Microsoft Planetary Computer. The dataset is made of of three collections, distinguished by data license:\n* [Public domain (CC0-1.0) collection](https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc0)\n* [Attribution (CC BY 4.0) collection](https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc-by)\n* [Attribution-ShareAlike (CC BY SA 4.0) collection](https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc-by-sa)\n\nEach modeling center with bias corrected and downscaled data in this collection falls into one of these license categories - see the [table below](/dataset/cil-gdpcir-cc-by-sa#available-institutions-models-and-scenarios-by-license-collection) to see which model is in each collection, and see the section below on [Citing, Licensing, and using data produced by this project](/dataset/cil-gdpcir-cc-by-sa#citing-licensing-and-using-data-produced-by-this-project) for citations and additional information about each license.\n\n## Data format & contents\n\nThe data is stored as partitioned zarr stores (see [https://zarr.readthedocs.io](https://zarr.readthedocs.io)), each of which includes thousands of data and metadata files covering the full time span of the experiment. Historical zarr stores contain just over 50 GB, while SSP zarr stores contain nearly 70GB. Each store is stored as a 32-bit float, with dimensions time (daily datetime), lat (float latitude), and lon (float longitude). The data is chunked at each interval of 365 days and 90 degree interval of latitude and longitude. Therefore, each chunk is `(365, 360, 360)`, with each chunk occupying approximately 179MB in memory.\n\nHistorical data is daily, excluding leap days, from Jan 1, 1950 to Dec 31, 2014; SSP data is daily, excluding leap days, from Jan 1, 2015 to either Dec 31, 2099 or Dec 31, 2100, depending on data availability in the source GCM.\n\nThe spatial domain covers all 0.25-degree grid cells, indexed by the grid center, with grid edges on the quarter-degree, using a -180 to 180 longitude convention. Thus, the \u201clon\u201d coordinate extends from -179.875 to 179.875, and the \u201clat\u201d coordinate extends from -89.875 to 89.875, with intermediate values at each 0.25-degree increment between (e.g. -179.875, -179.625, -179.375, etc).\n\n## Available institutions, models, and scenarios by license collection\n\n| Modeling institution | Source model | Available experiments | License collection |\n| -------------------- | ----------------- | ------------------------------------------ | ---------------------- |\n| CAS | FGOALS-g3 [^1] | SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| INM | INM-CM4-8 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| INM | INM-CM5-0 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| BCC | BCC-CSM2-MR | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40] |\n| CMCC | CMCC-CM2-SR5 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-40] |\n| CMCC | CMCC-ESM2 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-40] |\n| CSIRO-ARCCSS | ACCESS-CM2 | SSP2-4.5 and SSP3-7.0 | CC-BY-40] |\n| CSIRO | ACCESS-ESM1-5 | SSP1-2.6, SSP2-4.5, and SSP3-7.0 | CC-BY-40] |\n| MIROC | MIROC-ES2L | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40] |\n| MIROC | MIROC6 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40] |\n| MOHC | HadGEM3-GC31-LL | SSP1-2.6, SSP2-4.5, and SSP5-8.5 | CC-BY-40] |\n| MOHC | UKESM1-0-LL | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40] |\n| MPI-M | MPI-ESM1-2-LR | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40] |\n| MPI-M/DKRZ [^2] | MPI-ESM1-2-HR | SSP1-2.6 and SSP5-8.5 | CC-BY-40] |\n| NCC | NorESM2-LM | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40] |\n| NCC | NorESM2-MM | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40] |\n| NOAA-GFDL | GFDL-CM4 | SSP2-4.5 and SSP5-8.5 | CC-BY-40] |\n| NOAA-GFDL | GFDL-ESM4 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40] |\n| NUIST | NESM3 | SSP1-2.6, SSP2-4.5, and SSP5-8.5 | CC-BY-40] |\n| EC-Earth-Consortium | EC-Earth3 | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40] |\n| EC-Earth-Consortium | EC-Earth3-AerChem | ssp370 | CC-BY-40] |\n| EC-Earth-Consortium | EC-Earth3-CC | ssp245 and ssp585 | CC-BY-40] |\n| EC-Earth-Consortium | EC-Earth3-Veg | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40] |\n| EC-Earth-Consortium | EC-Earth3-Veg-LR | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40] |\n| CCCma | CanESM5 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-SA-40] |\n\n*Notes:*\n\n[^1]: At the time of running, no ssp1-2.6 precipitation data was available. Therefore, we provide `tasmin` and `tamax` for this model and experiment, but not `pr`. All other model/experiment combinations in the above table include all three variables.\n\n[^2]: The institution which ran MPI-ESM1-2-HR\u2019s historical (CMIP) simulations is `MPI-M`, while the future (ScenarioMIP) simulations were run by `DKRZ`. Therefore, the institution component of `MPI-ESM1-2-HR` filepaths differ between `historical` and `SSP` scenarios.\n\n## Project methods\n\nThis project makes use of statistical bias correction and downscaling algorithms, which are specifically designed to accurately represent changes in the extremes. For this reason, we selected Quantile Delta Mapping (QDM), following the method introduced by [Cannon et al. (2015)](https://doi.org/10.1175/JCLI-D-14-00754.1), which preserves quantile-specific trends from the GCM while fitting the full distribution for a given day-of-year to a reference dataset (ERA5).\n\nWe then introduce a similar method tailored to increase spatial resolution while preserving extreme behavior, Quantile-Preserving Localized-Analog Downscaling (QPLAD).\n\nTogether, these methods provide a robust means to handle both the central and tail behavior seen in climate model output, while aligning the full distribution to a state-of-the-art reanalysis dataset and providing the spatial granularity needed to study surface impacts.\n\nFor further documentation, see [Global downscaled projections for climate impacts research (GDPCIR): preserving extremes for modeling future climate impacts](https://egusphere.copernicus.org/preprints/2023/egusphere-2022-1513/) (EGUsphere, 2022 [preprint]).\n\n## Citing, licensing, and using data produced by this project\n\nProjects making use of the data produced as part of the Climate Impact Lab Global Downscaled Projections for Climate Impacts Research (CIL GDPCIR) project are requested to cite both this project and the source datasets from which these results are derived. Additionally, the use of data derived from some GCMs *requires* citations, and some modeling centers impose licensing restrictions & requirements on derived works. See each GCM's license info in the links below for more information.\n\n### CIL GDPCIR\n\nUsers are requested to cite this project in derived works. Our method documentation paper may be cited using the following:\n\n> Gergel, D. R., Malevich, S. B., McCusker, K. E., Tenezakis, E., Delgado, M. T., Fish, M. A., and Kopp, R. E.: Global downscaled projections for climate impacts research (GDPCIR): preserving extremes for modeling future climate impacts, EGUsphere [preprint], https://doi.org/10.5194/egusphere-2022-1513, 2023. \n\nThe code repository may be cited using the following:\n\n> Diana Gergel, Kelly McCusker, Brewster Malevich, Emile Tenezakis, Meredith Fish, Michael Delgado (2022). ClimateImpactLab/downscaleCMIP6: (v1.0.0). Zenodo. https://doi.org/10.5281/zenodo.6403794\n\n### ERA5\n\nAdditionally, we request you cite the historical dataset used in bias correction and downscaling, ERA5. See the [ECMWF guide to citing a dataset on the Climate Data Store](https://confluence.ecmwf.int/display/CKB/How+to+acknowledge+and+cite+a+Climate+Data+Store+%28CDS%29+catalogue+entry+and+the+data+published+as+part+of+it):\n\n> Hersbach, H, et al. The ERA5 global reanalysis. Q J R Meteorol Soc.2020; 146: 1999\u20132049. DOI: [10.1002/qj.3803](https://doi.org/10.1002/qj.3803)\n>\n> Mu\u00f1oz Sabater, J., (2019): ERA5-Land hourly data from 1981 to present. Copernicus Climate Change Service (C3S) Climate Data Store (CDS). (Accessed on June 4, 2021), DOI: [10.24381/cds.e2161bac](https://doi.org/10.24381/cds.e2161bac)\n>\n> Mu\u00f1oz Sabater, J., (2021): ERA5-Land hourly data from 1950 to 1980. Copernicus Climate Change Service (C3S) Climate Data Store (CDS). (Accessed on June 4, 2021), DOI: [10.24381/cds.e2161bac](https://doi.org/10.24381/cds.e2161bac)\n\n### GCM-specific citations & licenses\n\nThe CMIP6 simulation data made available through the Earth System Grid Federation (ESGF) are subject to Creative Commons [BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) or [BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) licenses. The Climate Impact Lab has reached out to each of the modeling institutions to request waivers from these terms so the outputs of this project may be used with fewer restrictions, and has been granted permission to release the data using the licenses listed here.\n\n#### Public Domain Datasets\n\nThe following bias corrected and downscaled model simulations are available in the public domain using a [CC0 1.0 Universal Public Domain Declaration](https://creativecommons.org/publicdomain/zero/1.0/). Access the collection on Planetary Computer at https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc0.\n\n* **FGOALS-g3**\n\n License description: [data_licenses/FGOALS-g3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/FGOALS-g3.txt)\n\n CMIP Citation:\n\n > Li, Lijuan **(2019)**. *CAS FGOALS-g3 model output prepared for CMIP6 CMIP*. Version 20190826. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1783\n\n ScenarioMIP Citation:\n\n > Li, Lijuan **(2019)**. *CAS FGOALS-g3 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190818; SSP2-4.5 version 20190818; SSP3-7.0 version 20190820; SSP5-8.5 tasmax version 20190819; SSP5-8.5 tasmin version 20190819; SSP5-8.5 pr version 20190818. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2056\n\n\n* **INM-CM4-8**\n\n License description: [data_licenses/INM-CM4-8.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/INM-CM4-8.txt)\n\n CMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM4-8 model output prepared for CMIP6 CMIP*. Version 20190530. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1422\n\n ScenarioMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM4-8 model output prepared for CMIP6 ScenarioMIP*. Version 20190603. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.12321\n\n\n* **INM-CM5-0**\n\n License description: [data_licenses/INM-CM5-0.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/INM-CM5-0.txt)\n\n CMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM5-0 model output prepared for CMIP6 CMIP*. Version 20190610. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1423\n\n ScenarioMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM5-0 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190619; SSP2-4.5 version 20190619; SSP3-7.0 version 20190618; SSP5-8.5 version 20190724. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.12322\n\n\n#### CC-BY-4.0\n\nThe following bias corrected and downscaled model simulations are licensed under a [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/). Note that this license requires citation of the source model output (included here). Please see https://creativecommons.org/licenses/by/4.0/ for more information. Access the collection on Planetary Computer at https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc-by.\n\n* **ACCESS-CM2**\n\n License description: [data_licenses/ACCESS-CM2.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/ACCESS-CM2.txt)\n\n CMIP Citation:\n\n > Dix, Martin; Bi, Doahua; Dobrohotoff, Peter; Fiedler, Russell; Harman, Ian; Law, Rachel; Mackallah, Chloe; Marsland, Simon; O'Farrell, Siobhan; Rashid, Harun; Srbinovsky, Jhan; Sullivan, Arnold; Trenham, Claire; Vohralik, Peter; Watterson, Ian; Williams, Gareth; Woodhouse, Matthew; Bodman, Roger; Dias, Fabio Boeira; Domingues, Catia; Hannah, Nicholas; Heerdegen, Aidan; Savita, Abhishek; Wales, Scott; Allen, Chris; Druken, Kelsey; Evans, Ben; Richards, Clare; Ridzwan, Syazwan Mohamed; Roberts, Dale; Smillie, Jon; Snow, Kate; Ward, Marshall; Yang, Rui **(2019)**. *CSIRO-ARCCSS ACCESS-CM2 model output prepared for CMIP6 CMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2281\n\n ScenarioMIP Citation:\n\n > Dix, Martin; Bi, Doahua; Dobrohotoff, Peter; Fiedler, Russell; Harman, Ian; Law, Rachel; Mackallah, Chloe; Marsland, Simon; O'Farrell, Siobhan; Rashid, Harun; Srbinovsky, Jhan; Sullivan, Arnold; Trenham, Claire; Vohralik, Peter; Watterson, Ian; Williams, Gareth; Woodhouse, Matthew; Bodman, Roger; Dias, Fabio Boeira; Domingues, Catia; Hannah, Nicholas; Heerdegen, Aidan; Savita, Abhishek; Wales, Scott; Allen, Chris; Druken, Kelsey; Evans, Ben; Richards, Clare; Ridzwan, Syazwan Mohamed; Roberts, Dale; Smillie, Jon; Snow, Kate; Ward, Marshall; Yang, Rui **(2019)**. *CSIRO-ARCCSS ACCESS-CM2 model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2285\n\n\n* **ACCESS-ESM1-5**\n\n License description: [data_licenses/ACCESS-ESM1-5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/ACCESS-ESM1-5.txt)\n\n CMIP Citation:\n\n > Ziehn, Tilo; Chamberlain, Matthew; Lenton, Andrew; Law, Rachel; Bodman, Roger; Dix, Martin; Wang, Yingping; Dobrohotoff, Peter; Srbinovsky, Jhan; Stevens, Lauren; Vohralik, Peter; Mackallah, Chloe; Sullivan, Arnold; O'Farrell, Siobhan; Druken, Kelsey **(2019)**. *CSIRO ACCESS-ESM1.5 model output prepared for CMIP6 CMIP*. Version 20191115. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2288\n\n ScenarioMIP Citation:\n\n > Ziehn, Tilo; Chamberlain, Matthew; Lenton, Andrew; Law, Rachel; Bodman, Roger; Dix, Martin; Wang, Yingping; Dobrohotoff, Peter; Srbinovsky, Jhan; Stevens, Lauren; Vohralik, Peter; Mackallah, Chloe; Sullivan, Arnold; O'Farrell, Siobhan; Druken, Kelsey **(2019)**. *CSIRO ACCESS-ESM1.5 model output prepared for CMIP6 ScenarioMIP*. Version 20191115. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2291\n\n\n* **BCC-CSM2-MR**\n\n License description: [data_licenses/BCC-CSM2-MR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/BCC-CSM2-MR.txt)\n\n CMIP Citation:\n\n > Xin, Xiaoge; Zhang, Jie; Zhang, Fang; Wu, Tongwen; Shi, Xueli; Li, Jianglong; Chu, Min; Liu, Qianxia; Yan, Jinghui; Ma, Qiang; Wei, Min **(2018)**. *BCC BCC-CSM2MR model output prepared for CMIP6 CMIP*. Version 20181126. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1725\n\n ScenarioMIP Citation:\n\n > Xin, Xiaoge; Wu, Tongwen; Shi, Xueli; Zhang, Fang; Li, Jianglong; Chu, Min; Liu, Qianxia; Yan, Jinghui; Ma, Qiang; Wei, Min **(2019)**. *BCC BCC-CSM2MR model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190315; SSP2-4.5 version 20190318; SSP3-7.0 version 20190318; SSP5-8.5 version 20190318. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1732\n\n\n* **CMCC-CM2-SR5**\n\n License description: [data_licenses/CMCC-CM2-SR5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CMCC-CM2-SR5.txt)\n\n CMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele **(2020)**. *CMCC CMCC-CM2-SR5 model output prepared for CMIP6 CMIP*. Version 20200616. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1362\n\n ScenarioMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele **(2020)**. *CMCC CMCC-CM2-SR5 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20200717; SSP2-4.5 version 20200617; SSP3-7.0 version 20200622; SSP5-8.5 version 20200622. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1365\n\n\n* **CMCC-ESM2**\n\n License description: [data_licenses/CMCC-ESM2.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CMCC-ESM2.txt)\n\n CMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele; Butensch\u00f6n, Momme **(2021)**. *CMCC CMCC-ESM2 model output prepared for CMIP6 CMIP*. Version 20210114. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.13164\n\n ScenarioMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele; Butensch\u00f6n, Momme **(2021)**. *CMCC CMCC-ESM2 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20210126; SSP2-4.5 version 20210129; SSP3-7.0 version 20210202; SSP5-8.5 version 20210126. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.13168\n\n\n* **EC-Earth3-AerChem**\n\n License description: [data_licenses/EC-Earth3-AerChem.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-AerChem.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-AerChem model output prepared for CMIP6 CMIP*. Version 20200624. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.639\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-AerChem model output prepared for CMIP6 ScenarioMIP*. Version 20200827. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.724\n\n\n* **EC-Earth3-CC**\n\n License description: [data_licenses/EC-Earth3-CC.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-CC.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth-3-CC model output prepared for CMIP6 CMIP*. Version 20210113. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.640\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2021)**. *EC-Earth-Consortium EC-Earth3-CC model output prepared for CMIP6 ScenarioMIP*. Version 20210113. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.15327\n\n\n* **EC-Earth3-Veg-LR**\n\n License description: [data_licenses/EC-Earth3-Veg-LR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-Veg-LR.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-Veg-LR model output prepared for CMIP6 CMIP*. Version 20200217. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.643\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-Veg-LR model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20201201; SSP2-4.5 version 20201123; SSP3-7.0 version 20201123; SSP5-8.5 version 20201201. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.728\n\n\n* **EC-Earth3-Veg**\n\n License description: [data_licenses/EC-Earth3-Veg.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-Veg.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3-Veg model output prepared for CMIP6 CMIP*. Version 20200225. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.642\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3-Veg model output prepared for CMIP6 ScenarioMIP*. Version 20200225. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.727\n\n\n* **EC-Earth3**\n\n License description: [data_licenses/EC-Earth3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3 model output prepared for CMIP6 CMIP*. Version 20200310. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.181\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3 model output prepared for CMIP6 ScenarioMIP*. Version 20200310. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.251\n\n\n* **GFDL-CM4**\n\n License description: [data_licenses/GFDL-CM4.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/GFDL-CM4.txt)\n\n CMIP Citation:\n\n > Guo, Huan; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Bushuk, Mitchell; Dunne, Krista A.; Dussin, Raphael; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Reichl, Brandon G; Schwarzkopf, Daniel M; Seman, Charles J; Shao, Andrew; Silvers, Levi; Wyman, Bruce; Yan, Xiaoqin; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Held, Isaac M; Krasting, John P.; Horowitz, Larry W.; Milly, P.C.D; Shevliakova, Elena; Winton, Michael; Zhao, Ming; Zhang, Rong **(2018)**. *NOAA-GFDL GFDL-CM4 model output*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1402\n\n ScenarioMIP Citation:\n\n > Guo, Huan; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Dunne, Krista A.; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Schwarzkopf, Daniel M; Seman, Charles J; Shao, Andrew; Silvers, Levi; Wyman, Bruce; Yan, Xiaoqin; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Held, Isaac M; Krasting, John P.; Horowitz, Larry W.; Milly, Chris; Shevliakova, Elena; Winton, Michael; Zhao, Ming; Zhang, Rong **(2018)**. *NOAA-GFDL GFDL-CM4 model output prepared for CMIP6 ScenarioMIP*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.9242\n\n\n* **GFDL-ESM4**\n\n License description: [data_licenses/GFDL-ESM4.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/GFDL-ESM4.txt)\n\n CMIP Citation:\n\n > Krasting, John P.; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Dunne, Krista A.; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Reichl, Brandon G; Schwarzkopf, Daniel M; Seman, Charles J; Silvers, Levi; Wyman, Bruce; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Dussin, Raphael; Guo, Huan; He, Jian; Held, Isaac M; Horowitz, Larry W.; Lin, Pu; Milly, P.C.D; Shevliakova, Elena; Stock, Charles; Winton, Michael; Wittenberg, Andrew T.; Xie, Yuanyu; Zhao, Ming **(2018)**. *NOAA-GFDL GFDL-ESM4 model output prepared for CMIP6 CMIP*. Version 20190726. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1407\n\n ScenarioMIP Citation:\n\n > John, Jasmin G; Blanton, Chris; McHugh, Colleen; Radhakrishnan, Aparna; Rand, Kristopher; Vahlenkamp, Hans; Wilson, Chandin; Zadeh, Niki T.; Dunne, John P.; Dussin, Raphael; Horowitz, Larry W.; Krasting, John P.; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Ploshay, Jeffrey; Shevliakova, Elena; Silvers, Levi; Stock, Charles; Winton, Michael; Zeng, Yujin **(2018)**. *NOAA-GFDL GFDL-ESM4 model output prepared for CMIP6 ScenarioMIP*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1414\n\n\n* **HadGEM3-GC31-LL**\n\n License description: [data_licenses/HadGEM3-GC31-LL.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/HadGEM3-GC31-LL.txt)\n\n CMIP Citation:\n\n > Ridley, Jeff; Menary, Matthew; Kuhlbrodt, Till; Andrews, Martin; Andrews, Tim **(2018)**. *MOHC HadGEM3-GC31-LL model output prepared for CMIP6 CMIP*. Version 20190624. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.419\n\n ScenarioMIP Citation:\n\n > Good, Peter **(2019)**. *MOHC HadGEM3-GC31-LL model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20200114; SSP2-4.5 version 20190908; SSP5-8.5 version 20200114. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.10845\n\n\n* **MIROC-ES2L**\n\n License description: [data_licenses/MIROC-ES2L.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MIROC-ES2L.txt)\n\n CMIP Citation:\n\n > Hajima, Tomohiro; Abe, Manabu; Arakawa, Osamu; Suzuki, Tatsuo; Komuro, Yoshiki; Ogura, Tomoo; Ogochi, Koji; Watanabe, Michio; Yamamoto, Akitomo; Tatebe, Hiroaki; Noguchi, Maki A.; Ohgaito, Rumi; Ito, Akinori; Yamazaki, Dai; Ito, Akihiko; Takata, Kumiko; Watanabe, Shingo; Kawamiya, Michio; Tachiiri, Kaoru **(2019)**. *MIROC MIROC-ES2L model output prepared for CMIP6 CMIP*. Version 20191129. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.902\n\n ScenarioMIP Citation:\n\n > Tachiiri, Kaoru; Abe, Manabu; Hajima, Tomohiro; Arakawa, Osamu; Suzuki, Tatsuo; Komuro, Yoshiki; Ogochi, Koji; Watanabe, Michio; Yamamoto, Akitomo; Tatebe, Hiroaki; Noguchi, Maki A.; Ohgaito, Rumi; Ito, Akinori; Yamazaki, Dai; Ito, Akihiko; Takata, Kumiko; Watanabe, Shingo; Kawamiya, Michio **(2019)**. *MIROC MIROC-ES2L model output prepared for CMIP6 ScenarioMIP*. Version 20200318. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.936\n\n\n* **MIROC6**\n\n License description: [data_licenses/MIROC6.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MIROC6.txt)\n\n CMIP Citation:\n\n > Tatebe, Hiroaki; Watanabe, Masahiro **(2018)**. *MIROC MIROC6 model output prepared for CMIP6 CMIP*. Version 20191016. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.881\n\n ScenarioMIP Citation:\n\n > Shiogama, Hideo; Abe, Manabu; Tatebe, Hiroaki **(2019)**. *MIROC MIROC6 model output prepared for CMIP6 ScenarioMIP*. Version 20191016. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.898\n\n\n* **MPI-ESM1-2-HR**\n\n License description: [data_licenses/MPI-ESM1-2-HR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MPI-ESM1-2-HR.txt)\n\n CMIP Citation:\n\n > Jungclaus, Johann; Bittner, Matthias; Wieners, Karl-Hermann; Wachsmann, Fabian; Schupfner, Martin; Legutke, Stephanie; Giorgetta, Marco; Reick, Christian; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Esch, Monika; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-HR model output prepared for CMIP6 CMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.741\n\n ScenarioMIP Citation:\n\n > Schupfner, Martin; Wieners, Karl-Hermann; Wachsmann, Fabian; Steger, Christian; Bittner, Matthias; Jungclaus, Johann; Fr\u00fch, Barbara; Pankatz, Klaus; Giorgetta, Marco; Reick, Christian; Legutke, Stephanie; Esch, Monika; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *DKRZ MPI-ESM1.2-HR model output prepared for CMIP6 ScenarioMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2450\n\n\n* **MPI-ESM1-2-LR**\n\n License description: [data_licenses/MPI-ESM1-2-LR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MPI-ESM1-2-LR.txt)\n\n CMIP Citation:\n\n > Wieners, Karl-Hermann; Giorgetta, Marco; Jungclaus, Johann; Reick, Christian; Esch, Monika; Bittner, Matthias; Legutke, Stephanie; Schupfner, Martin; Wachsmann, Fabian; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-LR model output prepared for CMIP6 CMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.742\n\n ScenarioMIP Citation:\n\n > Wieners, Karl-Hermann; Giorgetta, Marco; Jungclaus, Johann; Reick, Christian; Esch, Monika; Bittner, Matthias; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-LR model output prepared for CMIP6 ScenarioMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.793\n\n\n* **NESM3**\n\n License description: [data_licenses/NESM3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NESM3.txt)\n\n CMIP Citation:\n\n > Cao, Jian; Wang, Bin **(2019)**. *NUIST NESMv3 model output prepared for CMIP6 CMIP*. Version 20190812. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2021\n\n ScenarioMIP Citation:\n\n > Cao, Jian **(2019)**. *NUIST NESMv3 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190806; SSP2-4.5 version 20190805; SSP5-8.5 version 20190811. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2027\n\n\n* **NorESM2-LM**\n\n License description: [data_licenses/NorESM2-LM.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NorESM2-LM.txt)\n\n CMIP Citation:\n\n > Seland, \u00d8yvind; Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-LM model output prepared for CMIP6 CMIP*. Version 20190815. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.502\n\n ScenarioMIP Citation:\n\n > Seland, \u00d8yvind; Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-LM model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.604\n\n\n* **NorESM2-MM**\n\n License description: [data_licenses/NorESM2-MM.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NorESM2-MM.txt)\n\n CMIP Citation:\n\n > Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Seland, \u00d8yvind; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-MM model output prepared for CMIP6 CMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.506\n\n ScenarioMIP Citation:\n\n > Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Seland, \u00d8yvind; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-MM model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.608\n\n\n* **UKESM1-0-LL**\n\n License description: [data_licenses/UKESM1-0-LL.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/UKESM1-0-LL.txt)\n\n CMIP Citation:\n\n > Tang, Yongming; Rumbold, Steve; Ellis, Rich; Kelley, Douglas; Mulcahy, Jane; Sellar, Alistair; Walton, Jeremy; Jones, Colin **(2019)**. *MOHC UKESM1.0-LL model output prepared for CMIP6 CMIP*. Version 20190627. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1569\n\n ScenarioMIP Citation:\n\n > Good, Peter; Sellar, Alistair; Tang, Yongming; Rumbold, Steve; Ellis, Rich; Kelley, Douglas; Kuhlbrodt, Till; Walton, Jeremy **(2019)**. *MOHC UKESM1.0-LL model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190708; SSP2-4.5 version 20190715; SSP3-7.0 version 20190726; SSP5-8.5 version 20190726. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1567\n\n\n#### CC-BY-SA-4.0\n\nThe following bias corrected and downscaled model simulations are licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/). Note that this license requires citation of the source model output (included here) and requires that derived works be shared under the same license. Please see https://creativecommons.org/licenses/by-sa/4.0/ for more information. Access the collection on Planetary Computer at https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc-by-sa.\n\n* **CanESM5**\n\n License description: [data_licenses/CanESM5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CanESM5.txt)\n\n CMIP Citation:\n\n > Swart, Neil Cameron; Cole, Jason N.S.; Kharin, Viatcheslav V.; Lazare, Mike; Scinocca, John F.; Gillett, Nathan P.; Anstey, James; Arora, Vivek; Christian, James R.; Jiao, Yanjun; Lee, Warren G.; Majaess, Fouad; Saenko, Oleg A.; Seiler, Christian; Seinen, Clint; Shao, Andrew; Solheim, Larry; von Salzen, Knut; Yang, Duo; Winter, Barbara; Sigmond, Michael **(2019)**. *CCCma CanESM5 model output prepared for CMIP6 CMIP*. Version 20190429. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1303\n\n ScenarioMIP Citation:\n\n > Swart, Neil Cameron; Cole, Jason N.S.; Kharin, Viatcheslav V.; Lazare, Mike; Scinocca, John F.; Gillett, Nathan P.; Anstey, James; Arora, Vivek; Christian, James R.; Jiao, Yanjun; Lee, Warren G.; Majaess, Fouad; Saenko, Oleg A.; Seiler, Christian; Seinen, Clint; Shao, Andrew; Solheim, Larry; von Salzen, Knut; Yang, Duo; Winter, Barbara; Sigmond, Michael **(2019)**. *CCCma CanESM5 model output prepared for CMIP6 ScenarioMIP*. Version 20190429. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1317\n\n## Acknowledgements\n\nThis work is the result of many years worth of work by members of the [Climate Impact Lab](https://impactlab.org), but would not have been possible without many contributions from across the wider scientific and computing communities.\n\nSpecifically, we would like to acknowledge the World Climate Research Programme's Working Group on Coupled Modeling, which is responsible for CMIP, and we would like to thank the climate modeling groups for producing and making their model output available. We would particularly like to thank the modeling institutions whose results are included as an input to this repository (listed above) for their contributions to the CMIP6 project and for responding to and granting our requests for license waivers.\n\nWe would also like to thank Lamont-Doherty Earth Observatory, the [Pangeo Consortium](https://github.com/pangeo-data) (and especially the [ESGF Cloud Data Working Group](https://pangeo-data.github.io/pangeo-cmip6-cloud/#)) and Google Cloud and the Google Public Datasets program for making the [CMIP6 Google Cloud collection](https://console.cloud.google.com/marketplace/details/noaa-public/cmip6) possible. In particular we're extremely grateful to [Ryan Abernathey](https://github.com/rabernat), [Naomi Henderson](https://github.com/naomi-henderson), [Charles Blackmon-Luca](https://github.com/charlesbluca), [Aparna Radhakrishnan](https://github.com/aradhakrishnanGFDL), [Julius Busecke](https://github.com/jbusecke), and [Charles Stern](https://github.com/cisaacstern) for the huge amount of work they've done to translate the ESGF CMIP6 netCDF archives into consistently-formattted, analysis-ready zarr stores on Google Cloud.\n\nWe're also grateful to the [xclim developers](https://github.com/Ouranosinc/xclim/graphs/contributors) ([DOI: 10.5281/zenodo.2795043](https://doi.org/10.5281/zenodo.2795043)), in particular [Pascal Bourgault](https://github.com/aulemahal), [David Huard](https://github.com/huard), and [Travis Logan](https://github.com/tlogan2000), for implementing the QDM bias correction method in the xclim python package, supporting our QPLAD implementation into the package, and ongoing support in integrating dask into downscaling workflows. For method advice and useful conversations, we would like to thank Keith Dixon, Dennis Adams-Smith, and [Joe Hamman](https://github.com/jhamman).\n\n## Financial support\n\nThis research has been supported by The Rockefeller Foundation and the Microsoft AI for Earth Initiative.\n\n## Additional links:\n\n* CIL GDPCIR project homepage: [github.com/ClimateImpactLab/downscaleCMIP6](https://github.com/ClimateImpactLab/downscaleCMIP6)\n* Project listing on zenodo: https://doi.org/10.5281/zenodo.6403794\n* Climate Impact Lab homepage: [impactlab.org](https://impactlab.org)", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "cil-gdpcir-cc-by-sa,climate-impact-lab,cmip6,precipitation,rhodium-group,temperature", "license": "CC-BY-SA-4.0", "title": "CIL Global Downscaled Projections for Climate Impacts Research (CC-BY-SA-4.0)", "missionStartDate": "1950-01-01T00:00:00Z"}, "naip": {"abstract": "The [National Agriculture Imagery Program](https://www.fsa.usda.gov/programs-and-services/aerial-photography/imagery-programs/naip-imagery/) (NAIP) \nprovides U.S.-wide, high-resolution aerial imagery, with four spectral bands (R, G, B, IR). \nNAIP is administered by the [Aerial Field Photography Office](https://www.fsa.usda.gov/programs-and-services/aerial-photography/) (AFPO) \nwithin the [US Department of Agriculture](https://www.usda.gov/) (USDA). \nData are captured at least once every three years for each state. \nThis dataset represents NAIP data from 2010-present, in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.\nYou can visualize the coverage of current and past collections [here](https://naip-usdaonline.hub.arcgis.com/). \n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "aerial,afpo,agriculture,imagery,naip,united-states,usda", "license": "proprietary", "title": "NAIP: National Agriculture Imagery Program", "missionStartDate": "2010-01-01T00:00:00Z"}, "io-lulc-9-class": {"abstract": "__Note__: _A new version of this item is available for your use. This mature version of the map remains available for use in existing applications. This item will be retired in December 2024. There is 2023 data available in the newer [9-class v2 dataset](https://planetarycomputer.microsoft.com/dataset/io-lulc-annual-v02)._\n\nTime series of annual global maps of land use and land cover (LULC). It currently has data from 2017-2022. The maps are derived from ESA Sentinel-2 imagery at 10m resolution. Each map is a composite of LULC predictions for 9 classes throughout the year in order to generate a representative snapshot of each year.\n\nThis dataset was generated by [Impact Observatory](http://impactobservatory.com/), who used billions of human-labeled pixels (curated by the National Geographic Society) to train a deep learning model for land classification. The global map was produced by applying this model to the Sentinel-2 annual scene collections on the Planetary Computer. Each of the maps has an assessed average accuracy of over 75%.\n\nThis map uses an updated model from the [10-class model](https://planetarycomputer.microsoft.com/dataset/io-lulc) and combines Grass(formerly class 3) and Scrub (formerly class 6) into a single Rangeland class (class 11). The original Esri 2020 Land Cover collection uses 10 classes (Grass and Scrub separate) and an older version of the underlying deep learning model. The Esri 2020 Land Cover map was also produced by Impact Observatory. The map remains available for use in existing applications. New applications should use the updated version of 2020 once it is available in this collection, especially when using data from multiple years of this time series, to ensure consistent classification.\n\nAll years are available under a Creative Commons BY-4.0.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "global,io-lulc-9-class,land-cover,land-use,sentinel", "license": "CC-BY-4.0", "title": "10m Annual Land Use Land Cover (9-class) V1", "missionStartDate": "2017-01-01T00:00:00Z"}, "io-biodiversity": {"abstract": "Generated by [Impact Observatory](https://www.impactobservatory.com/), in collaboration with [Vizzuality](https://www.vizzuality.com/), these datasets estimate terrestrial Biodiversity Intactness as 100-meter gridded maps for the years 2017-2020.\n\nMaps depicting the intactness of global biodiversity have become a critical tool for spatial planning and management, monitoring the extent of biodiversity across Earth, and identifying critical remaining intact habitat. Yet, these maps are often years out of date by the time they are available to scientists and policy-makers. The datasets in this STAC Collection build on past studies that map Biodiversity Intactness using the [PREDICTS database](https://onlinelibrary.wiley.com/doi/full/10.1002/ece3.2579) of spatially referenced observations of biodiversity across 32,000 sites from over 750 studies. The approach differs from previous work by modeling the relationship between observed biodiversity metrics and contemporary, global, geospatial layers of human pressures, with the intention of providing a high resolution monitoring product into the future.\n\nBiodiversity intactness is estimated as a combination of two metrics: Abundance, the quantity of individuals, and Compositional Similarity, how similar the composition of species is to an intact baseline. Linear mixed effects models are fit to estimate the predictive capacity of spatial datasets of human pressures on each of these metrics and project results spatially across the globe. These methods, as well as comparisons to other leading datasets and guidance on interpreting results, are further explained in a methods [white paper](https://ai4edatasetspublicassets.blob.core.windows.net/assets/pdfs/io-biodiversity/Biodiversity_Intactness_whitepaper.pdf) entitled \u201cGlobal 100m Projections of Biodiversity Intactness for the years 2017-2020.\u201d\n\nAll years are available under a Creative Commons BY-4.0 license.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "biodiversity,global,io-biodiversity", "license": "CC-BY-4.0", "title": "Biodiversity Intactness", "missionStartDate": "2017-01-01T00:00:00Z"}, "noaa-cdr-sea-surface-temperature-whoi": {"abstract": "The Sea Surface Temperature-Woods Hole Oceanographic Institution (WHOI) Climate Data Record (CDR) is one of three CDRs which combine to form the NOAA Ocean Surface Bundle (OSB) CDR. The resultant sea surface temperature (SST) data are produced through modeling the diurnal variability in combination with AVHRR SST observations. The final record is output to a 3-hourly 0.25\u00b0 resolution grid over the global ice-free oceans from January 1988\u2014present.\n\nThese Cloud Optimized GeoTIFFs (COGs) were created from NetCDF files which are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\nFor the NetCDF files, see collection `noaa-cdr-sea-surface-temperature-whoi-netcdf`.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,global,noaa,noaa-cdr-sea-surface-temperature-whoi,ocean,temperature", "license": "proprietary", "title": "Sea Surface Temperature - WHOI CDR", "missionStartDate": "1988-01-01T00:00:00Z"}, "noaa-cdr-ocean-heat-content": {"abstract": "The Ocean Heat Content Climate Data Record (CDR) is a set of ocean heat content anomaly (OHCA) time-series for 1955-present on 3-monthly, yearly, and pentadal (five-yearly) scales. This CDR quantifies ocean heat content change over time, which is an essential metric for understanding climate change and the Earth's energy budget. It provides time-series for multiple depth ranges in the global ocean and each of the major basins (Atlantic, Pacific, and Indian) divided by hemisphere (Northern, Southern).\n\nThese Cloud Optimized GeoTIFFs (COGs) were created from NetCDF files which are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\nFor the NetCDF files, see collection `noaa-cdr-ocean-heat-content-netcdf`.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,global,noaa,noaa-cdr-ocean-heat-content,ocean,temperature", "license": "proprietary", "title": "Global Ocean Heat Content CDR", "missionStartDate": "1972-03-01T00:00:00Z"}, "cil-gdpcir-cc0": {"abstract": "The World Climate Research Programme's [6th Coupled Model Intercomparison Project (CMIP6)](https://www.wcrp-climate.org/wgcm-cmip/wgcm-cmip6) represents an enormous advance in the quality, detail, and scope of climate modeling.\n\nThe [Global Downscaled Projections for Climate Impacts Research](https://github.com/ClimateImpactLab/downscaleCMIP6) dataset makes this modeling more applicable to understanding the impacts of changes in the climate on humans and society with two key developments: trend-preserving bias correction and downscaling. In this dataset, the [Climate Impact Lab](https://impactlab.org) provides global, daily minimum and maximum air temperature at the surface (`tasmin` and `tasmax`) and daily cumulative surface precipitation (`pr`) corresponding to the CMIP6 historical, ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 scenarios for 25 global climate models on a 1/4-degree regular global grid.\n\n## Accessing the data\n\nGDPCIR data can be accessed on the Microsoft Planetary Computer. The dataset is made of of three collections, distinguished by data license:\n* [Public domain (CC0-1.0) collection](https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc0)\n* [Attribution (CC BY 4.0) collection](https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc-by)\n\nEach modeling center with bias corrected and downscaled data in this collection falls into one of these license categories - see the [table below](/dataset/cil-gdpcir-cc0#available-institutions-models-and-scenarios-by-license-collection) to see which model is in each collection, and see the section below on [Citing, Licensing, and using data produced by this project](/dataset/cil-gdpcir-cc0#citing-licensing-and-using-data-produced-by-this-project) for citations and additional information about each license.\n\n## Data format & contents\n\nThe data is stored as partitioned zarr stores (see [https://zarr.readthedocs.io](https://zarr.readthedocs.io)), each of which includes thousands of data and metadata files covering the full time span of the experiment. Historical zarr stores contain just over 50 GB, while SSP zarr stores contain nearly 70GB. Each store is stored as a 32-bit float, with dimensions time (daily datetime), lat (float latitude), and lon (float longitude). The data is chunked at each interval of 365 days and 90 degree interval of latitude and longitude. Therefore, each chunk is `(365, 360, 360)`, with each chunk occupying approximately 180MB in memory.\n\nHistorical data is daily, excluding leap days, from Jan 1, 1950 to Dec 31, 2014; SSP data is daily, excluding leap days, from Jan 1, 2015 to either Dec 31, 2099 or Dec 31, 2100, depending on data availability in the source GCM.\n\nThe spatial domain covers all 0.25-degree grid cells, indexed by the grid center, with grid edges on the quarter-degree, using a -180 to 180 longitude convention. Thus, the \u201clon\u201d coordinate extends from -179.875 to 179.875, and the \u201clat\u201d coordinate extends from -89.875 to 89.875, with intermediate values at each 0.25-degree increment between (e.g. -179.875, -179.625, -179.375, etc).\n\n## Available institutions, models, and scenarios by license collection\n\n| Modeling institution | Source model | Available experiments | License collection |\n| -------------------- | ----------------- | ------------------------------------------ | ---------------------- |\n| CAS | FGOALS-g3 [^1] | SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| INM | INM-CM4-8 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| INM | INM-CM5-0 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| BCC | BCC-CSM2-MR | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| CMCC | CMCC-CM2-SR5 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-40 |\n| CMCC | CMCC-ESM2 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-40 |\n| CSIRO-ARCCSS | ACCESS-CM2 | SSP2-4.5 and SSP3-7.0 | CC-BY-40 |\n| CSIRO | ACCESS-ESM1-5 | SSP1-2.6, SSP2-4.5, and SSP3-7.0 | CC-BY-40 |\n| MIROC | MIROC-ES2L | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| MIROC | MIROC6 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| MOHC | HadGEM3-GC31-LL | SSP1-2.6, SSP2-4.5, and SSP5-8.5 | CC-BY-40 |\n| MOHC | UKESM1-0-LL | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| MPI-M | MPI-ESM1-2-LR | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| MPI-M/DKRZ [^2] | MPI-ESM1-2-HR | SSP1-2.6 and SSP5-8.5 | CC-BY-40 |\n| NCC | NorESM2-LM | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| NCC | NorESM2-MM | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| NOAA-GFDL | GFDL-CM4 | SSP2-4.5 and SSP5-8.5 | CC-BY-40 |\n| NOAA-GFDL | GFDL-ESM4 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| NUIST | NESM3 | SSP1-2.6, SSP2-4.5, and SSP5-8.5 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3 | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3-AerChem | ssp370 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3-CC | ssp245 and ssp585 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3-Veg | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3-Veg-LR | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40 |\n| CCCma | CanESM5 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-40[^3] |\n\n*Notes:*\n\n[^1]: At the time of running, no ssp1-2.6 precipitation data was available. Therefore, we provide `tasmin` and `tamax` for this model and experiment, but not `pr`. All other model/experiment combinations in the above table include all three variables.\n\n[^2]: The institution which ran MPI-ESM1-2-HR\u2019s historical (CMIP) simulations is `MPI-M`, while the future (ScenarioMIP) simulations were run by `DKRZ`. Therefore, the institution component of `MPI-ESM1-2-HR` filepaths differ between `historical` and `SSP` scenarios.\n\n[^3]: This dataset was previously licensed as [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/), but was relicensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) in March, 2023. \n\n## Project methods\n\nThis project makes use of statistical bias correction and downscaling algorithms, which are specifically designed to accurately represent changes in the extremes. For this reason, we selected Quantile Delta Mapping (QDM), following the method introduced by [Cannon et al. (2015)](https://doi.org/10.1175/JCLI-D-14-00754.1), which preserves quantile-specific trends from the GCM while fitting the full distribution for a given day-of-year to a reference dataset (ERA5).\n\nWe then introduce a similar method tailored to increase spatial resolution while preserving extreme behavior, Quantile-Preserving Localized-Analog Downscaling (QPLAD).\n\nTogether, these methods provide a robust means to handle both the central and tail behavior seen in climate model output, while aligning the full distribution to a state-of-the-art reanalysis dataset and providing the spatial granularity needed to study surface impacts.\n\nFor further documentation, see [Global downscaled projections for climate impacts research (GDPCIR): preserving extremes for modeling future climate impacts](https://egusphere.copernicus.org/preprints/2023/egusphere-2022-1513/) (EGUsphere, 2022 [preprint]).\n\n\n## Citing, licensing, and using data produced by this project\n\nProjects making use of the data produced as part of the Climate Impact Lab Global Downscaled Projections for Climate Impacts Research (CIL GDPCIR) project are requested to cite both this project and the source datasets from which these results are derived. Additionally, the use of data derived from some GCMs *requires* citations, and some modeling centers impose licensing restrictions & requirements on derived works. See each GCM's license info in the links below for more information.\n\n### CIL GDPCIR\n\nUsers are requested to cite this project in derived works. Our method documentation paper may be cited using the following:\n\n> Gergel, D. R., Malevich, S. B., McCusker, K. E., Tenezakis, E., Delgado, M. T., Fish, M. A., and Kopp, R. E.: Global downscaled projections for climate impacts research (GDPCIR): preserving extremes for modeling future climate impacts, EGUsphere [preprint], https://doi.org/10.5194/egusphere-2022-1513, 2023. \n\nThe code repository may be cited using the following:\n\n> Diana Gergel, Kelly McCusker, Brewster Malevich, Emile Tenezakis, Meredith Fish, Michael Delgado (2022). ClimateImpactLab/downscaleCMIP6: (v1.0.0). Zenodo. https://doi.org/10.5281/zenodo.6403794\n\n### ERA5\n\nAdditionally, we request you cite the historical dataset used in bias correction and downscaling, ERA5. See the [ECMWF guide to citing a dataset on the Climate Data Store](https://confluence.ecmwf.int/display/CKB/How+to+acknowledge+and+cite+a+Climate+Data+Store+%28CDS%29+catalogue+entry+and+the+data+published+as+part+of+it):\n\n> Hersbach, H, et al. The ERA5 global reanalysis. Q J R Meteorol Soc.2020; 146: 1999\u20132049. DOI: [10.1002/qj.3803](https://doi.org/10.1002/qj.3803)\n>\n> Mu\u00f1oz Sabater, J., (2019): ERA5-Land hourly data from 1981 to present. Copernicus Climate Change Service (C3S) Climate Data Store (CDS). (Accessed on June 4, 2021), DOI: [10.24381/cds.e2161bac](https://doi.org/10.24381/cds.e2161bac)\n>\n> Mu\u00f1oz Sabater, J., (2021): ERA5-Land hourly data from 1950 to 1980. Copernicus Climate Change Service (C3S) Climate Data Store (CDS). (Accessed on June 4, 2021), DOI: [10.24381/cds.e2161bac](https://doi.org/10.24381/cds.e2161bac)\n\n### GCM-specific citations & licenses\n\nThe CMIP6 simulation data made available through the Earth System Grid Federation (ESGF) are subject to Creative Commons [BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) or [BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) licenses. The Climate Impact Lab has reached out to each of the modeling institutions to request waivers from these terms so the outputs of this project may be used with fewer restrictions, and has been granted permission to release the data using the licenses listed here.\n\n#### Public Domain Datasets\n\nThe following bias corrected and downscaled model simulations are available in the public domain using a [CC0 1.0 Universal Public Domain Declaration](https://creativecommons.org/publicdomain/zero/1.0/). Access the collection on Planetary Computer at https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc0.\n\n* **FGOALS-g3**\n\n License description: [data_licenses/FGOALS-g3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/FGOALS-g3.txt)\n\n CMIP Citation:\n\n > Li, Lijuan **(2019)**. *CAS FGOALS-g3 model output prepared for CMIP6 CMIP*. Version 20190826. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1783\n\n ScenarioMIP Citation:\n\n > Li, Lijuan **(2019)**. *CAS FGOALS-g3 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190818; SSP2-4.5 version 20190818; SSP3-7.0 version 20190820; SSP5-8.5 tasmax version 20190819; SSP5-8.5 tasmin version 20190819; SSP5-8.5 pr version 20190818. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2056\n\n\n* **INM-CM4-8**\n\n License description: [data_licenses/INM-CM4-8.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/INM-CM4-8.txt)\n\n CMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM4-8 model output prepared for CMIP6 CMIP*. Version 20190530. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1422\n\n ScenarioMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM4-8 model output prepared for CMIP6 ScenarioMIP*. Version 20190603. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.12321\n\n\n* **INM-CM5-0**\n\n License description: [data_licenses/INM-CM5-0.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/INM-CM5-0.txt)\n\n CMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM5-0 model output prepared for CMIP6 CMIP*. Version 20190610. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1423\n\n ScenarioMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM5-0 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190619; SSP2-4.5 version 20190619; SSP3-7.0 version 20190618; SSP5-8.5 version 20190724. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.12322\n\n\n#### CC-BY-4.0\n\nThe following bias corrected and downscaled model simulations are licensed under a [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/). Note that this license requires citation of the source model output (included here). Please see https://creativecommons.org/licenses/by/4.0/ for more information. Access the collection on Planetary Computer at https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc-by.\n\n* **ACCESS-CM2**\n\n License description: [data_licenses/ACCESS-CM2.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/ACCESS-CM2.txt)\n\n CMIP Citation:\n\n > Dix, Martin; Bi, Doahua; Dobrohotoff, Peter; Fiedler, Russell; Harman, Ian; Law, Rachel; Mackallah, Chloe; Marsland, Simon; O'Farrell, Siobhan; Rashid, Harun; Srbinovsky, Jhan; Sullivan, Arnold; Trenham, Claire; Vohralik, Peter; Watterson, Ian; Williams, Gareth; Woodhouse, Matthew; Bodman, Roger; Dias, Fabio Boeira; Domingues, Catia; Hannah, Nicholas; Heerdegen, Aidan; Savita, Abhishek; Wales, Scott; Allen, Chris; Druken, Kelsey; Evans, Ben; Richards, Clare; Ridzwan, Syazwan Mohamed; Roberts, Dale; Smillie, Jon; Snow, Kate; Ward, Marshall; Yang, Rui **(2019)**. *CSIRO-ARCCSS ACCESS-CM2 model output prepared for CMIP6 CMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2281\n\n ScenarioMIP Citation:\n\n > Dix, Martin; Bi, Doahua; Dobrohotoff, Peter; Fiedler, Russell; Harman, Ian; Law, Rachel; Mackallah, Chloe; Marsland, Simon; O'Farrell, Siobhan; Rashid, Harun; Srbinovsky, Jhan; Sullivan, Arnold; Trenham, Claire; Vohralik, Peter; Watterson, Ian; Williams, Gareth; Woodhouse, Matthew; Bodman, Roger; Dias, Fabio Boeira; Domingues, Catia; Hannah, Nicholas; Heerdegen, Aidan; Savita, Abhishek; Wales, Scott; Allen, Chris; Druken, Kelsey; Evans, Ben; Richards, Clare; Ridzwan, Syazwan Mohamed; Roberts, Dale; Smillie, Jon; Snow, Kate; Ward, Marshall; Yang, Rui **(2019)**. *CSIRO-ARCCSS ACCESS-CM2 model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2285\n\n\n* **ACCESS-ESM1-5**\n\n License description: [data_licenses/ACCESS-ESM1-5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/ACCESS-ESM1-5.txt)\n\n CMIP Citation:\n\n > Ziehn, Tilo; Chamberlain, Matthew; Lenton, Andrew; Law, Rachel; Bodman, Roger; Dix, Martin; Wang, Yingping; Dobrohotoff, Peter; Srbinovsky, Jhan; Stevens, Lauren; Vohralik, Peter; Mackallah, Chloe; Sullivan, Arnold; O'Farrell, Siobhan; Druken, Kelsey **(2019)**. *CSIRO ACCESS-ESM1.5 model output prepared for CMIP6 CMIP*. Version 20191115. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2288\n\n ScenarioMIP Citation:\n\n > Ziehn, Tilo; Chamberlain, Matthew; Lenton, Andrew; Law, Rachel; Bodman, Roger; Dix, Martin; Wang, Yingping; Dobrohotoff, Peter; Srbinovsky, Jhan; Stevens, Lauren; Vohralik, Peter; Mackallah, Chloe; Sullivan, Arnold; O'Farrell, Siobhan; Druken, Kelsey **(2019)**. *CSIRO ACCESS-ESM1.5 model output prepared for CMIP6 ScenarioMIP*. Version 20191115. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2291\n\n\n* **BCC-CSM2-MR**\n\n License description: [data_licenses/BCC-CSM2-MR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/BCC-CSM2-MR.txt)\n\n CMIP Citation:\n\n > Xin, Xiaoge; Zhang, Jie; Zhang, Fang; Wu, Tongwen; Shi, Xueli; Li, Jianglong; Chu, Min; Liu, Qianxia; Yan, Jinghui; Ma, Qiang; Wei, Min **(2018)**. *BCC BCC-CSM2MR model output prepared for CMIP6 CMIP*. Version 20181126. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1725\n\n ScenarioMIP Citation:\n\n > Xin, Xiaoge; Wu, Tongwen; Shi, Xueli; Zhang, Fang; Li, Jianglong; Chu, Min; Liu, Qianxia; Yan, Jinghui; Ma, Qiang; Wei, Min **(2019)**. *BCC BCC-CSM2MR model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190315; SSP2-4.5 version 20190318; SSP3-7.0 version 20190318; SSP5-8.5 version 20190318. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1732\n\n\n* **CMCC-CM2-SR5**\n\n License description: [data_licenses/CMCC-CM2-SR5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CMCC-CM2-SR5.txt)\n\n CMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele **(2020)**. *CMCC CMCC-CM2-SR5 model output prepared for CMIP6 CMIP*. Version 20200616. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1362\n\n ScenarioMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele **(2020)**. *CMCC CMCC-CM2-SR5 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20200717; SSP2-4.5 version 20200617; SSP3-7.0 version 20200622; SSP5-8.5 version 20200622. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1365\n\n\n* **CMCC-ESM2**\n\n License description: [data_licenses/CMCC-ESM2.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CMCC-ESM2.txt)\n\n CMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele; Butensch\u00f6n, Momme **(2021)**. *CMCC CMCC-ESM2 model output prepared for CMIP6 CMIP*. Version 20210114. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.13164\n\n ScenarioMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele; Butensch\u00f6n, Momme **(2021)**. *CMCC CMCC-ESM2 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20210126; SSP2-4.5 version 20210129; SSP3-7.0 version 20210202; SSP5-8.5 version 20210126. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.13168\n\n\n* **EC-Earth3-AerChem**\n\n License description: [data_licenses/EC-Earth3-AerChem.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-AerChem.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-AerChem model output prepared for CMIP6 CMIP*. Version 20200624. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.639\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-AerChem model output prepared for CMIP6 ScenarioMIP*. Version 20200827. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.724\n\n\n* **EC-Earth3-CC**\n\n License description: [data_licenses/EC-Earth3-CC.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-CC.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth-3-CC model output prepared for CMIP6 CMIP*. Version 20210113. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.640\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2021)**. *EC-Earth-Consortium EC-Earth3-CC model output prepared for CMIP6 ScenarioMIP*. Version 20210113. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.15327\n\n\n* **EC-Earth3-Veg-LR**\n\n License description: [data_licenses/EC-Earth3-Veg-LR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-Veg-LR.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-Veg-LR model output prepared for CMIP6 CMIP*. Version 20200217. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.643\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-Veg-LR model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20201201; SSP2-4.5 version 20201123; SSP3-7.0 version 20201123; SSP5-8.5 version 20201201. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.728\n\n\n* **EC-Earth3-Veg**\n\n License description: [data_licenses/EC-Earth3-Veg.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-Veg.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3-Veg model output prepared for CMIP6 CMIP*. Version 20200225. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.642\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3-Veg model output prepared for CMIP6 ScenarioMIP*. Version 20200225. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.727\n\n\n* **EC-Earth3**\n\n License description: [data_licenses/EC-Earth3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3 model output prepared for CMIP6 CMIP*. Version 20200310. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.181\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3 model output prepared for CMIP6 ScenarioMIP*. Version 20200310. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.251\n\n\n* **GFDL-CM4**\n\n License description: [data_licenses/GFDL-CM4.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/GFDL-CM4.txt)\n\n CMIP Citation:\n\n > Guo, Huan; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Bushuk, Mitchell; Dunne, Krista A.; Dussin, Raphael; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Reichl, Brandon G; Schwarzkopf, Daniel M; Seman, Charles J; Shao, Andrew; Silvers, Levi; Wyman, Bruce; Yan, Xiaoqin; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Held, Isaac M; Krasting, John P.; Horowitz, Larry W.; Milly, P.C.D; Shevliakova, Elena; Winton, Michael; Zhao, Ming; Zhang, Rong **(2018)**. *NOAA-GFDL GFDL-CM4 model output*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1402\n\n ScenarioMIP Citation:\n\n > Guo, Huan; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Dunne, Krista A.; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Schwarzkopf, Daniel M; Seman, Charles J; Shao, Andrew; Silvers, Levi; Wyman, Bruce; Yan, Xiaoqin; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Held, Isaac M; Krasting, John P.; Horowitz, Larry W.; Milly, Chris; Shevliakova, Elena; Winton, Michael; Zhao, Ming; Zhang, Rong **(2018)**. *NOAA-GFDL GFDL-CM4 model output prepared for CMIP6 ScenarioMIP*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.9242\n\n\n* **GFDL-ESM4**\n\n License description: [data_licenses/GFDL-ESM4.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/GFDL-ESM4.txt)\n\n CMIP Citation:\n\n > Krasting, John P.; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Dunne, Krista A.; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Reichl, Brandon G; Schwarzkopf, Daniel M; Seman, Charles J; Silvers, Levi; Wyman, Bruce; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Dussin, Raphael; Guo, Huan; He, Jian; Held, Isaac M; Horowitz, Larry W.; Lin, Pu; Milly, P.C.D; Shevliakova, Elena; Stock, Charles; Winton, Michael; Wittenberg, Andrew T.; Xie, Yuanyu; Zhao, Ming **(2018)**. *NOAA-GFDL GFDL-ESM4 model output prepared for CMIP6 CMIP*. Version 20190726. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1407\n\n ScenarioMIP Citation:\n\n > John, Jasmin G; Blanton, Chris; McHugh, Colleen; Radhakrishnan, Aparna; Rand, Kristopher; Vahlenkamp, Hans; Wilson, Chandin; Zadeh, Niki T.; Dunne, John P.; Dussin, Raphael; Horowitz, Larry W.; Krasting, John P.; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Ploshay, Jeffrey; Shevliakova, Elena; Silvers, Levi; Stock, Charles; Winton, Michael; Zeng, Yujin **(2018)**. *NOAA-GFDL GFDL-ESM4 model output prepared for CMIP6 ScenarioMIP*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1414\n\n\n* **HadGEM3-GC31-LL**\n\n License description: [data_licenses/HadGEM3-GC31-LL.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/HadGEM3-GC31-LL.txt)\n\n CMIP Citation:\n\n > Ridley, Jeff; Menary, Matthew; Kuhlbrodt, Till; Andrews, Martin; Andrews, Tim **(2018)**. *MOHC HadGEM3-GC31-LL model output prepared for CMIP6 CMIP*. Version 20190624. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.419\n\n ScenarioMIP Citation:\n\n > Good, Peter **(2019)**. *MOHC HadGEM3-GC31-LL model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20200114; SSP2-4.5 version 20190908; SSP5-8.5 version 20200114. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.10845\n\n\n* **MIROC-ES2L**\n\n License description: [data_licenses/MIROC-ES2L.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MIROC-ES2L.txt)\n\n CMIP Citation:\n\n > Hajima, Tomohiro; Abe, Manabu; Arakawa, Osamu; Suzuki, Tatsuo; Komuro, Yoshiki; Ogura, Tomoo; Ogochi, Koji; Watanabe, Michio; Yamamoto, Akitomo; Tatebe, Hiroaki; Noguchi, Maki A.; Ohgaito, Rumi; Ito, Akinori; Yamazaki, Dai; Ito, Akihiko; Takata, Kumiko; Watanabe, Shingo; Kawamiya, Michio; Tachiiri, Kaoru **(2019)**. *MIROC MIROC-ES2L model output prepared for CMIP6 CMIP*. Version 20191129. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.902\n\n ScenarioMIP Citation:\n\n > Tachiiri, Kaoru; Abe, Manabu; Hajima, Tomohiro; Arakawa, Osamu; Suzuki, Tatsuo; Komuro, Yoshiki; Ogochi, Koji; Watanabe, Michio; Yamamoto, Akitomo; Tatebe, Hiroaki; Noguchi, Maki A.; Ohgaito, Rumi; Ito, Akinori; Yamazaki, Dai; Ito, Akihiko; Takata, Kumiko; Watanabe, Shingo; Kawamiya, Michio **(2019)**. *MIROC MIROC-ES2L model output prepared for CMIP6 ScenarioMIP*. Version 20200318. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.936\n\n\n* **MIROC6**\n\n License description: [data_licenses/MIROC6.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MIROC6.txt)\n\n CMIP Citation:\n\n > Tatebe, Hiroaki; Watanabe, Masahiro **(2018)**. *MIROC MIROC6 model output prepared for CMIP6 CMIP*. Version 20191016. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.881\n\n ScenarioMIP Citation:\n\n > Shiogama, Hideo; Abe, Manabu; Tatebe, Hiroaki **(2019)**. *MIROC MIROC6 model output prepared for CMIP6 ScenarioMIP*. Version 20191016. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.898\n\n\n* **MPI-ESM1-2-HR**\n\n License description: [data_licenses/MPI-ESM1-2-HR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MPI-ESM1-2-HR.txt)\n\n CMIP Citation:\n\n > Jungclaus, Johann; Bittner, Matthias; Wieners, Karl-Hermann; Wachsmann, Fabian; Schupfner, Martin; Legutke, Stephanie; Giorgetta, Marco; Reick, Christian; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Esch, Monika; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-HR model output prepared for CMIP6 CMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.741\n\n ScenarioMIP Citation:\n\n > Schupfner, Martin; Wieners, Karl-Hermann; Wachsmann, Fabian; Steger, Christian; Bittner, Matthias; Jungclaus, Johann; Fr\u00fch, Barbara; Pankatz, Klaus; Giorgetta, Marco; Reick, Christian; Legutke, Stephanie; Esch, Monika; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *DKRZ MPI-ESM1.2-HR model output prepared for CMIP6 ScenarioMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2450\n\n\n* **MPI-ESM1-2-LR**\n\n License description: [data_licenses/MPI-ESM1-2-LR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MPI-ESM1-2-LR.txt)\n\n CMIP Citation:\n\n > Wieners, Karl-Hermann; Giorgetta, Marco; Jungclaus, Johann; Reick, Christian; Esch, Monika; Bittner, Matthias; Legutke, Stephanie; Schupfner, Martin; Wachsmann, Fabian; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-LR model output prepared for CMIP6 CMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.742\n\n ScenarioMIP Citation:\n\n > Wieners, Karl-Hermann; Giorgetta, Marco; Jungclaus, Johann; Reick, Christian; Esch, Monika; Bittner, Matthias; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-LR model output prepared for CMIP6 ScenarioMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.793\n\n\n* **NESM3**\n\n License description: [data_licenses/NESM3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NESM3.txt)\n\n CMIP Citation:\n\n > Cao, Jian; Wang, Bin **(2019)**. *NUIST NESMv3 model output prepared for CMIP6 CMIP*. Version 20190812. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2021\n\n ScenarioMIP Citation:\n\n > Cao, Jian **(2019)**. *NUIST NESMv3 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190806; SSP2-4.5 version 20190805; SSP5-8.5 version 20190811. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2027\n\n\n* **NorESM2-LM**\n\n License description: [data_licenses/NorESM2-LM.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NorESM2-LM.txt)\n\n CMIP Citation:\n\n > Seland, \u00d8yvind; Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-LM model output prepared for CMIP6 CMIP*. Version 20190815. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.502\n\n ScenarioMIP Citation:\n\n > Seland, \u00d8yvind; Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-LM model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.604\n\n\n* **NorESM2-MM**\n\n License description: [data_licenses/NorESM2-MM.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NorESM2-MM.txt)\n\n CMIP Citation:\n\n > Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Seland, \u00d8yvind; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-MM model output prepared for CMIP6 CMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.506\n\n ScenarioMIP Citation:\n\n > Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Seland, \u00d8yvind; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-MM model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.608\n\n\n* **UKESM1-0-LL**\n\n License description: [data_licenses/UKESM1-0-LL.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/UKESM1-0-LL.txt)\n\n CMIP Citation:\n\n > Tang, Yongming; Rumbold, Steve; Ellis, Rich; Kelley, Douglas; Mulcahy, Jane; Sellar, Alistair; Walton, Jeremy; Jones, Colin **(2019)**. *MOHC UKESM1.0-LL model output prepared for CMIP6 CMIP*. Version 20190627. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1569\n\n ScenarioMIP Citation:\n\n > Good, Peter; Sellar, Alistair; Tang, Yongming; Rumbold, Steve; Ellis, Rich; Kelley, Douglas; Kuhlbrodt, Till; Walton, Jeremy **(2019)**. *MOHC UKESM1.0-LL model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190708; SSP2-4.5 version 20190715; SSP3-7.0 version 20190726; SSP5-8.5 version 20190726. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1567\n\n\n* **CanESM5**\n\n License description: [data_licenses/CanESM5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CanESM5.txt). Note: this dataset was previously licensed\n under CC BY-SA 4.0, but was relicensed as CC BY 4.0 in March, 2023.\n\n CMIP Citation:\n\n > Swart, Neil Cameron; Cole, Jason N.S.; Kharin, Viatcheslav V.; Lazare, Mike; Scinocca, John F.; Gillett, Nathan P.; Anstey, James; Arora, Vivek; Christian, James R.; Jiao, Yanjun; Lee, Warren G.; Majaess, Fouad; Saenko, Oleg A.; Seiler, Christian; Seinen, Clint; Shao, Andrew; Solheim, Larry; von Salzen, Knut; Yang, Duo; Winter, Barbara; Sigmond, Michael **(2019)**. *CCCma CanESM5 model output prepared for CMIP6 CMIP*. Version 20190429. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1303\n\n ScenarioMIP Citation:\n\n > Swart, Neil Cameron; Cole, Jason N.S.; Kharin, Viatcheslav V.; Lazare, Mike; Scinocca, John F.; Gillett, Nathan P.; Anstey, James; Arora, Vivek; Christian, James R.; Jiao, Yanjun; Lee, Warren G.; Majaess, Fouad; Saenko, Oleg A.; Seiler, Christian; Seinen, Clint; Shao, Andrew; Solheim, Larry; von Salzen, Knut; Yang, Duo; Winter, Barbara; Sigmond, Michael **(2019)**. *CCCma CanESM5 model output prepared for CMIP6 ScenarioMIP*. Version 20190429. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1317\n\n## Acknowledgements\n\nThis work is the result of many years worth of work by members of the [Climate Impact Lab](https://impactlab.org), but would not have been possible without many contributions from across the wider scientific and computing communities.\n\nSpecifically, we would like to acknowledge the World Climate Research Programme's Working Group on Coupled Modeling, which is responsible for CMIP, and we would like to thank the climate modeling groups for producing and making their model output available. We would particularly like to thank the modeling institutions whose results are included as an input to this repository (listed above) for their contributions to the CMIP6 project and for responding to and granting our requests for license waivers.\n\nWe would also like to thank Lamont-Doherty Earth Observatory, the [Pangeo Consortium](https://github.com/pangeo-data) (and especially the [ESGF Cloud Data Working Group](https://pangeo-data.github.io/pangeo-cmip6-cloud/#)) and Google Cloud and the Google Public Datasets program for making the [CMIP6 Google Cloud collection](https://console.cloud.google.com/marketplace/details/noaa-public/cmip6) possible. In particular we're extremely grateful to [Ryan Abernathey](https://github.com/rabernat), [Naomi Henderson](https://github.com/naomi-henderson), [Charles Blackmon-Luca](https://github.com/charlesbluca), [Aparna Radhakrishnan](https://github.com/aradhakrishnanGFDL), [Julius Busecke](https://github.com/jbusecke), and [Charles Stern](https://github.com/cisaacstern) for the huge amount of work they've done to translate the ESGF CMIP6 netCDF archives into consistently-formattted, analysis-ready zarr stores on Google Cloud.\n\nWe're also grateful to the [xclim developers](https://github.com/Ouranosinc/xclim/graphs/contributors) ([DOI: 10.5281/zenodo.2795043](https://doi.org/10.5281/zenodo.2795043)), in particular [Pascal Bourgault](https://github.com/aulemahal), [David Huard](https://github.com/huard), and [Travis Logan](https://github.com/tlogan2000), for implementing the QDM bias correction method in the xclim python package, supporting our QPLAD implementation into the package, and ongoing support in integrating dask into downscaling workflows. For method advice and useful conversations, we would like to thank Keith Dixon, Dennis Adams-Smith, and [Joe Hamman](https://github.com/jhamman).\n\n## Financial support\n\nThis research has been supported by The Rockefeller Foundation and the Microsoft AI for Earth Initiative.\n\n## Additional links:\n\n* CIL GDPCIR project homepage: [github.com/ClimateImpactLab/downscaleCMIP6](https://github.com/ClimateImpactLab/downscaleCMIP6)\n* Project listing on zenodo: https://doi.org/10.5281/zenodo.6403794\n* Climate Impact Lab homepage: [impactlab.org](https://impactlab.org)", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "cil-gdpcir-cc0,climate-impact-lab,cmip6,precipitation,rhodium-group,temperature", "license": "CC0-1.0", "title": "CIL Global Downscaled Projections for Climate Impacts Research (CC0-1.0)", "missionStartDate": "1950-01-01T00:00:00Z"}, "cil-gdpcir-cc-by": {"abstract": "The World Climate Research Programme's [6th Coupled Model Intercomparison Project (CMIP6)](https://www.wcrp-climate.org/wgcm-cmip/wgcm-cmip6) represents an enormous advance in the quality, detail, and scope of climate modeling.\n\nThe [Global Downscaled Projections for Climate Impacts Research](https://github.com/ClimateImpactLab/downscaleCMIP6) dataset makes this modeling more applicable to understanding the impacts of changes in the climate on humans and society with two key developments: trend-preserving bias correction and downscaling. In this dataset, the [Climate Impact Lab](https://impactlab.org) provides global, daily minimum and maximum air temperature at the surface (`tasmin` and `tasmax`) and daily cumulative surface precipitation (`pr`) corresponding to the CMIP6 historical, ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 scenarios for 25 global climate models on a 1/4-degree regular global grid.\n\n## Accessing the data\n\nGDPCIR data can be accessed on the Microsoft Planetary Computer. The dataset is made of of three collections, distinguished by data license:\n* [Public domain (CC0-1.0) collection](https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc0)\n* [Attribution (CC BY 4.0) collection](https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc-by)\n\nEach modeling center with bias corrected and downscaled data in this collection falls into one of these license categories - see the [table below](/dataset/cil-gdpcir-cc-by#available-institutions-models-and-scenarios-by-license-collection) to see which model is in each collection, and see the section below on [Citing, Licensing, and using data produced by this project](/dataset/cil-gdpcir-cc-by#citing-licensing-and-using-data-produced-by-this-project) for citations and additional information about each license.\n\n## Data format & contents\n\nThe data is stored as partitioned zarr stores (see [https://zarr.readthedocs.io](https://zarr.readthedocs.io)), each of which includes thousands of data and metadata files covering the full time span of the experiment. Historical zarr stores contain just over 50 GB, while SSP zarr stores contain nearly 70GB. Each store is stored as a 32-bit float, with dimensions time (daily datetime), lat (float latitude), and lon (float longitude). The data is chunked at each interval of 365 days and 90 degree interval of latitude and longitude. Therefore, each chunk is `(365, 360, 360)`, with each chunk occupying approximately 180MB in memory.\n\nHistorical data is daily, excluding leap days, from Jan 1, 1950 to Dec 31, 2014; SSP data is daily, excluding leap days, from Jan 1, 2015 to either Dec 31, 2099 or Dec 31, 2100, depending on data availability in the source GCM.\n\nThe spatial domain covers all 0.25-degree grid cells, indexed by the grid center, with grid edges on the quarter-degree, using a -180 to 180 longitude convention. Thus, the \u201clon\u201d coordinate extends from -179.875 to 179.875, and the \u201clat\u201d coordinate extends from -89.875 to 89.875, with intermediate values at each 0.25-degree increment between (e.g. -179.875, -179.625, -179.375, etc).\n\n## Available institutions, models, and scenarios by license collection\n\n| Modeling institution | Source model | Available experiments | License collection |\n| -------------------- | ----------------- | ------------------------------------------ | ---------------------- |\n| CAS | FGOALS-g3 [^1] | SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| INM | INM-CM4-8 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| INM | INM-CM5-0 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| BCC | BCC-CSM2-MR | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| CMCC | CMCC-CM2-SR5 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-40 |\n| CMCC | CMCC-ESM2 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-40 |\n| CSIRO-ARCCSS | ACCESS-CM2 | SSP2-4.5 and SSP3-7.0 | CC-BY-40 |\n| CSIRO | ACCESS-ESM1-5 | SSP1-2.6, SSP2-4.5, and SSP3-7.0 | CC-BY-40 |\n| MIROC | MIROC-ES2L | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| MIROC | MIROC6 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| MOHC | HadGEM3-GC31-LL | SSP1-2.6, SSP2-4.5, and SSP5-8.5 | CC-BY-40 |\n| MOHC | UKESM1-0-LL | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| MPI-M | MPI-ESM1-2-LR | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| MPI-M/DKRZ [^2] | MPI-ESM1-2-HR | SSP1-2.6 and SSP5-8.5 | CC-BY-40 |\n| NCC | NorESM2-LM | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| NCC | NorESM2-MM | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| NOAA-GFDL | GFDL-CM4 | SSP2-4.5 and SSP5-8.5 | CC-BY-40 |\n| NOAA-GFDL | GFDL-ESM4 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| NUIST | NESM3 | SSP1-2.6, SSP2-4.5, and SSP5-8.5 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3 | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3-AerChem | ssp370 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3-CC | ssp245 and ssp585 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3-Veg | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3-Veg-LR | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40 |\n| CCCma | CanESM5 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-40[^3] |\n\n*Notes:*\n\n[^1]: At the time of running, no ssp1-2.6 precipitation data was available. Therefore, we provide `tasmin` and `tamax` for this model and experiment, but not `pr`. All other model/experiment combinations in the above table include all three variables.\n\n[^2]: The institution which ran MPI-ESM1-2-HR\u2019s historical (CMIP) simulations is `MPI-M`, while the future (ScenarioMIP) simulations were run by `DKRZ`. Therefore, the institution component of `MPI-ESM1-2-HR` filepaths differ between `historical` and `SSP` scenarios.\n\n[^3]: This dataset was previously licensed as [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/), but was relicensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) in March, 2023. \n\n## Project methods\n\nThis project makes use of statistical bias correction and downscaling algorithms, which are specifically designed to accurately represent changes in the extremes. For this reason, we selected Quantile Delta Mapping (QDM), following the method introduced by [Cannon et al. (2015)](https://doi.org/10.1175/JCLI-D-14-00754.1), which preserves quantile-specific trends from the GCM while fitting the full distribution for a given day-of-year to a reference dataset (ERA5).\n\nWe then introduce a similar method tailored to increase spatial resolution while preserving extreme behavior, Quantile-Preserving Localized-Analog Downscaling (QPLAD).\n\nTogether, these methods provide a robust means to handle both the central and tail behavior seen in climate model output, while aligning the full distribution to a state-of-the-art reanalysis dataset and providing the spatial granularity needed to study surface impacts.\n\nFor further documentation, see [Global downscaled projections for climate impacts research (GDPCIR): preserving extremes for modeling future climate impacts](https://egusphere.copernicus.org/preprints/2023/egusphere-2022-1513/) (EGUsphere, 2022 [preprint]).\n\n## Citing, licensing, and using data produced by this project\n\nProjects making use of the data produced as part of the Climate Impact Lab Global Downscaled Projections for Climate Impacts Research (CIL GDPCIR) project are requested to cite both this project and the source datasets from which these results are derived. Additionally, the use of data derived from some GCMs *requires* citations, and some modeling centers impose licensing restrictions & requirements on derived works. See each GCM's license info in the links below for more information.\n\n### CIL GDPCIR\n\nUsers are requested to cite this project in derived works. Our method documentation paper may be cited using the following:\n\n> Gergel, D. R., Malevich, S. B., McCusker, K. E., Tenezakis, E., Delgado, M. T., Fish, M. A., and Kopp, R. E.: Global downscaled projections for climate impacts research (GDPCIR): preserving extremes for modeling future climate impacts, EGUsphere [preprint], https://doi.org/10.5194/egusphere-2022-1513, 2023. \n\nThe code repository may be cited using the following:\n\n> Diana Gergel, Kelly McCusker, Brewster Malevich, Emile Tenezakis, Meredith Fish, Michael Delgado (2022). ClimateImpactLab/downscaleCMIP6: (v1.0.0). Zenodo. https://doi.org/10.5281/zenodo.6403794\n\n### ERA5\n\nAdditionally, we request you cite the historical dataset used in bias correction and downscaling, ERA5. See the [ECMWF guide to citing a dataset on the Climate Data Store](https://confluence.ecmwf.int/display/CKB/How+to+acknowledge+and+cite+a+Climate+Data+Store+%28CDS%29+catalogue+entry+and+the+data+published+as+part+of+it):\n\n> Hersbach, H, et al. The ERA5 global reanalysis. Q J R Meteorol Soc.2020; 146: 1999\u20132049. DOI: [10.1002/qj.3803](https://doi.org/10.1002/qj.3803)\n>\n> Mu\u00f1oz Sabater, J., (2019): ERA5-Land hourly data from 1981 to present. Copernicus Climate Change Service (C3S) Climate Data Store (CDS). (Accessed on June 4, 2021), DOI: [10.24381/cds.e2161bac](https://doi.org/10.24381/cds.e2161bac)\n>\n> Mu\u00f1oz Sabater, J., (2021): ERA5-Land hourly data from 1950 to 1980. Copernicus Climate Change Service (C3S) Climate Data Store (CDS). (Accessed on June 4, 2021), DOI: [10.24381/cds.e2161bac](https://doi.org/10.24381/cds.e2161bac)\n\n### GCM-specific citations & licenses\n\nThe CMIP6 simulation data made available through the Earth System Grid Federation (ESGF) are subject to Creative Commons [BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) or [BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) licenses. The Climate Impact Lab has reached out to each of the modeling institutions to request waivers from these terms so the outputs of this project may be used with fewer restrictions, and has been granted permission to release the data using the licenses listed here.\n\n#### Public Domain Datasets\n\nThe following bias corrected and downscaled model simulations are available in the public domain using a [CC0 1.0 Universal Public Domain Declaration](https://creativecommons.org/publicdomain/zero/1.0/). Access the collection on Planetary Computer at https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc0.\n\n* **FGOALS-g3**\n\n License description: [data_licenses/FGOALS-g3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/FGOALS-g3.txt)\n\n CMIP Citation:\n\n > Li, Lijuan **(2019)**. *CAS FGOALS-g3 model output prepared for CMIP6 CMIP*. Version 20190826. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1783\n\n ScenarioMIP Citation:\n\n > Li, Lijuan **(2019)**. *CAS FGOALS-g3 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190818; SSP2-4.5 version 20190818; SSP3-7.0 version 20190820; SSP5-8.5 tasmax version 20190819; SSP5-8.5 tasmin version 20190819; SSP5-8.5 pr version 20190818. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2056\n\n\n* **INM-CM4-8**\n\n License description: [data_licenses/INM-CM4-8.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/INM-CM4-8.txt)\n\n CMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM4-8 model output prepared for CMIP6 CMIP*. Version 20190530. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1422\n\n ScenarioMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM4-8 model output prepared for CMIP6 ScenarioMIP*. Version 20190603. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.12321\n\n\n* **INM-CM5-0**\n\n License description: [data_licenses/INM-CM5-0.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/INM-CM5-0.txt)\n\n CMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM5-0 model output prepared for CMIP6 CMIP*. Version 20190610. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1423\n\n ScenarioMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM5-0 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190619; SSP2-4.5 version 20190619; SSP3-7.0 version 20190618; SSP5-8.5 version 20190724. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.12322\n\n\n#### CC-BY-4.0\n\nThe following bias corrected and downscaled model simulations are licensed under a [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/). Note that this license requires citation of the source model output (included here). Please see https://creativecommons.org/licenses/by/4.0/ for more information. Access the collection on Planetary Computer at https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc-by.\n\n* **ACCESS-CM2**\n\n License description: [data_licenses/ACCESS-CM2.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/ACCESS-CM2.txt)\n\n CMIP Citation:\n\n > Dix, Martin; Bi, Doahua; Dobrohotoff, Peter; Fiedler, Russell; Harman, Ian; Law, Rachel; Mackallah, Chloe; Marsland, Simon; O'Farrell, Siobhan; Rashid, Harun; Srbinovsky, Jhan; Sullivan, Arnold; Trenham, Claire; Vohralik, Peter; Watterson, Ian; Williams, Gareth; Woodhouse, Matthew; Bodman, Roger; Dias, Fabio Boeira; Domingues, Catia; Hannah, Nicholas; Heerdegen, Aidan; Savita, Abhishek; Wales, Scott; Allen, Chris; Druken, Kelsey; Evans, Ben; Richards, Clare; Ridzwan, Syazwan Mohamed; Roberts, Dale; Smillie, Jon; Snow, Kate; Ward, Marshall; Yang, Rui **(2019)**. *CSIRO-ARCCSS ACCESS-CM2 model output prepared for CMIP6 CMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2281\n\n ScenarioMIP Citation:\n\n > Dix, Martin; Bi, Doahua; Dobrohotoff, Peter; Fiedler, Russell; Harman, Ian; Law, Rachel; Mackallah, Chloe; Marsland, Simon; O'Farrell, Siobhan; Rashid, Harun; Srbinovsky, Jhan; Sullivan, Arnold; Trenham, Claire; Vohralik, Peter; Watterson, Ian; Williams, Gareth; Woodhouse, Matthew; Bodman, Roger; Dias, Fabio Boeira; Domingues, Catia; Hannah, Nicholas; Heerdegen, Aidan; Savita, Abhishek; Wales, Scott; Allen, Chris; Druken, Kelsey; Evans, Ben; Richards, Clare; Ridzwan, Syazwan Mohamed; Roberts, Dale; Smillie, Jon; Snow, Kate; Ward, Marshall; Yang, Rui **(2019)**. *CSIRO-ARCCSS ACCESS-CM2 model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2285\n\n\n* **ACCESS-ESM1-5**\n\n License description: [data_licenses/ACCESS-ESM1-5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/ACCESS-ESM1-5.txt)\n\n CMIP Citation:\n\n > Ziehn, Tilo; Chamberlain, Matthew; Lenton, Andrew; Law, Rachel; Bodman, Roger; Dix, Martin; Wang, Yingping; Dobrohotoff, Peter; Srbinovsky, Jhan; Stevens, Lauren; Vohralik, Peter; Mackallah, Chloe; Sullivan, Arnold; O'Farrell, Siobhan; Druken, Kelsey **(2019)**. *CSIRO ACCESS-ESM1.5 model output prepared for CMIP6 CMIP*. Version 20191115. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2288\n\n ScenarioMIP Citation:\n\n > Ziehn, Tilo; Chamberlain, Matthew; Lenton, Andrew; Law, Rachel; Bodman, Roger; Dix, Martin; Wang, Yingping; Dobrohotoff, Peter; Srbinovsky, Jhan; Stevens, Lauren; Vohralik, Peter; Mackallah, Chloe; Sullivan, Arnold; O'Farrell, Siobhan; Druken, Kelsey **(2019)**. *CSIRO ACCESS-ESM1.5 model output prepared for CMIP6 ScenarioMIP*. Version 20191115. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2291\n\n\n* **BCC-CSM2-MR**\n\n License description: [data_licenses/BCC-CSM2-MR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/BCC-CSM2-MR.txt)\n\n CMIP Citation:\n\n > Xin, Xiaoge; Zhang, Jie; Zhang, Fang; Wu, Tongwen; Shi, Xueli; Li, Jianglong; Chu, Min; Liu, Qianxia; Yan, Jinghui; Ma, Qiang; Wei, Min **(2018)**. *BCC BCC-CSM2MR model output prepared for CMIP6 CMIP*. Version 20181126. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1725\n\n ScenarioMIP Citation:\n\n > Xin, Xiaoge; Wu, Tongwen; Shi, Xueli; Zhang, Fang; Li, Jianglong; Chu, Min; Liu, Qianxia; Yan, Jinghui; Ma, Qiang; Wei, Min **(2019)**. *BCC BCC-CSM2MR model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190315; SSP2-4.5 version 20190318; SSP3-7.0 version 20190318; SSP5-8.5 version 20190318. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1732\n\n\n* **CMCC-CM2-SR5**\n\n License description: [data_licenses/CMCC-CM2-SR5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CMCC-CM2-SR5.txt)\n\n CMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele **(2020)**. *CMCC CMCC-CM2-SR5 model output prepared for CMIP6 CMIP*. Version 20200616. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1362\n\n ScenarioMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele **(2020)**. *CMCC CMCC-CM2-SR5 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20200717; SSP2-4.5 version 20200617; SSP3-7.0 version 20200622; SSP5-8.5 version 20200622. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1365\n\n\n* **CMCC-ESM2**\n\n License description: [data_licenses/CMCC-ESM2.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CMCC-ESM2.txt)\n\n CMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele; Butensch\u00f6n, Momme **(2021)**. *CMCC CMCC-ESM2 model output prepared for CMIP6 CMIP*. Version 20210114. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.13164\n\n ScenarioMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele; Butensch\u00f6n, Momme **(2021)**. *CMCC CMCC-ESM2 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20210126; SSP2-4.5 version 20210129; SSP3-7.0 version 20210202; SSP5-8.5 version 20210126. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.13168\n\n\n* **EC-Earth3-AerChem**\n\n License description: [data_licenses/EC-Earth3-AerChem.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-AerChem.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-AerChem model output prepared for CMIP6 CMIP*. Version 20200624. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.639\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-AerChem model output prepared for CMIP6 ScenarioMIP*. Version 20200827. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.724\n\n\n* **EC-Earth3-CC**\n\n License description: [data_licenses/EC-Earth3-CC.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-CC.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth-3-CC model output prepared for CMIP6 CMIP*. Version 20210113. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.640\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2021)**. *EC-Earth-Consortium EC-Earth3-CC model output prepared for CMIP6 ScenarioMIP*. Version 20210113. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.15327\n\n\n* **EC-Earth3-Veg-LR**\n\n License description: [data_licenses/EC-Earth3-Veg-LR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-Veg-LR.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-Veg-LR model output prepared for CMIP6 CMIP*. Version 20200217. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.643\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-Veg-LR model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20201201; SSP2-4.5 version 20201123; SSP3-7.0 version 20201123; SSP5-8.5 version 20201201. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.728\n\n\n* **EC-Earth3-Veg**\n\n License description: [data_licenses/EC-Earth3-Veg.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-Veg.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3-Veg model output prepared for CMIP6 CMIP*. Version 20200225. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.642\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3-Veg model output prepared for CMIP6 ScenarioMIP*. Version 20200225. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.727\n\n\n* **EC-Earth3**\n\n License description: [data_licenses/EC-Earth3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3 model output prepared for CMIP6 CMIP*. Version 20200310. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.181\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3 model output prepared for CMIP6 ScenarioMIP*. Version 20200310. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.251\n\n\n* **GFDL-CM4**\n\n License description: [data_licenses/GFDL-CM4.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/GFDL-CM4.txt)\n\n CMIP Citation:\n\n > Guo, Huan; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Bushuk, Mitchell; Dunne, Krista A.; Dussin, Raphael; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Reichl, Brandon G; Schwarzkopf, Daniel M; Seman, Charles J; Shao, Andrew; Silvers, Levi; Wyman, Bruce; Yan, Xiaoqin; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Held, Isaac M; Krasting, John P.; Horowitz, Larry W.; Milly, P.C.D; Shevliakova, Elena; Winton, Michael; Zhao, Ming; Zhang, Rong **(2018)**. *NOAA-GFDL GFDL-CM4 model output*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1402\n\n ScenarioMIP Citation:\n\n > Guo, Huan; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Dunne, Krista A.; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Schwarzkopf, Daniel M; Seman, Charles J; Shao, Andrew; Silvers, Levi; Wyman, Bruce; Yan, Xiaoqin; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Held, Isaac M; Krasting, John P.; Horowitz, Larry W.; Milly, Chris; Shevliakova, Elena; Winton, Michael; Zhao, Ming; Zhang, Rong **(2018)**. *NOAA-GFDL GFDL-CM4 model output prepared for CMIP6 ScenarioMIP*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.9242\n\n\n* **GFDL-ESM4**\n\n License description: [data_licenses/GFDL-ESM4.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/GFDL-ESM4.txt)\n\n CMIP Citation:\n\n > Krasting, John P.; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Dunne, Krista A.; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Reichl, Brandon G; Schwarzkopf, Daniel M; Seman, Charles J; Silvers, Levi; Wyman, Bruce; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Dussin, Raphael; Guo, Huan; He, Jian; Held, Isaac M; Horowitz, Larry W.; Lin, Pu; Milly, P.C.D; Shevliakova, Elena; Stock, Charles; Winton, Michael; Wittenberg, Andrew T.; Xie, Yuanyu; Zhao, Ming **(2018)**. *NOAA-GFDL GFDL-ESM4 model output prepared for CMIP6 CMIP*. Version 20190726. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1407\n\n ScenarioMIP Citation:\n\n > John, Jasmin G; Blanton, Chris; McHugh, Colleen; Radhakrishnan, Aparna; Rand, Kristopher; Vahlenkamp, Hans; Wilson, Chandin; Zadeh, Niki T.; Dunne, John P.; Dussin, Raphael; Horowitz, Larry W.; Krasting, John P.; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Ploshay, Jeffrey; Shevliakova, Elena; Silvers, Levi; Stock, Charles; Winton, Michael; Zeng, Yujin **(2018)**. *NOAA-GFDL GFDL-ESM4 model output prepared for CMIP6 ScenarioMIP*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1414\n\n\n* **HadGEM3-GC31-LL**\n\n License description: [data_licenses/HadGEM3-GC31-LL.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/HadGEM3-GC31-LL.txt)\n\n CMIP Citation:\n\n > Ridley, Jeff; Menary, Matthew; Kuhlbrodt, Till; Andrews, Martin; Andrews, Tim **(2018)**. *MOHC HadGEM3-GC31-LL model output prepared for CMIP6 CMIP*. Version 20190624. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.419\n\n ScenarioMIP Citation:\n\n > Good, Peter **(2019)**. *MOHC HadGEM3-GC31-LL model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20200114; SSP2-4.5 version 20190908; SSP5-8.5 version 20200114. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.10845\n\n\n* **MIROC-ES2L**\n\n License description: [data_licenses/MIROC-ES2L.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MIROC-ES2L.txt)\n\n CMIP Citation:\n\n > Hajima, Tomohiro; Abe, Manabu; Arakawa, Osamu; Suzuki, Tatsuo; Komuro, Yoshiki; Ogura, Tomoo; Ogochi, Koji; Watanabe, Michio; Yamamoto, Akitomo; Tatebe, Hiroaki; Noguchi, Maki A.; Ohgaito, Rumi; Ito, Akinori; Yamazaki, Dai; Ito, Akihiko; Takata, Kumiko; Watanabe, Shingo; Kawamiya, Michio; Tachiiri, Kaoru **(2019)**. *MIROC MIROC-ES2L model output prepared for CMIP6 CMIP*. Version 20191129. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.902\n\n ScenarioMIP Citation:\n\n > Tachiiri, Kaoru; Abe, Manabu; Hajima, Tomohiro; Arakawa, Osamu; Suzuki, Tatsuo; Komuro, Yoshiki; Ogochi, Koji; Watanabe, Michio; Yamamoto, Akitomo; Tatebe, Hiroaki; Noguchi, Maki A.; Ohgaito, Rumi; Ito, Akinori; Yamazaki, Dai; Ito, Akihiko; Takata, Kumiko; Watanabe, Shingo; Kawamiya, Michio **(2019)**. *MIROC MIROC-ES2L model output prepared for CMIP6 ScenarioMIP*. Version 20200318. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.936\n\n\n* **MIROC6**\n\n License description: [data_licenses/MIROC6.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MIROC6.txt)\n\n CMIP Citation:\n\n > Tatebe, Hiroaki; Watanabe, Masahiro **(2018)**. *MIROC MIROC6 model output prepared for CMIP6 CMIP*. Version 20191016. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.881\n\n ScenarioMIP Citation:\n\n > Shiogama, Hideo; Abe, Manabu; Tatebe, Hiroaki **(2019)**. *MIROC MIROC6 model output prepared for CMIP6 ScenarioMIP*. Version 20191016. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.898\n\n\n* **MPI-ESM1-2-HR**\n\n License description: [data_licenses/MPI-ESM1-2-HR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MPI-ESM1-2-HR.txt)\n\n CMIP Citation:\n\n > Jungclaus, Johann; Bittner, Matthias; Wieners, Karl-Hermann; Wachsmann, Fabian; Schupfner, Martin; Legutke, Stephanie; Giorgetta, Marco; Reick, Christian; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Esch, Monika; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-HR model output prepared for CMIP6 CMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.741\n\n ScenarioMIP Citation:\n\n > Schupfner, Martin; Wieners, Karl-Hermann; Wachsmann, Fabian; Steger, Christian; Bittner, Matthias; Jungclaus, Johann; Fr\u00fch, Barbara; Pankatz, Klaus; Giorgetta, Marco; Reick, Christian; Legutke, Stephanie; Esch, Monika; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *DKRZ MPI-ESM1.2-HR model output prepared for CMIP6 ScenarioMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2450\n\n\n* **MPI-ESM1-2-LR**\n\n License description: [data_licenses/MPI-ESM1-2-LR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MPI-ESM1-2-LR.txt)\n\n CMIP Citation:\n\n > Wieners, Karl-Hermann; Giorgetta, Marco; Jungclaus, Johann; Reick, Christian; Esch, Monika; Bittner, Matthias; Legutke, Stephanie; Schupfner, Martin; Wachsmann, Fabian; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-LR model output prepared for CMIP6 CMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.742\n\n ScenarioMIP Citation:\n\n > Wieners, Karl-Hermann; Giorgetta, Marco; Jungclaus, Johann; Reick, Christian; Esch, Monika; Bittner, Matthias; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-LR model output prepared for CMIP6 ScenarioMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.793\n\n\n* **NESM3**\n\n License description: [data_licenses/NESM3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NESM3.txt)\n\n CMIP Citation:\n\n > Cao, Jian; Wang, Bin **(2019)**. *NUIST NESMv3 model output prepared for CMIP6 CMIP*. Version 20190812. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2021\n\n ScenarioMIP Citation:\n\n > Cao, Jian **(2019)**. *NUIST NESMv3 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190806; SSP2-4.5 version 20190805; SSP5-8.5 version 20190811. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2027\n\n\n* **NorESM2-LM**\n\n License description: [data_licenses/NorESM2-LM.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NorESM2-LM.txt)\n\n CMIP Citation:\n\n > Seland, \u00d8yvind; Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-LM model output prepared for CMIP6 CMIP*. Version 20190815. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.502\n\n ScenarioMIP Citation:\n\n > Seland, \u00d8yvind; Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-LM model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.604\n\n\n* **NorESM2-MM**\n\n License description: [data_licenses/NorESM2-MM.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NorESM2-MM.txt)\n\n CMIP Citation:\n\n > Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Seland, \u00d8yvind; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-MM model output prepared for CMIP6 CMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.506\n\n ScenarioMIP Citation:\n\n > Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Seland, \u00d8yvind; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-MM model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.608\n\n\n* **UKESM1-0-LL**\n\n License description: [data_licenses/UKESM1-0-LL.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/UKESM1-0-LL.txt)\n\n CMIP Citation:\n\n > Tang, Yongming; Rumbold, Steve; Ellis, Rich; Kelley, Douglas; Mulcahy, Jane; Sellar, Alistair; Walton, Jeremy; Jones, Colin **(2019)**. *MOHC UKESM1.0-LL model output prepared for CMIP6 CMIP*. Version 20190627. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1569\n\n ScenarioMIP Citation:\n\n > Good, Peter; Sellar, Alistair; Tang, Yongming; Rumbold, Steve; Ellis, Rich; Kelley, Douglas; Kuhlbrodt, Till; Walton, Jeremy **(2019)**. *MOHC UKESM1.0-LL model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190708; SSP2-4.5 version 20190715; SSP3-7.0 version 20190726; SSP5-8.5 version 20190726. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1567\n\n* **CanESM5**\n\n License description: [data_licenses/CanESM5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CanESM5.txt). Note: this dataset was previously licensed\n under CC BY-SA 4.0, but was relicensed as CC BY 4.0 in March, 2023.\n\n CMIP Citation:\n\n > Swart, Neil Cameron; Cole, Jason N.S.; Kharin, Viatcheslav V.; Lazare, Mike; Scinocca, John F.; Gillett, Nathan P.; Anstey, James; Arora, Vivek; Christian, James R.; Jiao, Yanjun; Lee, Warren G.; Majaess, Fouad; Saenko, Oleg A.; Seiler, Christian; Seinen, Clint; Shao, Andrew; Solheim, Larry; von Salzen, Knut; Yang, Duo; Winter, Barbara; Sigmond, Michael **(2019)**. *CCCma CanESM5 model output prepared for CMIP6 CMIP*. Version 20190429. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1303\n\n ScenarioMIP Citation:\n\n > Swart, Neil Cameron; Cole, Jason N.S.; Kharin, Viatcheslav V.; Lazare, Mike; Scinocca, John F.; Gillett, Nathan P.; Anstey, James; Arora, Vivek; Christian, James R.; Jiao, Yanjun; Lee, Warren G.; Majaess, Fouad; Saenko, Oleg A.; Seiler, Christian; Seinen, Clint; Shao, Andrew; Solheim, Larry; von Salzen, Knut; Yang, Duo; Winter, Barbara; Sigmond, Michael **(2019)**. *CCCma CanESM5 model output prepared for CMIP6 ScenarioMIP*. Version 20190429. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1317\n\n## Acknowledgements\n\nThis work is the result of many years worth of work by members of the [Climate Impact Lab](https://impactlab.org), but would not have been possible without many contributions from across the wider scientific and computing communities.\n\nSpecifically, we would like to acknowledge the World Climate Research Programme's Working Group on Coupled Modeling, which is responsible for CMIP, and we would like to thank the climate modeling groups for producing and making their model output available. We would particularly like to thank the modeling institutions whose results are included as an input to this repository (listed above) for their contributions to the CMIP6 project and for responding to and granting our requests for license waivers.\n\nWe would also like to thank Lamont-Doherty Earth Observatory, the [Pangeo Consortium](https://github.com/pangeo-data) (and especially the [ESGF Cloud Data Working Group](https://pangeo-data.github.io/pangeo-cmip6-cloud/#)) and Google Cloud and the Google Public Datasets program for making the [CMIP6 Google Cloud collection](https://console.cloud.google.com/marketplace/details/noaa-public/cmip6) possible. In particular we're extremely grateful to [Ryan Abernathey](https://github.com/rabernat), [Naomi Henderson](https://github.com/naomi-henderson), [Charles Blackmon-Luca](https://github.com/charlesbluca), [Aparna Radhakrishnan](https://github.com/aradhakrishnanGFDL), [Julius Busecke](https://github.com/jbusecke), and [Charles Stern](https://github.com/cisaacstern) for the huge amount of work they've done to translate the ESGF CMIP6 netCDF archives into consistently-formattted, analysis-ready zarr stores on Google Cloud.\n\nWe're also grateful to the [xclim developers](https://github.com/Ouranosinc/xclim/graphs/contributors) ([DOI: 10.5281/zenodo.2795043](https://doi.org/10.5281/zenodo.2795043)), in particular [Pascal Bourgault](https://github.com/aulemahal), [David Huard](https://github.com/huard), and [Travis Logan](https://github.com/tlogan2000), for implementing the QDM bias correction method in the xclim python package, supporting our QPLAD implementation into the package, and ongoing support in integrating dask into downscaling workflows. For method advice and useful conversations, we would like to thank Keith Dixon, Dennis Adams-Smith, and [Joe Hamman](https://github.com/jhamman).\n\n## Financial support\n\nThis research has been supported by The Rockefeller Foundation and the Microsoft AI for Earth Initiative.\n\n## Additional links:\n\n* CIL GDPCIR project homepage: [github.com/ClimateImpactLab/downscaleCMIP6](https://github.com/ClimateImpactLab/downscaleCMIP6)\n* Project listing on zenodo: https://doi.org/10.5281/zenodo.6403794\n* Climate Impact Lab homepage: [impactlab.org](https://impactlab.org)", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "cil-gdpcir-cc-by,climate-impact-lab,cmip6,precipitation,rhodium-group,temperature", "license": "CC-BY-4.0", "title": "CIL Global Downscaled Projections for Climate Impacts Research (CC-BY-4.0)", "missionStartDate": "1950-01-01T00:00:00Z"}, "noaa-cdr-sea-surface-temperature-whoi-netcdf": {"abstract": "The Sea Surface Temperature-Woods Hole Oceanographic Institution (WHOI) Climate Data Record (CDR) is one of three CDRs which combine to form the NOAA Ocean Surface Bundle (OSB) CDR. The resultant sea surface temperature (SST) data are produced through modeling the diurnal variability in combination with AVHRR SST observations. The final record is output to a 3-hourly 0.25\u00b0 resolution grid over the global ice-free oceans from January 1988\u2014present.\n\nThis is a NetCDF-only collection, for Cloud-Optimized GeoTIFFs use collection `noaa-cdr-sea-surface-temperature-whoi`.\nThe NetCDF files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,global,noaa,noaa-cdr-sea-surface-temperature-whoi-netcdf,ocean,temperature", "license": "proprietary", "title": "Sea Surface Temperature - WHOI CDR NetCDFs", "missionStartDate": "1988-01-01T00:00:00Z"}, "noaa-cdr-sea-surface-temperature-optimum-interpolation": {"abstract": "The NOAA 1/4\u00b0 daily Optimum Interpolation Sea Surface Temperature (or daily OISST) Climate Data Record (CDR) provides complete ocean temperature fields constructed by combining bias-adjusted observations from different platforms (satellites, ships, buoys) on a regular global grid, with gaps filled in by interpolation. The main input source is satellite data from the Advanced Very High Resolution Radiometer (AVHRR), which provides high temporal-spatial coverage from late 1981-present. This input must be adjusted to the buoys due to erroneous cold SST data following the Mt Pinatubo and El Chichon eruptions. Applications include climate modeling, resource management, ecological studies on annual to daily scales.\n\nThese Cloud Optimized GeoTIFFs (COGs) were created from NetCDF files which are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\nFor the NetCDF files, see collection `noaa-cdr-sea-surface-temperature-optimum-interpolation-netcdf`.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,global,noaa,noaa-cdr-sea-surface-temperature-optimum-interpolation,ocean,temperature", "license": "proprietary", "title": "Sea Surface Temperature - Optimum Interpolation CDR", "missionStartDate": "1981-09-01T00:00:00Z"}, "modis-10A1-061": {"abstract": "This global Level-3 (L3) data set provides a daily composite of snow cover and albedo derived from the 'MODIS Snow Cover 5-Min L2 Swath 500m' data set. Each data granule is a 10degx10deg tile projected to a 500 m sinusoidal grid.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod10a1,modis,modis-10a1-061,myd10a1,nasa,satellite,snow,terra", "license": "proprietary", "title": "MODIS Snow Cover Daily", "missionStartDate": "2000-02-24T00:00:00Z"}, "sentinel-5p-l2-netcdf": {"abstract": "The Copernicus [Sentinel-5 Precursor](https://sentinels.copernicus.eu/web/sentinel/missions/sentinel-5p) mission provides high spatio-temporal resolution measurements of the Earth's atmosphere. The mission consists of one satellite carrying the [TROPOspheric Monitoring Instrument](http://www.tropomi.eu/) (TROPOMI). The satellite flies in loose formation with NASA's [Suomi NPP](https://www.nasa.gov/mission_pages/NPP/main/index.html) spacecraft, allowing utilization of co-located cloud mask data provided by the [Visible Infrared Imaging Radiometer Suite](https://www.nesdis.noaa.gov/current-satellite-missions/currently-flying/joint-polar-satellite-system/visible-infrared-imaging) (VIIRS) instrument onboard Suomi NPP during processing of the TROPOMI methane product.\n\nThe Sentinel-5 Precursor mission aims to reduce the global atmospheric data gap between the retired [ENVISAT](https://earth.esa.int/eogateway/missions/envisat) and [AURA](https://www.nasa.gov/mission_pages/aura/main/index.html) missions and the future [Sentinel-5](https://sentinels.copernicus.eu/web/sentinel/missions/sentinel-5) mission. Sentinel-5 Precursor [Level 2 data](http://www.tropomi.eu/data-products/level-2-products) provide total columns of ozone, sulfur dioxide, nitrogen dioxide, carbon monoxide and formaldehyde, tropospheric columns of ozone, vertical profiles of ozone and cloud & aerosol information. These measurements are used for improving air quality forecasts and monitoring the concentrations of atmospheric constituents.\n\nThis STAC Collection provides Sentinel-5 Precursor Level 2 data, in NetCDF format, since April 2018 for the following products:\n\n* [`L2__AER_AI`](http://www.tropomi.eu/data-products/uv-aerosol-index): Ultraviolet aerosol index\n* [`L2__AER_LH`](http://www.tropomi.eu/data-products/aerosol-layer-height): Aerosol layer height\n* [`L2__CH4___`](http://www.tropomi.eu/data-products/methane): Methane (CH4) total column\n* [`L2__CLOUD_`](http://www.tropomi.eu/data-products/cloud): Cloud fraction, albedo, and top pressure\n* [`L2__CO____`](http://www.tropomi.eu/data-products/carbon-monoxide): Carbon monoxide (CO) total column\n* [`L2__HCHO__`](http://www.tropomi.eu/data-products/formaldehyde): Formaldehyde (HCHO) total column\n* [`L2__NO2___`](http://www.tropomi.eu/data-products/nitrogen-dioxide): Nitrogen dioxide (NO2) total column\n* [`L2__O3____`](http://www.tropomi.eu/data-products/total-ozone-column): Ozone (O3) total column\n* [`L2__O3_TCL`](http://www.tropomi.eu/data-products/tropospheric-ozone-column): Ozone (O3) tropospheric column\n* [`L2__SO2___`](http://www.tropomi.eu/data-products/sulphur-dioxide): Sulfur dioxide (SO2) total column\n* [`L2__NP_BD3`](http://www.tropomi.eu/data-products/auxiliary): Cloud from the Suomi NPP mission, band 3\n* [`L2__NP_BD6`](http://www.tropomi.eu/data-products/auxiliary): Cloud from the Suomi NPP mission, band 6\n* [`L2__NP_BD7`](http://www.tropomi.eu/data-products/auxiliary): Cloud from the Suomi NPP mission, band 7\n", "instrument": "TROPOMI", "platform": "Sentinel-5P", "platformSerialIdentifier": "Sentinel 5 Precursor", "processingLevel": null, "keywords": "air-quality,climate-change,copernicus,esa,forecasting,sentinel,sentinel-5-precursor,sentinel-5p,sentinel-5p-l2-netcdf,tropomi", "license": "proprietary", "title": "Sentinel-5P Level-2", "missionStartDate": "2018-04-30T00:18:50Z"}, "sentinel-3-olci-wfr-l2-netcdf": {"abstract": "This Collection provides Sentinel-3 Full Resolution [OLCI Level-2 Water][olci-l2] products containing data on water-leaving reflectance, ocean color, and more.\n\n## Data files\n\nThis dataset includes data on:\n\n- Surface directional reflectance\n- Chlorophyll-a concentration\n- Suspended matter concentration\n- Energy flux\n- Aerosol load\n- Integrated water vapor column\n\nEach variable is contained within NetCDF files. Error estimates are available for each product.\n\n## Processing overview\n\nThe values in the data files have been converted from Top of Atmosphere radiance to reflectance, and include various corrections for gaseous absorption and pixel classification. More information about the product and data processing can be found in the [User Guide](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-olci/product-types/level-2-water) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-olci/level-2/processing).\n\nThis Collection contains Level-2 data in NetCDF files from November 2017 to present.\n\n[olci-l2]: https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-olci/level-2/ocean-products\n", "instrument": "OLCI", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "copernicus,esa,ocean,olci,sentinel,sentinel-3,sentinel-3-olci-wfr-l2-netcdf,sentinel-3a,sentinel-3b,water", "license": "proprietary", "title": "Sentinel-3 Water (Full Resolution)", "missionStartDate": "2017-11-01T00:07:01.738487Z"}, "noaa-cdr-ocean-heat-content-netcdf": {"abstract": "The Ocean Heat Content Climate Data Record (CDR) is a set of ocean heat content anomaly (OHCA) time-series for 1955-present on 3-monthly, yearly, and pentadal (five-yearly) scales. This CDR quantifies ocean heat content change over time, which is an essential metric for understanding climate change and the Earth's energy budget. It provides time-series for multiple depth ranges in the global ocean and each of the major basins (Atlantic, Pacific, and Indian) divided by hemisphere (Northern, Southern).\n\nThis is a NetCDF-only collection, for Cloud-Optimized GeoTIFFs use collection `noaa-cdr-ocean-heat-content`.\nThe NetCDF files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,global,noaa,noaa-cdr-ocean-heat-content-netcdf,ocean,temperature", "license": "proprietary", "title": "Global Ocean Heat Content CDR NetCDFs", "missionStartDate": "1972-03-01T00:00:00Z"}, "sentinel-3-synergy-aod-l2-netcdf": {"abstract": "This Collection provides the Sentinel-3 [Synergy Level-2 Aerosol Optical Depth](https://sentinels.copernicus.eu/web/sentinel/level-2-aod) product, which is a downstream development of the Sentinel-2 Level-1 [OLCI Full Resolution](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-olci/data-formats/level-1) and [SLSTR Radiances and Brightness Temperatures](https://sentinels.copernicus.eu/web/sentinel/user-guides/Sentinel-3-slstr/data-formats/level-1) products. The dataset provides both retrieved and diagnostic global aerosol parameters at super-pixel (4.5 km x 4.5 km) resolution in a single NetCDF file for all regions over land and ocean free of snow/ice cover, excluding high cloud fraction data. The retrieved and derived aerosol parameters are:\n\n- Aerosol Optical Depth (AOD) at 440, 550, 670, 985, 1600 and 2250 nm\n- Error estimates (i.e. standard deviation) in AOD at 440, 550, 670, 985, 1600 and 2250 nm\n- Single Scattering Albedo (SSA) at 440, 550, 670, 985, 1600 and 2250 nm\n- Fine-mode AOD at 550nm\n- Aerosol Angstrom parameter between 550 and 865nm\n- Dust AOD at 550nm\n- Aerosol absorption optical depth at 550nm\n\nAtmospherically corrected nadir surface directional reflectances at 440, 550, 670, 985, 1600 and 2250 nm at super-pixel (4.5 km x 4.5 km) resolution are also provided. More information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/level-2-aod) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-synergy/products-algorithms/level-2-aod-algorithms-and-products).\n\nThis Collection contains Level-2 data in NetCDF files from April 2020 to present.\n", "instrument": "OLCI,SLSTR", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "aerosol,copernicus,esa,global,olci,satellite,sentinel,sentinel-3,sentinel-3-synergy-aod-l2-netcdf,sentinel-3a,sentinel-3b,slstr", "license": "proprietary", "title": "Sentinel-3 Global Aerosol", "missionStartDate": "2020-04-16T19:36:28.012367Z"}, "sentinel-3-synergy-v10-l2-netcdf": {"abstract": "This Collection provides the Sentinel-3 [Synergy Level-2 10-Day Surface Reflectance and NDVI](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-synergy/product-types/level-2-vg1-v10) products, which are SPOT VEGETATION Continuity Products similar to those obtained from the [VEGETATION instrument](https://docs.terrascope.be/#/Satellites/SPOT-VGT/MissionInstruments) onboard the SPOT-4 and SPOT-5 satellites. The primary variables are a maximum Normalized Difference Vegetation Index (NDVI) composite, which is derived from ground reflectance during a 10-day window, and four surface reflectance bands:\n\n- B0 (Blue, 450nm)\n- B2 (Red, 645nm)\n- B3 (NIR, 835nm)\n- MIR (SWIR, 1665nm)\n\nThe four reflectance bands have center wavelengths matching those on the original SPOT VEGETATION instrument. The NDVI variable, which is an indicator of the amount of vegetation, is derived from the B3 and B2 bands.\n\n## Data files\n\nThe four reflectance bands and NDVI values are each contained in dedicated NetCDF files. Additional metadata are delivered in annotation NetCDF files, each containing a single variable, including the geometric viewing and illumination conditions, the total water vapour and ozone columns, and the aerosol optical depth.\n\nEach 10-day product is delivered as a set of 10 rectangular scenes:\n\n- AFRICA\n- NORTH_AMERICA\n- SOUTH_AMERICA\n- CENTRAL_AMERICA\n- NORTH_ASIA\n- WEST_ASIA\n- SOUTH_EAST_ASIA\n- ASIAN_ISLANDS\n- AUSTRALASIA\n- EUROPE\n\nMore information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-synergy/product-types/level-2-vg1-v10) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-synergy/vgt-s/v10-product).\n\nThis Collection contains Level-2 data in NetCDF files from September 2018 to present.\n", "instrument": "OLCI,SLSTR", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "copernicus,esa,ndvi,olci,reflectance,satellite,sentinel,sentinel-3,sentinel-3-synergy-v10-l2-netcdf,sentinel-3a,sentinel-3b,slstr", "license": "proprietary", "title": "Sentinel-3 10-Day Surface Reflectance and NDVI (SPOT VEGETATION)", "missionStartDate": "2018-09-27T11:17:21Z"}, "sentinel-3-olci-lfr-l2-netcdf": {"abstract": "This collection provides Sentinel-3 Full Resolution [OLCI Level-2 Land][olci-l2] products containing data on global vegetation, chlorophyll, and water vapor.\n\n## Data files\n\nThis dataset includes data on three primary variables:\n\n* OLCI global vegetation index file\n* terrestrial Chlorophyll index file\n* integrated water vapor over water file.\n\nEach variable is contained within a separate NetCDF file, and is cataloged as an asset in each Item.\n\nSeveral associated variables are also provided in the annotations data files:\n\n* rectified reflectance for red and NIR channels (RC681 and RC865)\n* classification, quality and science flags (LQSF)\n* common data such as the ortho-geolocation of land pixels, solar and satellite angles, atmospheric and meteorological data, time stamp or instrument information. These variables are inherited from Level-1B products.\n\nThis full resolution product offers a spatial sampling of approximately 300 m.\n\n## Processing overview\n\nThe values in the data files have been converted from Top of Atmosphere radiance to reflectance, and include various corrections for gaseous absorption and pixel classification. More information about the product and data processing can be found in the [User Guide](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-olci/product-types/level-2-land) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-olci/level-2/processing).\n\nThis Collection contains Level-2 data in NetCDF files from April 2016 to present.\n\n[olci-l2]: https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-olci/level-2/land-products\n", "instrument": "OLCI", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "biomass,copernicus,esa,land,olci,sentinel,sentinel-3,sentinel-3-olci-lfr-l2-netcdf,sentinel-3a,sentinel-3b", "license": "proprietary", "title": "Sentinel-3 Land (Full Resolution)", "missionStartDate": "2016-04-25T11:33:47.368562Z"}, "sentinel-3-sral-lan-l2-netcdf": {"abstract": "This Collection provides Sentinel-3 [SRAL Level-2 Land Altimetry](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-altimetry/level-2-algorithms-products) products, which contain data on land radar altimetry measurements. Each product contains three NetCDF files:\n\n- A reduced data file containing a subset of the 1 Hz Ku-band parameters.\n- A standard data file containing the standard 1 Hz and 20 Hz Ku- and C-band parameters.\n- An enhanced data file containing the standard 1 Hz and 20 Hz Ku- and C-band parameters along with the waveforms and parameters necessary to reprocess the data.\n\nMore information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-altimetry/overview) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-altimetry).\n\nThis Collection contains Level-2 data in NetCDF files from March 2016 to present.\n", "instrument": "SRAL", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "altimetry,copernicus,esa,radar,satellite,sentinel,sentinel-3,sentinel-3-sral-lan-l2-netcdf,sentinel-3a,sentinel-3b,sral", "license": "proprietary", "title": "Sentinel-3 Land Radar Altimetry", "missionStartDate": "2016-03-01T14:07:51.632846Z"}, "sentinel-3-slstr-lst-l2-netcdf": {"abstract": "This Collection provides Sentinel-3 [SLSTR Level-2 Land Surface Temperature](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-slstr/product-types/level-2-lst) products containing data on land surface temperature measurements on a 1km grid. Radiance is measured in two channels to determine the temperature of the Earth's surface skin in the instrument field of view, where the term \"skin\" refers to the top surface of bare soil or the effective emitting temperature of vegetation canopies as viewed from above.\n\n## Data files\n\nThe dataset includes data on the primary measurement variable, land surface temperature, in a single NetCDF file, `LST_in.nc`. A second file, `LST_ancillary.nc`, contains several ancillary variables:\n\n- Normalized Difference Vegetation Index\n- Surface biome classification\n- Fractional vegetation cover\n- Total water vapor column\n\nIn addition to the primary and ancillary data files, a standard set of annotation data files provide meteorological information, geolocation and time coordinates, geometry information, and quality flags. More information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-slstr/product-types/level-2-lst) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-slstr/level-2/lst-processing).\n\nThis Collection contains Level-2 data in NetCDF files from April 2016 to present.\n\n## STAC Item geometries\n\nThe Collection contains small \"chips\" and long \"stripes\" of data collected along the satellite direction of travel. Approximately five percent of the STAC Items describing long stripes of data contain geometries that encompass a larger area than an exact concave hull of the data extents. This may require additional filtering when searching the Collection for Items that spatially intersect an area of interest.\n", "instrument": "SLSTR", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "copernicus,esa,land,satellite,sentinel,sentinel-3,sentinel-3-slstr-lst-l2-netcdf,sentinel-3a,sentinel-3b,slstr,temperature", "license": "proprietary", "title": "Sentinel-3 Land Surface Temperature", "missionStartDate": "2016-04-19T01:35:17.188500Z"}, "sentinel-3-slstr-wst-l2-netcdf": {"abstract": "This Collection provides Sentinel-3 [SLSTR Level-2 Water Surface Temperature](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-slstr/product-types/level-2-wst) products containing data on sea surface temperature measurements on a 1km grid. Each product consists of a single NetCDF file containing all data variables:\n\n- Sea Surface Temperature (SST) value\n- SST total uncertainty\n- Latitude and longitude coordinates\n- SST time deviation\n- Single Sensor Error Statistic (SSES) bias and standard deviation estimate\n- Contextual parameters such as wind speed at 10 m and fractional sea-ice contamination\n- Quality flag\n- Satellite zenith angle\n- Top Of Atmosphere (TOA) Brightness Temperature (BT)\n- TOA noise equivalent BT\n\nMore information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-slstr/product-types/level-2-wst) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-slstr/level-2/sst-processing).\n\nThis Collection contains Level-2 data in NetCDF files from October 2017 to present.\n", "instrument": "SLSTR", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "copernicus,esa,ocean,satellite,sentinel,sentinel-3,sentinel-3-slstr-wst-l2-netcdf,sentinel-3a,sentinel-3b,slstr,temperature", "license": "proprietary", "title": "Sentinel-3 Sea Surface Temperature", "missionStartDate": "2017-10-31T23:59:57.451604Z"}, "sentinel-3-sral-wat-l2-netcdf": {"abstract": "This Collection provides Sentinel-3 [SRAL Level-2 Ocean Altimetry](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-altimetry/level-2-algorithms-products) products, which contain data on ocean radar altimetry measurements. Each product contains three NetCDF files:\n\n- A reduced data file containing a subset of the 1 Hz Ku-band parameters.\n- A standard data file containing the standard 1 Hz and 20 Hz Ku- and C-band parameters.\n- An enhanced data file containing the standard 1 Hz and 20 Hz Ku- and C-band parameters along with the waveforms and parameters necessary to reprocess the data.\n\nMore information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-altimetry/overview) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-altimetry).\n\nThis Collection contains Level-2 data in NetCDF files from January 2017 to present.\n", "instrument": "SRAL", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "altimetry,copernicus,esa,ocean,radar,satellite,sentinel,sentinel-3,sentinel-3-sral-wat-l2-netcdf,sentinel-3a,sentinel-3b,sral", "license": "proprietary", "title": "Sentinel-3 Ocean Radar Altimetry", "missionStartDate": "2017-01-28T00:59:14.149496Z"}, "ms-buildings": {"abstract": "Bing Maps is releasing open building footprints around the world. We have detected over 999 million buildings from Bing Maps imagery between 2014 and 2021 including Maxar and Airbus imagery. The data is freely available for download and use under ODbL. This dataset complements our other releases.\n\nFor more information, see the [GlobalMLBuildingFootprints](https://github.com/microsoft/GlobalMLBuildingFootprints/) repository on GitHub.\n\n## Building footprint creation\n\nThe building extraction is done in two stages:\n\n1. Semantic Segmentation \u2013 Recognizing building pixels on an aerial image using deep neural networks (DNNs)\n2. Polygonization \u2013 Converting building pixel detections into polygons\n\n**Stage 1: Semantic Segmentation**\n\n![Semantic segmentation](https://raw.githubusercontent.com/microsoft/GlobalMLBuildingFootprints/main/images/segmentation.jpg)\n\n**Stage 2: Polygonization**\n\n![Polygonization](https://github.com/microsoft/GlobalMLBuildingFootprints/raw/main/images/polygonization.jpg)\n\n## Data assets\n\nThe building footprints are provided as a set of [geoparquet](https://github.com/opengeospatial/geoparquet) datasets in [Delta][delta] table format.\nThe data are partitioned by\n\n1. Region\n2. quadkey at [Bing Map Tiles][tiles] level 9\n\nEach `(Region, quadkey)` pair will have one or more geoparquet files, depending on the density of the of the buildings in that area.\n\nNote that older items in this dataset are *not* spatially partitioned. We recommend using data with a processing date\nof 2023-04-25 or newer. This processing date is part of the URL for each parquet file and is captured in the STAC metadata\nfor each item (see below).\n\n## Delta Format\n\nThe collection-level asset under the `delta` key gives you the fsspec-style URL\nto the Delta table. This can be used to efficiently query for matching partitions\nby `Region` and `quadkey`. See the notebook for an example using Python.\n\n## STAC metadata\n\nThis STAC collection has one STAC item per region. The `msbuildings:region`\nproperty can be used to filter items to a specific region, and the `msbuildings:quadkey`\nproperty can be used to filter items to a specific quadkey (though you can also search\nby the `geometry`).\n\nNote that older STAC items are not spatially partitioned. We recommend filtering on\nitems with an `msbuildings:processing-date` of `2023-04-25` or newer. See the collection\nsummary for `msbuildings:processing-date` for a list of valid values.\n\n[delta]: https://delta.io/\n[tiles]: https://learn.microsoft.com/en-us/bingmaps/articles/bing-maps-tile-system\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "bing-maps,buildings,delta,footprint,geoparquet,microsoft,ms-buildings", "license": "ODbL-1.0", "title": "Microsoft Building Footprints", "missionStartDate": "2014-01-01T00:00:00Z"}, "sentinel-3-slstr-frp-l2-netcdf": {"abstract": "This Collection provides Sentinel-3 [SLSTR Level-2 Fire Radiative Power](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-slstr/product-types/level-2-frp) (FRP) products containing data on fires detected over land and ocean.\n\n## Data files\n\nThe primary measurement data is contained in the `FRP_in.nc` file and provides FRP and uncertainties, projected onto a 1km grid, for fires detected in the thermal infrared (TIR) spectrum over land. Since February 2022, FRP and uncertainties are also provided for fires detected in the short wave infrared (SWIR) spectrum over both land and ocean, with the delivered data projected onto a 500m grid. The latter SWIR-detected fire data is only available for night-time measurements and is contained in the `FRP_an.nc` or `FRP_bn.nc` files.\n\nIn addition to the measurement data files, a standard set of annotation data files provide meteorological information, geolocation and time coordinates, geometry information, and quality flags.\n\n## Processing\n\nThe TIR fire detection is based on measurements from the S7 and F1 bands of the [SLSTR instrument](https://sentinels.copernicus.eu/web/sentinel/technical-guides/sentinel-3-slstr/instrument); SWIR fire detection is based on the S5 and S6 bands. More information about the product and data processing can be found in the [User Guide](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-slstr/product-types/level-2-frp) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-slstr/level-2/frp-processing).\n\nThis Collection contains Level-2 data in NetCDF files from August 2020 to present.\n", "instrument": "SLSTR", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "copernicus,esa,fire,satellite,sentinel,sentinel-3,sentinel-3-slstr-frp-l2-netcdf,sentinel-3a,sentinel-3b,slstr,temperature", "license": "proprietary", "title": "Sentinel-3 Fire Radiative Power", "missionStartDate": "2020-08-08T23:11:15.617203Z"}, "sentinel-3-synergy-syn-l2-netcdf": {"abstract": "This Collection provides the Sentinel-3 [Synergy Level-2 Land Surface Reflectance and Aerosol](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-synergy/product-types/level-2-syn) product, which contains data on Surface Directional Reflectance, Aerosol Optical Thickness, and an Angstrom coefficient estimate over land.\n\n## Data Files\n\nIndividual NetCDF files for the following variables:\n\n- Surface Directional Reflectance (SDR) with their associated error estimates for the sun-reflective [SLSTR](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-slstr) channels (S1 to S6 for both nadir and oblique views, except S4) and for all [OLCI](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-olci) channels, except for the oxygen absorption bands Oa13, Oa14, Oa15, and the water vapor bands Oa19 and Oa20.\n- Aerosol optical thickness at 550nm with error estimates.\n- Angstrom coefficient at 550nm.\n\nMore information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-synergy/product-types/level-2-syn) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-synergy/level-2/syn-level-2-product).\n\nThis Collection contains Level-2 data in NetCDF files from September 2018 to present.\n", "instrument": "OLCI,SLSTR", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "aerosol,copernicus,esa,land,olci,reflectance,satellite,sentinel,sentinel-3,sentinel-3-synergy-syn-l2-netcdf,sentinel-3a,sentinel-3b,slstr", "license": "proprietary", "title": "Sentinel-3 Land Surface Reflectance and Aerosol", "missionStartDate": "2018-09-22T16:51:00.001276Z"}, "sentinel-3-synergy-vgp-l2-netcdf": {"abstract": "This Collection provides the Sentinel-3 [Synergy Level-2 Top of Atmosphere Reflectance](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-synergy/product-types/level-2-vgp) product, which is a SPOT VEGETATION Continuity Product containing measurement data similar to that obtained by the [VEGETATION instrument](https://docs.terrascope.be/#/Satellites/SPOT-VGT/MissionInstruments) onboad the SPOT-3 and SPOT-4 satellites. The primary variables are four top of atmosphere reflectance bands:\n\n- B0 (Blue, 450nm)\n- B2 (Red, 645nm)\n- B3 (NIR, 835nm)\n- MIR (SWIR, 1665nm)\n\nThe four reflectance bands have center wavelengths matching those on the original SPOT VEGETATION instrument and have been adapted for scientific applications requiring highly accurate physical measurements through correction for systematic errors and re-sampling to predefined geographic projections. The pixel brightness count is the ground area's apparent reflectance as seen at the top of atmosphere.\n\n## Data files\n\nNetCDF files are provided for the four reflectance bands. Additional metadata are delivered in annotation NetCDF files, each containing a single variable, including the geometric viewing and illumination conditions, the total water vapour and ozone columns, and the aerosol optical depth.\n\nMore information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-synergy/product-types/level-2-vgp) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-synergy/level-2/vgt-p-product).\n\nThis Collection contains Level-2 data in NetCDF files from October 2018 to present.\n", "instrument": "OLCI,SLSTR", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "copernicus,esa,olci,reflectance,satellite,sentinel,sentinel-3,sentinel-3-synergy-vgp-l2-netcdf,sentinel-3a,sentinel-3b,slstr", "license": "proprietary", "title": "Sentinel-3 Top of Atmosphere Reflectance (SPOT VEGETATION)", "missionStartDate": "2018-10-08T08:09:40.491227Z"}, "sentinel-3-synergy-vg1-l2-netcdf": {"abstract": "This Collection provides the Sentinel-3 [Synergy Level-2 1-Day Surface Reflectance and NDVI](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-synergy/product-types/level-2-vg1-v10) products, which are SPOT VEGETATION Continuity Products similar to those obtained from the [VEGETATION instrument](https://docs.terrascope.be/#/Satellites/SPOT-VGT/MissionInstruments) onboard the SPOT-4 and SPOT-5 satellites. The primary variables are a maximum Normalized Difference Vegetation Index (NDVI) composite, which is derived from daily ground reflecrtance, and four surface reflectance bands:\n\n- B0 (Blue, 450nm)\n- B2 (Red, 645nm)\n- B3 (NIR, 835nm)\n- MIR (SWIR, 1665nm)\n\nThe four reflectance bands have center wavelengths matching those on the original SPOT VEGETATION instrument. The NDVI variable, which is an indicator of the amount of vegetation, is derived from the B3 and B2 bands.\n\n## Data files\n\nThe four reflectance bands and NDVI values are each contained in dedicated NetCDF files. Additional metadata are delivered in annotation NetCDF files, each containing a single variable, including the geometric viewing and illumination conditions, the total water vapour and ozone columns, and the aerosol optical depth.\n\nEach 1-day product is delivered as a set of 10 rectangular scenes:\n\n- AFRICA\n- NORTH_AMERICA\n- SOUTH_AMERICA\n- CENTRAL_AMERICA\n- NORTH_ASIA\n- WEST_ASIA\n- SOUTH_EAST_ASIA\n- ASIAN_ISLANDS\n- AUSTRALASIA\n- EUROPE\n\nMore information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-synergy/product-types/level-2-vg1-v10) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-synergy/vgt-s/vg1-product-surface-reflectance).\n\nThis Collection contains Level-2 data in NetCDF files from October 2018 to present.\n", "instrument": "OLCI,SLSTR", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "copernicus,esa,ndvi,olci,reflectance,satellite,sentinel,sentinel-3,sentinel-3-synergy-vg1-l2-netcdf,sentinel-3a,sentinel-3b,slstr", "license": "proprietary", "title": "Sentinel-3 1-Day Surface Reflectance and NDVI (SPOT VEGETATION)", "missionStartDate": "2018-10-04T23:17:21Z"}, "esa-worldcover": {"abstract": "The European Space Agency (ESA) [WorldCover](https://esa-worldcover.org/en) product provides global land cover maps for the years 2020 and 2021 at 10 meter resolution based on the combination of [Sentinel-1](https://sentinel.esa.int/web/sentinel/missions/sentinel-1) radar data and [Sentinel-2](https://sentinel.esa.int/web/sentinel/missions/sentinel-2) imagery. The discrete classification maps provide 11 classes defined using the Land Cover Classification System (LCCS) developed by the United Nations (UN) Food and Agriculture Organization (FAO). The map images are stored in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.\n\nThe WorldCover product is developed by a consortium of European service providers and research organizations. [VITO](https://remotesensing.vito.be/) (Belgium) is the prime contractor of the WorldCover consortium together with [Brockmann Consult](https://www.brockmann-consult.de/) (Germany), [CS SI](https://www.c-s.fr/) (France), [Gamma Remote Sensing AG](https://www.gamma-rs.ch/) (Switzerland), [International Institute for Applied Systems Analysis](https://www.iiasa.ac.at/) (Austria), and [Wageningen University](https://www.wur.nl/nl/Wageningen-University.htm) (The Netherlands).\n\nTwo versions of the WorldCover product are available:\n\n- WorldCover 2020 produced using v100 of the algorithm\n - [WorldCover 2020 v100 User Manual](https://esa-worldcover.s3.eu-central-1.amazonaws.com/v100/2020/docs/WorldCover_PUM_V1.0.pdf)\n - [WorldCover 2020 v100 Validation Report]()\n\n- WorldCover 2021 produced using v200 of the algorithm\n - [WorldCover 2021 v200 User Manual]()\n - [WorldCover 2021 v200 Validaton Report]()\n\nSince the WorldCover maps for 2020 and 2021 were generated with different algorithm versions (v100 and v200, respectively), changes between the maps include both changes in real land cover and changes due to the used algorithms.\n", "instrument": "c-sar,msi", "platform": null, "platformSerialIdentifier": "sentinel-1a,sentinel-1b,sentinel-2a,sentinel-2b", "processingLevel": null, "keywords": "c-sar,esa,esa-worldcover,global,land-cover,msi,sentinel,sentinel-1a,sentinel-1b,sentinel-2a,sentinel-2b", "license": "CC-BY-4.0", "title": "ESA WorldCover", "missionStartDate": "2020-01-01T00:00:00Z"}}}, "usgs_satapi_aws": {"providers_config": {"landsat-c2l2-sr": {"productType": "landsat-c2l2-sr"}, "landsat-c2l2-st": {"productType": "landsat-c2l2-st"}, "landsat-c2ard-st": {"productType": "landsat-c2ard-st"}, "landsat-c2l2alb-bt": {"productType": "landsat-c2l2alb-bt"}, "landsat-c2l3-fsca": {"productType": "landsat-c2l3-fsca"}, "landsat-c2ard-bt": {"productType": "landsat-c2ard-bt"}, "landsat-c2l1": {"productType": "landsat-c2l1"}, "landsat-c2l3-ba": {"productType": "landsat-c2l3-ba"}, "landsat-c2l2alb-st": {"productType": "landsat-c2l2alb-st"}, "landsat-c2ard-sr": {"productType": "landsat-c2ard-sr"}, "landsat-c2l2alb-sr": {"productType": "landsat-c2l2alb-sr"}, "landsat-c2l2alb-ta": {"productType": "landsat-c2l2alb-ta"}, "landsat-c2l3-dswe": {"productType": "landsat-c2l3-dswe"}, "landsat-c2ard-ta": {"productType": "landsat-c2ard-ta"}}, "product_types_config": {"landsat-c2l2-sr": {"abstract": "The Landsat Surface Reflectance (SR) product measures the fraction of incoming solar radiation that is reflected from Earth's surface to the Landsat sensor.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l2-sr,surface-reflectance", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-2 UTM Surface Reflectance (SR) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2l2-st": {"abstract": "The Landsat Surface Temperature (ST) product represents the temperature of the Earth's surface in Kelvin (K).", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l2-st,surface-temperature", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-2 UTM Surface Temperature (ST) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2ard-st": {"abstract": "The Landsat Surface Temperature (ST) product represents the temperature of the Earth's surface in Kelvin (K).", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "analysis-ready-data,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2ard-st,surface-temperature", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Analysis Ready Data (ARD) Level-2 UTM Surface Temperature (ST) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2l2alb-bt": {"abstract": "The Landsat Top of Atmosphere Brightness Temperature (BT) product is a top of atmosphere product with radiance calculated 'at-sensor', not atmospherically corrected, and expressed in units of Kelvin.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l2alb-bt,top-of-atmosphere-brightness-temperature", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-2 Albers Top of Atmosphere Brightness Temperature (BT) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2l3-fsca": {"abstract": "The Landsat Fractional Snow Covered Area (fSCA) product contains an acquisition-based per-pixel snow cover fraction, an acquisition-based revised cloud mask for quality assessment, and a product metadata file.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "analysis-ready-data,fractional-snow-covered-area,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l3-fsca", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-3 Fractional Snow Covered Area (fSCA) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2ard-bt": {"abstract": "The Landsat Top of Atmosphere Brightness Temperature (BT) product is a top of atmosphere product with radiance calculated 'at-sensor', not atmospherically corrected, and expressed in units of Kelvin.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "analysis-ready-data,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2ard-bt,top-of-atmosphere-brightness-temperature", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Analysis Ready Data (ARD) Level-2 UTM Top of Atmosphere Brightness Temperature (BT) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2l1": {"abstract": "The Landsat Level-1 product is a top of atmosphere product distributed as scaled and calibrated digital numbers.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_1,LANDSAT_2,LANDSAT_3,LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "landsat,landsat-1,landsat-2,landsat-3,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l1", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-1 Product", "missionStartDate": "1972-07-25T00:00:00.000Z"}, "landsat-c2l3-ba": {"abstract": "The Landsat Burned Area (BA) contains two acquisition-based raster data products that represent burn classification and burn probability.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "analysis-ready-data,burned-area,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l3-ba", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-3 Burned Area (BA) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2l2alb-st": {"abstract": "The Landsat Surface Temperature (ST) product represents the temperature of the Earth's surface in Kelvin (K).", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l2alb-st,surface-temperature", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-2 Albers Surface Temperature (ST) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2ard-sr": {"abstract": "The Landsat Surface Reflectance (SR) product measures the fraction of incoming solar radiation that is reflected from Earth's surface to the Landsat sensor.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "analysis-ready-data,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2ard-sr,surface-reflectance", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Analysis Ready Data (ARD) Level-2 UTM Surface Reflectance (SR) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2l2alb-sr": {"abstract": "The Landsat Surface Reflectance (SR) product measures the fraction of incoming solar radiation that is reflected from Earth's surface to the Landsat sensor.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l2alb-sr,surface-reflectance", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-2 Albers Surface Reflectance (SR) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2l2alb-ta": {"abstract": "The Landsat Top of Atmosphere (TA) Reflectance product applies per pixel angle band corrections to the Level-1 radiance product.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l2alb-ta,top-of-atmosphere-reflectance", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-2 Albers Top of Atmosphere (TA) Reflectance Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2l3-dswe": {"abstract": "The Landsat Dynamic Surface Water Extent (DSWE) product contains six acquisition-based raster data products pertaining to the existence and condition of surface water.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "analysis-ready-data,dynamic-surface-water-extent-,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l3-dswe", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-3 Dynamic Surface Water Extent (DSWE) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2ard-ta": {"abstract": "The Landsat Top of Atmosphere (TA) Reflectance product applies per pixel angle band corrections to the Level-1 radiance product.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "analysis-ready-data,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2ard-ta,top-of-atmosphere-reflectance", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Analysis Ready Data (ARD) Level-2 UTM Top of Atmosphere (TA) Reflectance Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}}}} +{"astraea_eod": {"providers_config": {}, "product_types_config": {}}, "cop_marine": {"providers_config": {"GLOBAL_MULTIYEAR_BGC_001_029": {"collection": "GLOBAL_MULTIYEAR_BGC_001_029"}, "SEALEVEL_GLO_PHY_L4_MY_008_047": {"collection": "SEALEVEL_GLO_PHY_L4_MY_008_047"}, "GLOBAL_MULTIYEAR_BGC_001_033": {"collection": "GLOBAL_MULTIYEAR_BGC_001_033"}, "BALTICSEA_ANALYSISFORECAST_WAV_003_010": {"collection": "BALTICSEA_ANALYSISFORECAST_WAV_003_010"}, "BALTIC_OMI_SI_volume": {"collection": "BALTIC_OMI_SI_volume"}, "BALTIC_OMI_SI_extent": {"collection": "BALTIC_OMI_SI_extent"}, "GLOBAL_OMI_OHC_trend": {"collection": "GLOBAL_OMI_OHC_trend"}, "BLKSEA_OMI_TEMPSAL_extreme_var_temp_mean_and_anomaly": {"collection": "BLKSEA_OMI_TEMPSAL_extreme_var_temp_mean_and_anomaly"}, "GLOBAL_OMI_NATLANTIC_amoc_max26N_timeseries": {"collection": "GLOBAL_OMI_NATLANTIC_amoc_max26N_timeseries"}, "GLOBAL_OMI_TEMPSAL_sst_trend": {"collection": "GLOBAL_OMI_TEMPSAL_sst_trend"}, "IBI_MULTIYEAR_PHY_005_002": {"collection": "IBI_MULTIYEAR_PHY_005_002"}, "IBI_ANALYSISFORECAST_BGC_005_004": {"collection": "IBI_ANALYSISFORECAST_BGC_005_004"}, "GLOBAL_OMI_TEMPSAL_sst_area_averaged_anomalies": {"collection": "GLOBAL_OMI_TEMPSAL_sst_area_averaged_anomalies"}, "GLOBAL_ANALYSISFORECAST_WAV_001_027": {"collection": "GLOBAL_ANALYSISFORECAST_WAV_001_027"}, "GLOBAL_MULTIYEAR_PHY_001_030": {"collection": "GLOBAL_MULTIYEAR_PHY_001_030"}, "BLKSEA_ANALYSISFORECAST_PHY_007_001": {"collection": "BLKSEA_ANALYSISFORECAST_PHY_007_001"}, "NWSHELF_REANALYSIS_WAV_004_015": {"collection": "NWSHELF_REANALYSIS_WAV_004_015"}, "NWSHELF_MULTIYEAR_BGC_004_011": {"collection": "NWSHELF_MULTIYEAR_BGC_004_011"}, "MEDSEA_OMI_OHC_area_averaged_anomalies": {"collection": "MEDSEA_OMI_OHC_area_averaged_anomalies"}, "MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012": {"collection": "MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012"}, "BALTICSEA_MULTIYEAR_PHY_003_011": {"collection": "BALTICSEA_MULTIYEAR_PHY_003_011"}, "GLOBAL_MULTIYEAR_WAV_001_032": {"collection": "GLOBAL_MULTIYEAR_WAV_001_032"}, "BALTICSEA_ANALYSISFORECAST_BGC_003_007": {"collection": "BALTICSEA_ANALYSISFORECAST_BGC_003_007"}, "BALTICSEA_MULTIYEAR_BGC_003_012": {"collection": "BALTICSEA_MULTIYEAR_BGC_003_012"}, "MULTIOBS_GLO_PHY_S_SURFACE_MYNRT_015_013": {"collection": "MULTIOBS_GLO_PHY_S_SURFACE_MYNRT_015_013"}, "OMI_HEALTH_CHL_ATLANTIC_OCEANCOLOUR_area_averaged_mean": {"collection": "OMI_HEALTH_CHL_ATLANTIC_OCEANCOLOUR_area_averaged_mean"}, "BALTICSEA_REANALYSIS_WAV_003_015": {"collection": "BALTICSEA_REANALYSIS_WAV_003_015"}, "BALTIC_OMI_WMHE_mbi_bottom_salinity_arkona_bornholm": {"collection": "BALTIC_OMI_WMHE_mbi_bottom_salinity_arkona_bornholm"}, "GLOBAL_OMI_OHC_area_averaged_anomalies_0_2000": {"collection": "GLOBAL_OMI_OHC_area_averaged_anomalies_0_2000"}, "OMI_CLIMATE_OHC_IBI_area_averaged_anomalies": {"collection": "OMI_CLIMATE_OHC_IBI_area_averaged_anomalies"}, "BLKSEA_ANALYSISFORECAST_WAV_007_003": {"collection": "BLKSEA_ANALYSISFORECAST_WAV_007_003"}, "OMI_HEALTH_CHL_GLOBAL_OCEANCOLOUR_oligo_nag_area_mean": {"collection": "OMI_HEALTH_CHL_GLOBAL_OCEANCOLOUR_oligo_nag_area_mean"}, "OMI_HEALTH_CHL_ARCTIC_OCEANCOLOUR_area_averaged_mean": {"collection": "OMI_HEALTH_CHL_ARCTIC_OCEANCOLOUR_area_averaged_mean"}, "NWSHELF_MULTIYEAR_PHY_004_009": {"collection": "NWSHELF_MULTIYEAR_PHY_004_009"}, "BALTIC_OMI_TEMPSAL_Stz_trend": {"collection": "BALTIC_OMI_TEMPSAL_Stz_trend"}, "OMI_CIRCULATION_MOC_MEDSEA_area_averaged_mean": {"collection": "OMI_CIRCULATION_MOC_MEDSEA_area_averaged_mean"}, "BLKSEA_ANALYSISFORECAST_BGC_007_010": {"collection": "BLKSEA_ANALYSISFORECAST_BGC_007_010"}, "BALTIC_OMI_WMHE_mbi_sto2tz_gotland": {"collection": "BALTIC_OMI_WMHE_mbi_sto2tz_gotland"}, "BLKSEA_MULTIYEAR_PHY_007_004": {"collection": "BLKSEA_MULTIYEAR_PHY_007_004"}, "BLKSEA_MULTIYEAR_WAV_007_006": {"collection": "BLKSEA_MULTIYEAR_WAV_007_006"}, "BLKSEA_OMI_TEMPSAL_sst_trend": {"collection": "BLKSEA_OMI_TEMPSAL_sst_trend"}, "OMI_HEALTH_CHL_BLKSEA_OCEANCOLOUR_area_averaged_mean": {"collection": "OMI_HEALTH_CHL_BLKSEA_OCEANCOLOUR_area_averaged_mean"}, "GLOBAL_ANALYSISFORECAST_PHY_001_024": {"collection": "GLOBAL_ANALYSISFORECAST_PHY_001_024"}, "BALTIC_OMI_HEALTH_codt_volume": {"collection": "BALTIC_OMI_HEALTH_codt_volume"}, "BLKSEA_OMI_HEALTH_oxygen_trend": {"collection": "BLKSEA_OMI_HEALTH_oxygen_trend"}, "MEDSEA_MULTIYEAR_WAV_006_012": {"collection": "MEDSEA_MULTIYEAR_WAV_006_012"}, "OMI_CLIMATE_OHC_BLKSEA_area_averaged_anomalies": {"collection": "OMI_CLIMATE_OHC_BLKSEA_area_averaged_anomalies"}, "OMI_HEALTH_CHL_GLOBAL_OCEANCOLOUR_oligo_npg_area_mean": {"collection": "OMI_HEALTH_CHL_GLOBAL_OCEANCOLOUR_oligo_npg_area_mean"}, "MEDSEA_OMI_TEMPSAL_sst_area_averaged_anomalies": {"collection": "MEDSEA_OMI_TEMPSAL_sst_area_averaged_anomalies"}, "BLKSEA_OMI_TEMPSAL_sst_area_averaged_anomalies": {"collection": "BLKSEA_OMI_TEMPSAL_sst_area_averaged_anomalies"}, "OMI_HEALTH_CHL_BLKSEA_OCEANCOLOUR_trend": {"collection": "OMI_HEALTH_CHL_BLKSEA_OCEANCOLOUR_trend"}, "GLOBAL_OMI_SL_thsl_trend": {"collection": "GLOBAL_OMI_SL_thsl_trend"}, "SST_ATL_PHY_L3S_MY_010_038": {"collection": "SST_ATL_PHY_L3S_MY_010_038"}, "MEDSEA_OMI_TEMPSAL_sst_trend": {"collection": "MEDSEA_OMI_TEMPSAL_sst_trend"}, "GLOBAL_OMI_WMHE_voltrp": {"collection": "GLOBAL_OMI_WMHE_voltrp"}, "BALTIC_OMI_TEMPSAL_Ttz_trend": {"collection": "BALTIC_OMI_TEMPSAL_Ttz_trend"}, "OMI_HEALTH_CHL_GLOBAL_OCEANCOLOUR_oligo_spg_area_mean": {"collection": "OMI_HEALTH_CHL_GLOBAL_OCEANCOLOUR_oligo_spg_area_mean"}, "BLKSEA_OMI_SEASTATE_extreme_var_swh_mean_and_anomaly": {"collection": "BLKSEA_OMI_SEASTATE_extreme_var_swh_mean_and_anomaly"}, "GLOBAL_OMI_CLIMVAR_enso_sst_area_averaged_anomalies": {"collection": "GLOBAL_OMI_CLIMVAR_enso_sst_area_averaged_anomalies"}, "GLOBAL_OMI_CLIMVAR_enso_Tzt_anomaly": {"collection": "GLOBAL_OMI_CLIMVAR_enso_Tzt_anomaly"}, "GLOBAL_OMI_WMHE_heattrp": {"collection": "GLOBAL_OMI_WMHE_heattrp"}, "OMI_HEALTH_CHL_MEDSEA_OCEANCOLOUR_trend": {"collection": "OMI_HEALTH_CHL_MEDSEA_OCEANCOLOUR_trend"}, "MEDSEA_OMI_TEMPSAL_extreme_var_temp_mean_and_anomaly": {"collection": "MEDSEA_OMI_TEMPSAL_extreme_var_temp_mean_and_anomaly"}, "GLOBAL_OMI_NATLANTIC_amoc_26N_profile": {"collection": "GLOBAL_OMI_NATLANTIC_amoc_26N_profile"}, "GLOBAL_OMI_TEMPSAL_Tyz_trend": {"collection": "GLOBAL_OMI_TEMPSAL_Tyz_trend"}, "NORTHWESTSHELF_OMI_TEMPSAL_extreme_var_temp_mean_and_anomaly": {"collection": "NORTHWESTSHELF_OMI_TEMPSAL_extreme_var_temp_mean_and_anomaly"}, "OMI_HEALTH_CHL_GLOBAL_OCEANCOLOUR_trend": {"collection": "OMI_HEALTH_CHL_GLOBAL_OCEANCOLOUR_trend"}, "MEDSEA_ANALYSISFORECAST_WAV_006_017": {"collection": "MEDSEA_ANALYSISFORECAST_WAV_006_017"}, "BALTICSEA_ANALYSISFORECAST_PHY_003_006": {"collection": "BALTICSEA_ANALYSISFORECAST_PHY_003_006"}, "IBI_ANALYSISFORECAST_PHY_005_001": {"collection": "IBI_ANALYSISFORECAST_PHY_005_001"}, "SST_MED_SST_L3S_NRT_OBSERVATIONS_010_012": {"collection": "SST_MED_SST_L3S_NRT_OBSERVATIONS_010_012"}, "MEDSEA_MULTIYEAR_PHY_006_004": {"collection": "MEDSEA_MULTIYEAR_PHY_006_004"}, "GLOBAL_OMI_WMHE_northward_mht": {"collection": "GLOBAL_OMI_WMHE_northward_mht"}, "IBI_MULTIYEAR_BGC_005_003": {"collection": "IBI_MULTIYEAR_BGC_005_003"}, "IBI_OMI_CURRENTS_cui": {"collection": "IBI_OMI_CURRENTS_cui"}, "MEDSEA_ANALYSISFORECAST_BGC_006_014": {"collection": "MEDSEA_ANALYSISFORECAST_BGC_006_014"}, "NWSHELF_ANALYSISFORECAST_BGC_004_002": {"collection": "NWSHELF_ANALYSISFORECAST_BGC_004_002"}, "GLOBAL_OMI_OHC_area_averaged_anomalies_0_300": {"collection": "GLOBAL_OMI_OHC_area_averaged_anomalies_0_300"}, "MEDSEA_MULTIYEAR_BGC_006_008": {"collection": "MEDSEA_MULTIYEAR_BGC_006_008"}, "MEDSEA_ANALYSISFORECAST_PHY_006_013": {"collection": "MEDSEA_ANALYSISFORECAST_PHY_006_013"}, "GLOBAL_OMI_SL_thsl_area_averaged_anomalies_0_2000": {"collection": "GLOBAL_OMI_SL_thsl_area_averaged_anomalies_0_2000"}, "OMI_CIRCULATION_VOLTRANS_ARCTIC_averaged": {"collection": "OMI_CIRCULATION_VOLTRANS_ARCTIC_averaged"}, "IBI_MULTIYEAR_WAV_005_006": {"collection": "IBI_MULTIYEAR_WAV_005_006"}, "IBI_OMI_TEMPSAL_extreme_var_temp_mean_and_anomaly": {"collection": "IBI_OMI_TEMPSAL_extreme_var_temp_mean_and_anomaly"}, "OMI_HEALTH_CHL_GLOBAL_OCEANCOLOUR_oligo_sag_area_mean": {"collection": "OMI_HEALTH_CHL_GLOBAL_OCEANCOLOUR_oligo_sag_area_mean"}, "GLOBAL_OMI_OHC_area_averaged_anomalies_0_700": {"collection": "GLOBAL_OMI_OHC_area_averaged_anomalies_0_700"}, "IBI_OMI_WMHE_mow": {"collection": "IBI_OMI_WMHE_mow"}, "GLOBAL_OMI_SL_thsl_area_averaged_anomalies_0_700": {"collection": "GLOBAL_OMI_SL_thsl_area_averaged_anomalies_0_700"}, "IBI_OMI_SEASTATE_swi": {"collection": "IBI_OMI_SEASTATE_swi"}, "MULTIOBS_GLO_BIO_CARBON_SURFACE_REP_015_008": {"collection": "MULTIOBS_GLO_BIO_CARBON_SURFACE_REP_015_008"}, "MULTIOBS_GLO_PHY_W_3D_REP_015_007": {"collection": "MULTIOBS_GLO_PHY_W_3D_REP_015_007"}, "OMI_HEALTH_CHL_BALTIC_OCEANCOLOUR_area_averaged_mean": {"collection": "OMI_HEALTH_CHL_BALTIC_OCEANCOLOUR_area_averaged_mean"}, "OMI_VAR_EXTREME_WMF_MEDSEA_area_averaged_mean": {"collection": "OMI_VAR_EXTREME_WMF_MEDSEA_area_averaged_mean"}, "OMI_HEALTH_CHL_BALTIC_OCEANCOLOUR_trend": {"collection": "OMI_HEALTH_CHL_BALTIC_OCEANCOLOUR_trend"}, "MULTIOBS_GLO_BIO_BGC_3D_REP_015_010": {"collection": "MULTIOBS_GLO_BIO_BGC_3D_REP_015_010"}, "SST_MED_SST_L4_REP_OBSERVATIONS_010_021": {"collection": "SST_MED_SST_L4_REP_OBSERVATIONS_010_021"}, "SST_MED_SST_L4_NRT_OBSERVATIONS_010_004": {"collection": "SST_MED_SST_L4_NRT_OBSERVATIONS_010_004"}, "OMI_HEALTH_CHL_MEDSEA_OCEANCOLOUR_area_averaged_mean": {"collection": "OMI_HEALTH_CHL_MEDSEA_OCEANCOLOUR_area_averaged_mean"}, "MEDSEA_OMI_SEASTATE_extreme_var_swh_mean_and_anomaly": {"collection": "MEDSEA_OMI_SEASTATE_extreme_var_swh_mean_and_anomaly"}, "ARCTIC_OMI_SI_extent_obs": {"collection": "ARCTIC_OMI_SI_extent_obs"}, "SST_ATL_SST_L4_REP_OBSERVATIONS_010_026": {"collection": "SST_ATL_SST_L4_REP_OBSERVATIONS_010_026"}, "OCEANCOLOUR_BAL_BGC_L4_NRT_009_132": {"collection": "OCEANCOLOUR_BAL_BGC_L4_NRT_009_132"}, "IBI_OMI_SEASTATE_extreme_var_swh_mean_and_anomaly": {"collection": "IBI_OMI_SEASTATE_extreme_var_swh_mean_and_anomaly"}, "OCEANCOLOUR_GLO_BGC_L3_NRT_009_101": {"collection": "OCEANCOLOUR_GLO_BGC_L3_NRT_009_101"}, "SST_BAL_SST_L3S_NRT_OBSERVATIONS_010_032": {"collection": "SST_BAL_SST_L3S_NRT_OBSERVATIONS_010_032"}, "SST_BAL_SST_L4_REP_OBSERVATIONS_010_016": {"collection": "SST_BAL_SST_L4_REP_OBSERVATIONS_010_016"}, "SST_BS_SST_L3S_NRT_OBSERVATIONS_010_013": {"collection": "SST_BS_SST_L3S_NRT_OBSERVATIONS_010_013"}, "SST_ATL_PHY_L3S_NRT_010_037": {"collection": "SST_ATL_PHY_L3S_NRT_010_037"}, "OCEANCOLOUR_ARC_BGC_L3_NRT_009_121": {"collection": "OCEANCOLOUR_ARC_BGC_L3_NRT_009_121"}, "INSITU_GLO_PHY_SSH_DISCRETE_MY_013_053": {"collection": "INSITU_GLO_PHY_SSH_DISCRETE_MY_013_053"}, "SST_GLO_SST_L3S_NRT_OBSERVATIONS_010_010": {"collection": "SST_GLO_SST_L3S_NRT_OBSERVATIONS_010_010"}, "SST_MED_PHY_L3S_MY_010_042": {"collection": "SST_MED_PHY_L3S_MY_010_042"}, "WIND_GLO_PHY_L4_NRT_012_004": {"collection": "WIND_GLO_PHY_L4_NRT_012_004"}, "SST_BAL_PHY_L3S_MY_010_040": {"collection": "SST_BAL_PHY_L3S_MY_010_040"}, "SEAICE_ARC_SEAICE_L3_REP_OBSERVATIONS_011_010": {"collection": "SEAICE_ARC_SEAICE_L3_REP_OBSERVATIONS_011_010"}, "WAVE_GLO_PHY_SWH_L4_NRT_014_003": {"collection": "WAVE_GLO_PHY_SWH_L4_NRT_014_003"}, "SEAICE_BAL_PHY_L4_MY_011_019": {"collection": "SEAICE_BAL_PHY_L4_MY_011_019"}, "SEAICE_BAL_SEAICE_L4_NRT_OBSERVATIONS_011_004": {"collection": "SEAICE_BAL_SEAICE_L4_NRT_OBSERVATIONS_011_004"}, "SEAICE_ARC_PHY_L4_NRT_011_014": {"collection": "SEAICE_ARC_PHY_L4_NRT_011_014"}, "SEAICE_ARC_SEAICE_L4_NRT_OBSERVATIONS_011_008": {"collection": "SEAICE_ARC_SEAICE_L4_NRT_OBSERVATIONS_011_008"}, "SST_BAL_SST_L4_NRT_OBSERVATIONS_010_007_b": {"collection": "SST_BAL_SST_L4_NRT_OBSERVATIONS_010_007_b"}, "ANTARCTIC_OMI_SI_extent_obs": {"collection": "ANTARCTIC_OMI_SI_extent_obs"}, "MULTIOBS_GLO_PHY_SSS_L3_MYNRT_015_014": {"collection": "MULTIOBS_GLO_PHY_SSS_L3_MYNRT_015_014"}, "SST_BS_PHY_L3S_MY_010_041": {"collection": "SST_BS_PHY_L3S_MY_010_041"}, "SST_BS_PHY_SUBSKIN_L4_NRT_010_035": {"collection": "SST_BS_PHY_SUBSKIN_L4_NRT_010_035"}, "SEAICE_ARC_SEAICE_L4_NRT_OBSERVATIONS_011_002": {"collection": "SEAICE_ARC_SEAICE_L4_NRT_OBSERVATIONS_011_002"}, "ARCTIC_ANALYSISFORECAST_BGC_002_004": {"collection": "ARCTIC_ANALYSISFORECAST_BGC_002_004"}, "OCEANCOLOUR_ATL_BGC_L3_NRT_009_111": {"collection": "OCEANCOLOUR_ATL_BGC_L3_NRT_009_111"}, "OCEANCOLOUR_BLK_BGC_L3_NRT_009_151": {"collection": "OCEANCOLOUR_BLK_BGC_L3_NRT_009_151"}, "OCEANCOLOUR_BAL_BGC_L4_MY_009_134": {"collection": "OCEANCOLOUR_BAL_BGC_L4_MY_009_134"}, "OCEANCOLOUR_MED_BGC_L4_NRT_009_142": {"collection": "OCEANCOLOUR_MED_BGC_L4_NRT_009_142"}, "SST_BS_SST_L4_REP_OBSERVATIONS_010_022": {"collection": "SST_BS_SST_L4_REP_OBSERVATIONS_010_022"}, "SST_GLO_SST_L4_NRT_OBSERVATIONS_010_001": {"collection": "SST_GLO_SST_L4_NRT_OBSERVATIONS_010_001"}, "SST_MED_PHY_SUBSKIN_L4_NRT_010_036": {"collection": "SST_MED_PHY_SUBSKIN_L4_NRT_010_036"}, "SST_GLO_SST_L4_REP_OBSERVATIONS_010_011": {"collection": "SST_GLO_SST_L4_REP_OBSERVATIONS_010_011"}, "SST_BS_SST_L4_NRT_OBSERVATIONS_010_006": {"collection": "SST_BS_SST_L4_NRT_OBSERVATIONS_010_006"}, "OCEANCOLOUR_BLK_BGC_L4_NRT_009_152": {"collection": "OCEANCOLOUR_BLK_BGC_L4_NRT_009_152"}, "SEALEVEL_MED_PHY_MDT_L4_STATIC_008_066": {"collection": "SEALEVEL_MED_PHY_MDT_L4_STATIC_008_066"}, "SEALEVEL_GLO_PHY_MDT_008_063": {"collection": "SEALEVEL_GLO_PHY_MDT_008_063"}, "INSITU_ARC_PHYBGCWAV_DISCRETE_MYNRT_013_031": {"collection": "INSITU_ARC_PHYBGCWAV_DISCRETE_MYNRT_013_031"}, "WAVE_GLO_PHY_SWH_L4_MY_014_007": {"collection": "WAVE_GLO_PHY_SWH_L4_MY_014_007"}, "ARCTIC_ANALYSISFORECAST_PHY_TIDE_002_015": {"collection": "ARCTIC_ANALYSISFORECAST_PHY_TIDE_002_015"}, "SEAICE_ARC_PHY_CLIMATE_L3_MY_011_021": {"collection": "SEAICE_ARC_PHY_CLIMATE_L3_MY_011_021"}, "OCEANCOLOUR_GLO_BGC_L4_NRT_009_102": {"collection": "OCEANCOLOUR_GLO_BGC_L4_NRT_009_102"}, "WIND_GLO_PHY_L4_MY_012_006": {"collection": "WIND_GLO_PHY_L4_MY_012_006"}, "SEAICE_ANT_PHY_L3_MY_011_018": {"collection": "SEAICE_ANT_PHY_L3_MY_011_018"}, "SEAICE_ARC_PHY_CLIMATE_L4_MY_011_016": {"collection": "SEAICE_ARC_PHY_CLIMATE_L4_MY_011_016"}, "SST_GLO_SST_L4_REP_OBSERVATIONS_010_024": {"collection": "SST_GLO_SST_L4_REP_OBSERVATIONS_010_024"}, "INSITU_GLO_BGC_DISCRETE_MY_013_046": {"collection": "INSITU_GLO_BGC_DISCRETE_MY_013_046"}, "ANTARCTIC_OMI_SI_extent": {"collection": "ANTARCTIC_OMI_SI_extent"}, "ARCTIC_ANALYSIS_FORECAST_WAV_002_014": {"collection": "ARCTIC_ANALYSIS_FORECAST_WAV_002_014"}, "ARCTIC_OMI_TEMPSAL_FWC": {"collection": "ARCTIC_OMI_TEMPSAL_FWC"}, "INSITU_MED_PHYBGCWAV_DISCRETE_MYNRT_013_035": {"collection": "INSITU_MED_PHYBGCWAV_DISCRETE_MYNRT_013_035"}, "ARCTIC_OMI_SI_Transport_NordicSeas": {"collection": "ARCTIC_OMI_SI_Transport_NordicSeas"}, "ARCTIC_OMI_SI_extent": {"collection": "ARCTIC_OMI_SI_extent"}, "SEALEVEL_EUR_PHY_L3_MY_008_061": {"collection": "SEALEVEL_EUR_PHY_L3_MY_008_061"}, "INSITU_GLO_PHY_TS_OA_NRT_013_002": {"collection": "INSITU_GLO_PHY_TS_OA_NRT_013_002"}, "INSITU_GLO_PHY_UV_DISCRETE_NRT_013_048": {"collection": "INSITU_GLO_PHY_UV_DISCRETE_NRT_013_048"}, "OCEANCOLOUR_ATL_BGC_L4_NRT_009_116": {"collection": "OCEANCOLOUR_ATL_BGC_L4_NRT_009_116"}, "ARCTIC_MULTIYEAR_BGC_002_005": {"collection": "ARCTIC_MULTIYEAR_BGC_002_005"}, "ARCTIC_MULTIYEAR_PHY_002_003": {"collection": "ARCTIC_MULTIYEAR_PHY_002_003"}, "ARCTIC_ANALYSISFORECAST_PHY_ICE_002_011": {"collection": "ARCTIC_ANALYSISFORECAST_PHY_ICE_002_011"}, "OCEANCOLOUR_GLO_BGC_L3_MY_009_103": {"collection": "OCEANCOLOUR_GLO_BGC_L3_MY_009_103"}, "OCEANCOLOUR_ARC_BGC_L4_MY_009_124": {"collection": "OCEANCOLOUR_ARC_BGC_L4_MY_009_124"}, "OCEANCOLOUR_BAL_BGC_L3_NRT_009_131": {"collection": "OCEANCOLOUR_BAL_BGC_L3_NRT_009_131"}, "OCEANCOLOUR_GLO_BGC_L4_MY_009_108": {"collection": "OCEANCOLOUR_GLO_BGC_L4_MY_009_108"}, "OCEANCOLOUR_BLK_BGC_L4_MY_009_154": {"collection": "OCEANCOLOUR_BLK_BGC_L4_MY_009_154"}, "OCEANCOLOUR_ATL_BGC_L4_MY_009_118": {"collection": "OCEANCOLOUR_ATL_BGC_L4_MY_009_118"}, "ARCTIC_ANALYSISFORECAST_PHY_002_001": {"collection": "ARCTIC_ANALYSISFORECAST_PHY_002_001"}, "OCEANCOLOUR_MED_BGC_L3_NRT_009_141": {"collection": "OCEANCOLOUR_MED_BGC_L3_NRT_009_141"}, "OCEANCOLOUR_NWS_BGC_HR_L3_NRT_009_203": {"collection": "OCEANCOLOUR_NWS_BGC_HR_L3_NRT_009_203"}, "OCEANCOLOUR_BLK_BGC_L3_MY_009_153": {"collection": "OCEANCOLOUR_BLK_BGC_L3_MY_009_153"}, "OCEANCOLOUR_MED_BGC_L3_MY_009_143": {"collection": "OCEANCOLOUR_MED_BGC_L3_MY_009_143"}, "SEALEVEL_GLO_PHY_NOISE_L4_STATIC_008_033": {"collection": "SEALEVEL_GLO_PHY_NOISE_L4_STATIC_008_033"}, "OCEANCOLOUR_GLO_BGC_L3_MY_009_107": {"collection": "OCEANCOLOUR_GLO_BGC_L3_MY_009_107"}, "OCEANCOLOUR_IBI_BGC_HR_L3_NRT_009_204": {"collection": "OCEANCOLOUR_IBI_BGC_HR_L3_NRT_009_204"}, "SEALEVEL_EUR_PHY_L4_MY_008_068": {"collection": "SEALEVEL_EUR_PHY_L4_MY_008_068"}, "SEALEVEL_BLK_PHY_MDT_L4_STATIC_008_067": {"collection": "SEALEVEL_BLK_PHY_MDT_L4_STATIC_008_067"}, "OCEANCOLOUR_MED_BGC_L4_MY_009_144": {"collection": "OCEANCOLOUR_MED_BGC_L4_MY_009_144"}, "OCEANCOLOUR_MED_BGC_HR_L4_NRT_009_211": {"collection": "OCEANCOLOUR_MED_BGC_HR_L4_NRT_009_211"}, "ARCTIC_MULTIYEAR_WAV_002_013": {"collection": "ARCTIC_MULTIYEAR_WAV_002_013"}, "SEAICE_ANT_PHY_AUTO_L3_NRT_011_012": {"collection": "SEAICE_ANT_PHY_AUTO_L3_NRT_011_012"}, "SEALEVEL_GLO_PHY_CLIMATE_L4_MY_008_057": {"collection": "SEALEVEL_GLO_PHY_CLIMATE_L4_MY_008_057"}, "OCEANCOLOUR_MED_BGC_HR_L3_NRT_009_205": {"collection": "OCEANCOLOUR_MED_BGC_HR_L3_NRT_009_205"}, "OCEANCOLOUR_BLK_BGC_HR_L4_NRT_009_212": {"collection": "OCEANCOLOUR_BLK_BGC_HR_L4_NRT_009_212"}, "INSITU_BAL_PHYBGCWAV_DISCRETE_MYNRT_013_032": {"collection": "INSITU_BAL_PHYBGCWAV_DISCRETE_MYNRT_013_032"}, "INSITU_GLO_PHY_TS_DISCRETE_MY_013_001": {"collection": "INSITU_GLO_PHY_TS_DISCRETE_MY_013_001"}, "OCEANCOLOUR_BLK_BGC_HR_L3_NRT_009_206": {"collection": "OCEANCOLOUR_BLK_BGC_HR_L3_NRT_009_206"}, "OCEANCOLOUR_BAL_BGC_HR_L3_NRT_009_202": {"collection": "OCEANCOLOUR_BAL_BGC_HR_L3_NRT_009_202"}, "INSITU_GLO_PHYBGCWAV_DISCRETE_MYNRT_013_030": {"collection": "INSITU_GLO_PHYBGCWAV_DISCRETE_MYNRT_013_030"}, "OCEANCOLOUR_BAL_BGC_HR_L4_NRT_009_208": {"collection": "OCEANCOLOUR_BAL_BGC_HR_L4_NRT_009_208"}, "INSITU_BLK_PHYBGCWAV_DISCRETE_MYNRT_013_034": {"collection": "INSITU_BLK_PHYBGCWAV_DISCRETE_MYNRT_013_034"}, "INSITU_GLO_WAV_DISCRETE_MY_013_045": {"collection": "INSITU_GLO_WAV_DISCRETE_MY_013_045"}, "OCEANCOLOUR_NWS_BGC_HR_L4_NRT_009_209": {"collection": "OCEANCOLOUR_NWS_BGC_HR_L4_NRT_009_209"}, "OMI_CLIMATE_SST_BAL_area_averaged_anomalies": {"collection": "OMI_CLIMATE_SST_BAL_area_averaged_anomalies"}, "OMI_CLIMATE_SST_IST_ARCTIC_area_averaged_anomalies": {"collection": "OMI_CLIMATE_SST_IST_ARCTIC_area_averaged_anomalies"}, "OCEANCOLOUR_ARC_BGC_L4_NRT_009_122": {"collection": "OCEANCOLOUR_ARC_BGC_L4_NRT_009_122"}, "INSITU_NWS_PHYBGCWAV_DISCRETE_MYNRT_013_036": {"collection": "INSITU_NWS_PHYBGCWAV_DISCRETE_MYNRT_013_036"}, "OCEANCOLOUR_IBI_BGC_HR_L4_NRT_009_210": {"collection": "OCEANCOLOUR_IBI_BGC_HR_L4_NRT_009_210"}, "OMI_CLIMATE_SL_GLOBAL_area_averaged_anomalies": {"collection": "OMI_CLIMATE_SL_GLOBAL_area_averaged_anomalies"}, "INSITU_GLO_BGC_CARBON_DISCRETE_MY_013_050": {"collection": "INSITU_GLO_BGC_CARBON_DISCRETE_MY_013_050"}, "INSITU_GLO_PHY_UV_DISCRETE_MY_013_044": {"collection": "INSITU_GLO_PHY_UV_DISCRETE_MY_013_044"}, "SEALEVEL_EUR_PHY_L4_NRT_008_060": {"collection": "SEALEVEL_EUR_PHY_L4_NRT_008_060"}, "OCEANCOLOUR_ARC_BGC_HR_L3_NRT_009_201": {"collection": "OCEANCOLOUR_ARC_BGC_HR_L3_NRT_009_201"}, "SEAICE_GLO_PHY_L4_MY_011_020": {"collection": "SEAICE_GLO_PHY_L4_MY_011_020"}, "SEALEVEL_GLO_PHY_L4_NRT_008_046": {"collection": "SEALEVEL_GLO_PHY_L4_NRT_008_046"}, "INSITU_IBI_PHYBGCWAV_DISCRETE_MYNRT_013_033": {"collection": "INSITU_IBI_PHYBGCWAV_DISCRETE_MYNRT_013_033"}, "OCEANCOLOUR_ARC_BGC_L3_MY_009_123": {"collection": "OCEANCOLOUR_ARC_BGC_L3_MY_009_123"}, "MULTIOBS_GLO_BGC_NUTRIENTS_CARBON_PROFILES_MYNRT_015_009": {"collection": "MULTIOBS_GLO_BGC_NUTRIENTS_CARBON_PROFILES_MYNRT_015_009"}, "GLOBAL_MULTIYEAR_PHY_ENS_001_031": {"collection": "GLOBAL_MULTIYEAR_PHY_ENS_001_031"}, "SEAICE_BAL_SEAICE_L4_NRT_OBSERVATIONS_011_011": {"collection": "SEAICE_BAL_SEAICE_L4_NRT_OBSERVATIONS_011_011"}, "OCEANCOLOUR_ARC_BGC_HR_L4_NRT_009_207": {"collection": "OCEANCOLOUR_ARC_BGC_HR_L4_NRT_009_207"}, "SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_006": {"collection": "SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_006"}, "OCEANCOLOUR_ATL_BGC_L3_MY_009_113": {"collection": "OCEANCOLOUR_ATL_BGC_L3_MY_009_113"}, "OCEANCOLOUR_BAL_BGC_L3_MY_009_133": {"collection": "OCEANCOLOUR_BAL_BGC_L3_MY_009_133"}, "SST_ATL_SST_L4_NRT_OBSERVATIONS_010_025": {"collection": "SST_ATL_SST_L4_NRT_OBSERVATIONS_010_025"}, "MULTIOBS_GLO_PHY_SSS_L4_MY_015_015": {"collection": "MULTIOBS_GLO_PHY_SSS_L4_MY_015_015"}, "SEAICE_ARC_PHY_AUTO_L4_NRT_011_015": {"collection": "SEAICE_ARC_PHY_AUTO_L4_NRT_011_015"}, "OCEANCOLOUR_GLO_BGC_L4_MY_009_104": {"collection": "OCEANCOLOUR_GLO_BGC_L4_MY_009_104"}, "OMI_EXTREME_SST_BALTIC_sst_mean_and_anomaly_obs": {"collection": "OMI_EXTREME_SST_BALTIC_sst_mean_and_anomaly_obs"}, "OMI_EXTREME_WAVE_IBI_swh_mean_and_anomaly_obs": {"collection": "OMI_EXTREME_WAVE_IBI_swh_mean_and_anomaly_obs"}, "OMI_EXTREME_SST_IBI_sst_mean_and_anomaly_obs": {"collection": "OMI_EXTREME_SST_IBI_sst_mean_and_anomaly_obs"}, "SEAICE_ARC_PHY_L3M_NRT_011_017": {"collection": "SEAICE_ARC_PHY_L3M_NRT_011_017"}, "WAVE_GLO_PHY_SWH_L3_NRT_014_001": {"collection": "WAVE_GLO_PHY_SWH_L3_NRT_014_001"}, "SEAICE_ARC_SEAICE_L4_NRT_OBSERVATIONS_011_007": {"collection": "SEAICE_ARC_SEAICE_L4_NRT_OBSERVATIONS_011_007"}, "SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_001": {"collection": "SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_001"}, "NWSHELF_ANALYSISFORECAST_WAV_004_014": {"collection": "NWSHELF_ANALYSISFORECAST_WAV_004_014"}, "IBI_ANALYSISFORECAST_WAV_005_005": {"collection": "IBI_ANALYSISFORECAST_WAV_005_005"}, "SEAICE_GLO_SEAICE_L4_REP_OBSERVATIONS_011_009": {"collection": "SEAICE_GLO_SEAICE_L4_REP_OBSERVATIONS_011_009"}, "OMI_CIRCULATION_BOUNDARY_PACIFIC_kuroshio_phase_area_averaged": {"collection": "OMI_CIRCULATION_BOUNDARY_PACIFIC_kuroshio_phase_area_averaged"}, "OMI_CLIMATE_OSC_MEDSEA_volume_mean": {"collection": "OMI_CLIMATE_OSC_MEDSEA_volume_mean"}, "BALTIC_OMI_OHC_area_averaged_anomalies": {"collection": "BALTIC_OMI_OHC_area_averaged_anomalies"}, "OMI_CLIMATE_SST_NORTHWESTSHELF_area_averaged_anomalies": {"collection": "OMI_CLIMATE_SST_NORTHWESTSHELF_area_averaged_anomalies"}, "WAVE_GLO_PHY_SPC_L3_MY_014_006": {"collection": "WAVE_GLO_PHY_SPC_L3_MY_014_006"}, "WAVE_GLO_PHY_SPC_L4_NRT_014_004": {"collection": "WAVE_GLO_PHY_SPC_L4_NRT_014_004"}, "INSITU_GLO_PHY_TS_OA_MY_013_052": {"collection": "INSITU_GLO_PHY_TS_OA_MY_013_052"}, "WAVE_GLO_WAV_L3_SPC_NRT_OBSERVATIONS_014_002": {"collection": "WAVE_GLO_WAV_L3_SPC_NRT_OBSERVATIONS_014_002"}, "SEALEVEL_GLO_PHY_L3_MY_008_062": {"collection": "SEALEVEL_GLO_PHY_L3_MY_008_062"}, "SEALEVEL_EUR_PHY_L3_NRT_008_059": {"collection": "SEALEVEL_EUR_PHY_L3_NRT_008_059"}, "WAVE_GLO_PHY_SWH_L3_MY_014_005": {"collection": "WAVE_GLO_PHY_SWH_L3_MY_014_005"}, "WIND_GLO_PHY_CLIMATE_L4_MY_012_003": {"collection": "WIND_GLO_PHY_CLIMATE_L4_MY_012_003"}, "MULTIOBS_GLO_PHY_MYNRT_015_003": {"collection": "MULTIOBS_GLO_PHY_MYNRT_015_003"}, "NWSHELF_ANALYSISFORECAST_PHY_004_013": {"collection": "NWSHELF_ANALYSISFORECAST_PHY_004_013"}, "OMI_CLIMATE_SST_IBI_trend": {"collection": "OMI_CLIMATE_SST_IBI_trend"}, "OMI_EXTREME_SST_NORTHWESTSHELF_sst_mean_and_anomaly_obs": {"collection": "OMI_EXTREME_SST_NORTHWESTSHELF_sst_mean_and_anomaly_obs"}, "OMI_EXTREME_CLIMVAR_PACIFIC_npgo_sla_eof_mode_projection": {"collection": "OMI_EXTREME_CLIMVAR_PACIFIC_npgo_sla_eof_mode_projection"}, "WIND_GLO_PHY_L3_NRT_012_002": {"collection": "WIND_GLO_PHY_L3_NRT_012_002"}, "GLOBAL_OMI_HEALTH_carbon_ph_area_averaged": {"collection": "GLOBAL_OMI_HEALTH_carbon_ph_area_averaged"}, "GLOBAL_OMI_HEALTH_carbon_co2_flux_integrated": {"collection": "GLOBAL_OMI_HEALTH_carbon_co2_flux_integrated"}, "BLKSEA_MULTIYEAR_BGC_007_005": {"collection": "BLKSEA_MULTIYEAR_BGC_007_005"}, "WIND_GLO_PHY_L3_MY_012_005": {"collection": "WIND_GLO_PHY_L3_MY_012_005"}, "OMI_CLIMATE_SL_BALTIC_area_averaged_anomalies": {"collection": "OMI_CLIMATE_SL_BALTIC_area_averaged_anomalies"}, "OMI_CLIMATE_SL_BLKSEA_area_averaged_anomalies": {"collection": "OMI_CLIMATE_SL_BLKSEA_area_averaged_anomalies"}, "OMI_EXTREME_SL_IBI_slev_mean_and_anomaly_obs": {"collection": "OMI_EXTREME_SL_IBI_slev_mean_and_anomaly_obs"}, "OMI_EXTREME_WAVE_MEDSEA_swh_mean_and_anomaly_obs": {"collection": "OMI_EXTREME_WAVE_MEDSEA_swh_mean_and_anomaly_obs"}, "OMI_CIRCULATION_BOUNDARY_BLKSEA_rim_current_index": {"collection": "OMI_CIRCULATION_BOUNDARY_BLKSEA_rim_current_index"}, "OMI_CLIMATE_SL_IBI_regional_trends": {"collection": "OMI_CLIMATE_SL_IBI_regional_trends"}, "OMI_CLIMATE_SL_NORTHWESTSHELF_area_averaged_anomalies": {"collection": "OMI_CLIMATE_SL_NORTHWESTSHELF_area_averaged_anomalies"}, "OMI_CLIMATE_SL_MEDSEA_area_averaged_anomalies": {"collection": "OMI_CLIMATE_SL_MEDSEA_area_averaged_anomalies"}, "OMI_CLIMATE_SST_IBI_area_averaged_anomalies": {"collection": "OMI_CLIMATE_SST_IBI_area_averaged_anomalies"}, "SST_GLO_PHY_L3S_MY_010_039": {"collection": "SST_GLO_PHY_L3S_MY_010_039"}, "OMI_EXTREME_SST_MEDSEA_sst_mean_and_anomaly_obs": {"collection": "OMI_EXTREME_SST_MEDSEA_sst_mean_and_anomaly_obs"}, "OMI_CLIMATE_SST_IST_ARCTIC_trend": {"collection": "OMI_CLIMATE_SST_IST_ARCTIC_trend"}, "OMI_CLIMATE_SL_GLOBAL_regional_trends": {"collection": "OMI_CLIMATE_SL_GLOBAL_regional_trends"}, "OMI_CLIMATE_SST_BAL_trend": {"collection": "OMI_CLIMATE_SST_BAL_trend"}, "GLOBAL_ANALYSISFORECAST_BGC_001_028": {"collection": "GLOBAL_ANALYSISFORECAST_BGC_001_028"}, "SEALEVEL_GLO_PHY_L3_NRT_008_044": {"collection": "SEALEVEL_GLO_PHY_L3_NRT_008_044"}, "OMI_CLIMATE_SST_NORTHWESTSHELF_trend": {"collection": "OMI_CLIMATE_SST_NORTHWESTSHELF_trend"}, "SEAICE_GLO_PHY_CLIMATE_L3_MY_011_013": {"collection": "SEAICE_GLO_PHY_CLIMATE_L3_MY_011_013"}, "OMI_EXTREME_SL_BALTIC_slev_mean_and_anomaly_obs": {"collection": "OMI_EXTREME_SL_BALTIC_slev_mean_and_anomaly_obs"}, "WIND_BAL_PHY_HR_L3_NRT_012_102": {"collection": "WIND_BAL_PHY_HR_L3_NRT_012_102"}, "OMI_EXTREME_WAVE_BALTIC_swh_mean_and_anomaly_obs": {"collection": "OMI_EXTREME_WAVE_BALTIC_swh_mean_and_anomaly_obs"}, "SST_GLO_PHY_L4_NRT_010_043": {"collection": "SST_GLO_PHY_L4_NRT_010_043"}, "OMI_EXTREME_SL_NORTHWESTSHELF_slev_mean_and_anomaly_obs": {"collection": "OMI_EXTREME_SL_NORTHWESTSHELF_slev_mean_and_anomaly_obs"}, "GLOBAL_OMI_HEALTH_carbon_ph_trend": {"collection": "GLOBAL_OMI_HEALTH_carbon_ph_trend"}, "WIND_MED_PHY_HR_L3_NRT_012_104": {"collection": "WIND_MED_PHY_HR_L3_NRT_012_104"}, "OMI_EXTREME_SL_MEDSEA_slev_mean_and_anomaly_obs": {"collection": "OMI_EXTREME_SL_MEDSEA_slev_mean_and_anomaly_obs"}, "OMI_CLIMATE_SL_IBI_area_averaged_anomalies": {"collection": "OMI_CLIMATE_SL_IBI_area_averaged_anomalies"}, "WIND_BLK_PHY_HR_L3_NRT_012_103": {"collection": "WIND_BLK_PHY_HR_L3_NRT_012_103"}, "OMI_EXTREME_WAVE_NORTHWESTSHELF_swh_mean_and_anomaly_obs": {"collection": "OMI_EXTREME_WAVE_NORTHWESTSHELF_swh_mean_and_anomaly_obs"}, "SST_BAL_PHY_SUBSKIN_L4_NRT_010_034": {"collection": "SST_BAL_PHY_SUBSKIN_L4_NRT_010_034"}, "WAVE_GLO_PHY_SPC_L3_NRT_014_009": {"collection": "WAVE_GLO_PHY_SPC_L3_NRT_014_009"}, "WIND_ATL_PHY_HR_L3_NRT_012_101": {"collection": "WIND_ATL_PHY_HR_L3_NRT_012_101"}, "OMI_CLIMATE_SL_EUROPE_area_averaged_anomalies": {"collection": "OMI_CLIMATE_SL_EUROPE_area_averaged_anomalies"}, "WIND_ARC_PHY_HR_L3_NRT_012_100": {"collection": "WIND_ARC_PHY_HR_L3_NRT_012_100"}}, "product_types_config": {"GLOBAL_MULTIYEAR_BGC_001_029": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,global-multiyear-bgc-001-029,global-ocean,invariant,level-4,marine-resources,marine-safety,multi-year,none,numerical-model,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Biogeochemistry Hindcast", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "The biogeochemical hindcast for global ocean is produced at Mercator-Ocean (Toulouse. France). It provides 3D biogeochemical fields since year 1993 at 1/4 degree and on 75 vertical levels. It uses PISCES biogeochemical model (available on the [NEMO](https://www.nemo-ocean.eu/) modelling platform). No data assimilation in this product.\n\n* Latest NEMO version (v3.6_STABLE)\n* Forcings: [FREEGLORYS2V4](https://www.mercator-ocean.fr/en/solutions-expertise/how-to-access-the-mercator-ocean-services/let-s-define-your-needs/) ocean physics produced at Mercator-Ocean and [ERA-Interim](https://www.ecmwf.int/en/forecasts/datasets/archive-datasets/reanalysis-datasets/era-interim) atmosphere produced at ECMWF at a daily frequency \n* Outputs: Daily (chlorophyll. nitrate. phosphate. silicate. dissolved oxygen. primary production) and monthly (chlorophyll. nitrate. phosphate. silicate. dissolved oxygen. primary production. iron. phytoplankton in carbon) 3D mean fields interpolated on a standard regular grid in NetCDF format. The simulation is performed once and for all.\n* Initial conditions: World Ocean Atlas 2013 for nitrate. phosphate. silicate and dissolved oxygen. GLODAPv2 for DIC and Alkalinity. and climatological model outputs for Iron and DOC \n* Quality/Accuracy/Calibration information: See the related [QuID](http://catalogue.marine.copernicus.eu/documents/QUID/CMEMS-GLO-QUID-001-029.pdf)\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00019", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00019"}, "SEALEVEL_GLO_PHY_L4_MY_008_047": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-surface-height-above-geoid,sea-surface-height-above-sea-level,sealevel-glo-phy-l4-my-008-047,surface-geostrophic-eastward-sea-water-velocity,surface-geostrophic-eastward-sea-water-velocity-assuming-sea-level-for-geoid,surface-geostrophic-northward-sea-water-velocity,surface-geostrophic-northward-sea-water-velocity-assuming-sea-level-for-geoid,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "GLOBAL OCEAN GRIDDED L4 SEA SURFACE HEIGHTS AND DERIVED VARIABLES REPROCESSED (1993-ONGOING)", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "Altimeter satellite gridded Sea Level Anomalies (SLA) computed with respect to a twenty-year [1993, 2012] mean. The SLA is estimated by Optimal Interpolation, merging the L3 along-track measurement from the different altimeter missions available. Part of the processing is fitted to the Global ocean. (see QUID document or http://duacs.cls.fr [](http://duacs.cls.fr) pages for processing details). The product gives additional variables (i.e. Absolute Dynamic Topography and geostrophic currents (absolute and anomalies)). It serves in delayed-time applications.\nThis product is processed by the DUACS multimission altimeter data processing system.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00148", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00148"}, "GLOBAL_MULTIYEAR_BGC_001_033": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,eastward-sea-water-velocity-vertical-mean-over-pelagic-layer,euphotic-zone-depth,global-multiyear-bgc-001-033,global-ocean,invariant,level-4,marine-resources,marine-safety,mass-content-of-epipelagic-micronekton-expressed-as-wet-weight-in-sea-water,mass-content-of-highly-migrant-lower-mesopelagic-micronekton-expressed-as-wet-weight-in-sea-water,mass-content-of-lower-mesopelagic-micronekton-expressed-as-wet-weight-in-sea-water,mass-content-of-migrant-lower-mesopelagic-micronekton-expressed-as-wet-weight-in-sea-water,mass-content-of-migrant-upper-mesopelagic-micronekton-expressed-as-wet-weight-in-sea-water,mass-content-of-upper-mesopelagic-micronekton-expressed-as-wet-weight-in-sea-water,mass-content-of-zooplankton-expressed-as-carbon-in-sea-water,multi-year,net-primary-productivity-of-biomass-expressed-as-carbon-in-sea-water,northward-sea-water-velocity-vertical-mean-over-pelagic-layer,numerical-model,oceanographic-geographical-features,sea-water-pelagic-layer-bottom-depth,sea-water-potential-temperature-vertical-mean-over-pelagic-layer,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global ocean low and mid trophic levels biomass content hindcast", "missionStartDate": "1998-01-01T00:00:00Z", "abstract": "The Low and Mid-Trophic Levels (LMTL) reanalysis for global ocean is produced at [CLS](https://www.cls.fr) on behalf of Global Ocean Marine Forecasting Center. It provides 2D fields of biomass content of zooplankton and six functional groups of micronekton. It uses the LMTL component of SEAPODYM dynamical population model (http://www.seapodym.eu). No data assimilation has been done. This product also contains forcing data: net primary production, euphotic depth, depth of each pelagic layers zooplankton and micronekton inhabit, average temperature and currents over pelagic layers.\n\n**Forcings sources:**\n* Ocean currents and temperature (CMEMS multiyear product)\n* Net Primary Production computed from chlorophyll a, Sea Surface Temperature and Photosynthetically Active Radiation observations (chlorophyll from CMEMS multiyear product, SST from NOAA NCEI AVHRR-only Reynolds, PAR from INTERIM) and relaxed by model outputs at high latitudes (CMEMS biogeochemistry multiyear product)\n\n**Vertical coverage:**\n* Epipelagic layer \n* Upper mesopelagic layer\n* Lower mesopelagic layer (max. 1000m)\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00020\n\n**References:**\n\n* Lehodey P., Murtugudde R., Senina I. (2010). Bridging the gap from ocean models to population dynamics of large marine predators: a model of mid-trophic functional groups. Progress in Oceanography, 84, p. 69-84.\n* Lehodey, P., Conchon, A., Senina, I., Domokos, R., Calmettes, B., Jouanno, J., Hernandez, O., Kloser, R. (2015) Optimization of a micronekton model with acoustic data. ICES Journal of Marine Science, 72(5), p. 1399-1412.\n* Conchon A. (2016). Mod\u00e9lisation du zooplancton et du micronecton marins. Th\u00e8se de Doctorat, Universit\u00e9 de La Rochelle, 136 p.\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00020"}, "BALTICSEA_ANALYSISFORECAST_WAV_003_010": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,balticsea-analysisforecast-wav-003-010,coastal-marine-environment,forecast,level-4,marine-resources,marine-safety,near-real-time,none,numerical-model,oceanographic-geographical-features,sea-binary-mask,sea-floor-depth-below-geoid,sea-surface-primary-swell-wave-from-direction,sea-surface-primary-swell-wave-mean-period,sea-surface-primary-swell-wave-significant-height,sea-surface-secondary-swell-wave-from-direction,sea-surface-secondary-swell-wave-mean-period,sea-surface-secondary-swell-wave-significant-height,sea-surface-wave-from-direction,sea-surface-wave-from-direction-at-spectral-peak,sea-surface-wave-maximum-crest-height,sea-surface-wave-maximum-height,sea-surface-wave-mean-period-from-variance-spectral-density-inverse-frequency-moment,sea-surface-wave-mean-period-from-variance-spectral-density-second-frequency-moment,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,sea-surface-wave-stokes-drift-x-velocity,sea-surface-wave-stokes-drift-y-velocity,sea-surface-wind-wave-from-direction,sea-surface-wind-wave-mean-period,sea-surface-wind-wave-significant-height,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Wave Analysis and Forecast", "missionStartDate": "2018-12-01T01:00:00Z", "abstract": "This Baltic Sea wave model product provides forecasts for the wave conditions in the Baltic Sea. The Baltic forecast is updated twice a day providing a new six days forecast with hourly instantaneous data for significant wave height, wave period and wave direction for total sea, wind sea and swell, the Stokes drift, and two paramters for the maximum wave. The product is based on the wave model WAM cycle 4.7. The wave model is forced with surface currents, sea level anomaly and ice information from the CMEMS BAL MFC ocean forecast product (BALTICSEA_ANALYSISFORECAST_PHY_003_006). The product grid has a horizontal resolution of 1 nautical mile. The area covers the Baltic Sea including the transition area towards the North Sea (i.e. the Danish Belts, the Kattegat and Skagerrak).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00011", "providers": [{"name": "FMI (Finland)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00011"}, "BALTIC_OMI_SI_volume": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-omi-si-volume,baltic-sea,coastal-marine-environment,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-ice-volume,target-application#seaiceinformation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Ice Volume from Observations Reprocessing", "missionStartDate": "1992-12-31T00:00:00Z", "abstract": "**DEFINITION**\n\nThe sea ice volume is a product of sea ice concentration and sea ice thickness integrated over respective area. Sea ice concentration is the fractional coverage of an ocean area covered with sea ice. The Baltic Sea area having more than 15% of sea ice concentration is included into the sea ice volume analysis. Daily sea ice volume values are computed from the daily sea ice concentration and sea ice thickness maps. The data used to produce the charts are Synthetic Aperture Radar images as well as in situ observations from ice breakers (Uiboupin et al., 2010; https://www.smhi.se/data/oceanografi/havsis). The annual course of the sea ice volume has been calculated as daily mean ice volume for each day-of-year over the period October 1992 \u2013 September 2014. Weekly smoothed time series of the sea ice volume have been calculated from daily values using a 7-day moving average filter.\n\n**CONTEXT**\n\nSea ice coverage has a vital role in the annual course of physical and ecological conditions in the Baltic Sea. Knowledge of the sea ice volume facilitates planning of icebreaking activity and operation of the icebreakers (Valdez Banda et al., 2015; Bostr\u00f6m and \u00d6sterman, 2017). A long-term monitoring of ice parameters is required for design and installation of offshore constructions in seasonally ice covered seas (Heinonen and Rissanen, 2017). A reduction of the sea ice volume in the Baltic Sea has a critical impact on the population of ringed seals (Harkonen et al., 2008). Ringed seals need stable ice conditions for about two months for breeding and moulting (Sundqvist et al., 2012). The sea ice is a habitat for diverse biological assemblages (Enberg et al., 2018).\n\n**CMEMS KEY FINDINGS**\n\nIn the Baltic Sea, ice season may start in October and may last until June. Maximum sea ice volume is observed in March on average. The ice season 2021/22 had low maximum sea ice volume in the Baltic Sea reaching about 17 km3. During the preceding period 1993-2020, the yearly maximum ice volume varied from 4 km3 in 2020 to 60 km3 in 1996. There is a statistically significant decreasing trend of -0.74 km3/year (p=0.02) in the maximum sea ice volume of the Baltic Sea.\n\n**Figure caption**\n\n(a) Time series of day-of-year average sea ice volume derived from remote sensing and in situ observations (http://www.smhi.se/klimatdata/oceanografi/havsis, Uiboupin et al., 2010). Long-term mean (black line) and one standard deviation (blue shading) are calculated over the period October 1992 \u2013 September 2014. Daily sea-ice extent is for 2021/2022 ice season (red line).\"\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00201\n\n**References:**\n\n* Bostr\u00f6m M, \u00d6sterman C, 2017, Improving operational safety during icebreaker operations, WMU Journal of Maritime Affairs, 16, 73-88, DOI: 10.1007/s13437-016-0105-9\n* Enberg S, Majaneva M, Autio R, Blomster J, Rintala J-M, 2018, Phases of microalgal succession in sea ice and the water column in the baltic sea from autumn to spring. Marine Ecology Progress Series, 559, 19-34. DOI: 10.3354/meps12645\n* Harkonen T, J\u00fcssi M, J\u00fcssi I, Verevkin M, Dmitrieva L, Helle E, Sagitov R, Harding KC, 2008, Seasonal Activity Budget of Adult Baltic Ringed Seals, PLoS ONE 3(4): e2006, DOI: 0.1371/journal.pone.0002006\n* Heinonen J, Rissanen S, 2017, Coupled-crushing analysis of a sea ice - wind turbine interaction \u2013 feasibility study of FAST simulation software, Ships and Offshore Structures, 12, 1056-1063. DOI: 10.1080/17445302.2017.1308782\n* Sundqvist L, Harkonen T, Svensson CJ, Harding KC, 2012, Linking Climate Trends to Population Dynamics in the Baltic Ringed Seal: Impacts of Historical and Future Winter Temperatures, AMBIO, 41: 865, DOI: 10.1007/s13280-012-0334-x\n* Uiboupin R, Axell L, Raudsepp U, Sipelgas L, 2010, Comparison of operational ice charts with satellite based ice concentration products in the Baltic Sea. 2010 IEEE/ OES US/EU Balt Int Symp Balt 2010, DOI: 10.1109/BALTIC.2010.5621649\n* Valdez Banda OA, Goerlandt F, Montewka J, Kujala P, 2015, A risk analysis of winter navigation in Finnish sea areas, Accident Analysis & Prevention, 79, 100\u2013116, DOI: 10.1016/j.aap.2015.03.024\n", "providers": [{"name": "SMHI (Sweden)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00201"}, "BALTIC_OMI_SI_extent": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-omi-si-extent,baltic-sea,coastal-marine-environment,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-ice-extent,target-application#seaiceinformation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Ice Extent from Observations Reprocessing", "missionStartDate": "1992-12-31T00:00:00Z", "abstract": "**DEFINITION**\n\nSea ice extent is defined as the area covered by sea ice, that is the area of the ocean having more than 15% sea ice concentration. Sea ice concentration is the fractional coverage of an ocean area covered with sea ice. Daily sea ice extent values are computed from the daily sea ice concentration maps. All sea ice covering the Baltic Sea is included, except for lake ice. The data used to produce the charts are Synthetic Aperture Radar images as well as in situ observations from ice breakers (Uiboupin et al., 2010). The annual course of the sea ice extent has been calculated as daily mean ice extent for each day-of-year over the period October 1992 \u2013 September 2014. Weekly smoothed time series of the sea ice extent have been calculated from daily values using a 7-day moving average filter.\n\n**CONTEXT**\n\nSea ice coverage has a vital role in the annual course of physical and ecological conditions in the Baltic Sea. Moreover, it is an important parameter for safe winter navigation. The presence of sea ice cover sets special requirements for navigation, both for the construction of the ships and their behavior in ice, as in many cases, merchant ships need icebreaker assistance. Temporal trends of the sea ice extent could be a valuable indicator of the climate change signal in the Baltic Sea region. It has been estimated that a 1 \u00b0C increase in the average air temperature results in the retreat of ice-covered area in the Baltic Sea about 45,000 km2 (Granskog et al., 2006). Decrease in maximum ice extent may influence vertical stratification of the Baltic Sea (Hordoir and Meier, 2012) and affect the onset of the spring bloom (Eilola et al., 2013). In addition, statistical sea ice coverage information is crucial for planning of coastal and offshore construction. Therefore, the knowledge about ice conditions and their variability is required and monitored in Copernicus Marine Service.\n\n**CMEMS KEY FINDINGS**\n\nSea ice coverage in the Baltic Sea is strongly seasonal. In general, sea ice starts to form in October and may last until June. The ice season 2021/22 had relatively low maximum ice extent in the Baltic Sea. Sea ice extent reached a maximum area of about 65 000 km2. Sea ice started to form already in November, then reached the value of 60 000 km2 at the beginning of January, but then stopped to increase and even decreased slightly. Maximum sea ice extent was observed at the beginning of February. Afterwards, the sea ice extent slowly withdrew, while in average winters the sea ice increased until the end of February. In a case of fully ice covered Baltic Sea the maximum ice extent is 422 000 km2, which was last observed during the 1940s (Vihma and Haapala, 2009). Thus, 15% of the Baltic Sea was covered by ice in 2021/22. Although there is a tendency of decreasing sea ice extent in the Baltic Sea over the period 1993-2022, the linear trend is not statistically significant.\n\n**Figure caption**\n\n(a) Time series of day-of-year average sea ice extent derived from remote sensing and in situ observations ((http://www.smhi.se/klimatdata/oceanografi/havsis, Uiboupin et al., 2010). Long-term mean (black line) and one standard deviation (blue shading) are calculated over the period October 1992 \u2013 September 2014. Daily sea-ice extent is for 2021/2022 ice season (red line).\n (b) Time series of the area integrated daily sea-ice extent for the Baltic Sea in 1993\u20132022. Initial data that consists of remote sensing and in situ observations ((http://www.smhi.se/klimatdata/oceanografi/havsis, Uiboupin et al., 2010) are smoothed using 7-day window moving average filter\"\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00200\n\n**References:**\n\n* Eilola K, M\u00e5rtensson S, Meier HEM, 2013. Modeling the impact of reduced sea ice cover in future climate on the Baltic Sea biogeochemistry. Geophysical Research Letters, 40, 149-154, doi:10.1029/2012GL054375\n* Granskog M, Kaartokallio H, Kuosa H, Thomas DN, Vainio J, 2006. Sea ice in the Baltic Sea \u2013 A review. Estuarine, Coastal and Shelf Science, 70, 145\u2013160. doi:10.1016/j.ecss.2006.06.001\n* Hordoir R., Meier HEM, 2012. Effect of climate change on the thermal stratification of the Baltic Sea: a sensitivity experiment. Climate Dynamics, 38, 1703-1713, doi:10.1007/s00382-011-1036-y\n* Uiboupin R, Axell L, Raudsepp U, Sipelgas L, 2010. Comparison of operational ice charts with satellite based ice concentration products in the Baltic Sea. 2010 IEEE/ OES US/EU Balt Int Symp Balt 2010, doi:10.1109/BALTIC.2010.5621649\n* Vihma T, Haapala J, 2009. Geophysics of sea ice in the Baltic Sea: A review. Progress in Oceanography, 80, 129-148, doi:10.1016/j.pocean.2009.02.002\n", "providers": [{"name": "SMHI (Sweden)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00200"}, "GLOBAL_OMI_OHC_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-ohc-trend,in-situ-observation,integral-of-sea-water-potential-temperature-wrt-depth-expressed-as-heat-content,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Heat Content trend map from Reanalysis & Multi-Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nEstimates of Ocean Heat Content (OHC) are obtained from integrated differences of the measured temperature and a climatology along a vertical profile in the ocean (von Schuckmann et al., 2018). The regional OHC values are then averaged from 60\u00b0S-60\u00b0N aiming \ni)\tto obtain the mean OHC as expressed in Joules per meter square (J/m2) to monitor the large-scale variability and change.\nii)\tto monitor the amount of energy in the form of heat stored in the ocean (i.e. the change of OHC in time), expressed in Watt per square meter (W/m2). \nOcean heat content is one of the six Global Climate Indicators recommended by the World Meterological Organisation for Sustainable Development Goal 13 implementation (WMO, 2017).\n\n**CONTEXT**\n\nKnowing how much and where heat energy is stored and released in the ocean is essential for understanding the contemporary Earth system state, variability and change, as the ocean shapes our perspectives for the future (von Schuckmann et al., 2020). Variations in OHC can induce changes in ocean stratification, currents, sea ice and ice shelfs (IPCC, 2019; 2021); they set time scales and dominate Earth system adjustments to climate variability and change (Hansen et al., 2011); they are a key player in ocean-atmosphere interactions and sea level change (WCRP, 2018) and they can impact marine ecosystems and human livelihoods (IPCC, 2019).\n\n**CMEMS KEY FINDINGS**\n\nRegional trends for the period 2005-2019 from the Copernicus Marine Service multi-ensemble approach show warming at rates ranging from the global mean average up to more than 8 W/m2 in some specific regions (e.g. northern hemisphere western boundary current regimes). There are specific regions where a negative trend is observed above noise at rates up to about -5 W/m2 such as in the subpolar North Atlantic, or the western tropical Pacific. These areas are characterized by strong year-to-year variability (Dubois et al., 2018; Capotondi et al., 2020). \n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00236\n\n**References:**\n\n* Capotondi, A., Wittenberg, A.T., Kug, J.-S., Takahashi, K. and McPhaden, M.J. (2020). ENSO Diversity. In El Ni\u00f1o Southern Oscillation in a Changing Climate (eds M.J. McPhaden, A. Santoso and W. Cai). https://doi.org/10.1002/9781119548164.ch4\n* Dubois et al., 2018 : Changes in the North Atlantic. Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s1\u2013s142, DOI: 10.1080/1755876X.2018.1489208\n* Hansen, J., Sato, M., Kharecha, P., & von Schuckmann, K. (2011). Earth\u2019s energy imbalance and implications. Atmos. Chem. Phys., 11(24), 13421\u201313449. https://doi.org/10.5194/acp-11-13421-2011\n* IPCC Special Report on the Ocean and Cryosphere in a Changing Climate. (2019). In H. O. P\u00f6rtner, D. C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Nicolai, A. Okem, J. Petzold, B. Rama, & N. M. Weyer (Eds.), IPCC Intergovernmental Panel on Climate Change: Geneva, Switzerland. https://www.ipcc.ch/srocc/\n* IPCC, 2021: Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [Masson-Delmotte, V., P. Zhai, A. Pirani, S.L. Connors, C. P\u00e9an, S. Berger, N. Caud, Y. Chen, L. Goldfarb, M.I. Gomis, M. Huang, K. Leitzell, E. Lonnoy, J.B.R. Matthews, T.K. Maycock, T. Waterfield, O. Yelek\u00e7i, R. Yu, and B. Zhou (eds.)]. Cambridge University Press. In Press.\n* von Schuckmann, K., A. Storto, S. Simoncelli, R. Raj, A. Samuelsen, A. de Pascual Collar, M. Garcia Sotillo, T. Szerkely, M. Mayer, D. Peterson, H. Zuo, G. Garric, M. Monier, 2018: Ocean heat content. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s13\u2013s16, DOI: 10.1080/1755876X.2018.1489208\n* von Schuckmann, K., Cheng, L., Palmer, M. D., Tassone, C., Aich, V., Adusumilli, S., Beltrami, H., Boyer, T., Cuesta-Valero, F. J., Desbruy\u00e8res, D., Domingues, C., Garc\u00eda-Garc\u00eda, A., Gentine, P., Gilson, J., Gorfer, M., Haimberger, L., Ishii, M., Johnson, G. C., Killik, R., \u2026 Wijffels, S. E. (2020). Heat stored in the Earth system: Where does the energy go? The GCOS Earth heat inventory team. Earth Syst. Sci. Data Discuss., 2020, 1\u201345. https://doi.org/10.5194/essd-2019-255\n* WCRP (2018). Global sea-level budget 1993\u2013present. Earth Syst. Sci. Data, 10(3), 1551\u20131590. https://doi.org/10.5194/essd-10-1551-2018\n* WMO, 2017: World Meterological Organisation Bulletin, 66(2), https://public.wmo.int/en/resources/bulletin.\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00236"}, "BLKSEA_OMI_TEMPSAL_extreme_var_temp_mean_and_anomaly": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "black-sea,blksea-omi-tempsal-extreme-var-temp-mean-and-anomaly,coastal-marine-environment,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea Surface Temperature extreme from Reanalysis", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe CMEMS BLKSEA_OMI_tempsal_extreme_var_temp_mean_and_anomaly OMI indicator is based on the computation of the annual 99th percentile of Sea Surface Temperature (SST) from model data. Two different CMEMS products are used to compute the indicator: The Iberia-Biscay-Ireland Multi Year Product (BLKSEA_MULTIYEAR_PHY_007_004) and the Analysis product (BLKSEA_ANALYSIS_FORECAST_PHYS_007_001).\nTwo parameters have been considered for this OMI:\n* Map of the 99th mean percentile: It is obtained from the Multi Year Product, the annual 99th percentile is computed for each year of the product. The percentiles are temporally averaged over the whole period (1993-2019).\n* Anomaly of the 99th percentile in 2020: The 99th percentile of the year 2020 is computed from the Analysis product. The anomaly is obtained by subtracting the mean percentile from the 2020 percentile.\nThis indicator is aimed at monitoring the extremes of sea surface temperature every year and at checking their variations in space. The use of percentiles instead of annual maxima, makes this extremes study less affected by individual data. This study of extreme variability was first applied to the sea level variable (P\u00e9rez G\u00f3mez et al 2016) and then extended to other essential variables, such as sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018 and Alvarez Fanjul et al., 2019). More details and a full scientific evaluation can be found in the CMEMS Ocean State report (Alvarez Fanjul et al., 2019).\n\n**CONTEXT**\n\nThe Sea Surface Temperature is one of the Essential Ocean Variables, hence the monitoring of this variable is of key importance, since its variations can affect the ocean circulation, marine ecosystems, and ocean-atmosphere exchange processes. Particularly in the Black Sea, ocean-atmospheric processes together with its general cyclonic circulation (Rim Current) play an important role on the sea surface temperature variability (Capet et al. 2012). As the oceans continuously interact with the atmosphere, trends of sea surface temperature can also have an effect on the global climate. The 99th mean percentile of sea surface temperature provides a worth information about the variability of the sea surface temperature and warming trends but has not been investigated with details in the Black Sea.\nWhile the global-averaged sea surface temperatures have increased since the beginning of the 20th century (Hartmann et al., 2013). Recent studies indicated a warming trend of the sea surface temperature in the Black Sea in the latest years (Mulet et al., 2018; Sakali and Ba\u015fusta, 2018). A specific analysis on the interannual variability of the basin-averaged sea surface temperature revealed a higher positive trend in its eastern region (Ginzburg et al., 2004). For the past three decades, Sakali and Ba\u015fusta (2018) presented an increase in sea surface temperature that varied along both east\u2013west and south\u2013north directions in the Black Sea. \n\n**CMEMS KEY FINDINGS**\n\nThe mean annual 99th percentile in the period 1993\u20132019 exhibits values ranging from 25.50 to 26.50 oC in the western and central regions of the Black Sea. The values increase towards the east, exceeding 27.5 oC. This contrasting west-east pattern may be linked to the basin wide cyclonic circulation. There are regions showing lower values, below 25.75 oC, such as a small area west of Crimean Peninsula in the vicinity of the Sevastopol anticyclone, the Northern Ukraine region, in particular close to the Odessa and the Karkinytska Gulf due to the freshwaters from the land and a narrow area along the Turkish coastline in the south. Results for 2020 show negative anomalies in the area of influence of the Bosporus and the Bulgarian offshore region up to the Crimean peninsula, while the North West shelf exhibits a positive anomaly as in the Eastern basin. The highest positive value is occurring in the Eastern Tukish coastline nearest the Batumi gyre area. This may be related to the variously increase of sea surface temperature in such a way the southern regions have experienced a higher warming.\n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00216\n\n**References:**\n\n* \u00c1lvarez Fanjul E, Pascual Collar A, P\u00e9rez G\u00f3mez B, De Alfonso M, Garc\u00eda Sotillo M, Staneva J, Clementi E, Grandi A, Zacharioudaki A, Korres G, Ravdas M, Renshaw R, Tinker J, Raudsepp U, Lagemaa P, Maljutenko I, Geyer G, M\u00fcller M, \u00c7a\u011flar Yumruktepe V. Sea level, sea surface temperature and SWH extreme percentiles: combined analysis from model results and in situ observations, Section 2.7, p:31. In: Schuckmann K, Le Traon P-Y, Smith N, Pascual A, Djavidnia S, Gattuso J-P, Gr\u00e9goire M, Nolan G, et al. 2019. Copernicus Marine Service Ocean State Report, Issue 3, Journal of Operational Oceanography, 12:sup1, S1-S123, DOI: 10.1080/1755876X.2019.1633075\n* Capet, A., Barth, A., Beckers, J. M., & Marilaure, G. (2012). Interannual variability of Black Sea's hydrodynamics and connection to atmospheric patterns. Deep Sea Research Part II: Topical Studies in Oceanography, 77, 128-142. https://doi.org/10.1016/j.dsr2.2012.04.010\n* Ginzburg, A. I.; Kostianoy, A. G.; Sheremet, N. A. (2004). Seasonal and interannual variability of the Black Sea surface temperature as revealed from satellite data (1982\u20132000), Journal of Marine Systems, 52, 33-50. https://doi.org/10.1016/j.jmarsys.2004.05.002.\n* Hartmann DL, Klein Tank AMG, Rusticucci M, Alexander LV, Br\u00f6nnimann S, Charabi Y, Dentener FJ, Dlugokencky EJ, Easterling DR, Kaplan A, Soden BJ, Thorne PW, Wild M, Zhai PM. 2013. Observations: Atmosphere and Surface. In: Climate Change 2013: The Physical Science Basis. Contribution of Working Group I to the Fifth Assessment Report of the Intergovernmental Panel on Climate Change. Cambridge University Press, Cambridge, United Kingdom and New York, NY, USA.\n* Mulet S, Nardelli BB, Good S, Pisano A, Greiner E, Monier M. 2018. Ocean temperature and salinity. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 1.1, s5\u2013s13, DOI: https://doi.org/10.1080/1755876X.2018.1489208\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B., De Alfonso M., Zacharioudaki A., P\u00e9rez Gonz\u00e1lez I., \u00c1lvarez Fanjul E., M\u00fcller M., Marcos M., Manzano F., Korres G., Ravdas M., Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208\n* Sakalli A, Ba\u015fusta N. 2018. Sea surface temperature change in the Black Sea under climate change: A simulation of the sea surface temperature up to 2100. International Journal of Climatology, 38(13), 4687-4698. https://doi.org/10.1002/joc.5688\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00216"}, "GLOBAL_OMI_NATLANTIC_amoc_max26N_timeseries": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-natlantic-amoc-max26n-timeseries,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic Meridional Overturning Circulation AMOC timeseries at 26N from Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe Atlantic Meridional Overturning strength at 26.5N is obtained by integrating the meridional transport at 26.5 N across the Atlantic basin (zonally) and then doing a cumulative integral in depth. The maximum value in depth is then taken as the strength in Sverdrups (Sv=1x106m3/s). The observations come from the RAPID array (Smeed et al, 2017). \n\n**CONTEXT**\n\nThe Atlantic Meridional Overturning Circulation (AMOC) transports heat northwards in the Atlantic and plays a key role in regional and global climate (Srokosz et al, 2012). There is a northwards transport in the upper kilometer resulting from northwards flow in the Gulf Stream and wind-driven Ekman transport, and southwards flow in the ocean interior and in deep western boundary currents (Srokosz et al, 2012). The observations have revealed variability at monthly to decadal timescales including a temporary weakening in 2009/10 (McCarthy et al, 2012) and a decrease from 2005-2012 (Smeed et al, 2014; Smeed et al, 2018). Other studies have suggested that this weakening may be a result of variability (Smeed et al, 2014; Jackson et al 2017).\n\n**CMEMS KEY FINDINGS **\n\nThe AMOC strength exhibits significant variability on many timescales with a temporary weakening in 2009/10. There has been a weakening from 2005-2012 (-0.67 Sv/year, (p=0.03) in the observations and -0.53 Sv/year (p=0.04) in the multi-product mean). The multi-product suggests an earlier increase from 2001-2006 (0.48 Sv/yr, p=0.04), and a weakening in 1998-99, however before this period there is significant uncertainty. This indicates that the changes observed are likely to be variability rather than an ongoing trend (see also Jackson et al, 2018).\n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00232\n\n**References:**\n\n* Jackson, L. C., Peterson, K. A., Roberts, C. D. & Wood, R. A. (2016). Recent slowing of Atlantic overturning circulation as a recovery from earlier strengthening. Nature Geosci, 9, 518\u2014522\n* Jackson, L., C. Dubois, S. Masina, A Storto and H Zuo, 2018: Atlantic Meridional Overturning Circulation. In Copernicus Marine Service Ocean State Report, Issue 2. Journal of Operational Oceanography , 11:sup1, S65-S66, 10.1080/1755876X.2018.1489208\n* McCarthy, G., Frajka-Williams, E., Johns, W. E., Baringer, M. O., Meinen, C. S., Bryden, H. L., Rayner, D., Duchez, A., Roberts, C. & Cunningham, S. A. (2012). Observed interannual variability of the Atlantic meridional overturning circulation at 26.5\u00b0N. Geophys. Res. Lett., 39, L19609+\n* Smeed, D. A., McCarthy, G. D., Cunningham, S. A., Frajka-Williams, E., Rayner, D., Johns, W. E., Meinen, C. S., Baringer, M. O., Moat, B. I., Duchez, A. & Bryden, H. L. (2014). Observed decline of the Atlantic meridional overturning circulation 2004&2012. Ocean Science, 10, 29--38.\n* Smeed D., McCarthy G., Rayner D., Moat B.I., Johns W.E., Baringer M.O. and Meinen C.S. (2017). Atlantic meridional overturning circulation observed by the RAPID-MOCHA-WBTS (RAPID-Meridional Overturning Circulation and Heatflux Array-Western Boundary Time Series) array at 26N from 2004 to 2017. British Oceanographic Data Centre - Natural Environment Research Council, UK. doi: 10.5285/5acfd143-1104-7b58-e053-6c86abc0d94b\n* Smeed, D. A., Josey, S. A., Beaulieu, C., Johns, W. E., Moat, B. I., Frajka-Williams, E., Rayner, D., Meinen, C. S., Baringer, M. O., Bryden, H. L. & McCarthy, G. D. (2018). The North Atlantic Ocean Is in a State of Reduced Overturning. Geophys. Res. Lett., 45, 2017GL076350+. doi: 10.1002/2017gl076350\n* Srokosz, M., M. Baringer, H. Bryden, S. Cunningham, T. Delworth, S. Lozier, J. Marotzke, and R. Sutton, 2012: Past, Present, and Future Changes in the Atlantic Meridional Overturning Circulation. Bull. Amer. Meteor. Soc., 93, 1663\u20131676, https://doi.org/10.1175/BAMS-D-11-00151.1\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00232"}, "GLOBAL_OMI_TEMPSAL_sst_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-tempsal-sst-trend,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Sea Surface Temperature trend map from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nBased on daily, global climate sea surface temperature (SST) analyses generated by the European Space Agency (ESA) SST Climate Change Initiative (CCI) and the Copernicus Climate Change Service (C3S) (Merchant et al., 2019; product SST-GLO-SST-L4-REP-OBSERVATIONS-010-024). \nAnalysis of the data was based on the approach described in Mulet et al. (2018) and is described and discussed in Good et al. (2020). The processing steps applied were: \n1.\tThe daily analyses were averaged to create monthly means. \n2.\tA climatology was calculated by averaging the monthly means over the period 1993 - 2014. \n3.\tMonthly anomalies were calculated by differencing the monthly means and the climatology. \n4.\tThe time series for each grid cell was passed through the X11 seasonal adjustment procedure, which decomposes a time series into a residual seasonal component, a trend component and errors (e.g., Pezzulli et al., 2005). The trend component is a filtered version of the monthly time series. \n5.\tThe slope of the trend component was calculated using a robust method (Sen 1968). The method also calculates the 95% confidence range in the slope. \n\n**CONTEXT**\n\nSea surface temperature (SST) is one of the Essential Climate Variables (ECVs) defined by the Global Climate Observing System (GCOS) as being needed for monitoring and characterising the state of the global climate system (GCOS 2010). It provides insight into the flow of heat into and out of the ocean, into modes of variability in the ocean and atmosphere, can be used to identify features in the ocean such as fronts and upwelling, and knowledge of SST is also required for applications such as ocean and weather prediction (Roquet et al., 2016).\n\n**CMEMS KEY FINDINGS**\n\nWarming trends occurred over most of the globe between 1993 and 2021. One of the exceptions is the North Atlantic, which has a region south of Greenland where a cooling trend is found. The cooling in this area has been previously noted as occurring on centennial time scales (IPCC, 2013; Caesar et al., 2018; Sevellee et al., 2017).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00243\n\n**References:**\n\n* Caesar, L., Rahmstorf, S., Robinson, A., Feulner, G. and Saba, V., 2018. Observed fingerprint of a weakening Atlantic Ocean overturning circulation. Nature, 556(7700), p.191. DOI: 10.1038/s41586-018-0006-5.\n* GCOS. Global Climate Observing System. 2010. Update of the Implementation Plan for the Global Observing System for Climate in Support of the UNFCCC (GCO-138).\n* Good, S.A., Kennedy, J.J, and Embury, O. Global sea surface temperature anomalies in 2018 and historical changes since 1993. In: von Schuckmann et al. 2020, Copernicus Marine Service Ocean State Report, Issue 4, Journal of Operational Oceanography, 13:sup1, S1-S172, doi: 10.1080/1755876X.2020.1785097.\n* Merchant, C.J., Embury, O., Bulgin, C.E. et al. Satellite-based time-series of sea-surface temperature since 1981 for climate applications. Sci Data 6, 223 (2019) doi:10.1038/s41597-019-0236-x.\u202f\n* Mulet S., Nardelli B.B., Good S., Pisano A., Greiner E., Monier M., Autret E., Axell L., Boberg F., Ciliberti S. 2018. Ocean temperature and salinity. In: Copernicus marine service ocean state report, issue 2. J Operat Oceanogr. 11(Sup1):s11\u2013ss4. doi:10.1080/1755876X.2018.1489208.\n* IPCC, 2013: Climate Change 2013: The Physical Science Basis. Contribution of Working Group I to the Fifth Assessment Report of the Intergovernmental Panel on Climate Change [Stocker, T.F., D. Qin, G.-K. Plattner, M. Tignor, S.K. Allen, J. Boschung, A. Nauels, Y. Xia, V. Bex and P.M. Midgley (eds.)]. Cambridge University Press, Cambridge, United Kingdom and New York, NY, USA, 1535 pp.\n* Pezzulli, S., Stephenson, D.B. and Hannachi A. 2005. The variability of seasonality. J Clim. 18: 71\u2013 88, doi: 10.1175/JCLI-3256.1.\n* Roquet H , Pisano A., Embury O. 2016. Sea surface temperature. In: von Schuckmann et al. 2016, The Copernicus marine environment monitoring service ocean state report. J Oper Ocean. 9(suppl. 2). doi:10.1080/1755876X.2016.1273446.\n* Sen, P.K. 1968. Estimates of the regression coefficient based on Kendall\u2019s tau. J Am Statist Assoc. 63: 1379\u2013 1389, doi: 10.1080/01621459.1968.10480934.\n* S\u00e9vellec, F., Fedorov, A.V. and Liu, W., 2017. Arctic sea-ice decline weakens the Atlantic meridional overturning circulation. Nature Climate Change, 7(8), p.604, doi: 10.1038/nclimate3353.\n", "providers": [{"name": "Met Office (UK)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00243"}, "IBI_MULTIYEAR_PHY_005_002": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "barotropic-eastward-sea-water-velocity,barotropic-northward-sea-water-velocity,coastal-marine-environment,eastward-sea-water-velocity,iberian-biscay-irish-seas,ibi-multiyear-phy-005-002,in-situ-ts-profiles,level-4,marine-resources,marine-safety,multi-year,northward-sea-water-velocity,numerical-model,ocean-mixed-layer-thickness-defined-by-sigma-theta,oceanographic-geographical-features,sea-floor-depth-below-geoid,sea-level,sea-surface-height-above-geoid,sea-water-potential-temperature,sea-water-salinity,sst,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic-Iberian Biscay Irish- Ocean Physics Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "The IBI-MFC provides a ocean physical reanalysis product for the Iberia-Biscay-Ireland (IBI) area starting in 01/01/1993 and being regularly updated on a yearly basis. The model system is run by Mercator-Ocean, being the product post-processed to the user\u2019s format by Nologin with the support of CESGA in terms of supercomputing resources. \nThe IBI model numerical core is based on the NEMO v3.6 ocean general circulation model run at 1/12\u00b0 horizontal resolution. Altimeter data, in situ temperature and salinity vertical profiles and satellite sea surface temperature are assimilated.\nThe product offers 3D daily, monthly and yearly ocean fields, as well as hourly mean fields for surface variables. Daily, monthly and yearly averages of 3D Temperature, 3D Salinity, 3D Zonal and Meridional Velocity components, Mix Layer Depth, Sea Bottom Temperature and Sea Surface Height are provided. Additionally, hourly means of surface fields for variables such as Sea Surface Height, Mix Layer Depth, Surface Temperature and Currents, together with Barotropic Velocities are distributed. Additionally, climatological parameters (monthly mean and standard deviation) of these variables for the period 1993-2016 are delivered.\n\n**Product Citation**: \nPlease refer to our Technical FAQ for citing [products.](http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169)\n\n**DOI (Product)**: \nhttps://doi.org/10.48670/moi-00029", "providers": [{"name": "NOLOGIN", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00029"}, "IBI_ANALYSISFORECAST_BGC_005_004": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,euphotic-zone-depth,forecast,iberian-biscay-irish-seas,ibi-analysisforecast-bgc-005-004,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mole-concentration-of-ammonium-in-sea-water,mole-concentration-of-dissolved-inorganic-carbon-in-sea-water,mole-concentration-of-dissolved-iron-in-sea-water,mole-concentration-of-dissolved-molecular-oxygen-in-sea-water,mole-concentration-of-nitrate-in-sea-water,mole-concentration-of-phosphate-in-sea-water,mole-concentration-of-phytoplankton-expressed-as-carbon-in-sea-water,mole-concentration-of-silicate-in-sea-water,mole-concentration-of-zooplankton-expressed-as-carbon-in-sea-water,near-real-time,net-primary-production-of-biomass-expressed-as-carbon-per-unit-volume-in-sea-water,none,numerical-model,oceanographic-geographical-features,sea-water-ph-reported-on-total-scale,surface-partial-pressure-of-carbon-dioxide-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic-Iberian Biscay Irish- Ocean Biogeochemical Analysis and Forecast", "missionStartDate": "2020-12-01T00:00:00Z", "abstract": "The IBI-MFC provides a high-resolution biogeochemical analysis and forecast product covering the European waters, and more specifically the Iberia\u2013Biscay\u2013Ireland (IBI) area. The last 2 years before now (historic best estimates) as well as daily averaged forecasts with a horizon of 10 days (updated on a weekly basis) are available on the catalogue.\nTo this aim, an online coupled physical-biogeochemical operational system is based on NEMO-PISCES at 1/36\u00b0 and adapted to the IBI area, being Mercator-Ocean in charge of the model code development. PISCES is a model of intermediate complexity, with 24 prognostic variables. It simulates marine biological productivity of the lower trophic levels and describes the biogeochemical cycles of carbon and of the main nutrients (P, N, Si, Fe).\nThe product provides daily and monthly averages of the main biogeochemical variables: chlorophyll, oxygen, nitrate, phosphate, silicate, iron, ammonium, net primary production, euphotic zone depth, phytoplankton carbon, pH, dissolved inorganic carbon, surface partial pressure of carbon dioxide, and zooplankton.\n\n**Product Citation**: \nPlease refer to our Technical FAQ for citing [products.](http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169)\n\n**DOI (Product)**: \nhttps://doi.org/10.48670/moi-00026\n\n**References:**\n\n* Gutknecht, E. and Reffray, G. and Mignot, A. and Dabrowski, T. and Sotillo, M. G. Modelling the marine ecosystem of Iberia-Biscay-Ireland (IBI) European waters for CMEMS operational applications. Ocean Sci., 15, 1489\u20131516, 2019. https://doi.org/10.5194/os-15-1489-2019\n", "providers": [{"name": "NOLOGIN", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00026"}, "GLOBAL_OMI_TEMPSAL_sst_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-tempsal-sst-area-averaged-anomalies,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Sea Surface Temperature time series and trend from Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nBased on daily, global climate sea surface temperature (SST) analyses generated by the European Space Agency (ESA) SST Climate Change Initiative (CCI) and the Copernicus Climate Change Service (C3S) (Merchant et al., 2019; product SST-GLO-SST-L4-REP-OBSERVATIONS-010-024). \nAnalysis of the data was based on the approach described in Mulet et al. (2018) and is described and discussed in Good et al. (2020). The processing steps applied were: \n1.\tThe daily analyses were averaged to create monthly means. \n2.\tA climatology was calculated by averaging the monthly means over the period 1993 - 2014. \n3.\tMonthly anomalies were calculated by differencing the monthly means and the climatology. \n4.\tAn area averaged time series was calculated by averaging the monthly fields over the globe, with each grid cell weighted according to its area. \n5.\tThe time series was passed through the X11 seasonal adjustment procedure, which decomposes the time series into a residual seasonal component, a trend component and errors (e.g., Pezzulli et al., 2005). The trend component is a filtered version of the monthly time series. \n6.\tThe slope of the trend component was calculated using a robust method (Sen 1968). The method also calculates the 95% confidence range in the slope. \n\n**CONTEXT**\n\nSea surface temperature (SST) is one of the Essential Climate Variables (ECVs) defined by the Global Climate Observing System (GCOS) as being needed for monitoring and characterising the state of the global climate system (GCOS 2010). It provides insight into the flow of heat into and out of the ocean, into modes of variability in the ocean and atmosphere, can be used to identify features in the ocean such as fronts and upwelling, and knowledge of SST is also required for applications such as ocean and weather prediction (Roquet et al., 2016).\n\n**CMEMS KEY FINDINGS**\n\nOver the period 1993 to 2021, the global average linear trend was 0.015 \u00b1 0.001\u00b0C / year (95% confidence interval). 2021 is nominally the sixth warmest year in the time series. Aside from this trend, variations in the time series can be seen which are associated with changes between El Ni\u00f1o and La Ni\u00f1a conditions. For example, peaks in the time series coincide with the strong El Ni\u00f1o events that occurred in 1997/1998 and 2015/2016 (Gasparin et al., 2018).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00242\n\n**References:**\n\n* GCOS. Global Climate Observing System. 2010. Update of the Implementation Plan for the Global Observing System for Climate in Support of the UNFCCC (GCO-138).\n* Gasparin, F., von Schuckmann, K., Desportes, C., Sathyendranath, S. and Pardo, S. 2018. El Ni\u00f1o southern oscillation. In: Copernicus marine service ocean state report, issue 2. J Operat Oceanogr. 11(Sup1):s11\u2013ss4. doi:10.1080/1755876X.2018.1489208.\n* Good, S.A., Kennedy, J.J, and Embury, O. Global sea surface temperature anomalies in 2018 and historical changes since 1993. In: von Schuckmann et al. 2020, Copernicus Marine Service Ocean State Report, Issue 4, Journal of Operational Oceanography, 13:sup1, S1-S172, doi: 10.1080/1755876X.2020.1785097.\n* Merchant, C.J., Embury, O., Bulgin, C.E. et al. Satellite-based time-series of sea-surface temperature since 1981 for climate applications. Sci Data 6, 223 (2019) doi:10.1038/s41597-019-0236-x.\u202f\n* Mulet S., Nardelli B.B., Good S., Pisano A., Greiner E., Monier M., Autret E., Axell L., Boberg F., Ciliberti S. 2018. Ocean temperature and salinity. In: Copernicus marine service ocean state report, issue 2. J Operat Oceanogr. 11(Sup1):s11\u2013ss4. doi:10.1080/1755876X.2018.1489208.\n* Pezzulli, S., Stephenson, D.B. and Hannachi A. 2005. The variability of seasonality. J Clim. 18: 71\u2013 88, doi: 10.1175/JCLI-3256.1.\n* Roquet H , Pisano A., Embury O. 2016. Sea surface temperature. In: von Schuckmann et al. 2016, The Copernicus marine environment monitoring service ocean state report. J Oper Ocean. 9(suppl. 2). doi:10.1080/1755876X.2016.1273446.\n* Sen, P.K. 1968. Estimates of the regression coefficient based on Kendall\u2019s tau. J Am Statist Assoc. 63: 1379\u2013 1389, doi: 10.1080/01621459.1968.10480934.\n", "providers": [{"name": "Met Office (UK)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00242"}, "GLOBAL_ANALYSISFORECAST_WAV_001_027": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,forecast,global-analysisforecast-wav-001-027,global-ocean,level-4,marine-resources,marine-safety,near-real-time,numerical-model,oceanographic-geographical-features,sea-floor-depth-below-geoid,sea-surface-primary-swell-wave-from-direction,sea-surface-primary-swell-wave-mean-period,sea-surface-primary-swell-wave-significant-height,sea-surface-secondary-swell-wave-from-direction,sea-surface-secondary-swell-wave-mean-period,sea-surface-secondary-swell-wave-significant-height,sea-surface-wave-from-direction,sea-surface-wave-from-direction-at-variance-spectral-density-maximum,sea-surface-wave-maximum-height,sea-surface-wave-mean-period-from-variance-spectral-density-inverse-frequency-moment,sea-surface-wave-mean-period-from-variance-spectral-density-second-frequency-moment,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,sea-surface-wave-stokes-drift-x-velocity,sea-surface-wave-stokes-drift-y-velocity,sea-surface-wind-wave-from-direction,sea-surface-wind-wave-mean-period,sea-surface-wind-wave-significant-height,significant-wave-height-(swh),weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Waves Analysis and Forecast", "missionStartDate": "2021-01-01T03:00:00Z", "abstract": "The operational global ocean analysis and forecast system of M\u00e9t\u00e9o-France with a resolution of 1/12 degree is providing daily analyses and 10 days forecasts for the global ocean sea surface waves. This product includes 3-hourly instantaneous fields of integrated wave parameters from the total spectrum (significant height, period, direction, Stokes drift,...etc), as well as the following partitions: the wind wave, the primary and secondary swell waves.\n \nThe global wave system of M\u00e9t\u00e9o-France is based on the wave model MFWAM which is a third generation wave model. MFWAM uses the computing code ECWAM-IFS-38R2 with a dissipation terms developed by Ardhuin et al. (2010). The model MFWAM was upgraded on november 2014 thanks to improvements obtained from the european research project \u00ab my wave \u00bb (Janssen et al. 2014). The model mean bathymetry is generated by using 2-minute gridded global topography data ETOPO2/NOAA. Native model grid is irregular with decreasing distance in the latitudinal direction close to the poles. At the equator the distance in the latitudinal direction is more or less fixed with grid size 1/10\u00b0. The operational model MFWAM is driven by 6-hourly analysis and 3-hourly forecasted winds from the IFS-ECMWF atmospheric system. The wave spectrum is discretized in 24 directions and 30 frequencies starting from 0.035 Hz to 0.58 Hz. The model MFWAM uses the assimilation of altimeters with a time step of 6 hours. The global wave system provides analysis 4 times a day, and a forecast of 10 days at 0:00 UTC. The wave model MFWAM uses the partitioning to split the swell spectrum in primary and secondary swells.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00017\n\n**References:**\n\n* F. Ardhuin, R. Magne, J-F. Filipot, A. Van der Westhyusen, A. Roland, P. Quefeulou, J. M. Lef\u00e8vre, L. Aouf, A. Babanin and F. Collard : Semi empirical dissipation source functions for wind-wave models : Part I, definition and calibration and validation at global scales. Journal of Physical Oceanography, March 2010.\n* P. Janssen, L. Aouf, A. Behrens, G. Korres, L. Cavalieri, K. Christiensen, O. Breivik : Final report of work-package I in my wave project. December 2014.\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00017"}, "GLOBAL_MULTIYEAR_PHY_001_030": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "cell-thickness,coastal-marine-environment,eastward-sea-ice-velocity,eastward-sea-water-velocity,global-multiyear-phy-001-030,global-ocean,in-situ-ts-profiles,invariant,level-4,marine-resources,marine-safety,model-level-number-at-sea-floor,multi-year,northward-sea-ice-velocity,northward-sea-water-velocity,numerical-model,ocean-mixed-layer-thickness-defined-by-sigma-theta,oceanographic-geographical-features,sea-binary-mask,sea-floor-depth-below-geoid,sea-ice-area-fraction,sea-ice-concentration-and/or-thickness,sea-ice-thickness,sea-level,sea-surface-height-above-geoid,sea-water-potential-temperature,sea-water-potential-temperature-at-sea-floor,sea-water-salinity,sst,target-application#seaiceclimate,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Physics Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "The GLORYS12V1 product is the CMEMS global ocean eddy-resolving (1/12\u00b0 horizontal resolution, 50 vertical levels) reanalysis covering the altimetry (1993 onward).\n\nIt is based largely on the current real-time global forecasting CMEMS system. The model component is the NEMO platform driven at surface by ECMWF ERA-Interim then ERA5 reanalyses for recent years. Observations are assimilated by means of a reduced-order Kalman filter. Along track altimeter data (Sea Level Anomaly), Satellite Sea Surface Temperature, Sea Ice Concentration and In situ Temperature and Salinity vertical Profiles are jointly assimilated. Moreover, a 3D-VAR scheme provides a correction for the slowly-evolving large-scale biases in temperature and salinity.\n\nThis product includes daily and monthly mean files for temperature, salinity, currents, sea level, mixed layer depth and ice parameters from the top to the bottom. The global ocean output files are displayed on a standard regular grid at 1/12\u00b0 (approximatively 8 km) and on 50 standard levels.\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00021", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00021"}, "BLKSEA_ANALYSISFORECAST_PHY_007_001": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "black-sea,blksea-analysisforecast-phy-007-001,cell-thickness,coastal-marine-environment,eastward-sea-water-velocity,eastward-sea-water-velocity-detided,forecast,in-situ-ts-profiles,level-4,marine-resources,marine-safety,model-level-number-at-sea-floor,near-real-time,northward-sea-water-velocity,northward-sea-water-velocity-detided,numerical-model,ocean-mixed-layer-thickness-defined-by-sigma-theta,oceanographic-geographical-features,sea-binary-mask,sea-floor-depth-below-geoid,sea-level,sea-surface-height-above-geoid,sea-surface-height-above-geoid-detided,sea-surface-height-above-sea-level,sea-water-potential-temperature,sea-water-potential-temperature-at-sea-floor,sea-water-salinity,sst,upward-sea-water-velocity,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea Physics Analysis and Forecast", "missionStartDate": "2021-01-01T00:00:00Z", "abstract": "The BLKSEA_ANALYSISFORECAST_PHY_007_001 is produced with a hydrodynamic model implemented over the whole Black Sea basin, including the Bosporus Strait and a portion of the Marmara Sea for the optimal interface with the Mediterranean Sea through lateral open boundary conditions. The model horizontal grid resolution is 1/40\u00b0 in zonal and 1/40\u00b0 in meridional direction (ca. 121 km) and has 121 unevenly spaced vertical levels. The product provides analysis and forecast for 3D potential temperature, salinity, horizontal and vertical currents. Together with the 2D variables sea surface height, bottom potential temperature and mixed layer thickness.\n\n**Product Citation**: \nPlease refer to our Technical FAQ for citing products. http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169\n\n**DOI (Product)**: \nhttps://doi.org/10.25423/cmcc/blksea_analysisforecast_phy_007_001_eas6\n\n**References:**\n\n* Jansen, E., Martins, D., Stefanizzi, L., Ciliberti, S. A., Gunduz, M., Ilicak, M., Lecci, R., Cret\u00ed, S., Causio, S., Aydo\u011fdu, A., Lima, L., Palermo, F., Peneva, E. L., Coppini, G., Masina, S., Pinardi, N., Palazov, A., and Valchev, N. (2022). Black Sea Physical Analysis and Forecast (Copernicus Marine Service BS-Currents, EAS5 system) (Version 1) [Data set]. Copernicus Monitoring Environment Marine Service (CMEMS). https://doi.org/10.25423/CMCC/BLKSEA_ANALYSISFORECAST_PHY_007_001_EAS5\n", "providers": [{"name": "CMCC (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.25423/cmcc/blksea_analysisforecast_phy_007_001_eas6"}, "NWSHELF_REANALYSIS_WAV_004_015": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,level-4,marine-resources,marine-safety,multi-year,none,north-west-shelf-seas,numerical-model,nwshelf-reanalysis-wav-004-015,oceanographic-geographical-features,sea-surface-primary-swell-wave-from-direction,sea-surface-primary-swell-wave-mean-period,sea-surface-primary-swell-wave-significant-height,sea-surface-secondary-swell-wave-from-direction,sea-surface-secondary-swell-wave-mean-period,sea-surface-secondary-swell-wave-significant-height,sea-surface-wave-from-direction,sea-surface-wave-from-direction-at-variance-spectral-density-maximum,sea-surface-wave-mean-period-from-variance-spectral-density-inverse-frequency-moment,sea-surface-wave-mean-period-from-variance-spectral-density-second-frequency-moment,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,sea-surface-wave-stokes-drift-x-velocity,sea-surface-wave-stokes-drift-y-velocity,sea-surface-wind-wave-from-direction,sea-surface-wind-wave-mean-period,sea-surface-wind-wave-significant-height,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic- European North West Shelf- Wave Physics Reanalysis", "missionStartDate": "1980-01-01T00:00:00Z", "abstract": "**Short description:**\n\nThis product provides long term hindcast outputs from a wave model for the North-West European Shelf. The wave model is WAVEWATCH III and the North-West Shelf configuration is based on a two-tier Spherical Multiple Cell grid mesh (3 and 1.5 km cells) derived from with the 1.5km grid used for [NORTHWESTSHELF_ANALYSIS_FORECAST_PHY_004_013](https://resources.marine.copernicus.eu/?option=com_csw&view=details&product_id=NORTHWESTSHELF_ANALYSIS_FORECAST_PHY_004_013). The model is forced by lateral boundary conditions from a Met Office Global wave hindcast. The atmospheric forcing is given by the [ECMWF ERA-5](https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5) Numerical Weather Prediction reanalysis. Model outputs comprise wave parameters integrated from the two-dimensional (frequency, direction) wave spectrum and describe wave height, period and directional characteristics for both the overall sea-state and wind-sea and swell components. The data are delivered on a regular grid at approximately 1.5km resolution, consistent with physical ocean and wave analysis-forecast products. See [CMEMS-NWS-PUM-004-015](http://catalogue.marine.copernicus.eu/documents/PUM/CMEMS-NWS-PUM-004-015.pdf) for more information. Further details of the model, including source term physics, propagation schemes, forcing and boundary conditions, and validation, are provided in the [CMEMS-NWS-QUID-004-015](http://catalogue.marine.copernicus.eu/documents/QUID/CMEMS-NWS-QUID-004-015.pdf).\nThe product is updated biannually provinding six-month extension of the time series.\n\n**Associated products:**\n\n[NORTHWESTSHELF_ANALYSIS_FORECAST_WAV_004_014](https://resources.marine.copernicus.eu/?option=com_csw&view=details&product_id=NORTHWESTSHELF_ANALYSIS_FORECAST_WAV_004_014).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00060", "providers": [{"name": "Met Office (UK)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00060"}, "NWSHELF_MULTIYEAR_BGC_004_011": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-diatoms-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,mole-concentration-of-dissolved-molecular-oxygen-in-sea-water,mole-concentration-of-nitrate-in-sea-water,mole-concentration-of-phosphate-in-sea-water,mole-concentration-of-phytoplankton-expressed-as-carbon-in-sea-water,multi-year,net-primary-production-of-biomass-expressed-as-carbon-per-unit-volume-in-sea-water,north-west-shelf-seas,numerical-model,nwshelf-multiyear-bgc-004-011,oceanographic-geographical-features,satellite-chlorophyll,sea-water-ph-reported-on-total-scale,surface-partial-pressure-of-carbon-dioxide-in-sea-water,volume-beam-attenuation-coefficient-of-radiative-flux-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic- European North West Shelf- Ocean Biogeochemistry Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**Short Description:**\n\nThe ocean biogeochemistry reanalysis for the North-West European Shelf is produced using the European Regional Seas Ecosystem Model (ERSEM), coupled online to the forecasting ocean assimilation model at 7 km horizontal resolution, NEMO-NEMOVAR. ERSEM (Butenschön et al. 2016) is developed and maintained at Plymouth Marine Laboratory. NEMOVAR system was used to assimilate observations of sea surface chlorophyll concentration from ocean colour satellite data and all the physical variables described in [NWSHELF_MULTIYEAR_PHY_004_009](https://resources.marine.copernicus.eu/?option=com_csw&view=details&product_id=NWSHELF_MULTIYEAR_PHY_004_009). Biogeochemical boundary conditions and river inputs used climatologies; nitrogen deposition at the surface used time-varying data.\n\nThe description of the model and its configuration, including the products validation is provided in the [CMEMS-NWS-QUID-004-011](http://catalogue.marine.copernicus.eu/documents/QUID/CMEMS-NWS-QUID-004-011.pdf). \n\nProducts are provided as monthly and daily 25-hour, de-tided, averages. The datasets available are concentration of chlorophyll, nitrate, phosphate, oxygen, phytoplankton biomass, net primary production, light attenuation coefficient, pH, surface partial pressure of CO2, concentration of diatoms expressed as chlorophyll, concentration of dinoflagellates expressed as chlorophyll, concentration of nanophytoplankton expressed as chlorophyll, concentration of picophytoplankton expressed as chlorophyll in sea water. All, as multi-level variables, are interpolated from the model 51 hybrid s-sigma terrain-following system to 24 standard geopotential depths (z-levels). Grid-points near to the model boundaries are masked. The product is updated biannually, providing a six-month extension of the time series. See [CMEMS-NWS-PUM-004-009_011](http://resources.marine.copernicus.eu/documents/PUM/CMEMS-NWS-PUM-004-009_011.pdf) for details.\n\n**Associated products:**\n\nThis model is coupled with a hydrodynamic model (NEMO) available as CMEMS product [NWSHELF_MULTIYEAR_PHY_004_009](https://resources.marine.copernicus.eu/?option=com_csw&view=details&product_id=NWSHELF_MULTIYEAR_PHY_004_009).\nAn analysis-forecast product is available from: [NWSHELF_MULTIYEAR_BGC_004_011](https://resources.marine.copernicus.eu/?option=com_csw&view=details&product_id=NWSHELF_MULTIYEAR_BGC_004_011).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00058\n\n**References:**\n\n* Ciavatta, S., Brewin, R. J. W., Sk\u00e1kala, J., Polimene, L., de Mora, L., Artioli, Y., & Allen, J. I. (2018). [https://doi.org/10.1002/2017JC013490 Assimilation of ocean\u2010color plankton functional types to improve marine ecosystem simulations]. Journal of Geophysical Research: Oceans, 123, 834\u2013854. https://doi.org/10.1002/2017JC013490\n", "providers": [{"name": "Met Office (UK)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00058"}, "MEDSEA_OMI_OHC_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,in-situ-observation,marine-resources,marine-safety,mediterranean-sea,medsea-omi-ohc-area-averaged-anomalies,multi-year,numerical-model,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Ocean Heat Content Anomaly (0-700m) time series and trend from Reanalysis & Multi-Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nOcean heat content (OHC) is defined here as the deviation from a reference period (1993-2014) and is closely proportional to the average temperature change from z1 = 0 m to z2 = 700 m depth:\nOHC=\u222b_(z_1)^(z_2)\u03c1_0 c_p (T_yr-T_clim )dz \t\t\t\t\t\t\t\t[1]\nwith a reference density of = 1030 kgm-3 and a specific heat capacity of cp = 3980 J kg-1 \u00b0C-1 (e.g. von Schuckmann et al., 2009).\nTime series of annual mean values area averaged ocean heat content is provided for the Mediterranean Sea (30\u00b0N, 46\u00b0N; 6\u00b0W, 36\u00b0E) and is evaluated for topography deeper than 300m.\n\n**CONTEXT**\n\nKnowing how much and where heat energy is stored and released in the ocean is essential for understanding the contemporary Earth system state, variability and change, as the oceans shape our perspectives for the future.\nThe quality evaluation of MEDSEA_OMI_OHC_area_averaged_anomalies is based on the \u201cmulti-product\u201d approach as introduced in the second issue of the Ocean State Report (von Schuckmann et al., 2018), and following the MyOcean\u2019s experience (Masina et al., 2017). \nSix global products and a regional (Mediterranean Sea) product have been used to build an ensemble mean, and its associated ensemble spread. The reference products are:\n\tThe Mediterranean Sea Reanalysis at 1/24 degree horizontal resolution (MEDSEA_MULTIYEAR_PHY_006_004, DOI: https://doi.org/10.25423/CMCC/MEDSEA_MULTIYEAR_PHY_006_004_E3R1, Escudier et al., 2020)\n\tFour global reanalyses at 1/4 degree horizontal resolution (GLOBAL_REANALYSIS_PHY_001_031): \nGLORYS, C-GLORS, ORAS5, FOAM\n\tTwo observation based products: \nCORA (INSITU_GLO_TS_REP_OBSERVATIONS_013_001_b) and \nARMOR3D (MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012). \nDetails on the products are delivered in the PUM and QUID of this OMI. \n\n**CMEMS KEY FINDINGS**\n\nThe ensemble mean ocean heat content anomaly time series over the Mediterranean Sea shows a continuous increase in the period 1993-2019 at rate of 1.4\u00b10.3 W/m2 in the upper 700m. After 2005 the rate has clearly increased with respect the previous decade, in agreement with Iona et al. (2018).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00261\n\n**References:**\n\n* Escudier, R., Clementi, E., Omar, M., Cipollone, A., Pistoia, J., Aydogdu, A., Drudi, M., Grandi, A., Lyubartsev, V., Lecci, R., Cret\u00ed, S., Masina, S., Coppini, G., & Pinardi, N. (2020). Mediterranean Sea Physical Reanalysis (CMEMS MED-Currents) (Version 1) [Data set]. Copernicus Monitoring Environment Marine Service (CMEMS). https://doi.org/10.25423/CMCC/MEDSEA_MULTIYEAR_PHY_006_004_E3R1\n* Iona, A., A. Theodorou, S. Sofianos, S. Watelet, C. Troupin, J.-M. Beckers, 2018: Mediterranean Sea climatic indices: monitoring long term variability and climate changes, Earth Syst. Sci. Data Discuss., https://doi.org/10.5194/essd-2018-51, in review.\n* Masina S., A. Storto, N. Ferry, M. Valdivieso, K. Haines, M. Balmaseda, H. Zuo, M. Drevillon, L. Parent, 2017: An ensemble of eddy-permitting global ocean reanalyses from the MyOcean project. Climate Dynamics, 49 (3): 813-841. DOI: 10.1007/s00382-015-2728-5\n* von Schuckmann, K., F. Gaillard and P.-Y. Le Traon, 2009: Global hydrographic variability patterns during 2003-2008, Journal of Geophysical Research, 114, C09007, doi:10.1029/2008JC005237.\n* von Schuckmann et al., 2016: Ocean heat content. In: The Copernicus Marine Environment Monitoring Service Ocean State Report, issue 1, Journal of Operational Oceanography, Volume 9, 2016 - Issue sup2: The Copernicus Marine Environment Monitoring Service Ocean, http://dx.doi.org/10.1080/1755876X.2016.1273446.\n* von Schuckmann et al., 2018: Ocean heat content. In: The Copernicus Marine Environment Monitoring Service Ocean State Report, issue 2, Journal of Operational Oceanography, 11:sup1, s1-s142, DOI: 10.1080/1755876X.2018.1489208\n", "providers": [{"name": "CMCC (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00261"}, "MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,geopotential-height,geostrophic-eastward-sea-water-velocity,geostrophic-northward-sea-water-velocity,global-ocean,in-situ-observation,level-4,marine-resources,marine-safety,multi-year,multiobs-glo-phy-tsuv-3d-mynrt-015-012,near-real-time,none,ocean-mixed-layer-thickness,oceanographic-geographical-features,satellite-observation,sea-water-salinity,sea-water-temperature,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Multi Observation Global Ocean 3D Temperature Salinity Height Geostrophic Current and MLD", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "You can find here the Multi Observation Global Ocean ARMOR3D L4 analysis and multi-year reprocessing. It consists of 3D Temperature, Salinity, Heights, Geostrophic Currents and Mixed Layer Depth, available on a 1/4 degree regular grid and on 50 depth levels from the surface down to the bottom. The product includes 4 datasets: \n* dataset-armor-3d-nrt-weekly, which delivers near-real-time (NRT) weekly data\n* dataset-armor-3d-nrt-monthly, which delivers near-real-time (NRT) monthly data\n* dataset-armor-3d-rep-weekly, which delivers multi-year reprocessed (REP) weekly data \n* dataset-armor-3d-rep-monthly, which delivers multi-year reprocessed (REP) monthly data\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00052\n\n\n**Product Citation**: \nPlease refer to our Technical FAQ for citing products: http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169.\n\n**References:**\n\n* Guinehut S., A.-L. Dhomps, G. Larnicol and P.-Y. Le Traon, 2012: High resolution 3D temperature and salinity fields derived from in situ and satellite observations. Ocean Sci., 8(5):845\u2013857.\n* Mulet, S., M.-H. Rio, A. Mignot, S. Guinehut and R. Morrow, 2012: A new estimate of the global 3D geostrophic ocean circulation based on satellite data and in-situ measurements. Deep Sea Research Part II : Topical Studies in Oceanography, 77\u201380(0):70\u201381.\n", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00052"}, "BALTICSEA_MULTIYEAR_PHY_003_011": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,balticsea-multiyear-phy-003-011,cell-thickness,coastal-marine-environment,eastward-sea-water-velocity,in-situ-ts-profiles,level-4,marine-resources,marine-safety,model-level-number-at-sea-floor,multi-year,northward-sea-water-velocity,numerical-model,ocean-mixed-layer-thickness-defined-by-sigma-theta,oceanographic-geographical-features,sea-binary-mask,sea-floor-depth-below-geoid,sea-ice-area-fraction,sea-ice-thickness,sea-surface-height-above-geoid,sea-surface-height-above-sea-level,sea-water-potential-temperature,sea-water-potential-temperature-at-sea-floor,sea-water-salinity,sea-water-salinity(at-bottom),sst,target-application#seaiceclimate,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Physics Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "This Baltic Sea Physical Reanalysis product provides a reanalysis for the physical conditions for the whole Baltic Sea area, inclusive the Transition Area to the North Sea, from January 1993 and up to minus maximum 1 year relative to real time. The product is produced by using the ice-ocean model system Nemo. All variables are avalable as daily, monthly and annual means and include sea level, ice concentration, ice thickness, salinity, temperature, horizonal velocities and the mixed layer depths. The data are available at the native model resulution (1 nautical mile horizontal resolution, and 56 vertical layers).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00013", "providers": [{"name": "DMI (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00013"}, "GLOBAL_MULTIYEAR_WAV_001_032": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,global-multiyear-wav-001-032,global-ocean,invariant,level-4,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,sea-floor-depth-below-geoid,sea-surface-primary-swell-wave-from-direction,sea-surface-primary-swell-wave-mean-period,sea-surface-primary-swell-wave-significant-height,sea-surface-secondary-swell-wave-from-direction,sea-surface-secondary-swell-wave-mean-period,sea-surface-secondary-swell-wave-significant-height,sea-surface-wave-from-direction,sea-surface-wave-from-direction-at-variance-spectral-density-maximum,sea-surface-wave-mean-period-from-variance-spectral-density-inverse-frequency-moment,sea-surface-wave-mean-period-from-variance-spectral-density-second-frequency-moment,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,sea-surface-wave-stokes-drift-x-velocity,sea-surface-wave-stokes-drift-y-velocity,sea-surface-wind-wave-from-direction,sea-surface-wind-wave-mean-period,sea-surface-wind-wave-significant-height,significant-wave-height-(swh),weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Waves Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "GLOBAL_REANALYSIS_WAV_001_032 for the global wave reanalysis describing past sea states since years 1993. This product also bears the name of WAVERYS within the GLO-HR MFC. for correspondence to other global multi-year products like GLORYS. BIORYS. etc. The core of WAVERYS is based on the MFWAM model. a third generation wave model that calculates the wave spectrum. i.e. the distribution of sea state energy in frequency and direction on a 1/5\u00b0 irregular grid. Average wave quantities derived from this wave spectrum. such as the SWH (significant wave height) or the average wave period. are delivered on a regular 1/5\u00b0 grid with a 3h time step. The wave spectrum is discretized into 30 frequencies obtained from a geometric sequence of first member 0.035 Hz and a reason 7.5. WAVERYS takes into account oceanic currents from the GLORYS12 physical ocean reanalysis and assimilates significant wave height observed from historical altimetry missions and directional wave spectra from Sentinel 1 SAR from 2017 onwards. \n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00022", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00022"}, "BALTICSEA_ANALYSISFORECAST_BGC_003_007": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,balticsea-analysisforecast-bgc-003-007,cell-thickness,coastal-marine-environment,forecast,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,model-level-number-at-sea-floor,mole-concentration-of-ammonium-in-sea-water,mole-concentration-of-dissolved-inorganic-carbon-in-sea-water,mole-concentration-of-dissolved-molecular-oxygen-in-sea-water,mole-concentration-of-nitrate-in-sea-water,mole-concentration-of-phosphate-in-sea-water,mole-concentration-of-phytoplankton-expressed-as-carbon-in-sea-water,mole-concentration-of-silicate-in-sea-water,mole-concentration-of-zooplankton-expressed-as-carbon-in-sea-water,near-real-time,net-primary-production-of-biomass-expressed-as-carbon-per-unit-volume-in-sea-water,none,numerical-model,oceanographic-geographical-features,sea-binary-mask,sea-floor-depth-below-geoid,sea-water-ph-reported-on-total-scale,secchi-depth-of-sea-water,surface-partial-pressure-of-carbon-dioxide-in-sea-water,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Biogeochemistry Analysis and Forecast", "missionStartDate": "2020-10-01T00:00:00Z", "abstract": "This Baltic Sea biogeochemical model product provides forecasts for the biogeochemical conditions in the Baltic Sea. The Baltic forecast is updated daily providing a new six days forecast. Three different datasets are provided. One with daily means and one with monthly means values for these parameters: nitrate, phosphate, chl-a, ammonium, dissolved oxygen, ph, phytoplankton, zooplankton, silicate, dissolved inorganic carbon, and partial pressure of co2 at the surface. Instantaenous values for the Secchi Depth and light attenuation valid for noon (12Z) are included in the daily mean files/dataset. Additionally a third dataset with daily accumulated values of the netto primary production is available. The product is produced by the biogeochemical model ERGOM (Neumann, 2000) one way coupled to a Baltic Sea set up of the NEMO ocean model, which provides the CMEMS Baltic physical ocean forecast product (BALTICSEA_ANALYSISFORECAST_PHY_003_006). This biogeochemical product is provided at the models native grid with a resolution of 1 nautical mile in the horizontal, and up to 56 vertical depth levels. The product covers the Baltic Sea including the transition area towards the North Sea (i.e. the Danish Belts, the Kattegat and Skagerrak).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00009", "providers": [{"name": "SMHI (Sweden)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00009"}, "BALTICSEA_MULTIYEAR_BGC_003_012": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,balticsea-multiyear-bgc-003-012,cell-thickness,coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,model-level-number-at-sea-floor,mole-concentration-of-ammonium-in-sea-water,mole-concentration-of-dissolved-molecular-oxygen-in-sea-water,mole-concentration-of-dissolved-molecular-oxygen-in-sea-water(at-bottom),mole-concentration-of-nitrate-in-sea-water,mole-concentration-of-phosphate-in-sea-water,multi-year,net-primary-production-of-biomass-expressed-as-carbon-per-unit-volume-in-sea-water(daily-accumulated),none,numerical-model,oceanographic-geographical-features,sea-binary-mask,sea-floor-depth-below-geoid,sea-water-ph-reported-on-total-scale,secchi-depth-of-sea-water,surface-partial-pressure-of-carbon-dioxide-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Biogeochemistry Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "This Baltic Sea Biogeochemical Reanalysis product provides a biogeochemical reanalysis for the whole Baltic Sea area, inclusive the Transition Area to the North Sea, from January 1993 and up to minus maximum 1 year relative to real time. The product is produced by using the biogeochemical model ERGOM one-way online-coupled with the ice-ocean model system Nemo. All variables are avalable as daily, monthly and annual means and include nitrate, phosphate, ammonium, dissolved oxygen, ph, chlorophyll-a, secchi depth, surface partial co2 pressure and net primary production. The data are available at the native model resulution (1 nautical mile horizontal resolution, and 56 vertical layers).\n\n**DOI (product):**\n\nhttps://doi.org/10.48670/moi-00012", "providers": [{"name": "DMI (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00012"}, "MULTIOBS_GLO_PHY_S_SURFACE_MYNRT_015_013": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,global-ocean,in-situ-observation,level-4,marine-resources,marine-safety,multi-year,multiobs-glo-phy-s-surface-mynrt-015-013,near-real-time,none,oceanographic-geographical-features,satellite-observation,sea-surface-density,sea-surface-salinity,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Multi Observation Global Ocean Sea Surface Salinity and Sea Surface Density", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "This product consits of daily global gap-free Level-4 (L4) analyses of the Sea Surface Salinity (SSS) and Sea Surface Density (SSD) at 1/8\u00b0 of resolution, obtained through a multivariate optimal interpolation algorithm that combines sea surface salinity images from multiple satellite sources as NASA\u2019s Soil Moisture Active Passive (SMAP) and ESA\u2019s Soil Moisture Ocean Salinity (SMOS) satellites with in situ salinity measurements and satellite SST information. The product was developed by the Consiglio Nazionale delle Ricerche (CNR) and includes 4 datasets:\n* cmems_obs-mob_glo_phy-sss_nrt_multi_P1D, which provides near-real-time (NRT) daily data\n* cmems_obs-mob_glo_phy-sss_nrt_multi_P1M, which provides near-real-time (NRT) monthly data\n* cmems_obs-mob_glo_phy-sss_my_multi_P1D, which provides multi-year reprocessed (REP) daily data \n* cmems_obs-mob_glo_phy-sss_my_multi_P1M, which provides multi-year reprocessed (REP) monthly data \n\n**Product citation**: \nPlease refer to our Technical FAQ for citing products: http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00051\n\n**References:**\n\n* Droghei, R., B. Buongiorno Nardelli, and R. Santoleri, 2016: Combining in-situ and satellite observations to retrieve salinity and density at the ocean surface. J. Atmos. Oceanic Technol. doi:10.1175/JTECH-D-15-0194.1.\n* Buongiorno Nardelli, B., R. Droghei, and R. Santoleri, 2016: Multi-dimensional interpolation of SMOS sea surface salinity with surface temperature and in situ salinity data. Rem. Sens. Environ., doi:10.1016/j.rse.2015.12.052.\n* Droghei, R., B. Buongiorno Nardelli, and R. Santoleri, 2018: A New Global Sea Surface Salinity and Density Dataset From Multivariate Observations (1993\u20132016), Front. Mar. Sci., 5(March), 1\u201313, doi:10.3389/fmars.2018.00084.\n* Sammartino, Michela, Salvatore Aronica, Rosalia Santoleri, and Bruno Buongiorno Nardelli. (2022). Retrieving Mediterranean Sea Surface Salinity Distribution and Interannual Trends from Multi-Sensor Satellite and In Situ Data, Remote Sensing 14, 2502: https://doi.org/10.3390/rs14102502.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00051"}, "OMI_HEALTH_CHL_ATLANTIC_OCEANCOLOUR_area_averaged_mean": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,coastal-marine-environment,iberian-biscay-irish-seas,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-in-seawater,mediterranean-sea,multi-year,oceanographic-geographical-features,omi-health-chl-atlantic-oceancolour-area-averaged-mean,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "North Atlantic Ocean Chlorophyll-a time series and trend from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe time series are derived from the regional chlorophyll reprocessed (REP) products as distributed by CMEMS which, in turn, result from the application of the regional chlorophyll algorithms over remote sensing reflectances (Rrs) provided by the ESA Ocean Colour Climate Change Initiative (ESA OC-CCI, Sathyendranath et al. 2019; Jackson 2020). Daily regional mean values are calculated by performing the average (weighted by pixel area) over the region of interest. A fixed annual cycle is extracted from the original signal, using the Census-I method as described in Vantrepotte et al. (2009). The deseasonalised time series is derived by subtracting the mean seasonal cycle from the original time series, and then fitted to a linear regression to, finally, obtain the linear trend. \n\n**CONTEXT**\n\nPhytoplankton \u2013 and chlorophyll concentration as a proxy for phytoplankton \u2013 respond rapidly to changes in environmental conditions, such as temperature, light and nutrients availability, and mixing. The response in the North Atlantic ranges from cyclical to decadal oscillations (Henson et al., 2009); it is therefore of critical importance to monitor chlorophyll concentration at multiple temporal and spatial scales, in order to be able to separate potential long-term climate signals from natural variability in the short term. In particular, phytoplankton in the North Atlantic are known to respond to climate variability associated with the North Atlantic Oscillation (NAO), with the initiation of the spring bloom showing a nominal correlation with sea surface temperature and the NAO index (Zhai et al., 2013).\n\n**CMEMS KEY FINDINGS**\n\nWhile the overall trend average for the 1997-2021 period in the North Atlantic Ocean is slightly positive (0.16 \u00b1 0.12 % per year), an underlying low frequency harmonic signal can be seen in the deseasonalised data. The annual average for the region in 2021 is 0.25 mg m-3. Though no appreciable changes in the timing of the spring and autumn blooms have been observed during 2021, a lower peak chlorophyll concentration is observed in the timeseries extension. This decrease in peak concentration with respect to the previous year is contributing to the reduction trend.\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00194\n\n**References:**\n\n* Henson, S. A., Dunne, J. P. , and Sarmiento, J. L., 2009, Decadal variability in North Atlantic phytoplankton blooms, J. Geophys. Res., 114, C04013, doi:10.1029/2008JC005139.\n* Jackson, T. (2020) OC-CCI Product User Guide (PUG). ESA/ESRIN Report. D4.2PUG, 2020-10-12. Issue:v4.2. https://docs.pml.space/share/s/okB2fOuPT7Cj2r4C5sppDg\n* Sathyendranath, S., Pardo, S., Benincasa, M., Brando, V. E., Brewin, R. J.W., M\u00e9lin, F., Santoleri, R., 2018, 1.5. Essential Variables: Ocean Colour in Copernicus Marine Service Ocean State Report - Issue 2, Journal of Operational Oceanography, 11:sup1, 1-142, doi: 10.1080/1755876X.2018.1489208\n* Sathyendranath, S, Brewin, RJW, Brockmann, C, Brotas, V, Calton, B, Chuprin, A, Cipollini, P, Couto, AB, Dingle, J, Doerffer, R, Donlon, C, Dowell, M, Farman, A, Grant, M, Groom, S, Horseman, A, Jackson, T, Krasemann, H, Lavender, S, Martinez-Vicente, V, Mazeran, C, M\u00e9lin, F, Moore, TS, Mu\u0308ller, D, Regner, P, Roy, S, Steele, CJ, Steinmetz, F, Swinton, J, Taberner, M, Thompson, A, Valente, A, Zu\u0308hlke, M, Brando, VE, Feng, H, Feldman, G, Franz, BA, Frouin, R, Gould, Jr., RW, Hooker, SB, Kahru, M, Kratzer, S, Mitchell, BG, Muller-Karger, F, Sosik, HM, Voss, KJ, Werdell, J, and Platt, T (2019) An ocean-colour time series for use in climate studies: the experience of the Ocean-Colour Climate Change Initiative (OC-CCI). Sensors: 19, 4285. doi:10.3390/s19194285\n* Vantrepotte, V., M\u00e9lin, F., 2009. Temporal variability of 10-year global SeaWiFS time series of phytoplankton chlorophyll-a concentration. ICES J. Mar. Sci., 66, 1547-1556. doi: 10.1093/icesjms/fsp107.\n* Zhai, L., Platt, T., Tang, C., Sathyendranath, S., Walne, A., 2013. The response of phytoplankton to climate variability associated with the North Atlantic Oscillation, Deep Sea Research Part II: Topical Studies in Oceanography, 93, 159-168, doi: 10.1016/j.dsr2.2013.04.009.\n", "providers": [{"name": "PML (UK)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00194"}, "BALTICSEA_REANALYSIS_WAV_003_015": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,balticsea-reanalysis-wav-003-015,coastal-marine-environment,level-4,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,sea-surface-wave-mean-period-from-variance-spectral-density-second-frequency-moment,sea-surface-wave-significant-height,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Wave Hindcast", "missionStartDate": "1993-01-01T01:00:00Z", "abstract": "This Baltic Sea wave model hindcast product provides a hindcast for the wave conditions in the Baltic Sea since 1/1 1993 and up to 0.5-1 year compared to real time.\nThis hindcast product consists of a dataset with hourly data for significant wave height, wave period and wave direction for total sea, wind sea and swell, and also Stokes drift. Additionally a dataset with monthly climatology are provided for the significant wave height and the wave period. The product is based on the wave model WAM cycle 4.6.2, and surface forcing from ECMWF's ERA5 reanalysis products. The product grid has a horizontal resolution of 1 nautical mile. The area covers the Baltic Sea including the transition area towards the North Sea (i.e. the Danish Belts, the Kattegat and Skagerrak). The product provides hourly instantaneously model data.\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00014", "providers": [{"name": "FMI (Finland)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00014"}, "BALTIC_OMI_WMHE_mbi_bottom_salinity_arkona_bornholm": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-omi-wmhe-mbi-bottom-salinity-arkona-bornholm,baltic-sea,coastal-marine-environment,in-situ-observation,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,satellite-observation,sea-water-salinity,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Major Baltic Inflow: bottom salinity from Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nMajor Baltic Inflows bring large volumes of saline and oxygen-rich water into the bottom layers of the deep basins of the Baltic Sea- Bornholm basin, Gdansk basin and Gotland basin. The Major Baltic Inflows occur seldom, sometimes many years apart (Mohrholz, 2018). The Major Baltic Inflow OMI consists of the time series of the bottom layer salinity in the Arkona basin and in the Bornholm basin and the time-depth plot of temperature, salinity and dissolved oxygen concentration in the Gotland basin (BALTIC_OMI_WMHE_mbi_sto2tz_gotland). Bottom salinity increase in the Arkona basin is the first indication of the saline water inflow, but not necessarily Major Baltic Inflow. Abrupt increase of bottom salinity of 2-3 units in the more downstream Bornholm basin is a solid indicator that Major Baltic Inflow has occurred.\n\n**CONTEXT**\n\nThe Baltic Sea is a huge brackish water basin in Northern Europe whose salinity is controlled by its freshwater budget and by the water exchange with the North Sea (e.g. Neumann et al., 2017). The saline and oxygenated water inflows to the Baltic Sea through the Danish straits, especially the Major Baltic Inflows, occur only intermittently (e.g. Mohrholz, 2018). Long-lasting periods of oxygen depletion in the deep layers of the central Baltic Sea accompanied by a salinity decline and the overall weakening of vertical stratification are referred to as stagnation periods. Extensive stagnation periods occurred in the 1920s/1930s, in the 1950s/1960s and in the 1980s/beginning of 1990s Lehmann et al., 2022). Bottom salinity variations in the Arkona Basin represent water exchange between the Baltic Sea and Skagerrak-Kattegat area. The increasing salinity signal in that area does not indicate that a Major Baltic Inflow has occurred. The mean sea level of the Baltic Sea derived from satellite altimetry data can be used as a proxy for the detection of saline water inflows to the Baltic Sea from the North Sea (Raudsepp et al., 2018). The medium and strong inflow events increase oxygen concentration in the near-bottom layer of the Bornholm Basin while some medium size inflows have no impact on deep water salinity (Mohrholz, 2018).\n\n**CMEMS KEY FINDINGS**\n\nTime series of the bottom salinity variations in the Arkona basin allow a monitoring of the sporadic nature of the water inflow/outflow events. Bottom salinity in the Arkona basin varies in the range of 11 to 25 g/kg. The maximum bottom salinity value corresponds to the Major Baltic Inflow in 2014. The other peak salinity values correspond to the Major Baltic Inflows in 1993 and 2002. Episodes of low salinity in the Arkona Basin indicate the time instances of barotropic outflows of brackish water from the Baltic Sea. The bottom salinity signal in the Bornholm basin shows three Major Baltic Inflow events, i.e. the first in 1993, then in 2002 and the last one in 2014. The bottom salinity of the Bornholm basin increased to 20 g/kg as a consequence of the last Major Baltic Inflow. Since then, the salinity in the Bornholm basin has decreased from 20 to the level of 16 g/kg in eight years. There was no Major Baltic Inflow in winter 2022/23.\n\n**Figure caption**\n\nTime series of bottom salinity in the Arkona and Bornholm Basins for the period of 1993-2022, derived from regional Copernicus Marine Service reanalysis (BALTICSEA_MULTIYEAR_PHY_003_011) (a). Location of the Arkona and Bornholm Basins shown on (b).\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00209\n\n**References:**\n\n* Lehmann, A., Myrberg, K., Post, P., Chubarenko, I., Dailidiene, I., Hinrichsen, H.-H., H\u00fcssy, K., Liblik, T., Meier, H. E. M., Lips, U., Bukanova, T., 2022. Salinity dynamics of the Baltic Sea. Earth System Dynamics, 13(1), pp 373 - 392. doi:10.5194/esd-13-373-2022\n* Mohrholz V, 2018, Major Baltic Inflow Statistics \u2013 Revised. Frontiers in Marine Science, 5:384, doi: 10.3389/fmars.2018.00384\n* Neumann, T., Radtke, H., Seifert, T., 2017. On the importance of Major Baltic In\ufb02ows for oxygenation of the central Baltic Sea, J. Geophys. Res. Oceans, 122, 1090\u20131101, doi:10.1002/2016JC012525.\n* Raudsepp, U., Legeais, J.-F., She, J., Maljutenko, I., Jandt, S., 2018. Baltic inflows. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s13\u2013s16, doi: 10.1080/1755876X.2018.1489208\n", "providers": [{"name": "SMHI (Sweden)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00209"}, "GLOBAL_OMI_OHC_area_averaged_anomalies_0_2000": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-ohc-area-averaged-anomalies-0-2000,in-situ-observation,integral-of-sea-water-potential-temperature-wrt-depth-expressed-as-heat-content,integral-of-sea-water-temperature-wrt-depth-expressed-as-heat-content,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Heat Content (0-2000m) time series and trend from Reanalysis & Multi-Observations Reprocessing", "missionStartDate": "2005-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nEstimates of Ocean Heat Content (OHC) are obtained from integrated differences of the measured temperature and a climatology along a vertical profile in the ocean (von Schuckmann et al., 2018). The regional OHC values are then averaged from 60\u00b0S-60\u00b0N aiming \ni)\tto obtain the mean OHC as expressed in Joules per meter square (J/m2) to monitor the large-scale variability and change.\nii)\tto monitor the amount of energy in the form of heat stored in the ocean (i.e. the change of OHC in time), expressed in Watt per square meter (W/m2). \nOcean heat content is one of the six Global Climate Indicators recommended by the World Meterological Organisation for Sustainable Development Goal 13 implementation (WMO, 2017).\n\n**CONTEXT**\n\nKnowing how much and where heat energy is stored and released in the ocean is essential for understanding the contemporary Earth system state, variability and change, as the ocean shapes our perspectives for the future (von Schuckmann et al., 2020). Variations in OHC can induce changes in ocean stratification, currents, sea ice and ice shelfs (IPCC, 2019; 2021); they set time scales and dominate Earth system adjustments to climate variability and change (Hansen et al., 2011); they are a key player in ocean-atmosphere interactions and sea level change (WCRP, 2018) and they can impact marine ecosystems and human livelihoods (IPCC, 2019).\n\n**CMEMS KEY FINDINGS**\n\nSince the year 2005, the upper (0-2000m) near-global (60\u00b0S-60\u00b0N) ocean warms at a rate of 1.0 \u00b1 0.1 W/m2. \n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00235\n\n**References:**\n\n* Hansen, J., Sato, M., Kharecha, P., & von Schuckmann, K. (2011). Earth\u2019s energy imbalance and implications. Atmos. Chem. Phys., 11(24), 13421\u201313449. https://doi.org/10.5194/acp-11-13421-2011\n* IPCC Special Report on the Ocean and Cryosphere in a Changing Climate. (2019). In H. O. P\u00f6rtner, D. C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Nicolai, A. Okem, J. Petzold, B. Rama, & N. M. Weyer (Eds.), IPCC Intergovernmental Panel on Climate Change: Geneva, Switzerland. https://www.ipcc.ch/srocc/\n* IPCC, 2021: Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [Masson-Delmotte, V., P. Zhai, A. Pirani, S.L. Connors, C. P\u00e9an, S. Berger, N. Caud, Y. Chen, L. Goldfarb, M.I. Gomis, M. Huang, K. Leitzell, E. Lonnoy, J.B.R. Matthews, T.K. Maycock, T. Waterfield, O. Yelek\u00e7i, R. Yu, and B. Zhou (eds.)]. Cambridge University Press. In Press.\n* von Schuckmann, K., A. Storto, S. Simoncelli, R. Raj, A. Samuelsen, A. de Pascual Collar, M. Garcia Sotillo, T. Szerkely, M. Mayer, D. Peterson, H. Zuo, G. Garric, M. Monier, 2018: Ocean heat content. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s13\u2013s16, DOI: 10.1080/1755876X.2018.1489208\n* von Schuckmann, K., Cheng, L., Palmer, M. D., Tassone, C., Aich, V., Adusumilli, S., Beltrami, H., Boyer, T., Cuesta-Valero, F. J., Desbruy\u00e8res, D., Domingues, C., Garc\u00eda-Garc\u00eda, A., Gentine, P., Gilson, J., Gorfer, M., Haimberger, L., Ishii, M., Johnson, G. C., Killik, R., \u2026 Wijffels, S. E. (2020). Heat stored in the Earth system: Where does the energy go? The GCOS Earth heat inventory team. Earth Syst. Sci. Data Discuss., 2020, 1\u201345. https://doi.org/10.5194/essd-2019-255\n* von Schuckmann, K., & Le Traon, P.-Y. (2011). How well can we derive Global Ocean Indicators from Argo data? Ocean Sci., 7(6), 783\u2013791. https://doi.org/10.5194/os-7-783-2011\n* WCRP (2018). Global sea-level budget 1993\u2013present. Earth Syst. Sci. Data, 10(3), 1551\u20131590. https://doi.org/10.5194/essd-10-1551-2018\n* WMO, 2017: World Meterological Organisation Bulletin, 66(2), https://public.wmo.int/en/resources/bulletin.\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00235"}, "OMI_CLIMATE_OHC_IBI_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,in-situ-observation,integral-wrt-depth-of-sea-water-potential-temperature-expressed-as-heat-content,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,omi-climate-ohc-ibi-area-averaged-anomalies,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Iberia Biscay Ireland Ocean Heat Content Anomaly (0-2000m) time series and trend from Reanalysis & Multi-Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nOcean heat content (OHC) is defined here as the deviation from a reference period (1993-2020) and is closely proportional to the average temperature change from z1 = 0 m to z2 = 2000 m depth. \nWith a reference density of \u03c10 = 1030 kgm-3 and a specific heat capacity of cp = 3980 J/kg\u00b0C (e.g. von Schuckmann et al., 2009)\nAveraged time series for ocean heat content and their error bars are calculated for the Iberia-Biscay-Ireland region (26\u00b0N, 56\u00b0N; 19\u00b0W, 5\u00b0E).\nThis OMI is computed using IBI-MYP, GLO-MYP reanalysis and CORA, ARMOR data from observations which provide temperatures. Where the CMEMS product for each acronym is:\n* IBI-MYP: IBI_MULTIYEAR_PHY_005_002 (Reanalysis)\n* GLO-MYP: GLOBAL_REANALYSIS_PHY_001_031 (Reanalysis)\n* CORA: INSITU_GLO_TS_OA_REP_OBSERVATIONS_013_002_b (Observations)\n* ARMOR: MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012 (Reprocessed observations)\nThe figure comprises ensemble mean (blue line) and the ensemble spread (grey shaded). Details on the product are given in the corresponding PUM for this OMI as well as the CMEMS Ocean State Report: von Schuckmann et al., 2016; von Schuckmann et al., 2018.\n\n**CONTEXT**\n\nChange in OHC is a key player in ocean-atmosphere interactions and sea level change (WCRP, 2018) and can impact marine ecosystems and human livelihoods (IPCC, 2019). Additionally, OHC is one of the six Global Climate Indicators recommended by the World Meterological Organisation (WMO, 2017). \nIn the last decades, the upper North Atlantic Ocean experienced a reversal of climatic trends for temperature and salinity. While the period 1990-2004 is characterized by decadal-scale ocean warming, the period 2005-2014 shows a substantial cooling and freshening. Such variations are discussed to be linked to ocean internal dynamics, and air-sea interactions (Fox-Kemper et al., 2021; Collins et al., 2019; Robson et al 2016). Together with changes linked to the connectivity between the North Atlantic Ocean and the Mediterranean Sea (Masina et al., 2022), these variations affect the temporal evolution of regional ocean heat content in the IBI region.\n\n**CMEMS KEY FINDINGS**\n\nThe ensemble mean OHC anomaly time series over the Iberia-Biscay-Ireland region are dominated by strong year-to-year variations, and an ocean warming trend of 0.49\u00b10.4 W/m2 is barely significant.\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00316\n\n**References:**\n\n* Collins M., M. Sutherland, L. Bouwer, S.-M. Cheong, T. Fr\u00f6licher, H. Jacot Des Combes, M. Koll Roxy, I. Losada, K. McInnes, B. Ratter, E. Rivera-Arriaga, R.D. Susanto, D. Swingedouw, and L. Tibig, 2019: Extremes, Abrupt Changes and Managing Risk. In: IPCC Special Report on the Ocean and Cryosphere in a Changing Climate [H.-O. P\u00f6rtner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Nicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. Cambridge University Press, Cambridge, UK and New York, NY, USA, pp. 589\u2013655. https://doi.org/10.1017/9781009157964.008.\n* Fox-Kemper, B., H.T. Hewitt, C. Xiao, G. A\u00f0algeirsd\u00f3ttir, S.S. Drijfhout, T.L. Edwards, N.R. Golledge, M. Hemer, R.E. Kopp, G. Krinner, A. Mix, D. Notz, S. Nowicki, I.S. Nurhati, L. Ruiz, J.-B. Sall\u00e9e, A.B.A. Slangen, and Y. Yu, 2021: Ocean, Cryosphere and Sea Level Change. In Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [Masson-Delmotte, V., P. Zhai, A. Pirani, S.L. Connors, C. P\u00e9an, S. Berger, N. Caud, Y. Chen, L. Goldfarb, M.I. Gomis, M. Huang, K. Leitzell, E. Lonnoy, J.B.R. Matthews, T.K. Maycock, T. Waterfield, O. Yelek\u00e7i, R. Yu, and B. Zhou (eds.)]. Cambridge University Press, Cambridge, United Kingdom and New York, NY, USA, pp. 1211\u20131362, doi: 10.1017/9781009157896.011.\n* IPCC Special Report on the Ocean and Cryosphere in a Changing Climate. (2019). In H. O. P\u00f6rtner, D. C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Nicolai, A. Okem, J. Petzold, B. Rama, & N. M. Weyer (Eds.), IPCC Intergovernmental Panel on Climate Change: Geneva, Switzerland. https://www.ipcc.ch/srocc/\n* Masina, S., Pinardi, N., Cipollone, A., Banerjee, D. S., Lyubartsev, V., von Schuckmann, K., Jackson, L., Escudier, R., Clementi, E., Aydogdu, A. and Iovino D., (2022). The Atlantic Meridional Overturning Circulation forcing the mean se level in the Mediterranean Sea through the Gibraltar transport. In: Copernicus Ocean State Report, Issue 6, Journal of Operational Oceanography,15:sup1, s119\u2013s126; DOI: 10.1080/1755876X.2022.2095169\n* Potter, R. A., and Lozier, M. S. 2004: On the warming and salinification of the Mediterranean outflow waters in the North Atlantic, Geophys. Res. Lett., 31, 1\u20134, doi:10.1029/2003GL018161.\n* Robson, J., Ortega, P., Sutton, R., 2016: A reversal of climatic trends in the North Atlantic since 2005. Nature Geosci 9, 513\u2013517. https://doi.org/10.1038/ngeo2727.\n* von Schuckmann, K., F. Gaillard and P.-Y. Le Traon, 2009: Global hydrographic variability patterns during 2003-2008, Journal of Geophysical Research, 114, C09007, doi:10.1029/2008JC005237.\n* von Schuckmann et al., 2016: The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography, Volume 9, 2016 - Issue sup2: The Copernicus Marine Environment Monitoring Service Ocean, http://dx.doi.org/10.1080/1755876X.2016.1273446.\n* von Schuckmann, K., Le Traon, P.-Y., Smith, N., Pascual, A., Brasseur, P., Fennel, K., Djavidnia, S., Aaboe, S., Fanjul, E. A., Autret, E., Axell, L., Aznar, R., Benincasa, M., Bentamy, A., Boberg, F., Bourdall\u00e9-Badie, R., Nardelli, B. B., Brando, V. E., Bricaud, C., \u2026 Zuo, H. (2018). Copernicus Marine Service Ocean State Report. Journal of Operational Oceanography, 11(sup1), S1\u2013S142. https://doi.org/10.1080/1755876X.2018.1489208\n* WCRP (2018). Global sea-level budget 1993\u2013present. Earth Syst. Sci. Data, 10(3), 1551\u20131590. https://doi.org/10.5194/essd-10-1551-2018\n* WMO, 2017: World Meterological Organisation Bulletin, 66(2), https://public.wmo.int/en/resources/bulletin.\n", "providers": [{"name": "NOLOGIN", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00316"}, "BLKSEA_ANALYSISFORECAST_WAV_007_003": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "black-sea,blksea-analysisforecast-wav-007-003,coastal-marine-environment,forecast,level-4,marine-resources,marine-safety,near-real-time,numerical-model,oceanographic-geographical-features,sea-binary-mask,sea-floor-depth-below-geoid,sea-surface-primary-swell-wave-from-direction,sea-surface-primary-swell-wave-mean-period,sea-surface-primary-swell-wave-significant-height,sea-surface-secondary-swell-wave-from-direction,sea-surface-secondary-swell-wave-mean-period,sea-surface-secondary-swell-wave-significant-height,sea-surface-wave-from-direction,sea-surface-wave-from-direction-at-spectral-peak,sea-surface-wave-maximum-crest-height,sea-surface-wave-maximum-height,sea-surface-wave-maximum-period,sea-surface-wave-mean-period-from-variance-spectral-density-inverse-frequency-moment,sea-surface-wave-mean-period-from-variance-spectral-density-second-frequency-moment,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,sea-surface-wave-stokes-drift-x-velocity,sea-surface-wave-stokes-drift-y-velocity,sea-surface-wind-wave-from-direction,sea-surface-wind-wave-mean-period,sea-surface-wind-wave-significant-height,significant-wave-height-(swh),weather-climate-and-seasonal-forecasting,wind-speed", "license": "proprietary", "title": "Black Sea Waves Analysis and Forecast", "missionStartDate": "2021-04-16T12:00:00Z", "abstract": "The wave analysis and forecasts for the Black Sea are produced with the third generation spectral wave model WAM Cycle 6. The hindcast and ten days forecast are produced twice a day on the HPC at Helmholtz-Zentrum Hereon. The shallow water Black Sea version is implemented on a spherical grid with a spatial resolution of about 2.5 km (1/40\u00b0 x 1/40\u00b0) with 24 directional and 30 frequency bins. The number of active wave model grid points is 74518. The model takes into account depth refraction, wave breaking, and assimilation of satellite wave and wind data. The system provides a hindcast and ten days forecast with one-hourly output twice a day. The atmospheric forcing is taken from ECMWF analyses and forecast data. Additionally, WAM is forced by surface currents and sea surface height from BLKSEA_ANALYSISFORECAST_PHY_007_001. Monthly statistics are provided operationally on the Product Quality Dashboard following the CMEMS metrics definitions.\n\n**Product Citation**: \nPlease refer to our Technical FAQ for citing products. http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169\n\n**DOI (Product)**: \nhttps://doi.org/10.25423/cmcc/blksea_analysisforecast_wav_007_003_eas5\n\n**References:**\n\n* Staneva, J., Ricker, M., & Behrens, A. (2022). Black Sea Waves Analysis and Forecast (CMEMS BS-Waves, EAS5 system) (Version 1) [Data set]. Copernicus Monitoring Environment Marine Service (CMEMS). https://doi.org/10.25423/CMCC/BLKSEA_ANALYSISFORECAST_WAV_007_003_EAS5\n", "providers": [{"name": "Hereon (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.25423/cmcc/blksea_analysisforecast_wav_007_003_eas5"}, "OMI_HEALTH_CHL_GLOBAL_OCEANCOLOUR_oligo_nag_area_mean": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "area-type-oligotropic-gyre,coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-in-seawater-for-averaged-mean,multi-year,oceanographic-geographical-features,omi-health-chl-global-oceancolour-oligo-nag-area-mean,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "North Atlantic Gyre Area Chlorophyll-a time series and trend from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nOligotrophic subtropical gyres are regions of the ocean with low levels of nutrients required for phytoplankton growth and low levels of surface chlorophyll-a whose concentration can be quantified through satellite observations. The gyre boundary has been defined using a threshold value of 0.15 mg m-3 chlorophyll for the Atlantic gyres (Aiken et al. 2016), and 0.07 mg m-3 for the Pacific gyres (Polovina et al. 2008). The area inside the gyres for each month is computed using monthly chlorophyll data from which the monthly climatology is subtracted to compute anomalies. A gap filling algorithm has been utilized to account for missing data. Trends in the area anomaly are then calculated for the entire study period (September 1997 to December 2021).\n\n**CONTEXT**\n\nOligotrophic gyres of the oceans have been referred to as ocean deserts (Polovina et al. 2008). They are vast, covering approximately 50% of the Earth\u2019s surface (Aiken et al. 2016). Despite low productivity, these regions contribute significantly to global productivity due to their immense size (McClain et al. 2004). Even modest changes in their size can have large impacts on a variety of global biogeochemical cycles and on trends in chlorophyll (Signorini et al. 2015). Based on satellite data, Polovina et al. (2008) showed that the areas of subtropical gyres were expanding. The Ocean State Report (Sathyendranath et al. 2018) showed that the trends had reversed in the Pacific for the time segment from January 2007 to December 2016. \n\n**CMEMS KEY FINDINGS**\n\nThe trend in the North Atlantic gyre area for the 1997 Sept \u2013 2021 December period was positive, with a 0.14% year-1 increase in area relative to 2000-01-01 values. This trend has decreased compared with the 1997-2019 trend of 0.39%, and is no longer statistically significant (p>0.05). \nDuring the 1997 Sept \u2013 2021 December period, the trend in chlorophyll concentration was negative (-0.21% year-1) inside the North Atlantic gyre relative to 2000-01-01 values. This is a slightly lower rate of change compared with the -0.24% trend for the 1997-2020 period but is still statistically significant (p<0.05).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00226\n\n**References:**\n\n* Aiken J, Brewin RJW, Dufois F, Polimene L, Hardman-Mountford NJ, Jackson T, Loveday B, Hoya SM, Dall\u2019Olmo G, Stephens J, et al. 2016. A synthesis of the environmental response of the North and South Atlantic sub-tropical gyres during two decades of AMT. Prog Oceanogr. doi:10.1016/j.pocean.2016.08.004.\n* McClain CR, Signorini SR, Christian JR 2004. Subtropical gyre variability observed by ocean-color satellites. Deep Sea Res Part II Top Stud Oceanogr. 51:281\u2013301. doi:10.1016/j.dsr2.2003.08.002.\n* Polovina JJ, Howell EA, Abecassis M 2008. Ocean\u2019s least productive waters are expanding. Geophys Res Lett. 35:270. doi:10.1029/2007GL031745.\n* Sathyendranath S, Pardo S, Brewin RJW. 2018. Oligotrophic gyres. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s13\u2013s16, DOI: 10.1080/1755876X.2018.1489208\n* Signorini SR, Franz BA, McClain CR 2015. Chlorophyll variability in the oligotrophic gyres: mechanisms, seasonality and trends. Front Mar Sci. 2. doi:10.3389/fmars.2015.00001.\n", "providers": [{"name": "PML (UK)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00226"}, "OMI_HEALTH_CHL_ARCTIC_OCEANCOLOUR_area_averaged_mean": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-in-seawater,multi-year,oceanographic-geographical-features,omi-health-chl-arctic-oceancolour-area-averaged-mean,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean Chlorophyll-a time series and trend from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe time series are derived from the regional chlorophyll reprocessed (REP) products as distributed by CMEMS which, in turn, result from the application of the regional chlorophyll algorithms to remote sensing reflectances (Rrs) provided by the ESA Ocean Colour Climate Change Initiative (ESA OC-CCI, Sathyendranath et al. 2019; Jackson 2020). Daily regional mean values are calculated by performing the average (weighted by pixel area) over the region of interest. A fixed annual cycle is extracted from the original signal, using the Census-I method as described in Vantrepotte et al. (2009). The deasonalised time series is derived by subtracting the seasonal cycle from the original time series, and then fitted to a linear regression to, finally, obtain the linear trend. \n\n**CONTEXT**\n\nPhytoplankton \u2013 and chlorophyll concentration , which is a measure of phytoplankton concentration \u2013 respond rapidly to changes in environmental conditions. Chlorophyll concentration is highly seasonal in the Arctic Ocean region due to a strong dependency on light and nutrient availability, which in turn are driven by seasonal sunlight and sea-ice cover dynamics, as well as changes in mixed layer. In the past two decades, an increase in annual net primary production by Arctic Ocean phytoplankton has been observed and linked to sea-ice decline (Arrigo and van Dijken, 2015); in the same line Kahru et al. (2011) have showed that chlorophyll concentration peaks are appearing increasingly earlier in the year in parts of the Arctic. It is therefore of critical importance to monitor chlorophyll concentration at multiple temporal and spatial scales in the area, in order to be able to separate potential long-term climate signals from natural variability in the short term.\n\n**CMEMS KEY FINDINGS**\n\nWhile the overall trend average for the 1997-2021 period in the Arctic Sea is positive (0.86 \u00b1 0.17 % per year), a continued plateau in the linear trend, initiated in 2013 is observed in the time series extension, with both the amplitude and the baseline of the cycle continuing to decrease during 2021 as reported for previous years (Sathyendranath et al., 2018). In particular, the annual average for the region in 2021 is 1.05 mg m-3 - a 30% reduction on 2020 values. There appears to be no appreciable changes in the timings or amplitude of the 2021 spring and autumn blooms. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00188\n\n**References:**\n\n* Arrigo, K. R., & van Dijken, G. L., 2015. Continued increases in Arctic Ocean primary production. Progress in Oceanography, 136, 60\u201370. doi: 10.1016/j.pocean.2015.05.002.\n* Kahru, M., Brotas, V., Manzano\u2010Sarabia, M., Mitchell, B. G., 2011. Are phytoplankton blooms occurring earlier in the Arctic? Global Change Biology, 17(4), 1733\u20131739. doi:10.1111/j.1365\u20102486.2010.02312.x.\n* Jackson, T. (2020) OC-CCI Product User Guide (PUG). ESA/ESRIN Report. D4.2PUG, 2020-10-12. Issue:v4.2. https://docs.pml.space/share/s/okB2fOuPT7Cj2r4C5sppDg\n* Sathyendranath, S., Pardo, S., Benincasa, M., Brando, V. E., Brewin, R. J.W., M\u00e9lin, F., Santoleri, R., 2018. 1.5. Essential Variables: Ocean Colour in Copernicus Marine Service Ocean State Report - Issue 2, Journal of Operational Oceanography, 11:sup1, 1-142, doi: 10.1080/1755876X.2018.1489208\n* Sathyendranath, S, Brewin, RJW, Brockmann, C, Brotas, V, Calton, B, Chuprin, A, Cipollini, P, Couto, AB, Dingle, J, Doerffer, R, Donlon, C, Dowell, M, Farman, A, Grant, M, Groom, S, Horseman, A, Jackson, T, Krasemann, H, Lavender, S, Martinez-Vicente, V, Mazeran, C, M\u00e9lin, F, Moore, TS, Mu\u0308ller, D, Regner, P, Roy, S, Steele, CJ, Steinmetz, F, Swinton, J, Taberner, M, Thompson, A, Valente, A, Zu\u0308hlke, M, Brando, VE, Feng, H, Feldman, G, Franz, BA, Frouin, R, Gould, Jr., RW, Hooker, SB, Kahru, M, Kratzer, S, Mitchell, BG, Muller-Karger, F, Sosik, HM, Voss, KJ, Werdell, J, and Platt, T (2019) An ocean-colour time series for use in climate studies: the experience of the Ocean-Colour Climate Change Initiative (OC-CCI). Sensors: 19, 4285. doi:10.3390/s19194285\n* Vantrepotte, V., M\u00e9lin, F., 2009. Temporal variability of 10-year global SeaWiFS time series of phytoplankton chlorophyll-a concentration. ICES J. Mar. Sci., 66, 1547-1556. 10.1093/icesjms/fsp107.\n", "providers": [{"name": "PML (UK)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00188"}, "NWSHELF_MULTIYEAR_PHY_004_009": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,eastward-sea-water-velocity,in-situ-ts-profiles,level-4,marine-resources,marine-safety,multi-year,north-west-shelf-seas,northward-sea-water-velocity,numerical-model,nwshelf-multiyear-phy-004-009,ocean-mixed-layer-thickness-defined-by-sigma-theta,oceanographic-geographical-features,sea-surface-height-above-geoid,sea-water-potential-temperature,sea-water-potential-temperature-at-sea-floor,sea-water-salinity,sst,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic- European North West Shelf- Ocean Physics Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**Short Description:**\n\nThe ocean physics reanalysis for the North-West European Shelf is produced using an ocean assimilation model, with tides, at 7 km horizontal resolution. \nThe ocean model is NEMO (Nucleus for European Modelling of the Ocean), using the 3DVar NEMOVAR system to assimilate observations. These are surface temperature and vertical profiles of temperature and salinity. The model is forced by lateral boundary conditions from the GloSea5, one of the multi-models used by [GLOBAL_REANALYSIS_PHY_001_026](https://resources.marine.copernicus.eu/?option=com_csw&view=details&product_id=GLOBAL_REANALYSIS_PHY_001_026) and at the Baltic boundary by the [BALTICSEA_REANALYSIS_PHY_003_011](https://resources.marine.copernicus.eu/?option=com_csw&view=details&product_id=BALTICSEA_REANALYSIS_PHY_003_011). The atmospheric forcing is given by the ECMWF ERA5 atmospheric reanalysis. The river discharge is from a daily climatology. \n\nFurther details of the model, including the product validation are provided in the [CMEMS-NWS-QUID-004-009](http://catalogue.marine.copernicus.eu/documents/QUID/CMEMS-NWS-QUID-004-009.pdf). \n\nProducts are provided as monthly and daily 25-hour, de-tided, averages. The datasets available are temperature, salinity, horizontal currents, sea level, mixed layer depth, and bottom temperature. Temperature, salinity and currents, as multi-level variables, are interpolated from the model 51 hybrid s-sigma terrain-following system to 24 standard geopotential depths (z-levels). Grid-points near to the model boundaries are masked. The product is updated biannually provinding six-month extension of the time series.\n\nSee [CMEMS-NWS-PUM-004-009_011](http://catalogue.marine.copernicus.eu/documents/PUM/CMEMS-NWS-PUM-004-009_011.pdf) for further details.\n\n**Associated products:**\n\nThis model is coupled with a biogeochemistry model (ERSEM) available as CMEMS product [](https://resources.marine.copernicus.eu/?option=com_csw&view=details&product_id=NWSHELF_MULTIYEAR_BGC_004_011). An analysis-forecast product is available from [NWSHELF_ANALYSISFORECAST_PHY_LR_004_011](https://resources.marine.copernicus.eu/?option=com_csw&view=details&product_id=NWSHELF_ANALYSISFORECAST_PHY_LR_004_001).\nThe product is updated biannually provinding six-month extension of the time series.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00059", "providers": [{"name": "Met Office (UK)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00059"}, "BALTIC_OMI_TEMPSAL_Stz_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-omi-tempsal-stz-trend,baltic-sea,coastal-marine-environment,confidence-interval,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,sea-water-salinity-trend,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Subsurface Salinity trend from Reanalysis", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe subsurface salinity trends have been derived from regional reanalysis and forecast modelling results of the Copernicus Marine Service BAL MFC group for the Baltic Sea (product reference BALTICSEA_MULTIYEAR_PHY_003_011). The salinity trend has been obtained through a linear fit for each time series of horizontally averaged (13 \u00b0E - 31 \u00b0E and 53 \u00b0N - 66 \u00b0N; excluding the Skagerrak strait) annual salinity and at each depth level.\n\n**CONTEXT**\n\nThe Baltic Sea is a brackish semi-enclosed sea in North-Eastern Europe. The surface salinity varies horizontally from ~10 near the Danish Straits down to ~2 at the northernmost and easternmost sub-basins of the Baltic Sea. The halocline, a vertical layer with rapid changes of salinity with depth that separates the well-mixed surface layer from the weakly stratified layer below, is located at the depth range of 60-80 metres (Matth\u00e4us, 1984). The bottom layer salinity below the halocline depth varies from 15 in the south down to 3 in the northern Baltic Sea (V\u00e4li et al., 2013). The long-term salinity is determined by net precipitation and river discharge as well as saline water inflows from the North Sea (Lehmann et al., 2022). Long-term salinity decrease may reduce the occurrence and biomass of the Fucus vesiculosus - Idotea balthica association/symbiotic aggregations (Kotta et al., 2019). Changes in salinity and oxygen content affect the survival of the Baltic cod eggs (Raudsepp et al, 2019; von Dewitz et al., 2018).\n\n**CMEMS KEY FINDINGS**\n\nThe subsurface salinity over the 1993-2022 period shows a positive trend in the entire depth range. The salinity trend is practically negligible in the upper mixed layer of the sea. Then increases monotonically from 0.01 to 0.04 per year within the extended halocline layer between 40-120 m. The salinity trend is almost constant of 0.04-0.05 in the deep layer. In the halocline and in the deep layer, i.e. at the depth range between 60 and 250 metres the confidence interval of the trend values is wide, which indicates that this depth range is relatively dynamic.\n\n**Figure caption**\n\nThe vertical profile of horizontally averaged subsurface salinity trends for period of 1993-2022. The salinities from Copernicus Marine Service regional reanalysis product (BALTICSEA_MULTIYEAR_PHY_003_011) have been averaged over the Baltic Sea domain (13 \u00b0E - 31 \u00b0E; 53 \u00b0N - 66 \u00b0N; excluding the Skagerrak strait). The shaded area shows 95% confidence interval of calculated trend values.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00207\n\n**References:**\n\n* von Dewitz B, Tamm S, Ho\u00c8flich K, Voss R, Hinrichsen H-H., 2018. Use of existing hydrographic infrastructure to forecast the environmental spawning conditions for Eastern Baltic cod, PLoS ONE 13(5): e0196477, doi:10.1371/journal.pone.0196477\n* Kotta, J., Vanhatalo, J., J\u00e4nes, H., Orav-Kotta, H., Rugiu, L., Jormalainen, V., Bobsien, I., Viitasalo, M., Virtanen, E., Nystr\u00f6m Sandman, A., Isaeus, M., Leidenberger, S., Jonsson, P.R., Johannesson, K., 2019. Integrating experimental and distribution data to predict future species patterns. Scientific Reports, 9: 1821, doi:10.1038/s41598-018-38416-3\n* Matth\u00e4us W, 1984, Climatic and seasonal variability of oceanological parameters in the Baltic Sea, Beitr. Meereskund, 51, 29\u201349.\n* Sandrine Mulet, Bruno Buongiorno Nardelli, Simon Good, Andrea Pisano, Eric Greiner, Maeva Monier, Emmanuelle Autret, Lars Axell, Fredrik Boberg, Stefania Ciliberti, Marie Dr\u00e9villon, Riccardo Droghei, Owen Embury, J\u00e9rome Gourrion, Jacob H\u00f8yer, M\u00e9lanie Juza, John Kennedy, Benedicte Lemieux-Dudon, Elisaveta Peneva, Rebecca Reid, Simona Simoncelli, Andrea Storto, Jonathan Tinker, Karina von Schuckmann and Sarah L. Wakelin. 2018. Ocean temperature and salinity. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s5\u2013s13, DOI:10.1080/1755876X.2018.1489208\n* Raudsepp, U., Maljutenko, I., K\u00f5uts, M., 2019. 2.7 Cod reproductive volume potential in the Baltic Sea. In: Copernicus Marine Service Ocean State Report, Issue 3\n* V\u00e4li G, Meier HEM, Elken J, 2013, Simulated halocline variability in the baltic sea and its impact on hypoxia during 1961-2007, Journal of Geophysical Research: Oceans, 118(12), 6982\u20137000, DOI:10.1002/2013JC009192\n", "providers": [{"name": "SMHI (Sweden)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00207"}, "OMI_CIRCULATION_MOC_MEDSEA_area_averaged_mean": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,in-situ-ts-profiles,marine-resources,marine-safety,mediterranean-sea,multi-year,numerical-model,ocean-meridional-overturning-streamfunction,oceanographic-geographical-features,omi-circulation-moc-medsea-area-averaged-mean,sea-level,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Meridional Overturning Circulation Index from Reanalysis", "missionStartDate": "1987-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nTime mean meridional Eulerian streamfunctions are computed using the velocity field estimate provided by the Copernicus Marine Mediterranean Sea reanalysis over the last 35 years (1987\u20132021). The Eulerian meridional streamfunction is evaluated by integrating meridional velocity daily data first in a vertical direction, then in a meridional direction, and finally averaging over the reanalysis period.\nThe Mediterranean overturning indices are derived for the eastern and western Mediterranean Sea by computing the annual streamfunction in the two areas separated by the Strait of Sicily around 36.5\u00b0N, and then considering the associated maxima. \nIn each case a geographical constraint focused the computation on the main region of interest. For the western index, we focused on deep-water formation regions, thus excluding both the effect of shallow physical processes and the Gibraltar net inflow. For the eastern index, we investigate the Levantine and Cretan areas corresponding to the strongest meridional overturning cell locations, thus only a zonal constraint is defined.\nTime series of annual mean values is provided for the Mediterranean Sea using the Mediterranean 1/24o eddy resolving reanalysis (Escudier et al., 2020, 2021).\nMore details can be found in the Copernicus Marine Ocean State Report issue 4 (OSR4, von Schuckmann et al., 2020) Section 2.4 (Lyubartsev et al., 2020).\n\n**CONTEXT**\n\nThe western and eastern Mediterranean clockwise meridional overturning circulation is connected to deep-water formation processes. The Mediterranean Sea 1/24o eddy resolving reanalysis (Escudier et al., 2020, 2021) is used to show the interannual variability of the Meridional Overturning Index. Details on the product are delivered in the PUM and QUID of this OMI. \nThe Mediterranean Meridional Overturning Index is defined here as the maxima of the clockwise cells in the eastern and western Mediterranean Sea and is associated with deep and intermediate water mass formation processes that occur in specific areas of the basin: Gulf of Lion, Southern Adriatic Sea, Cretan Sea and Rhodes Gyre (Pinardi et al., 2015).\nAs in the global ocean, the overturning circulation of the western and eastern Mediterranean are paramount to determine the stratification of the basins (Cessi, 2019). In turn, the stratification and deep water formation mediate the exchange of oxygen and other tracers between the surface and the deep ocean (e.g., Johnson et al., 2009; Yoon et al., 2018). In this sense, the overturning indices are potential gauges of the ecosystem health of the Mediterranean Sea, and in particular they could instruct early warning indices for the Mediterranean Sea to support the Sustainable Development Goal (SDG) 13 Target 13.3.\n\n**CMEMS KEY FINDINGS**\n\nThe western and eastern Mediterranean overturning indices (WMOI and EMOI) are synthetic indices of changes in the thermohaline properties of the Mediterranean basin related to changes in the main drivers of the basin scale circulation. The western sub-basin clockwise overturning circulation is associated with the deep-water formation area of the Gulf of Lion, while the eastern clockwise meridional overturning circulation is composed of multiple cells associated with different intermediate and deep-water sources in the Levantine, Aegean, and Adriatic Seas. \nOn average, the EMOI shows higher values than the WMOI indicating a more vigorous overturning circulation in eastern Mediterranean. The difference is mostly related to the occurrence of the eastern Mediterranean transient (EMT) climatic event, and linked to a peak of the EMOI in 1992. In 1999, the difference between the two indices started to decrease because EMT water masses reached the Sicily Strait flowing into the western Mediterranean Sea (Schroeder et al., 2016). The western peak in 2006 is discussed to be linked to anomalous deep-water formation during the Western Mediterranean Transition (Smith, 2008; Schroeder et al., 2016). Thus, the WMOI and EMOI indices are a useful tool for long-term climate monitoring of overturning changes in the Mediterranean Sea. \n\n**Figure caption**\n\nTime series of Mediterranean overturning indices [Sverdrup] calculated from the annual average of the meridional streamfunction over the period 1987 to 2021. Blue: Eastern Mediterranean Overturning Index (lat<36.5\u00b0N); Red: Western Mediterranean Overturning Index (lat\u226540\u00b0N, z>300m). Product used: MEDSEA_MULTIYEAR_PHY_006_004.\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00317\n\n**References:**\n\n* Cessi, P. 2019. The global overturning circulation. Ann Rev Mar Sci. 11:249\u2013270. DOI:10.1146/annurev-marine- 010318-095241. Escudier, R., Clementi, E., Cipollone, A., Pistoia, J., Drudi, M., Grandi, A., Lyubartsev, V., Lecci, R., Aydogdu, A., Delrosso, D., Omar, M., Masina, S., Coppini, G., Pinardi, N. 2021. A High Resolution Reanalysis for the Mediterranean Sea. Frontiers in Earth Science, Vol.9, pp.1060, DOI:10.3389/feart.2021.702285.\n* Escudier, R., Clementi, E., Omar, M., Cipollone, A., Pistoia, J., Aydogdu, A., Drudi, M., Grandi, A., Lyubartsev, V., Lecci, R., Cret\u00ed, S., Masina, S., Coppini, G., & Pinardi, N. (2020). Mediterranean Sea Physical Reanalysis (CMEMS MED-Currents) (Version 1) set. Copernicus Monitoring Environment Marine Service (CMEMS). https://doi.org/10.25423/CMCC/MEDSEA_MULTIYEAR_PHY_006_004_E3R1\n* Gertman, I., Pinardi, N., Popov, Y., Hecht, A. 2006. Aegean Sea water masses during the early stages of the eastern Mediterranean climatic Transient (1988\u20131990). J Phys Oceanogr. 36(9):1841\u20131859. DOI:10.1175/JPO2940.1.\n* Johnson, K.S., Berelson, W.M., Boss, E.S., Chase, Z., Claustre, H., Emerson, S.R., Gruber, N., Ko\u0308rtzinger, A., Perry, M.J., Riser, S.C. 2009. Observing biogeochemical cycles at global scales with profiling floats and gliders: prospects for a global array. Oceanography. 22:216\u2013225. DOI:10.5670/oceanog. 2009.81.\n* Lyubartsev, V., Borile, F., Clementi, E., Masina, S., Drudi, M/. Coppini, G., Cessi, P., Pinardi, N. 2020. Interannual variability in the Eastern and Western Mediterranean Overturning Index. In: Copernicus Marine Service Ocean State Report, Issue 4, Journal of Operational Oceanography, 13:sup1, s88\u2013s91; DOI: 10.1080/1755876X.2020.1785097.\n* Pinardi, N., Cessi, P., Borile, F., Wolfe, C.L.P. 2019. The Mediterranean Sea overturning circulation. J Phys Oceanogr. 49:1699\u20131721. DOI:10.1175/JPO-D-18-0254.1.\n* Pinardi, N., Zavatarelli, M., Adani, M., Coppini, G., Fratianni, C., Oddo, P., Tonani, M., Lyubartsev, V., Dobricic, S., Bonaduce, A. 2015. Mediterranean Sea large-scale, low-frequency ocean variability and water mass formation rates from 1987 to 2007: a retrospective analysis. Prog Oceanogr. 132:318\u2013332. DOI:10.1016/j.pocean.2013.11.003.\n* Roether, W., Klein, B., Hainbucher, D. 2014. Chap 6. The eastern Mediterranean transient. In: GL Eusebi Borzelli, M Gacic, P Lionello, P Malanotte-Rizzoli, editors. The Mediterranean Sea. American Geophysical Union (AGU); p. 75\u201383. DOI:10.1002/9781118847572.ch6.\n* Roether, W., Manca, B.B., Klein, B., Bregant, D., Georgopoulos, D., Beitzel, V., Kovac\u030cevic\u0301, V., Luchetta, A. 1996. Recent changes in the eastern Mediterranean deep waters. Science. 271:333\u2013335. DOI:10.1126/science.271.5247.333.\n* Schroeder, K., Chiggiato, J., Bryden, H., Borghini, M., Ismail, S.B. 2016. Abrupt climate shift in the western Mediterranean Sea. Sci Rep. 6:23009. DOI:10.1038/srep23009.\n* Smith, R.O., Bryden, H.L., Stansfield, K. 2008. Observations of new western Mediterranean deep water formation using Argo floats 2004-2006. Ocean Science, 4 (2), 133-149.\n* Von Schuckmann, K. et al. 2020. Copernicus Marine Service Ocean State Report, Issue 4, Journal of Operational Oceanography, 13:sup1, S1-S172, DOI: 10.1080/1755876X.2020.1785097.\n* Yoon, S., Chang, K., Nam, S., Rho, T.K., Kang, D.J., Lee, T., Park, K.A., Lobanov, V., Kaplunenko, D., Tishchenko, P., Kim, K.R. 2018. Re-initiation of bottom water formation in the East Sea (Japan Sea) in a warming world. Sci Rep. 8:1576. DOI:10. 1038/s41598-018-19952-4.\n", "providers": [{"name": "CMCC (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00317"}, "BLKSEA_ANALYSISFORECAST_BGC_007_010": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "black-sea,blksea-analysisforecast-bgc-007-010,cell-thickness,coastal-marine-environment,downwelling-photosynthetic-photon-flux-in-sea-water,forecast,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,model-level-number-at-sea-floor,mole-concentration-of-dissolved-inorganic-carbon-in-sea-water,mole-concentration-of-dissolved-molecular-oxygen-in-sea-water,mole-concentration-of-nitrate-in-sea-water,mole-concentration-of-phosphate-in-sea-water,mole-concentration-of-phytoplankton-expressed-as-carbon-in-sea-water,near-real-time,net-primary-production-of-biomass-expressed-as-carbon-per-unit-volume-in-sea-water,numerical-model,oceanographic-geographical-features,satellite-chlorophyll,sea-binary-mask,sea-floor-depth-below-geoid,sea-water-alkalinity-expressed-as-mole-equivalent,sea-water-ph-reported-on-total-scale,surface-downward-mass-flux-of-carbon-dioxide-expressed-as-carbon,surface-partial-pressure-of-carbon-dioxide-in-sea-water,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea Biogeochemistry Analysis and Forecast", "missionStartDate": "2020-11-01T00:00:00Z", "abstract": "BLKSEA_ANALYSISFORECAST_BGC_007_010 is the nominal product of the Black Sea Biogeochemistry NRT system and is generated by the NEMO 4.0-BAMHBI modelling system. Biogeochemical Model for Hypoxic and Benthic Influenced areas (BAMHBI) is an innovative biogeochemical model with a 28-variable pelagic component (including the carbonate system) and a 6-variable benthic component ; it explicitely represents processes in the anoxic layer.\nThe product provides analysis and forecast for 3D concentration of chlorophyll, nutrients (nitrate and phosphate), dissolved oxygen, phytoplankton carbon biomass, net primary production, pH, dissolved inorganic carbon, total alkalinity, and for 2D fields of bottom oxygen concentration (for the North-Western shelf), surface partial pressure of CO2 and surface flux of CO2. These variables are computed on a grid with ~3km x 59-levels resolution, and are provided as daily and monthly means.\n\n**Product Citation:** \n\nPlease refer to our Technical FAQ for citing products.http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169\n\n**DOI (product):** \nhttps://doi.org/10.25423/cmcc/blksea_analysisforecast_bgc_007_010\n\n**References:**\n\n* Gr\u00e9goire, M., Vandenbulcke, L. and Capet, A. (2020) \u201cBlack Sea Biogeochemical Analysis and Forecast (CMEMS Near-Real Time BLACKSEA Biogeochemistry).\u201d Copernicus Monitoring Environment Marine Service (CMEMS). doi: 10.25423/CMCC/BLKSEA_ANALYSIS_FORECAST_BIO_007_010_BAMHBI.\n", "providers": [{"name": "ULi\u00e8ge (Belgium)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.25423/cmcc/blksea_analysisforecast_bgc_007_010"}, "BALTIC_OMI_WMHE_mbi_sto2tz_gotland": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-omi-wmhe-mbi-sto2tz-gotland,baltic-sea,coastal-marine-environment,in-situ-observation,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,satellite-observation,sea-water-salinity,sea-water-temperature,volume-fraction-of-oxygen-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Major Baltic Inflow: time/depth evolution S,T,O2 from Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "\"_DEFINITION_'\n\nMajor Baltic Inflows bring large volumes of saline and oxygen-rich water into the bottom layers of the deep basins of the central Baltic Sea, i.e. the Gotland Basin. These Major Baltic Inflows occur seldom, sometimes many years apart (Mohrholz, 2018). The Major Baltic Inflow OMI consists of the time series of the bottom layer salinity in the Arkona Basin and in the Bornholm Basin (BALTIC_OMI_WMHE_mbi_bottom_salinity_arkona_bornholm) and the time-depth plot of temperature, salinity and dissolved oxygen concentration in the Gotland Basin. Temperature, salinity and dissolved oxygen profiles in the Gotland Basin enable us to estimate the amount of the Major Baltic Inflow water that has reached central Baltic, the depth interval of which has been the most affected, and how much the oxygen conditions have been improved.\n\n**CONTEXT**\n\nThe Baltic Sea is a huge brackish water basin in Northern Europe whose salinity is controlled by its freshwater budget and by the water exchange with the North Sea (e.g. Neumann et al., 2017). This implies that fresher water lies on top of water with higher salinity. The saline water inflows to the Baltic Sea through the Danish Straits, especially the Major Baltic Inflows, shape hydrophysical conditions in the Gotland Basin of the central Baltic Sea, which in turn have a substantial influence on marine ecology on different trophic levels (Bergen et al., 2018; Raudsepp et al.,2019). In the absence of the Major Baltic Inflows, oxygen in the deeper layers of the Gotland Basin is depleted and replaced by hydrogen sulphide (e.g., Savchuk, 2018). As the Baltic Sea is connected to the North Sea only through very narrow and shallow channels in the Danish Straits, inflows of high salinity and oxygenated water into the Baltic occur only intermittently (e.g., Mohrholz, 2018). Long-lasting periods of oxygen depletion in the deep layers of the central Baltic Sea accompanied by a salinity decline and overall weakening of the vertical stratification are referred to as stagnation periods. Extensive stagnation periods occurred in the 1920s/1930s, in the 1950s/1960s and in the 1980s/beginning of 1990s (Lehmann et al., 20225).\n\n**CMEMS KEY FINDINGS**\n\nMajor Baltic Inflows in 1993, 2002 and 2014 (BALTIC_OMI_WMHE_mbi_bottom_salinity_arkona_bornholm) show a very clear signal in the Gotland Basin, where Major Baltic Inflow events affect the water salinity, temperature and dissolved oxygen conditions up to 100-m depth. Each of the Major Baltic Inflows results in the increase of deep layer salinity in the Gotland Basin right after the event occurs, but maximum bottom salinities are detected about 1.5 years later. The periods with elevated salinity are rather long-lasting after the Major Baltic Inflows (about three years). Since 2017, the salinity below 150 m depth has decreased, but the halocline has pushed upwards, which indicates saline water transport to the intermediate layers of the Gotland Basin. Usually, temperature drops right after the Major Baltic Inflow occurs, which indicates that cold water from adjacent upstream areas submerges to the bottom in the Gotland Deep. During the period of 1993-1997, deep water temperature stayed relatively low (less than 6 \u00b0C). Starting from 1998, the deep water has become warmer. Even moderate inflows, like in 1997/98, 2006/07 and 2018/19 brought warmer water to the bottom layer of the Gotland Basin. Since 2019, warm water (more than 7 \u00b0C) has occupied the layer below 100-m depth. Compared to the year 1993, the water temperature below the halocline has increased about 2 \u00b0C. Also, the temperature of the cold intermediate layer has increased over the period 1993-2022. Oxygen concentrations start to decline quite rapidly after the temporary oxygenation of the bottom waters. In 2014, the reasons were the lack of smaller inflows after the Major Baltic Inflow that could supply more oxygenated water to the Gotland Basin (Neumann et al., 2017) and intensification of biological oxygen consumption (Savchuk, 2018; Meier et al., 2018). In addition, warm water has facilitated oxygen consumption in the deep layer and an enhancement of anoxia. In 2022, oxygen was completely consumed below the depth of 75 metres.\n\n**Figure caption**\n\nProfiles of salinity (a), temperature (b) and dissolved oxygen concentration (c) for the period of 1993-2022 in the Gotland Basin from the Copernicus Marine Service Baltic Sea in situ multiyear and near real time observations (INSITU_BAL_PHYBGCWAV_DISCRETE_MYNRT_013_032).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00210\n\n**References:**\n\n* Lehmann, A., Myrberg, K., Post, P., Chubarenko, I., Dailidiene, I., Hinrichsen, H.-H., H\u00fcssy, K., Liblik, T., Meier, H. E. M., Lips, U., Bukanova, T., 2022. Salinity dynamics of the Baltic Sea. Earth System Dynamics, 13(1), pp 373 - 392. doi:10.5194/esd-13-373-2022\n* Bergen, B., Naumann, M., Herlemann, D.P.R., Gr\u00e4we, U., Labrenz, M., J\u00fcrgens, K., 2018. Impact of a Major inflow event on the composition and distribution of bacterioplankton communities in the Baltic Sea. Frontiers in Marine Science, 5:383, doi: 10.3389/fmars.2018.00383\n* Meier, H.E.M., V\u00e4li, G., Naumann, M., Eilola, K., Frauen, C., 2018. Recently Accelerated Oxygen Consumption Rates Amplify Deoxygenation in the Baltic Sea. , J. Geophys. Res. Oceans, doi:10.1029/2017JC013686|\n* Mohrholz, V., 2018. Major Baltic Inflow Statistics \u2013 Revised. Frontiers in Marine Science, 5:384, DOI: 10.3389/fmars.2018.00384\n* Neumann, T., Radtke, H., Seifert, T., 2017. On the importance of Major Baltic In\ufb02ows for oxygenation of the central Baltic Sea, J. Geophys. Res. Oceans, 122, 1090\u20131101, doi:10.1002/2016JC012525.\n* Raudsepp, U., Maljutenko, I., K\u00f5uts, M., 2019. Cod reproductive volume potential in the Baltic Sea. In: Copernicus Marine Service Ocean State Report, Issue 3\n* Savchuk, P. 2018. Large-Scale Nutrient Dynamics in the Baltic Sea, 1970\u20132016. Frontiers in Marine Science, 5:95, doi: 10.3389/fmars.2018.00095\n", "providers": [{"name": "SMHI (Sweden)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00210"}, "BLKSEA_MULTIYEAR_PHY_007_004": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "black-sea,blksea-multiyear-phy-007-004,cell-thickness,coastal-marine-environment,eastward-sea-water-velocity,in-situ-ts-profiles,level-4,marine-resources,marine-safety,model-level-number-at-sea-floor,multi-year,net-downward-shortwave-flux-at-sea-water-surface,northward-sea-water-velocity,numerical-model,ocean-mixed-layer-thickness-defined-by-sigma-theta,oceanographic-geographical-features,precipitation-flux,sea-binary-mask,sea-floor-depth-below-geoid,sea-level,sea-surface-height-above-geoid,sea-water-potential-temperature,sea-water-potential-temperature-at-sea-floor,sea-water-salinity,surface-downward-latent-heat-flux,surface-downward-sensible-heat-flux,surface-downward-x-stress,surface-downward-y-stress,surface-net-downward-longwave-flux,water-evaporation-flux,water-flux-into-sea-water-from-rivers,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea Physics Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "The BLKSEA_MULTIYEAR_PHY_007_004 product provides monthly and daily ocean fields for the Black Sea basin starting from 01/01/1993. The hydrodynamical core is based on NEMO general circulation ocean model, implemented in the BS domain with horizontal resolution of 1/27\u00b0 x 1/36\u00b0 and 31 vertical levels. NEMO is forced by atmospheric surface fluxes computed by bulk formulation using ECMWF ERA5 atmospheric fields at the resolution of 0.25\u00b0 in space and 1-h in time. The current version has closed boundary at the Bosporus Strait. The model is online coupled to OceanVar assimilation scheme to assimilate sea level anomaly along-track observations from CMEMS and available in situ vertical profiles of temperature and salinity from both SeaDataNet and CMEMS datasets. \n\n**Product Citation**: \nPlease refer to our Technical FAQ for citing products. http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169\n\n**DOI (Product)**: \nhttps://doi.org/10.25423/CMCC/BLKSEA_MULTIYEAR_PHY_007_004\n\n**References:**\n\n* Lima, L., Aydogdu, A., Escudier, R., Masina, S., Ciliberti, S. A., Azevedo, D., Peneva, E. L., Causio, S., Cipollone, A., Clementi, E., Cret\u00ed, S., Stefanizzi, L., Lecci, R., Palermo, F., Coppini, G., Pinardi, N., & Palazov, A. (2020). Black Sea Physical Reanalysis (CMEMS BS-Currents) (Version 1) [Data set]. Copernicus Monitoring Environment Marine Service (CMEMS). https://doi.org/10.25423/CMCC/BLKSEA_MULTIYEAR_PHY_007_004\n", "providers": [{"name": "CMCC (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.25423/CMCC/BLKSEA_MULTIYEAR_PHY_007_004"}, "BLKSEA_MULTIYEAR_WAV_007_006": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "black-sea,blksea-multiyear-wav-007-006,coastal-marine-environment,level-4,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,sea-binary-mask,sea-floor-depth-below-geoid,sea-surface-primary-swell-wave-from-direction,sea-surface-primary-swell-wave-mean-period,sea-surface-primary-swell-wave-significant-height,sea-surface-secondary-swell-wave-from-direction,sea-surface-secondary-swell-wave-mean-period,sea-surface-secondary-swell-wave-significant-height,sea-surface-wave-from-direction,sea-surface-wave-from-direction-at-spectral-peak,sea-surface-wave-maximum-crest-height,sea-surface-wave-maximum-height,sea-surface-wave-mean-period-from-variance-spectral-density-inverse-frequency-moment,sea-surface-wave-mean-period-from-variance-spectral-density-second-frequency-moment,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,sea-surface-wave-stokes-drift-x-velocity,sea-surface-wave-stokes-drift-y-velocity,sea-surface-wind-wave-from-direction,sea-surface-wind-wave-mean-period,sea-surface-wind-wave-significant-height,significant-wave-height-(swh),weather-climate-and-seasonal-forecasting,wind-speed", "license": "proprietary", "title": "Black Sea Waves Reanalysis", "missionStartDate": "1950-01-01T00:00:00Z", "abstract": "The wave reanalysis for the Black Sea is produced with the third generation spectral wave model WAM Cycle 6. The reanalysis is produced on the HPC at Helmholtz-Zentrum Hereon. The shallow water Black Sea version is implemented on a spherical grid with a spatial resolution of about 2.5 km (1/40\u00b0 x 1/40\u00b0) with 24 directional and 30 frequency bins. The number of active wave model grid points is 74,518. The model takes into account wave breaking and assimilation of Jason satellite wave and wind data. The system provides one-hourly output and the atmospheric forcing is taken from ECMWF ERA5 data.\n\n**Product Citation**: \nPlease refer to our Technical FAQ for citing products. http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169\n\n**DOI (Product)**: \nhttps://doi.org/10.25423/cmcc/blksea_multiyear_wav_007_006_eas4\n\n**References:**\n\n* Staneva, J., Ricker, M., & Behrens, A. (2022). Black Sea Waves Reanalysis (CMEMS BS-Waves, EAS4 system) (Version 1) [Data set]. Copernicus Monitoring Environment Marine Service (CMEMS). https://doi.org/10.25423/CMCC/BLKSEA_MULTIYEAR_WAV_007_006_EAS4\n", "providers": [{"name": "Hereon (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.25423/cmcc/blksea_multiyear_wav_007_006_eas4"}, "BLKSEA_OMI_TEMPSAL_sst_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-sea,blksea-omi-tempsal-sst-trend,coastal-marine-environment,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea Surface Temperature cumulative trend map from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe blksea_omi_tempsal_sst_trend product includes the cumulative/net Sea Surface Temperature (SST) trend for the Black Sea over the period 1993-2022, i.e. the rate of change (\u00b0C/year) multiplied by the number years in the timeseries (30). This OMI is derived from the CMEMS Reprocessed Black Sea L4 SST satellite product (SST_BS_SST_L4_REP_OBSERVATIONS_010_022, see e.g. the OMI QUID, http://marine.copernicus.eu/documents/QUID/CMEMS-OMI-QUID-BLKSEA-SST.pdf), which provided the SSTs used to compute the SST trend over the Black Sea. This reprocessed product consists of daily (nighttime) optimally interpolated 0.05\u00b0 grid resolution SST maps over the Black Sea built from the ESA Climate Change Initiative (CCI) (Merchant et al., 2019) and Copernicus Climate Change Service (C3S) initiatives, including also an adjusted version of the AVHRR Pathfinder dataset version 5.3 (Saha et al., 2018) to increase the input observation coverage. Trend analysis has been performed by using the X-11 seasonal adjustment procedure (see e.g. Pezzulli et al., 2005), which has the effect of filtering the input SST time series acting as a low bandpass filter for interannual variations. Mann-Kendall test and Sens\u2019s method (Sen 1968) were applied to assess whether there was a monotonic upward or downward trend and to estimate the slope of the trend and its 95% confidence interval. The reference for this OMI can be found in the first and second issue of the Copernicus Marine Service Ocean State Report (OSR), Section 1.1 (Roquet et al., 2016; Mulet et al., 2018).\n\n**CONTEXT**\n\nSea surface temperature (SST) is a key climate variable since it deeply contributes in regulating climate and its variability (Deser et al., 2010). SST is then essential to monitor and characterise the state of the global climate system (GCOS 2010). Long-term SST variability, from interannual to (multi-)decadal timescales, provides insight into the slow variations/changes in SST, i.e. the temperature trend (e.g., Pezzulli et al., 2005). In addition, on shorter timescales, SST anomalies become an essential indicator for extreme events, as e.g. marine heatwaves (Hobday et al., 2018). In the last decades, since the availability of satellite data (beginning of 1980s), the Black Sea has experienced a warming trend in SST (see e.g. Buongiorno Nardelli et al., 2010; Mulet et al., 2018). \n\n**CMEMS KEY FINDINGS**\n\nThe spatial pattern of the Black Sea SST trend reveals a general warming tendency, ranging from 0.053 \u00b0C/year to 0.080 \u00b0C/year. The spatial pattern of SST trend is rather homogeneous over the whole basin. Highest values characterize the eastern basin, where the trend reaches the extreme value, while lower values are found close to the western coasts, in correspondence of main rivers inflow. The Black Sea SST trend continues to show the highest intensity among all the other European Seas.\n\n**Figure caption**\n\nSea surface temperature cumulative trend over the period 1993-2022 in the Black Sea. The cumulative trend is the rate of change (\u00b0C/year) scaled by the number of time steps (30 years). The Black Sea trend map in sea surface temperature is derived from the CMEMS SST_BS_SST_L4_REP_OBSERVATIONS_010_022 satellite product (see e.g. the OMI QUID, http://marine.copernicus.eu/documents/QUID/CMEMS-OMI-QUID-BLKSEA-SST.pdf). The trend is estimated at the 95% confidence interval by using the X-11 seasonal adjustment procedure (e.g. Pezzulli et al., 2005) and Sen\u2019s method (Sen 1968). The reference for this OMI can be found in the first and second issue of the Copernicus Marine Service Ocean State Report (OSR), Section 1.1 (Roquet et al., 2016; Mulet et al., 2018).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00218\n\n**References:**\n\n* Buongiorno Nardelli, B., Colella, S. Santoleri, R., Guarracino, M., Kholod, A., 2010. A re-analysis of Black Sea surface temperature. Journal of Marine Systems, 79, Issues 1\u20132, 50-64, ISSN 0924-7963, https://doi.org/10.1016/j.jmarsys.2009.07.001.\n* Deser, C., Alexander, M. A., Xie, S.-P., Phillips, A. S., 2010. Sea Surface Temperature Variability: Patterns and Mechanisms. Annual Review of Marine Science 2010 2:1, 115-143. https://doi.org/10.1146/annurev-marine-120408-151453\n* GCOS. Global Climate Observing System. 2010. Update of the Implementation Plan for the Global Observing System for Climate in Support of the UNFCCC (GCO-138).\n* Hobday, A. J., Oliver, E. C., Gupta, A. S., Benthuysen, J. A., Burrows, M. T., Donat, M. G., ... & Smale, D. A. (2018). Categorizing and naming marine heatwaves. Oceanography, 31(2), 162-173.\n* Merchant, C. J., Embury, O., Bulgin, C. E., Block, T., Corlett, G. K., Fiedler, E., ... & Eastwood, S. (2019). Satellite-based time-series of sea-surface temperature since 1981 for climate applications. Scientific data, 6(1), 1-18.\n* Mulet, S., Buongiorno Nardelli, B., Good, S., Pisano, A., Greiner, E., Monier, M., Autret, E., Axell, L., Boberg, F., Ciliberti, S., Dr\u00e9villon, M., Droghei, R., Embury, O., Gourrion, J., H\u00f8yer, J., Juza, M., Kennedy, J., Lemieux-Dudon, B., Peneva, E., Reid, R., Simoncelli, S., Storto, A., Tinker, J., Von Schuckmann, K., Wakelin, S. L., 2018. Ocean temperature and salinity. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s5\u2013s13, DOI: 10.1080/1755876X.2018.1489208\n* Pezzulli, S., Stephenson, D. B., Hannachi, A., 2005. The Variability of Seasonality. J. Climate. 18:71\u201388. doi:10.1175/JCLI-3256.1.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00218"}, "OMI_HEALTH_CHL_BLKSEA_OCEANCOLOUR_area_averaged_mean": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "black-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-in-seawater,multi-year,oceanographic-geographical-features,omi-health-chl-blksea-oceancolour-area-averaged-mean,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea Chlorophyll-a time series and trend from Observations Reprocessing", "missionStartDate": "1997-06-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe time series are derived from the regional chlorophyll reprocessed (MY) product as distributed by CMEMS. This dataset, derived from multi-sensor (SeaStar-SeaWiFS, AQUA-MODIS, NOAA20-VIIRS, NPP-VIIRS, Envisat-MERIS and Sentinel3-OLCI) Rrs spectra produced by CNR using an in-house processing chain, is obtained by means of two different regional algorithms developed with the BiOMaP data set (Zibordi et al., 2011): a band-ratio algorithm (B/R) (Zibordi et al., 2015) and a Multilayer Perceptron (MLP) neural net algorithm based on Rrs values at three individual wavelengths (490, 510 and 555 nm) (Kajiyama et al., 2018). The processing chain and the techniques used for algorithms merging are detailed in Colella et al. (2023). Monthly regional mean values are calculated by performing the average of 2D monthly mean (weighted by pixel area) over the region of interest. The deseasonalized time series is obtained by applying the X-11 seasonal adjustment methodology on the original time series as described in Colella et al. (2016), and then the Mann-Kendall test (Mann, 1945; Kendall, 1975) and Sens\u2019s method (Sen, 1968) are subsequently applied to obtain the magnitude of trend. \n\n**CONTEXT **\n\nPhytoplankton and chlorophyll concentration as a proxy for phytoplankton respond rapidly to changes in environmental conditions, such as light, temperature, nutrients and mixing (Gregg and Rousseaux, 2014, Colella et al. 2016). The character of the response depends on the nature of the change drivers, and ranges from seasonal cycles to decadal oscillations (Basterretxea et al. 2018). Therefore, it is of critical importance to monitor chlorophyll concentration at multiple temporal and spatial scales, in order to be able to separate potential long-term climate signals from natural variability in the short term. In particular, phytoplankton in the Black Sea is known to respond to climate variability associated with the North Atlantic Oscillation (NAO) (Oguz et al .2003). \n\n**CMEMS KEY FINDINGS**\n\nIn the Black Sea, the trend average for the 1997-2022 period is definitely negative (-1.33\u00b11.12% per year). Nevertheless, this negative trend is lower than the one estimated in the previous release (related to 1997-2021). The negative trend is mainly due to the marked change on chlorophyll concentrations between 2002 and 2004. From 2004 onwards, minima and maxima are strongly variable year by year. However, on average, the minima/maxima variability can be considered quite constant with a continuous decrease of maxima from 2015 up to mid 2020 where signal seems to change again with relative high chlorophyll values in 2021 and 2022 (especially at the end of the year). The general negative trend in the Black Sea is also confirmed by the analysis of Sathyendranath et al. (2018), that reveals an increasing trend in chlorophyll concentration in all the European Seas, except for the Black Sea. \n\n**Figure caption**\n\nBlack Sea time series and trend (1997-2022) of satellite chlorophyll, based on CMEMS product OCEANCOLOUR_BLK_BGC_L4_MY_009_154. The monthly regional average (weighted by pixel area) time series is shown in grey, with the deseasonalized time series in green and the trend in blue.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00211\n\n**References:**\n\n* Basterretxea, G., Font-Mu\u00f1oz, J. S., Salgado-Hernanz, P. M., Arrieta, J., & Hern\u00e1ndez-Carrasco, I. (2018). Patterns of chlorophyll interannual variability in Mediterranean biogeographical regions. Remote Sensing of Environment, 215, 7-17.\n* Colella, S., Falcini, F., Rinaldi, E., Sammartino, M., & Santoleri, R. (2016). Mediterranean ocean colour chlorophyll trends. PloS one, 11(6).\n* Colella, S., Brando, V.E., Cicco, A.D., D\u2019Alimonte, D., Forneris, V., Bracaglia, M., 2021. Quality Information Document. Copernicus Marine Service. OCEAN COLOUR PRODUCTION CENTRE, Ocean Colour Mediterranean and Black Sea Observation Product. (https://catalogue.marine.copernicus.eu/documents/QUID/CMEMS-OC-QUID-009-141to144-151to154.pdf)\n* Gregg, W. W., and C. S. Rousseaux, 2014. Decadal Trends in Global Pelagic Ocean Chlorophyll: A New Assessment Integrating Multiple Satellites, in Situ Data, and Models. Journal of Geophysical Research Oceans 119. doi:10.1002/2014JC010158.\n* Kajiyama T., D. D\u2019Alimonte, and G. Zibordi, \u201cAlgorithms merging for the determination of Chlorophyll-a concentration in the Black Sea,\u201d IEEE Geoscience and Remote Sensing Letters, 2018. [Online]. Available: https://-www.doi.org/\u00ac10.1109/\u00acLGRS.2018.2883539\n* Kendall MG. 1975. Multivariate analysis. London: Charles Griffin & Co; p. 210, 43.\n* Mann HB. 1945. Nonparametric tests against trend. Econometrica. 13:245 259. p. 42.\n* Oguz, T., Cokacar, T., Malanotte\u2010Rizzoli, P., & Ducklow, H. W. (2003). Climatic warming and accompanying changes in the ecological regime of the Black Sea during 1990s. Global Biogeochemical Cycles, 17(3).\n* Sathyendranath, S., Pardo, S., Benincasa, M., Brando, V. E., Brewin, R. J.W., M\u00e9lin, F., Santoleri, R., 2018, 1.5. Essential Variables: Ocean Colour in Copernicus Marine Service Ocean State Report - Issue 2, Journal of Operational Oceanography, 11:sup1, 1-142, doi: 10.1080/1755876X.2018.1489208\n* Sen PK. 1968. Estimates of the regression coefficient based on Kendall\u2019s tau. J Am Statist Assoc. 63:1379 1389.\n* Zibordi, G., Berthon, J.-F., M\u00e9lin, F., and D\u2019Alimonte, D.: Cross- site consistent in situ measurements for satellite ocean color ap- plications: the BiOMaP radiometric dataset, Rem. Sens. Environ., 115, 2104\u20132115, 2011.\n* Zibordi, G., F. M\u00e9lin, J.-F. Berthon, and M. Talone (2015). In situ autonomous optical radiometry measurements for satellite ocean color validation in the Western Black Sea. Ocean Sci., 11, 275\u2013286, 2015.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00211"}, "GLOBAL_ANALYSISFORECAST_PHY_001_024": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "age-of-sea-ice,cell-thickness,coastal-marine-environment,eastward-sea-ice-velocity,eastward-sea-water-velocity,forecast,global-analysisforecast-phy-001-024,global-ocean,in-situ-ts-profiles,invariant,level-4,marine-resources,marine-safety,model-level-number-at-sea-floor,near-real-time,northward-sea-ice-velocity,northward-sea-water-velocity,numerical-model,ocean-mixed-layer-thickness-defined-by-sigma-theta,oceanographic-geographical-features,sea-binary-mask,sea-floor-depth-below-geoid,sea-ice-albedo,sea-ice-area-fraction,sea-ice-concentration-and/or-thickness,sea-ice-speed,sea-ice-surface-temperature,sea-ice-thickness,sea-level,sea-surface-height-above-geoid,sea-surface-wave-stokes-drift-x-velocity,sea-surface-wave-stokes-drift-y-velocity,sea-water-potential-salinity-at-sea-floor,sea-water-potential-temperature,sea-water-potential-temperature-at-sea-floor,sea-water-pressure-at-sea-floor,sea-water-salinity,sst,surface-sea-water-x-velocity,surface-sea-water-x-velocity-due-to-tide,surface-sea-water-y-velocity,surface-sea-water-y-velocity-due-to-tide,surface-snow-thickness,target-application#seaiceforecastingapplication,upward-sea-water-velocity,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Physics Analysis and Forecast", "missionStartDate": "2019-01-01T00:00:00Z", "abstract": "The Operational Mercator global ocean analysis and forecast system at 1/12 degree is providing 10 days of 3D global ocean forecasts updated daily. The time series is aggregated in time in order to reach a two full year\u2019s time series sliding window.\n\nThis product includes daily and monthly mean files of temperature, salinity, currents, sea level, mixed layer depth and ice parameters from the top to the bottom over the global ocean. It also includes hourly mean surface fields for sea level height, temperature and currents. The global ocean output files are displayed with a 1/12 degree horizontal resolution with regular longitude/latitude equirectangular projection.\n\n50 vertical levels are ranging from 0 to 5500 meters.\n\nThis product also delivers a special dataset for surface current which also includes wave and tidal drift called SMOC (Surface merged Ocean Current).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00016", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00016"}, "BALTIC_OMI_HEALTH_codt_volume": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-omi-health-codt-volume,baltic-sea,coastal-marine-environment,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,sea-water-volume,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Cod Reproductive Volume from Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe cod reproductive volume has been derived from regional reanalysis modelling results for the Baltic Sea BALTICSEA_MULTIYEAR_PHY_003_011 and BALTICSEA_MULTIYEAR_BGC_003_012. The volume has been calculated taking into account the three most important influencing abiotic factors of cod reproductive success: salinity > 11 g/kg, oxygen concentration\u2009>\u20092 ml/l and water temperature over 1.5\u00b0C (MacKenzie et al., 1996; Heikinheimo, 2008; Plikshs et al., 2015). The daily volumes are calculated as the volumes of the water with salinity > 11 g/kg, oxygen content\u2009>\u20092 ml/l and water temperature over 1.5\u00b0C in the Baltic Sea International Council for the Exploration of the Sea subdivisions of 25-28 (ICES, 2019).\n\n**CONTEXT**\n\nCod (Gadus morhua) is a characteristic fish species in the Baltic Sea with major economic importance. Spawning stock biomasses of the Baltic cod have gone through a steep decline in the late 1980s (Bryhn et al., 2022). Water salinity and oxygen concentration affect cod stock through the survival of eggs (Westin and Nissling, 1991; Wieland et al., 1994). Major Baltic Inflows provide a suitable environment for cod reproduction by bringing saline oxygenated water to the deep basins of the Baltic Sea (see the OMIs: BALTIC_OMI_WMHE_mbi_bottom_salinity_arkona_bornholm and BALTIC_OMI_WMHE_mbi_sto2tz_gotland). Increased cod reproductive volume has a positive effect on cod reproduction success, which should reflect an increase of stock size indicator 4\u20135 years after the Major Baltic Inflow (Raudsepp et al., 2019). Eastern Baltic cod reaches maturity around age 2\u20133, depending on the population density and environmental conditions. There are a number of environmental factors affecting cod populations (Bryhn et al., 2022). Low oxygen and salinity cause stress, which negatively affects cod recruitment, whereas sufficient conditions may bring about male cod maturation even at the age of 1.5 years (Cardinale and Modin, 1999; Karasiova et al., 2008). \n\n**CMEMS KEY FINDINGS**\n\nIn general, the cod reproductive volume fluctuates between 200 and 400 km3. There are two separate periods when cod reproductive volume has significantly increased where maximum values reach 1200 km3. These periods, from 2003 to 2005 and from 2015 to 2018, correspond to the post Major Baltic Inflow periods (BALTIC_OMI_WMHE_mbi_bottom_salinity_arkona_bornholm and BALTIC_OMI_WMHE_mbi_sto2tz_gotland). In 2022, the cod reproductive volume was at its base level between 200 and 400 km3. According to the study by Bryhn et al. (2022) an increase of spawning stock biomass in the eastern Baltic Sea has not been observed.\n\n**Figure caption**\n\nThe time series of cod reproductive volume in the Baltic Sea from 1993 to 2022. The volume has been calculated from salinity, temperature and oxygen data extracted from Copernicus Marine Service regional reanalysis products BALTICSEA_MULTIYEAR_PHY_003_011 and BALTICSEA_MULTIYEAR_BGC_003_012.\"\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00196\n\n**References:**\n\n* Cardinale, M., Modin, J., 1999. Changes in size-at-maturity of Baltic cod (Gadus morhua) during a period of large variations in stock size and environmental conditions. Vol. 41 (3), 285-295. https://doi.org/10.1016/S0165-7836(99)00021-1\n* Heikinheimo, O., 2008. Average salinity as an index for environmental forcing on cod recruitment in the Baltic Sea. Boreal Environ Res 13:457\n* ICES, 2005. Report of the Study Group on Multispecies Assessment in the Baltic (SGMAB), 13\u201317 June 2005, Riga, Latvia. ICES Document CM 2005/H:06.\n* ICES, 2019. Baltic Sea Ecoregion \u2013 Fisheries overview, ICES Advice, DOI:10.17895/ices.advice.5566 Karasiova, E.M., Voss, R., Eero, M., 2008. Long-term dynamics in eastern Baltic cod spawning time: from small scale reversible changes to a recent drastic shift. ICES CM 2008/J:03\n* MacKenzie, B., St. John, M., Wieland, K., 1996. Eastern Baltic cod: perspectives from existing data on processes affecting growth and survival of eggs and larvae. Mar Ecol Prog Ser Vol. 134: 265-281.\n* Plikshs, M., Hinrichsen, H. H., Elferts, D., Sics, I., Kornilovs, G., K\u00f6ster, F., 2015. Reproduction of Baltic cod, Gadus morhua (Actinopterygii: Gadiformes: Gadidae), in the Gotland Basin: Causes of annual variability. Acta Ichtyologica et Piscatoria, Vol. 45, No. 3, 2015, p. 247-258.\n* Raudsepp, U., Legeais, J.-F., She, J., Maljutenko, I., Jandt, S., 2018. Baltic inflows. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s106\u2013s110, DOI: 10.1080/1755876X.2018.1489208\n* Raudsepp, U., Maljutenko, I., K\u00f5uts, M., 2019. Cod reproductive volume potential in the Baltic Sea. In: Copernicus Marine Service Ocean State Report, Issue 3, Journal of Operational Oceanography, 12:sup1, s26\u2013s30; DOI: 10.1080/ 1755876X.2019.1633075\n* Westin, L., Nissling, A., 1991. Effects of salinity on spermatozoa motility, percentage of fertilized eggs and egg development of Baltic cod Gadus morhua, and implications for cod stock fluctuations in the Baltic. Mar. Biol. 108, 5 \u2013 9.\n* Wieland, K., Waller, U., Schnack, D., 1994. Development of Baltic cod eggs at different levels of temperature and oxygen content. Dana 10, 163 \u2013 177.\n* Bryhn, A.C.., Bergek, S., Bergstr\u00f6m,U., Casini, M., Dahlgren, E., Ek, C., Hjelm, J., K\u00f6nigson, S., Ljungberg, P., Lundstr\u00f6m, K., Lunneryd, S.G., Oveg\u00e5rd, M., Sk\u00f6ld, M., Valentinsson, D., Vitale, F., Wennhage, H., 2022. Which factors can affect the productivity and dynamics of cod stocks in the Baltic Sea, Kattegat and Skagerrak? Ocean & Coastal Management, 223, 106154. https://doi.org/10.1016/j.ocecoaman.2022.106154\n", "providers": [{"name": "SMHI (Sweden)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00196"}, "BLKSEA_OMI_HEALTH_oxygen_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "black-sea,blksea-omi-health-oxygen-trend,coastal-marine-environment,in-situ-observation,marine-resources,marine-safety,multi-year,ocean-mole-content-of-dissolved-molecular-oxygen,oceanographic-geographical-features,sea-water-sigma-theta-defined-by-mole-concentration-of-dissolved-molecular-oxygen-in-sea-water-above-threshold,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea Oxygen Trend from Observations Reprocessing", "missionStartDate": "1955-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe oxygenation status of the Black Sea open basin is described by three complementary indicators, derived from vertical profiles and spatially averaged over the Black Sea open basin (depth > 50m). (1) The oxygen penetration depth is the depth at which [O2] < 20\u00b5M, expressed in [m]. (2) The oxygen penetration density is the potential density anomaly at the oxygen penetration depth [kg/m\u00b3]. (3) The oxygen inventory is the vertically integrated oxygen content [mol O2/m\u00b2]. The 20\u00b5M threshold was chosen to minimize the indicator sensitivity to sensor\u2019s precision. Those three metrics are complementary: Oxygen penetration depth is more easily understood, but present more spatial variability. Oxygen penetration density helps in dissociating biogeochemical processes from shifts in the physical structure. Although less intuitive, the oxygen inventory is a more integrative diagnostic and its definition is more easily transposed to other areas.\n\n**CONTEXT**\n\nThe Black Sea is permanently stratified, due to the contrast in density between large riverine and Mediterranean inflows. This stratification restrains the ventilation of intermediate and deep waters and confines, within a restricted surface layer, the waters that are oxygenated by photosynthesis and exchanges with the atmosphere. The vertical extent of the oxic layer determines the volume of habitat available for pelagic populations (Ostrovskii and Zatsepin 2011, Sak\u0131nan and G\u00fcc\u00fc 2017) and present spatial and temporal variations (Murray et al. 1989; Tugrul et al. 1992; Konovalov and Murray 2001). At long and mid-term, these variations can be monitored with three metrics (Capet et al. 2016), derived from the vertical profiles that can obtained from traditional ship casts or autonomous Argo profilers (Stanev et al., 2013). A large source of uncertainty associated with the spatial and temporal average of those metrics stems from the small number of Argo floats, scarcely adequate to sample the known spatial variability of those metrics.\n\n**CMEMS KEY FINDINGS**\n\nDuring the past 60 years, the vertical extent of the Black Sea oxygenated layer has narrowed from 140m to 90m (Capet et al. 2016). The Argo profilers active for 2016 suggested an ongoing deoxygenation trend and indicated an average oxygen penetration depth of 72m at the end of 2016, the lowest value recorded during the past 60 years. The oxygenation of subsurface water is closely related to the intensity of cold water formation, an annual ventilation processes which has been recently limited by warmer-than-usual winter air temperature (Capet et al. 2020). In 2017, 2018 and 2020, cold waters formation resulted in a partial reoxygenation of the intermediate layer. Yet, such ventilation has been lacking in winter 2020-2021, and the updated 2021 indicators reveals the lowest oxygen inventory ever reported in this OMI time series. This results in significant detrimental trends now depicted also over the Argo period (2012-2021).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00213\n\n**References:**\n\n* Capet, A., Vandenbulcke, L., & Gr\u00e9goire, M. (2020). A new intermittent regime of convective ventilation threatens the Black Sea oxygenation status. Biogeosciences , 17(24), 6507\u20136525.\n* Capet A, Stanev E, Beckers JM, Murray J, Gr\u00e9goire M. (2016). Decline of the Black Sea oxygen inventory. Biogeosciences. 13:1287-1297.\n* Capet Arthur, Vandenbulcke Luc, Veselka Marinova, Gr\u00e9goire Marilaure. (2018). Decline of the Black Sea oxygen inventory. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s13\u2013s16, DOI: 10.1080/1755876X.2018.1489208\n* Konovalov S, Murray JW. (2001). Variations in the chemistry of the Black Sea on a time scale of decades (1960\u20131995). J Marine Syst. 31: 217\u2013243.\n* Murray J, Jannasch H, Honjo S, Anderson R, Reeburgh W, Top Z, Friederich G, Codispoti L, Izdar E. (1989). Unexpected changes in the oxic/anoxic interface in the Black Sea. Nature. 338: 411\u2013413.\n* Ostrovskii A and Zatsepin A. (2011). Short-term hydrophysical and biological variability over the northeastern Black Sea continental slope as inferred from multiparametric tethered profiler surveys, Ocean Dynam., 61, 797\u2013806, 2011.\n* \u00d6zsoy E and \u00dcnl\u00fcata \u00dc. (1997). Oceanography of the Black Sea: a review of some recent results. Earth-Science Reviews. 42(4):231-72.\n* Sak\u0131nan S, G\u00fcc\u00fc AC. (2017). Spatial distribution of the Black Sea copepod, Calanus euxinus, estimated using multi-frequency acoustic backscatter. ICES J Mar Sci. 74(3):832-846. doi:10.1093/icesjms/fsw183\n* Stanev E, He Y, Grayek S, Boetius A. (2013). Oxygen dynamics in the Black Sea as seen by Argo profiling floats. Geophys Res Lett. 40(12), 3085-3090.\n* Tugrul S, Basturk O, Saydam C, Yilmaz A. (1992). Changes in the hydrochemistry of the Black Sea inferred from water density profiles. Nature. 359: 137-139.\n* von Schuckmann, K. et al. Copernicus Marine Service Ocean State Report. Journal of Operational Oceanography 11, S1\u2013S142 (2018).\n", "providers": [{"name": "ULi\u00e8ge (Belgium)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00213"}, "MEDSEA_MULTIYEAR_WAV_006_012": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,level-4,marine-resources,marine-safety,mediterranean-sea,medsea-multiyear-wav-006-012,multi-year,numerical-model,oceanographic-geographical-features,sea-floor-depth-below-geoid,sea-surface-primary-swell-wave-from-direction,sea-surface-primary-swell-wave-mean-period,sea-surface-primary-swell-wave-significant-height,sea-surface-secondary-swell-wave-from-direction,sea-surface-secondary-swell-wave-mean-period,sea-surface-secondary-swell-wave-significant-height,sea-surface-wave-from-direction,sea-surface-wave-from-direction-at-variance-spectral-density-maximum,sea-surface-wave-mean-period-from-variance-spectral-density-inverse-frequency-moment,sea-surface-wave-mean-period-from-variance-spectral-density-second-frequency-moment,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,sea-surface-wave-stokes-drift-x-velocity,sea-surface-wave-stokes-drift-y-velocity,sea-surface-wind-wave-from-direction,sea-surface-wind-wave-mean-period,sea-surface-wind-wave-significant-height,significant-wave-height-(swh),weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea Waves Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "MEDSEA_MULTIYEAR_WAV_006_012 is the multi-year wave product of the Mediterranean Sea Waves forecasting system (Med-WAV). It contains a Reanalysis dataset, an Interim dataset covering the period after the reanalysis until 1 month before present and a monthly climatological dataset (reference period 1993-2016). The Reanalysis dataset is a multi-year wave reanalysis starting from January 1993, composed by hourly wave parameters at 1/24\u00b0 horizontal resolution, covering the Mediterranean Sea and extending up to 18.125W into the Atlantic Ocean. The Med-WAV modelling system is based on wave model WAM 4.6.2 and has been developed as a nested sequence of two computational grids (coarse and fine) to ensure that swell propagating from the North Atlantic (NA) towards the strait of Gibraltar is correctly entering the Mediterranean Sea. The coarse grid covers the North Atlantic Ocean from 75\u00b0W to 10\u00b0E and from 70\u00b0 N to 10\u00b0 S in 1/6\u00b0 resolution while the nested fine grid covers the Mediterranean Sea from 18.125\u00b0 W to 36.2917\u00b0 E and from 30.1875\u00b0 N to 45.9792\u00b0 N with a 1/24\u00b0 resolution. The modelling system resolves the prognostic part of the wave spectrum with 24 directional and 32 logarithmically distributed frequency bins. The wave system also includes an optimal interpolation assimilation scheme assimilating significant wave height along track satellite observations available through CMEMS and it is forced with daily averaged currents from Med-Physics and with 1-h, 0.25\u00b0 horizontal-resolution ERA5 reanalysis 10m-above-sea-surface winds from ECMWF.\n\n**Product Citation**: \nPlease refer to our Technical FAQ for citing products.http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169\n\n**DOI (product)**: \nhttps://doi.org/10.25423/cmcc/medsea_multiyear_wav_006_012\n\n**DOI (Interim dataset)**:\nhttps://doi.org/10.25423/ CMCC/MEDSEA_MULTIYEAR_WAV_006_012_MEDWAM3I\n\n**References:**\n\n* Korres, G., Ravdas, M., Denaxa, D., & Sotiropoulou, M. (2021). Mediterranean Sea Waves Reanalysis INTERIM (CMEMS Med-Waves, MedWAM3I system) (Version 1) [Data set]. Copernicus Monitoring Environment Marine Service (CMEMS). https://doi.org/10.25423/CMCC/MEDSEA_MULTIYEAR_WAV_006_012_MEDWAM3I\n* Korres, G., Oikonomou, C., Denaxa, D., & Sotiropoulou, M. (2023). Mediterranean Sea Waves Monthly Climatology (CMS Med-Waves, MedWAM3 system) (Version 1) [Data set]. Copernicus Marine Service (CMS). https://doi.org/10.25423/CMCC/MEDSEA_MULTIYEAR_WAV_006_012_CLIM\n", "providers": [{"name": "HCMR (Greece)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.25423/cmcc/medsea_multiyear_wav_006_012"}, "OMI_CLIMATE_OHC_BLKSEA_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "black-sea,coastal-marine-environment,in-situ-observation,integral-wrt-depth-of-sea-water-temperature-expressed-as-heat-content,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,omi-climate-ohc-blksea-area-averaged-anomalies,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea Ocean Heat Content Anomaly (0-300m) time series and trend from Reanalysis & Multi-Observations Reprocessing", "missionStartDate": "2005-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nOcean heat content (OHC) is defined here as the deviation from a reference period (1993-2014) and is closely proportional to the average temperature change from z1 = 0 m to z2 = 300 m depth:\nOHC=\u222b_(z_1)^(z_2)\u03c1_0 c_p (T_m-T_clim )dz [1]\nwith a reference density = 1020 kg m-3 and a specific heat capacity of cp = 3980 J kg-1 \u00b0C-1 (e.g. von Schuckmann et al., 2009; Lima et al., 2020); T_m corresponds to the monthly average temperature and T_clim is the climatological temperature of the corresponding month that varies according to each individual product.\nTime series of monthly mean values area averaged ocean heat content is provided for the Black Sea (40.86\u00b0N, 46.8\u00b0N; 27.32\u00b0E, 41.96\u00b0E) and is evaluated in areas where the topography is deeper than 300m. The Azov and Marmara Seas are not considered.\nThe quality evaluation of OMI_CLIMATE_OHC_BLKSEA_area_averaged_anomalies is based on the \u201cmulti-product\u201d approach as introduced in the second issue of the Ocean State Report (von Schuckmann et al., 2018), and following the MyOcean\u2019s experience (Masina et al., 2017). Three global products and one regional (Black Sea) product have been used to build an ensemble mean, and its associated ensemble spread. Details on the products are delivered in the PUM and QUID of this OMI.\n\n**CONTEXT**\n\nKnowing how much and where heat energy is stored and released in the ocean is essential for understanding the contemporary Earth system state, variability and change, as the oceans shape our perspectives for the future.\nSeveral studies discuss a warming in the Black Sea using either observations or model results (Akpinar et al., 2017; Stanev et al. 2019; Lima et al. 2020). Using satellite sea surface temperature observations (SST), Degtyarev (2000) detected a positive temperature trend of 0.016 \u00baC years-1 in the 50-100 m layer from 1985 to 1997. From Argo floats Stanev et al. (2019) found a warming trend in the cold intermediate layer (CIL; at approximately 25 \u2013 70 m) of about 0.05 oC year-1 in recent years. The warming signal was also present in ocean heat content analyses conducted by Lima et al. (2020). Their results from the Black Sea regional reanalysis showed an increase rate of 0.880\u00b10.181 W m-2 in the upper layers (0 \u2013 200 m), which has been reflected in the disappearance of Black Sea cold intermediate layer in recent years. The newest version of reanalysis also presents a warming of 0.814\u00b10.045 W m-2 in 0 \u2013 200 m (Lima et al. (2021). This warming has been reflected in a more incidence of marine heat waves in the Black Sea over the past few years (Mohammed et al. 2022).\n\n**CMEMS KEY FINDINGS**\n\nTime series of ocean heat content anomalies present a significant interannual variability, altering between cool and warm events. This important characteristic becomes evident over the years 2012 to 2015: a minimum of ocean heat content anomaly is registered close to \u2013 2.00 x 108 J m-2 in 2012, followed by positive values around 2.00 x 108 J m-2 in 2013 and above 2.0 x 108 J m-2 most of time in 2014 and 2015. Since 2005 the Black Sea experienced an increase in ocean heat content (0-300 m), and record OHC values are noticed in 2020. The Black Sea is warming at a rate of 0.995\u00b10.084 W m-2, which is higher than the global average warming rate.\nThe increase in ocean heat content weakens the CIL, whereas its decreasing favours the CIL restoration (Akpinar et al., 2017). The years 2012 and 2017 exhibited a more evident warming interruption that induced a replenishment of the CIL (Lima et al. 2021).\n\n**Figure caption**\n\nTime series of the ensemble mean and ensemble spread (shaded area) of the monthly Black Sea averaged ocean heat content anomalies integrated over the 0-300m depth layer (J m\u20132) during Jan 2005 \u2013 December 2020. The monthly ocean heat content anomalies are defined as the deviation from the climatological ocean heat content mean (1993\u20132014) of each corresponding month. Mean trend values are also reported at the bottom right corner. The ensemble is based on different data products, i.e. Black Sea Reanalysis, global ocean reanalysis GLORYS12V1; global observational based products CORA5.2, ARMOR3D. Details on the products are given in the corresponding PUM and QUID for this OMI.\n\n**DOI (product):** \n\u00a0https://doi.org/10.48670/moi-00306\n\n**References:**\n\n* Akpinar, A., Fach, B. A., Oguz, T., 2017: Observing the subsurface thermal signature of the Black Sea cold intermediate layer with Argo profiling floats. Deep Sea Res. I Oceanogr. Res. Papers 124, 140\u2013152. doi: 10.1016/j.dsr.2017.04.002.\n* Lima, L., Peneva, E., Ciliberti, S., Masina, S., Lemieux, B., Storto, A., Chtirkova, B., 2020: Ocean heat content in the Black Sea. In: Copernicus marine service Ocean State Report, issue 4, Journal of Operational Oceanography, 13:Sup1, s41\u2013s47, doi: 10.1080/1755876X.2020.1785097.\n* Lima L., Ciliberti S. A., Aydo\u011fdu A., Masina S., Escudier R., Cipollone A., Azevedo D., Causio S., Peneva E., Lecci R., Clementi E., Jansen E., Ilicak M., Cret\u00ec S., Stefanizzi L., Palermo F., Coppini G., 2021: Climate Signals in the Black Sea From a Multidecadal Eddy-Resolving Reanalysis, Frontier in Marine Science, 8:710973, doi: 10.3389/fmars.2021.710973.\n* Masina S., A. Storto, N. Ferry, M. Valdivieso, K. Haines, M. Balmaseda, H. Zuo, M. Drevillon, L. Parent, 2017: An ensemble of eddy-permitting global ocean reanalyses from the MyOcean project. Climate Dynamics, 49 (3): 813-841, DOI: 10.1007/s00382-015-2728-5.\n* Stanev, E. V., Peneva, E., and Chtirkova, B. 2019: Climate change and regional ocean water mass disappearance: case of the Black Sea. J. Geophys. Res. Oceans, 124, 4803\u20134819, doi: 10.1029/2019JC015076.\n* von Schuckmann, K., F. Gaillard and P.-Y. Le Traon, 2009: Global hydrographic variability patterns during 2003-2008, Journal of Geophysical Research, 114, C09007, doi:10.1029/2008JC005237.\n* von Schuckmann et al., 2016: Ocean heat content. In: The Copernicus Marine Environment Monitoring Service Ocean State Report, issue 1, Journal of Operational Oceanography, Volume 9, 2016 - Issue sup2: The Copernicus Marine Environment Monitoring Service Ocean, http://dx.doi.org/10.1080/1755876X.2016.1273446.\n* von Schuckmann et al., 2018: Ocean heat content. In: The Copernicus Marine Environment Monitoring Service Ocean State Report, issue 2, Journal of Operational Oceanography, 11:Sup1, s1-s142, doi: 10.1080/1755876X.2018.1489208.\n* Degtyarev, A. K., 2000: Estimation of temperature increase of the Black Sea active layer during the period 1985\u2013 1997, Meteorilogiya i Gidrologiya, 6, 72\u2013 76 (in Russian).\n", "providers": [{"name": "CMCC (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00306"}, "OMI_HEALTH_CHL_GLOBAL_OCEANCOLOUR_oligo_npg_area_mean": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "area-type-oligotropic-gyre,coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-in-seawater-for-averaged-mean,multi-year,oceanographic-geographical-features,omi-health-chl-global-oceancolour-oligo-npg-area-mean,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "North Pacific Gyre Area Chlorophyll-a time series and trend from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nOligotrophic subtropical gyres are regions of the ocean with low levels of nutrients required for phytoplankton growth and low levels of surface chlorophyll-a whose concentration can be quantified through satellite observations. The gyre boundary has been defined using a threshold value of 0.15 mg m-3 chlorophyll for the Atlantic gyres (Aiken et al. 2016), and 0.07 mg m-3 for the Pacific gyres (Polovina et al. 2008). The area inside the gyres for each month is computed using monthly chlorophyll data from which the monthly climatology is subtracted to compute anomalies. A gap filling algorithm has been utilized to account for missing data inside the gyre. Trends in the area anomaly are then calculated for the entire study period (September 1997 to December 2021).\n\n**CONTEXT**\n\nOligotrophic gyres of the oceans have been referred to as ocean deserts (Polovina et al. 2008). They are vast, covering approximately 50% of the Earth\u2019s surface (Aiken et al. 2016). Despite low productivity, these regions contribute significantly to global productivity due to their immense size (McClain et al. 2004). Even modest changes in their size can have large impacts on a variety of global biogeochemical cycles and on trends in chlorophyll (Signorini et al 2015). Based on satellite data, Polovina et al. (2008) showed that the areas of subtropical gyres were expanding. The Ocean State Report (Sathyendranath et al. 2018) showed that the trends had reversed in the Pacific for the time segment from January 2007 to December 2016. \n\n**CMEMS KEY FINDINGS**\n\nThe trend in the North Pacific gyre area for the 1997 Sept \u2013 2021 December period was positive, with a 1.75% increase in area relative to 2000-01-01 values. Note that this trend is lower than the 2.17% reported for the 1997-2020 period. The trend is statistically significant (p<0.05). \nDuring the 1997 Sept \u2013 2021 December period, the trend in chlorophyll concentration was negative (-0.26% year-1) in the North Pacific gyre relative to 2000-01-01 values. This trend is slightly less negative than the trend of -0.31% year-1 for the 1997-2020 period, though the sign of the trend remains unchanged and is statistically significant (p<0.05). It must be noted that the difference is small and within the uncertainty of the calculations, indicating that the trend is significant, however there may be no change associated with the timeseries extension.\nFor 2016, The Ocean State Report (Sathyendranath et al. 2018) reported a large increase in gyre area in the Pacific Ocean (both North and South Pacific gyres), probably linked with the 2016 ENSO event which saw large decreases in chlorophyll in the Pacific Ocean. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00227\n\n**References:**\n\n* Aiken J, Brewin RJW, Dufois F, Polimene L, Hardman-Mountford NJ, Jackson T, Loveday B, Hoya SM, Dall\u2019Olmo G, Stephens J, et al. 2016. A synthesis of the environmental response of the North and South Atlantic sub-tropical gyres during two decades of AMT. Prog Oceanogr. doi:10.1016/j.pocean.2016.08.004.\n* McClain CR, Signorini SR, Christian JR 2004. Subtropical gyre variability observed by ocean-color satellites. Deep Sea Res Part II Top Stud Oceanogr. 51:281\u2013301. doi:10.1016/j.dsr2.2003.08.002.\n* Polovina JJ, Howell EA, Abecassis M 2008. Ocean\u2019s least productive waters are expanding. Geophys Res Lett. 35:270. doi:10.1029/2007GL031745.\n* Sathyendranath S, Pardo S, Brewin RJW. 2018. Oligotrophic gyres. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s13\u2013s16, DOI: 10.1080/1755876X.2018.1489208\n* Signorini SR, Franz BA, McClain CR 2015. Chlorophyll variability in the oligotrophic gyres: mechanisms, seasonality and trends. Front Mar Sci. 2. doi:10.3389/fmars.2015.00001.\n", "providers": [{"name": "PML (UK)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00227"}, "MEDSEA_OMI_TEMPSAL_sst_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,marine-resources,marine-safety,mediterranean-sea,medsea-omi-tempsal-sst-area-averaged-anomalies,multi-year,oceanographic-geographical-features,satellite-observation,sea-surface-temperature,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea Surface Temperature time series and trend from Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe medsea_omi_tempsal_sst_area_averaged_anomalies product for 2022 includes unfiltered Sea Surface Temperature (SST) anomalies, given as monthly mean time series starting on 1993 and averaged over the Mediterranean Sea, and 24-month filtered SST anomalies, obtained by using the X11-seasonal adjustment procedure (see e.g. Pezzulli et al., 2005; Pisano et al., 2020). This OMI is derived from the CMEMS Reprocessed Mediterranean L4 SST satellite product (SST_MED_SST_L4_REP_OBSERVATIONS_010_021, see also the OMI QUID, http://marine.copernicus.eu/documents/QUID/CMEMS-OMI-QUID-MEDSEA-SST.pdf), which provides the SSTs used to compute the evolution of SST anomalies (unfiltered and filtered) over the Mediterranean Sea. This reprocessed product consists of daily (nighttime) optimally interpolated 0.05\u00b0 grid resolution SST maps over the Mediterranean Sea built from the ESA Climate Change Initiative (CCI) (Merchant et al., 2019) and Copernicus Climate Change Service (C3S) initiatives, including also an adjusted version of the AVHRR Pathfinder dataset version 5.3 (Saha et al., 2018) to increase the input observation coverage. Anomalies are computed against the 1993-2014 reference period. The reference for this OMI can be found in the first and second issue of the Copernicus Marine Service Ocean State Report (OSR), Section 1.1 (Roquet et al., 2016; Mulet et al., 2018).\n\n**CONTEXT**\n\nSea surface temperature (SST) is a key climate variable since it deeply contributes in regulating climate and its variability (Deser et al., 2010). SST is then essential to monitor and characterise the state of the global climate system (GCOS 2010). Long-term SST variability, from interannual to (multi-)decadal timescales, provides insight into the slow variations/changes in SST, i.e. the temperature trend (e.g., Pezzulli et al., 2005). In addition, on shorter timescales, SST anomalies become an essential indicator for extreme events, as e.g. marine heatwaves (Hobday et al., 2018). The Mediterranean Sea is a climate change hotspot (Giorgi F., 2006). Indeed, Mediterranean SST has experienced a continuous warming trend since the beginning of 1980s (e.g., Pisano et al., 2020; Pastor et al., 2020). Specifically, since the beginning of the 21st century (from 2000 onward), the Mediterranean Sea featured the highest SSTs and this warming trend is expected to continue throughout the 21st century (Kirtman et al., 2013). \n\n**CMEMS KEY FINDINGS**\n\nDuring 2022, the Mediterranean Sea experienced an unprecedented long-lasting period of intense sea surface temperatures\u2019 warming or, in other words, an exceptional marine heatwave event. The basin average SST anomaly was 0.8 \u00b1 0.3 \u00b0C in 2022, well above the value of 0.5 \u00b1 0.2 \u00b0C recorded in 2021. The Mediterranean SST warming started in May 2022, when the mean anomaly increased abruptly from 0.01 \u00b0C (April) to 0.76 \u00b0C (May), reaching the highest values during June (1.66 \u00b0C) and July (1.52 \u00b0C), and persisting until the end of the year with anomalies around 1 \u00b0C above the 1993-2014 climatology. The peak of June 2022 set the record of highest SST anomaly ever recorded since 1993. The 2022 Mediterranean marine heatwave is comparable to that occurred in 2003 (see e.g. Olita et al., 2007) in terms of anomaly magnitude but longer in duration: it lasted about seven months (May-December 2022) compared to the three of 2003 summer event (June-September 2003).\nOver the period 1993-2022, the Mediterranean SST has warmed at a rate of 0.034 \u00b1 0.002 \u00b0C/year, which corresponds to an average increase of about 1 \u00b0C during these last 30 years. Within its error (namely, the 95% confidence interval), this warming trend is consistent with recent trend estimates in the Mediterranean Sea (Pisano et al., 2020; Pastor et al., 2020). However, though the linear trend being constantly increasing during the whole period, the picture of the Mediterranean SST trend in 2022 seems to reveal a restarting after the pause occurred in the last years (since 2015-2021).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00268\n\n**References:**\n\n* Giorgi, F., 2006. Climate change hot-spots. Geophys. Res. Lett., 33:L08707, https://doi.org/10.1029/2006GL025734\n* Deser, C., Alexander, M. A., Xie, S.-P., Phillips, A. S., 2010. Sea Surface Temperature Variability: Patterns and Mechanisms. Annual Review of Marine Science 2010 2:1, 115-143. https://doi.org/10.1146/annurev-marine-120408-151453\n* GCOS. Global Climate Observing System. 2010. Update of the Implementation Plan for the Global Observing System for Climate in Support of the UNFCCC (GCO-138).\n* Hobday, A. J., Oliver, E. C., Gupta, A. S., Benthuysen, J. A., Burrows, M. T., Donat, M. G., ... & Smale, D. A. (2018). Categorizing and naming marine heatwaves. Oceanography, 31(2), 162-173.\n* Merchant, C. J., Embury, O., Bulgin, C. E., Block, T., Corlett, G. K., Fiedler, E., ... & Eastwood, S. (2019). Satellite-based time-series of sea-surface temperature since 1981 for climate applications. Scientific data, 6(1), 1-18.\n* Mulet, S., Buongiorno Nardelli, B., Good, S., Pisano, A., Greiner, E., Monier, M., Autret, E., Axell, L., Boberg, F., Ciliberti, S., Dr\u00e9villon, M., Droghei, R., Embury, O., Gourrion, J., H\u00f8yer, J., Juza, M., Kennedy, J., Lemieux-Dudon, B., Peneva, E., Reid, R., Simoncelli, S., Storto, A., Tinker, J., Von Schuckmann, K., Wakelin, S. L., 2018. Ocean temperature and salinity. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s5\u2013s13, DOI: 10.1080/1755876X.2018.1489208\n* Pezzulli, S., Stephenson, D. B., Hannachi, A., 2005. The Variability of Seasonality. J. Climate. 18:71\u201388. doi:10.1175/JCLI-3256.1.\n* Roquet, H., Pisano, A., Embury, O., 2016. Sea surface temperature. In: von Schuckmann et al. 2016, The Copernicus Marine Environment Monitoring Service Ocean State Report, Jour. Operational Ocean., vol. 9, suppl. 2. doi:10.1080/1755876X.2016.1273446.\n* Saha, Korak; Zhao, Xuepeng; Zhang, Huai-min; Casey, Kenneth S.; Zhang, Dexin; Baker-Yeboah, Sheekela; Kilpatrick, Katherine A.; Evans, Robert H.; Ryan, Thomas; Relph, John M. (2018). AVHRR Pathfinder version 5.3 level 3 collated (L3C) global 4km sea surface temperature for 1981-Present. NOAA National Centers for Environmental Information. Dataset. https://doi.org/10.7289/v52j68xx\n* Sen, P. K., 1968. Estimates of the regression coefficient based on Kendall\u2019s tau. J Am Statist Assoc. 63:1379\u20131389.\n* Pisano, A., Marullo, S., Artale, V., Falcini, F., Yang, C., Leonelli, F. E., Santoleri, R. and Buongiorno Nardelli, B.: New Evidence of Mediterranean Climate Change and Variability from Sea Surface Temperature Observations, Remote Sens., 12(1), 132, doi:10.3390/rs12010132, 2020.\n* Pastor, F., Valiente, J. A., & Khodayar, S. (2020). A Warming Mediterranean: 38 Years of Increasing Sea Surface Temperature. Remote Sensing, 12(17), 2687.\n* Olita, A., Sorgente, R., Natale, S., Gaber\u0161ek, S., Ribotti, A., Bonanno, A., & Patti, B. (2007). Effects of the 2003 European heatwave on the Central Mediterranean Sea: surface fluxes and the dynamical response. Ocean Science, 3(2), 273-289.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00268"}, "BLKSEA_OMI_TEMPSAL_sst_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "black-sea,blksea-omi-tempsal-sst-area-averaged-anomalies,coastal-marine-environment,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-surface-temperature,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea Surface Temperature time series and trend from Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "\"_DEFINITION_'\n\nThe blksea_omi_tempsal_sst_area_averaged_anomalies product for 2022 includes unfiltered Sea Surface Temperature (SST) anomalies, given as monthly mean time series starting on 1993 and averaged over the Black Sea, and 24-month filtered SST anomalies, obtained by using the X11-seasonal adjustment procedure. This OMI is derived from the CMEMS Reprocessed Black Sea L4 SST satellite product (SST_BS_SST_L4_REP_OBSERVATIONS_010_022, see e.g. the OMI QUID, http://marine.copernicus.eu/documents/QUID/CMEMS-OMI-QUID-BLKSEA-SST.pdf), which provided the SSTs used to compute the evolution of SST anomalies (unfiltered and filtered) over the Black Sea. This reprocessed product consists of daily (nighttime) optimally interpolated 0.05\u00b0 grid resolution SST maps over the Black Sea built from the ESA Climate Change Initiative (CCI) (Merchant et al., 2019) and Copernicus Climate Change Service (C3S) initiatives, including also an adjusted version of the AVHRR Pathfinder dataset version 5.3 (Saha et al., 2018) to increase the input observation coverage. Anomalies are computed against the 1993-2014 reference period. The reference for this OMI can be found in the first and second issue of the Copernicus Marine Service Ocean State Report (OSR), Section 1.1 (Roquet et al., 2016; Mulet et al., 2018).\n\n**CONTEXT**\n\nSea surface temperature (SST) is a key climate variable since it deeply contributes in regulating climate and its variability (Deser et al., 2010). SST is then essential to monitor and characterise the state of the global climate system (GCOS 2010). Long-term SST variability, from interannual to (multi-)decadal timescales, provides insight into the slow variations/changes in SST, i.e. the temperature trend (e.g., Pezzulli et al., 2005). In addition, on shorter timescales, SST anomalies become an essential indicator for extreme events, as e.g. marine heatwaves (Hobday et al., 2018). In the last decades, since the availability of satellite data (beginning of 1980s), the Black Sea has experienced a warming trend in SST (see e.g. Buongiorno Nardelli et al., 2010; Mulet et al., 2018). \n\n**CMEMS KEY FINDINGS**\n\nDuring 2022, the Black Sea basin average SST anomaly was ~0.6 \u00b0C above the 1993-2014 climatology, slightly higher than that of previous year (~0.5 \u00b0C). The Black Sea SST monthly anomalies ranged between -1.0/+1.0 \u00b0C. The highest temperature anomaly (~1.6 \u00b0C) was reached in December 2022, while the lowest (~-0.07 \u00b0C) in April. This year, along with 2021, was characterized by milder temperature anomalies with respect to the previous three consecutive years (2018-2020) marked by peaks of ~3 \u00b0C occurred in May 2018, June 2019, and October 2020.\nOver the period 1993-2022, the Black Sea SST has warmed at a rate of 0.070 \u00b1 0.004 \u00b0C/year, which corresponds to an average increase of about 2 \u00b0C during these last 30 years. The picture of the trend seems to maintain a decreasing tendency since recent years.\n\n**Figure caption**\n\nTime series of monthly mean (blue line) and 24-month filtered (red line) sea surface temperature anomalies in the Black Sea during the period 1993-2022. Anomalies are relative to the climatological period 1993-2014 and built from the CMEMS SST_BS_SST_L4_REP_OBSERVATIONS_010_022 satellite product (see e.g. the OMI QUID, http://marine.copernicus.eu/documents/QUID/CMEMS-OMI-QUID-BLKSEA-SST.pdf). The sea surface temperature trend with its 95% confidence interval (shown in the box) is estimated by using the X-11 seasonal adjustment procedure (e.g. Pezzulli et al., 2005) and Sen\u2019s method (Sen 1968). The reference for this OMI can be found in the first and second issue of the Copernicus Marine Service Ocean State Report (OSR), Section 1.1 (Roquet et al., 2016; Mulet et al., 2018).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00217\n\n**References:**\n\n* Buongiorno Nardelli, B., Colella, S. Santoleri, R., Guarracino, M., Kholod, A., 2010. A re-analysis of Black Sea surface temperature. Journal of Marine Systems, 79, Issues 1\u20132, 50-64, ISSN 0924-7963, https://doi.org/10.1016/j.jmarsys.2009.07.001.\n* Deser, C., Alexander, M. A., Xie, S.-P., Phillips, A. S., 2010. Sea Surface Temperature Variability: Patterns and Mechanisms. Annual Review of Marine Science 2010 2:1, 115-143. https://doi.org/10.1146/annurev-marine-120408-151453\n* GCOS. Global Climate Observing System. 2010. Update of the Implementation Plan for the Global Observing System for Climate in Support of the UNFCCC (GCO-138).\n* Hobday, A. J., Oliver, E. C., Gupta, A. S., Benthuysen, J. A., Burrows, M. T., Donat, M. G., ... & Smale, D. A. (2018). Categorizing and naming marine heatwaves. Oceanography, 31(2), 162-173.\n* Merchant, C. J., Embury, O., Bulgin, C. E., Block, T., Corlett, G. K., Fiedler, E., ... & Eastwood, S. (2019). Satellite-based time-series of sea-surface temperature since 1981 for climate applications. Scientific data, 6(1), 1-18.\n* Mulet, S., Buongiorno Nardelli, B., Good, S., Pisano, A., Greiner, E., Monier, M., Autret, E., Axell, L., Boberg, F., Ciliberti, S., Dr\u00e9villon, M., Droghei, R., Embury, O., Gourrion, J., H\u00f8yer, J., Juza, M., Kennedy, J., Lemieux-Dudon, B., Peneva, E., Reid, R., Simoncelli, S., Storto, A., Tinker, J., Von Schuckmann, K., Wakelin, S. L., 2018. Ocean temperature and salinity. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s5\u2013s13, DOI: 10.1080/1755876X.2018.1489208\n* Pezzulli, S., Stephenson, D. B., Hannachi, A., 2005. The Variability of Seasonality. J. Climate. 18:71\u201388. doi:10.1175/JCLI-3256.1.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00217"}, "OMI_HEALTH_CHL_BLKSEA_OCEANCOLOUR_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "black-sea,change-in-mass-concentration-of-chlorophyll-in-seawater-over-time,coastal-marine-environment,level-4,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-health-chl-blksea-oceancolour-trend,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea Chlorophyll-a trend map from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThis product includes the Black Sea satellite chlorophyll trend map based on regional chlorophyll reprocessed (MY) product as distributed by CMEMS OC-TAC. This dataset, derived from multi-sensor (SeaStar-SeaWiFS, AQUA-MODIS, NOAA20-VIIRS, NPP-VIIRS, Envisat-MERIS and Sentinel3-OLCI) Rrs spectra produced by CNR using an in-house processing chain, is obtained by means of two different regional algorithms developed with the BiOMaP data set (Zibordi et al., 2011): a band-ratio algorithm (B/R) (Zibordi et al., 2015) and a Multilayer Perceptron (MLP) neural net algorithm based on Rrs values at three individual wavelengths (490, 510 and 555 nm) (Kajiyama et al., 2018). The processing chain and the techniques used for algorithms merging are detailed in Colella et al. (2023). \nThe trend map is obtained by applying Colella et al. (2016) methodology, where the Mann-Kendall test (Mann, 1945; Kendall, 1975) and Sens\u2019s method (Sen, 1968) are applied on deseasonalized monthly time series, as obtained from the X-11 technique (see e. g. Pezzulli et al. 2005), to estimate, trend magnitude and its significance. The trend is expressed in % per year that represents the relative changes (i.e., percentage) corresponding to the dimensional trend [mg m-3 y-1] with respect to the reference climatology (1997-2014). Only significant trends (p < 0.05) are included.\n\n**CONTEXT**\n\nPhytoplankton are key actors in the carbon cycle and, as such, recognised as an Essential Climate Variable (ECV). Chlorophyll concentration - as a proxy for phytoplankton - respond rapidly to changes in environmental conditions, such as light, temperature, nutrients and mixing (Colella et al. 2016). The character of the response depends on the nature of the change drivers, and ranges from seasonal cycles to decadal oscillations (Basterretxea et al. 2018). Therefore, it is of critical importance to monitor chlorophyll concentration at multiple temporal and spatial scales, in order to be able to separate potential long-term climate signals from natural variability in the short term. In particular, phytoplankton in the Black Sea is known to respond to climate variability associated with the North Atlantic Oscillation (NAO) (Oguz et al .2003). Furthermore, chlorophyll analysis also demands the use of robust statistical temporal decomposition techniques, in order to separate the long-term signal from the seasonal component of the time series.\n\n**CMEMS KEY FINDINGS**\n\nThe average Black Sea trend for the 1997-2022 period is absolutely similar to the previous release (1997-2021) and about -1.4% per year. The trend is negative overall the basin, with weaker values in the central area, up to no significant trend percentages. The western side of the basin highlights markable negative trend. Negative values are shown in the Azov Sea with a strong inversion offshore the Don River. The overall negative trend in the map is in accordance with the results of Bengil and Mavruk (2018), that revealed a decreasing trend of chlorophyll during the post-eutrophication phase in the years 1997-2017.\n\n**Figure caption**\n\nBlack Sea satellite chlorophyll trend over the period 1997-2022, based on CMEMS product OCEANCOLOUR_BLK_BGC_L4_MY_009_154. Trend are expressed in % per year, with positive trends in red and negative trends in blue.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00212\n\n**References:**\n\n* Basterretxea, G., Font-Mu\u00f1oz, J. S., Salgado-Hernanz, P. M., Arrieta, J., & Hern\u00e1ndez-Carrasco, I. (2018). Patterns of chlorophyll interannual variability in Mediterranean biogeographical regions. Remote Sensing of Environment, 215, 7-17.\n* Bengil, F., & Mavruk, S. (2018). Bio-optical trends of seas around Turkey: An assessment of the spatial and temporal variability. Oceanologia, 60(4), 488-499.\n* Colella, S., Falcini, F., Rinaldi, E., Sammartino, M., & Santoleri, R. (2016). Mediterranean ocean colour chlorophyll trends. PloS one, 11(6).\n* Colella, S., Brando, V.E., Cicco, A.D., D\u2019Alimonte, D., Forneris, V., Bracaglia, M., 2021. OCEAN COLOUR PRODUCTION CENTRE, Ocean Colour Mediterranean and Black Sea Observation Product. Copernicus Marine Environment Monitoring Centre. Quality Information Document (https://catalogue.marine.copernicus.eu/documents/QUID/CMEMS-OC-QUID-009-038to045-071-073-078-079-095-096.pdf.)\n* Kajiyama T., D. D\u2019Alimonte, and G. Zibordi, \u201cAlgorithms merging for the determination of Chlorophyll-a concentration in the Black Sea,\u201d IEEE Geoscience and Remote Sensing Letters, 2018. [Online]. Available: https://-www.doi.org/\u00ac10.1109/\u00acLGRS.2018.2883539\n* Kendall MG. 1975. Multivariate analysis. London: Charles Griffin & Co; p. 210, 43.\n* Mann HB. 1945. Nonparametric tests against trend. Econometrica. 13:245\u2013259. p. 42.\n* Oguz, T., Cokacar, T., Malanotte\u2010Rizzoli, P., & Ducklow, H. W. (2003). Climatic warming and accompanying changes in the ecological regime of the Black Sea during 1990s. Global Biogeochemical Cycles, 17(3).\n* Pezzulli S, Stephenson DB, Hannachi A. 2005. The Variability of Seasonality. J. Climate. 18:71\u201388. doi:10.1175/JCLI-3256.1.\n* Sathyendranath, S., Pardo, S., Benincasa, M., Brando, V. E., Brewin, R. J.W., M\u00e9lin, F., Santoleri, R., 2018, 1.5. Essential Variables: Ocean Colour in Copernicus Marine Service Ocean State Report - Issue 2, Journal of Operational Oceanography, 11:sup1, 1-142, doi: 10.1080/1755876X.2018.1489208.\n* Sen PK. 1968. Estimates of the regression coefficient based on Kendall\u2019s tau. J Am Statist Assoc. 63:1379\u20131389.\n* Zibordi, G., Berthon, J.-F., Me\u0301lin, F., and D\u2019Alimonte, D.: Cross- site consistent in situ measurements for satellite ocean color ap- plications: the BiOMaP radiometric dataset, Rem. Sens. Environ., 115, 2104\u20132115, 2011.\n* Zibordi, G., F. Me\u0301lin, J.-F. Berthon, and M. Talone (2015). In situ autonomous optical radiometry measurements for satellite ocean color validation in the Western Black Sea. Ocean Sci., 11, 275\u2013286, 2015.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00212"}, "GLOBAL_OMI_SL_thsl_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-sl-thsl-trend,in-situ-observation,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Thermosteric Sea Level trend map from Reanalysis & Multi-Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe temporal evolution of thermosteric sea level in an ocean layer is obtained from an integration of temperature driven ocean density variations, which are subtracted from a reference climatology to obtain the fluctuations from an average field. The regional thermosteric sea level values are then averaged from 60\u00b0S-60\u00b0N aiming to monitor interannual to long term global sea level variations caused by temperature driven ocean volume changes through thermal expansion as expressed in meters (m).\n\n**CONTEXT**\n\nMost of the interannual variability and trends in regional sea level is caused by changes in steric sea level. At mid and low latitudes, the steric sea level signal is essentially due to temperature changes, i.e. the thermosteric effect (Stammer et al., 2013, Meyssignac et al., 2016). Salinity changes play only a local role. Regional trends of thermosteric sea level can be significantly larger compared to their globally averaged versions (Storto et al., 2018). Except for shallow shelf sea and high latitudes (> 60\u00b0 latitude), regional thermosteric sea level variations are mostly related to ocean circulation changes, in particular in the tropics where the sea level variations and trends are the most intense over the last two decades. \n\n**CMEMS KEY FINDINGS**\n\nSignificant (i.e. when the signal exceeds the noise) regional trends for the period 2005-2019 from the Copernicus Marine Service multi-ensemble approach show a thermosteric sea level rise at rates ranging from the global mean average up to more than 8 mm/year. There are specific regions where a negative trend is observed above noise at rates up to about -8 mm/year such as in the subpolar North Atlantic, or the western tropical Pacific. These areas are characterized by strong year-to-year variability (Dubois et al., 2018; Capotondi et al., 2020). \n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00241\n\n**References:**\n\n* Capotondi, A., Wittenberg, A.T., Kug, J.-S., Takahashi, K. and McPhaden, M.J. (2020). ENSO Diversity. In El Ni\u00f1o Southern Oscillation in a Changing Climate (eds M.J. McPhaden, A. Santoso and W. Cai). https://doi.org/10.1002/9781119548164.ch4\n* Dubois et al., 2018 : Changes in the North Atlantic. Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s1\u2013s142, DOI: 10.1080/1755876X.2018.1489208\n* Storto et al., 2018: Thermosteric Sea Level. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s13\u2013s16, DOI: 10.1080/1755876X.2018.1489208\n* Stammer D, Cazenave A, Ponte RM, Tamisiea ME (2013) Causes for contemporary regional sea level changes. Ann Rev Mar Sci 5:21\u201346. doi:10.1146/annurev-marine-121211-172406\n* Meyssignac, B., C. G. Piecuch, C. J. Merchant, M.-F. Racault, H. Palanisamy, C. MacIntosh, S. Sathyendranath, R. Brewin, 2016: Causes of the Regional Variability in Observed Sea Level, Sea Surface Temperature and Ocean Colour Over the Period 1993\u20132011\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00241"}, "SST_ATL_PHY_L3S_MY_010_038": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,level-3,marine-resources,marine-safety,multi-year,north-west-shelf-seas,oceanographic-geographical-features,satellite-observation,sea-surface-foundation-temperature,sst-atl-phy-l3s-my-010-038,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "European North West Shelf/Iberia Biscay Irish Seas \u2013 High Resolution ODYSSEA Sea Surface Temperature Multi-sensor L3 Observations Reprocessed", "missionStartDate": "1982-01-01T00:00:00Z", "abstract": "For the NWS/IBI Ocean- Sea Surface Temperature L3 Observations . This product provides daily foundation sea surface temperature from multiple satellite sources. The data are intercalibrated. This product consists in a fusion of sea surface temperature observations from multiple satellite sensors, daily, over a 0.05\u00b0 resolution grid. It includes observations by polar orbiting from the ESA CCI / C3S archive . The L3S SST data are produced selecting only the highest quality input data from input L2P/L3P images within a strict temporal window (local nightime), to avoid diurnal cycle and cloud contamination. The observations of each sensor are intercalibrated prior to merging using a bias correction based on a multi-sensor median reference correcting the large-scale cross-sensor biases.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00311", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00311"}, "MEDSEA_OMI_TEMPSAL_sst_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "change-over-time-in-sea-surface-temperature,coastal-marine-environment,marine-resources,marine-safety,mediterranean-sea,medsea-omi-tempsal-sst-trend,multi-year,oceanographic-geographical-features,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea Surface Temperature cumulative trend map from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe medsea_omi_tempsal_sst_trend product includes the cumulative/net Sea Surface Temperature (SST) trend for the Mediterranean Sea over the period 1993-2022, i.e. the rate of change (\u00b0C/year) multiplied by the number years in the time series (30 years). This OMI is derived from the CMEMS Reprocessed Mediterranean L4 SST product (SST_MED_SST_L4_REP_OBSERVATIONS_010_021, see also the OMI QUID, http://marine.copernicus.eu/documents/QUID/CMEMS-OMI-QUID-MEDSEA-SST.pdf), which provides the SSTs used to compute the SST trend over the Mediterranean Sea. This reprocessed product consists of daily (nighttime) optimally interpolated 0.05\u00b0 grid resolution SST maps over the Mediterranean Sea built from the ESA Climate Change Initiative (CCI) (Merchant et al., 2019) and Copernicus Climate Change Service (C3S) initiatives, including also an adjusted version of the AVHRR Pathfinder dataset version 5.3 (Saha et al., 2018) to increase the input observation coverage. Trend analysis has been performed by using the X-11 seasonal adjustment procedure (see e.g. Pezzulli et al., 2005; Pisano et al., 2020), which has the effect of filtering the input SST time series acting as a low bandpass filter for interannual variations. Mann-Kendall test and Sens\u2019s method (Sen 1968) were applied to assess whether there was a monotonic upward or downward trend and to estimate the slope of the trend and its 95% confidence interval. The reference for this OMI can be found in the first and second issue of the Copernicus Marine Service Ocean State Report (OSR), Section 1.1 (Roquet et al., 2016; Mulet et al., 2018).\n\n**CONTEXT**\n\nSea surface temperature (SST) is a key climate variable since it deeply contributes in regulating climate and its variability (Deser et al., 2010). SST is then essential to monitor and characterize the state of the global climate system (GCOS 2010). Long-term SST variability, from interannual to (multi-)decadal timescales, provides insight into the slow variations/changes in SST, i.e. the temperature trend (e.g., Pezzulli et al., 2005). In addition, on shorter timescales, SST anomalies become an essential indicator for extreme events, as e.g. marine heatwaves (Hobday et al., 2018). The Mediterranean Sea is a climate change hotspot (Giorgi F., 2006). Indeed, Mediterranean SST has experienced a continuous warming trend since the beginning of 1980s (e.g., Pisano et al., 2020; Pastor et al., 2020). Specifically, since the beginning of the 21st century (from 2000 onward), the Mediterranean Sea featured the highest SSTs and this warming trend is expected to continue throughout the 21st century (Kirtman et al., 2013). \n\n**CMEMS KEY FINDINGS**\n\nThe spatial pattern of the Mediterranean SST trend shows a general warming tendency, ranging from 0.002 \u00b0C/year to 0.063 \u00b0C/year. Overall, a higher SST trend intensity characterizes the Eastern and Central Mediterranean basin with respect to the Western basin. In particular, the Balearic Sea, Tyrrhenian and Adriatic Seas, as well as the northern Ionian and Aegean-Levantine Seas show the highest SST trends (from 0.04 \u00b0C/year to 0.05 \u00b0C/year on average). Trend patterns of warmer intensity characterize some of main sub-basin Mediterranean features, such as the Pelops Anticyclone, the Cretan gyre and the Rhodes Gyre. On the contrary, less intense values characterize the southern Mediterranean Sea (toward the African coast), where the trend attains around 0.025 \u00b0C/year. The SST warming rate spatial change, mostly showing an eastward increase pattern (see, e.g., Pisano et al., 2020, and references therein), i.e. the Levantine basin getting warm faster than the Western, appears now to have tilted more along a North-South direction.\n\n**Figure caption**\n\nSea surface temperature cumulative trend over the period 1993-2022 in the Mediterranean Sea. The cumulative trend is the rate of change (\u00b0C/year) scaled by the number of time steps (30 years). The Mediterranean trend map in sea surface temperature is derived from the CMEMS SST_MED_SST_L4_REP_OBSERVATIONS_010_021 product (see e.g. the OMI QUID, http://marine.copernicus.eu/documents/QUID/CMEMS-OMI-QUID-MEDSEA-SST.pdf). The trend is estimated at the 95% confidence interval by using the X-11 seasonal adjustment procedure (e.g. Pezzulli et al., 2005; Pisano et al., 2020) and Sen\u2019s method (Sen 1968). Grey crosses, rounding the Ierapetra gyre and in proximity of the Strait of Gibraltar, indicate that trend values are not statistically significant (namely, less than 95% c.i.). The reference for this OMI can be found in the first and second issue of the Copernicus Marine Service Ocean State Report (OSR), Section 1.1 (Roquet et al., 2016; Mulet et al., 2018).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00269\n\n**References:**\n\n* Deser, C., Alexander, M. A., Xie, S.-P., Phillips, A. S., 2010. Sea Surface Temperature Variability: Patterns and Mechanisms. Annual Review of Marine Science 2010 2:1, 115-143. https://doi.org/10.1146/annurev-marine-120408-151453\n* GCOS. Global Climate Observing System. 2010. Update of the Implementation Plan for the Global Observing System for Climate in Support of the UNFCCC (GCO-138).\n* Giorgi, F., 2006. Climate change hot-spots. Geophys. Res. Lett., 33:L08707, https://doi.org/10.1029/2006GL025734 Hobday, A. J., Oliver, E. C., Gupta, A. S., Benthuysen, J. A., Burrows, M. T., Donat, M. G., ... & Smale, D. A. (2018). Categorizing and naming marine heatwaves. Oceanography, 31(2), 162-173.\n* Kirtman, B., Power, S. B, Adedoyin, J. A., Boer, G. J., Bojariu, R. et al., 2013. Near-term climate change: Projections and Predictability. In: Stocker, T.F., et al. (Eds.), Climate change 2013: The physical science basis. Contribution of Working Group I to the Fifth Assessment Report of the Intergovernmental Panel on Climate Change. Cambridge University Press, Cambridge and New York.\n* Merchant, C. J., Embury, O., Bulgin, C. E., Block, T., Corlett, G. K., Fiedler, E., ... & Eastwood, S. (2019). Satellite-based time-series of sea-surface temperature since 1981 for climate applications. Scientific data, 6(1), 1-18.\n* Mulet, S., Buongiorno Nardelli, B., Good, S., Pisano, A., Greiner, E., Monier, M., Autret, E., Axell, L., Boberg, F., Ciliberti, S., Dr\u00e9villon, M., Droghei, R., Embury, O., Gourrion, J., H\u00f8yer, J., Juza, M., Kennedy, J., Lemieux-Dudon, B., Peneva, E., Reid, R., Simoncelli, S., Storto, A., Tinker, J., Von Schuckmann, K., Wakelin, S. L., 2018. Ocean temperature and salinity. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s5\u2013s13, DOI: 10.1080/1755876X.2018.1489208\n* Pastor, F., Valiente, J. A., & Khodayar, S. (2020). A Warming Mediterranean: 38 Years of Increasing Sea Surface Temperature. Remote Sensing, 12(17), 2687.\n* Pezzulli, S., Stephenson, D. B., Hannachi, A., 2005. The Variability of Seasonality. J. Climate. 18:71\u201388. doi:10.1175/JCLI-3256.1.\n* Pisano, A., Marullo, S., Artale, V., Falcini, F., Yang, C., Leonelli, F. E., Santoleri, R. and Buongiorno Nardelli, B.: New Evidence of Mediterranean Climate Change and Variability from Sea Surface Temperature Observations, Remote Sens., 12(1), 132, doi:10.3390/rs12010132, 2020.\n* Roquet, H., Pisano, A., Embury, O., 2016. Sea surface temperature. In: von Schuckmann et al. 2016, The Copernicus Marine Environment Monitoring Service Ocean State Report, Jour. Operational Ocean., vol. 9, suppl. 2. doi:10.1080/1755876X.2016.1273446.\n* Saha, Korak; Zhao, Xuepeng; Zhang, Huai-min; Casey, Kenneth S.; Zhang, Dexin; Baker-Yeboah, Sheekela; Kilpatrick, Katherine A.; Evans, Robert H.; Ryan, Thomas; Relph, John M. (2018). AVHRR Pathfinder version 5.3 level 3 collated (L3C) global 4km sea surface temperature for 1981-Present. NOAA National Centers for Environmental Information. Dataset. https://doi.org/10.7289/v52j68xx\n* Sen, P. K., 1968. Estimates of the regression coefficient based on Kendall\u2019s tau. J Am Statist Assoc. 63:1379\u20131389.\n* Hobday, A. J., Oliver, E. C., Gupta, A. S., Benthuysen, J. A., Burrows, M. T., Donat, M. G., ... & Smale, D. A. (2018). Categorizing and naming marine heatwaves. Oceanography, 31(2), 162-173.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00269"}, "GLOBAL_OMI_WMHE_voltrp": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-wmhe-voltrp,marine-resources,marine-safety,multi-year,numerical-model,ocean-volume-transport-across-line,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mean Volume Transport across sections from Reanalysis", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nVolume transport across lines are obtained by integrating the volume fluxes along some selected sections and from top to bottom of the ocean. The values are computed from models\u2019 daily output.\nThe mean value over a reference period (1993-2014) and over the last full year are provided for the ensemble product and the individual reanalysis, as well as the standard deviation for the ensemble product over the reference period (1993-2014). The values are given in Sverdrup (Sv).\n\n**CONTEXT**\n\nThe ocean transports heat and mass by vertical overturning and horizontal circulation, and is one of the fundamental dynamic components of the Earth\u2019s energy budget (IPCC, 2013). There are spatial asymmetries in the energy budget resulting from the Earth\u2019s orientation to the sun and the meridional variation in absorbed radiation which support a transfer of energy from the tropics towards the poles. However, there are spatial variations in the loss of heat by the ocean through sensible and latent heat fluxes, as well as differences in ocean basin geometry and current systems. These complexities support a pattern of oceanic heat transport that is not strictly from lower to high latitudes. Moreover, it is not stationary and we are only beginning to unravel its variability. \n\n**CMEMS KEY FINDINGS**\n\nThe mean transports estimated by the ensemble global reanalysis are comparable to estimates based on observations; the uncertainties on these integrated quantities are still large in all the available products. At Drake Passage, the multi-product approach (product no. 2.4.1) is larger than the value (130 Sv) of Lumpkin and Speer (2007), but smaller than the new observational based results of Colin de Verdi\u00e8re and Ollitrault, (2016) (175 Sv) and Donohue (2017) (173.3 Sv).\n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00247\n\n**References:**\n\n* Lumpkin R, Speer K. 2007. Global ocean meridional overturning. J. Phys. Oceanogr., 37, 2550\u20132562, doi:10.1175/JPO3130.1.\n* Madec G : NEMO ocean engine, Note du P\u00f4le de mod\u00e9lisation, Institut Pierre-Simon Laplace (IPSL), France, No 27, ISSN No 1288-1619, 2008\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00247"}, "BALTIC_OMI_TEMPSAL_Ttz_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-omi-tempsal-ttz-trend,baltic-sea,coastal-marine-environment,confidence-interval,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,sea-water-temperature-trend,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Subsurface Temperature trend from Reanalysis", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe subsurface temperature trends have been derived from regional reanalysis results for the Baltic Sea (product references BALTICSEA_MULTIYEAR_PHY_003_011). Horizontal averaging has been done over the Baltic Sea domain (13 \u00b0E - 31 \u00b0E and 53 \u00b0N - 66 \u00b0N; excluding the Skagerrak strait). The temperature trend has been obtained through a linear fit for each time series of horizontally averaged annual temperature and at each depth level.\n\n**CONTEXT**\n\nThe Baltic Sea is a semi-enclosed sea in North-Eastern Europe. The temperature of the upper mixed layer of the Baltic Sea is characterised by a strong seasonal cycle driven by the annual course of solar radiation (Lepp\u00e4ranta and Myrberg, 2008). The maximum water temperatures in the upper layer are reached in July and August and the minimum during February, when the Baltic Sea becomes partially frozen (CMEMS OMI Baltic Sea Sea Ice Extent: BALTIC_OMI_SI_extent, CMEMS OMI Baltic Sea Sea Ice Volume: BALTIC_OMI_SI_volume). Seasonal thermocline, developing in the depth range of 10-30 m in spring, reaches its maximum strength in summer and is eroded in autumn. During autumn and winter the Baltic Sea is thermally mixed down to the permanent halocline in the depth range of 60-80 metres (Matth\u00e4us, 1984). The 20\u201350 m thick cold intermediate layer forms below the upper mixed layer in March and is observed until October within the 15-65 m depth range (Chubarenko and Stepanova, 2018; Liblik and Lips, 2011). The deep layers of the Baltic Sea are disconnected from the ventilated upper ocean layers, and temperature variations are predominantly driven by mixing processes and horizontal advection. A warming trend of the sea surface waters is positively correlated with the increasing trend of diffuse attenuation of light (Kd490) and satellite-detected chlorophyll concentration (Kahru et al., 2016). Temperature increase in the water column could accelerate oxygen consumption during organic matter oxidation (Savchuk, 2018).\n\n**CMEMS KEY FINDINGS**\n\nThe subsurface temperature over the 1993-2022 period shows warming trends of about 0.05 \u00b0C/year at all depths. The largest warming trend of 0.07 \u00b0C/year is recorded in the deep layer starting at the depth of 100 m. In the upper mixed layer, temperature has increased with the rate of 0.05 oC/year. In the cold intermediate layer, temperature increase has been lowest, i.e 0.03 oC/year. A positive trend in the sea surface waters has been detected since the 1990s (BACCII Author Team, 2015) as well as a decreasing trend of the start day of the spring phytoplankton bloom (Raudsepp et al., 2019; Kahru et al., 2016). From the measurements Savchuk (2018) has calculated the temperature trend of 0.04 oC/year on average in the deep layers (>60m) of the Baltic Proper since 1979. The temperature trend in the upper layer of 60-m has the widest confidence interval, which indicates the largest interannual variability in that layer.\n\n**Figure caption**\n\nThe vertical profile of subsurface horizontally averaged temperature trend for the period of 1993-2022. The temperature from Copernicus Marine Service regional reanalysis product BALTICSEA_MULTIYEAR_PHY_003_011 have been averaged over the Baltic Sea domain (13 \u00b0E - 31 \u00b0E; 53 \u00b0N - 66 \u00b0N; excluding the Skagerrak strait). The shaded area shows 95% confidence interval of calculated trend values.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00208\n\n**References:**\n\n* BACCII Author Team 2015. Second Assessment of Climate Change for the Baltic Sea Basin. Regional Climate Studies. Berlin; Heidelberg: Springer Verlag.\n* Chubarenko, I., Stepanova, N. 2018. Cold intermediate layer of the Baltic Sea: Hypothesis of the formation of its core. Progress in Oceanography, 167, 1-10, doi: 10.1016/j.pocean.2018.06.012\n* Kahru, M., Elmgren, R., and Savchuk, O. P. 2016. Changing seasonality of the Baltic Sea. Biogeosciences 13, 1009\u20131018. doi: 10.5194/bg-13-1009-2016\n* Lepp\u00e4ranta, M., Myrberg, K. 2008. Physical Oceanography of the Baltic Sea. Springer, Praxis Publishing, Chichester, UK, pp. 370\n* Liblik, T., Lips, U. 2011. Characteristics and variability of the vertical thermohaline structure in the Gulf of Finland in summer. Boreal Environment Research, 16, 73-83.\n* Matth\u00e4us W, 1984, Climatic and seasonal variability of oceanological parameters in the Baltic Sea, Beitr. Meereskund, 51, 29\u201349.\n* Raudsepp, U., She, J., Brando, V.E., Santoleri, R., Sammartino, M., K\u00f5uts, M., Uiboupin, R., Maljutenko, I. 2019. 2.6 Phytoplankton blooms in the Baltic Sea. In : Copernicus Marine Service Ocean State Report, Issue 3\n* Savchuk, .P. 2018. Large-Scale Nutrient Dynamics in the Baltic Sea, 1970\u20132016. Frontiers in Marine Science, 5:95, doi: 10.3389/fmars.2018.00095\n", "providers": [{"name": "SMHI (Sweden)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00208"}, "OMI_HEALTH_CHL_GLOBAL_OCEANCOLOUR_oligo_spg_area_mean": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "area-type-oligotropic-gyre,coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-in-seawater-for-averaged-mean,multi-year,oceanographic-geographical-features,omi-health-chl-global-oceancolour-oligo-spg-area-mean,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "South Pacific Gyre Area Chlorophyll-a time series and trend from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nOligotrophic subtropical gyres are regions of the ocean with low levels of nutrients required for phytoplankton growth and low levels of surface chlorophyll-a whose concentration can be quantified through satellite observations. The gyre boundary has been defined using a threshold value of 0.15 mg m-3 chlorophyll for the Atlantic gyres (Aiken et al. 2016), and 0.07 mg m-3 for the Pacific gyres (Polovina et al. 2008). The area inside the gyres for each month is computed using monthly chlorophyll data from which the monthly climatology is subtracted to compute anomalies. A gap filling algorithm has been utilized to account for missing data. Trends in the area anomaly are then calculated for the entire study period (September 1997 to December 2021).\n\n**CONTEXT**\n\nOligotrophic gyres of the oceans have been referred to as ocean deserts (Polovina et al. 2008). They are vast, covering approximately 50% of the Earth\u2019s surface (Aiken et al. 2016). Despite low productivity, these regions contribute significantly to global productivity due to their immense size (McClain et al. 2004). Even modest changes in their size can have large impacts on a variety of global biogeochemical cycles and on trends in chlorophyll (Signorini et al 2015). Based on satellite data, Polovina et al. (2008) showed that the areas of subtropical gyres were expanding. The Ocean State Report (Sathyendranath et al. 2018) showed that the trends had reversed in the Pacific for the time segment from January 2007 to December 2016. \n\n**CMEMS KEY FINDINGS**\n\nThe trend in the South Pacific gyre area for the 1997 Sept \u2013 2021 December period was positive, with a 0.04% increase in area relative to 2000-01-01 values. Note that this trend is lower than the 0.16% change for the 1997-2020 period, with the sign of the trend remaining unchanged and is not statistically significant (p<0.05). An underlying low frequency signal is observed with a period of approximately a decade.\nDuring the 1997 Sept \u2013 2021 December period, the trend in chlorophyll concentration was positive (0.66% year-1) in the South Pacific gyre relative to 2000-01-01 values. This rate has increased compared to the rate of 0.45% year-1 for the 1997-2020 period and remains statistically significant (p<0.05). In the last two years of the timeseries, an increase in the variation from the mean is observed.\nFor 2016, the Ocean State Report (Sathyendranath et al. 2018) reported a large increase in gyre area in the Pacific Ocean (both North and South Pacific gyres), probably linked with the 2016 ENSO event which saw large decreases in chlorophyll in the Pacific Ocean. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00229\n\n**References:**\n\n* Aiken J, Brewin RJW, Dufois F, Polimene L, Hardman-Mountford NJ, Jackson T, Loveday B, Hoya SM, Dall\u2019Olmo G, Stephens J, et al. 2016. A synthesis of the environmental response of the North and South Atlantic sub-tropical gyres during two decades of AMT. Prog Oceanogr. doi:10.1016/j.pocean.2016.08.004.\n* McClain CR, Signorini SR, Christian JR 2004. Subtropical gyre variability observed by ocean-color satellites. Deep Sea Res Part II Top Stud Oceanogr. 51:281\u2013301. doi:10.1016/j.dsr2.2003.08.002.\n* Polovina JJ, Howell EA, Abecassis M 2008. Ocean\u2019s least productive waters are expanding. Geophys Res Lett. 35:270. doi:10.1029/2007GL031745.\n* Sathyendranath S, Pardo S, Brewin RJW. 2018. Oligotrophic gyres. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s13\u2013s16, DOI: 10.1080/1755876X.2018.1489208\n* Signorini SR, Franz BA, McClain CR 2015. Chlorophyll variability in the oligotrophic gyres: mechanisms, seasonality and trends. Front Mar Sci. 2. doi:10.3389/fmars.2015.00001.\n", "providers": [{"name": "PML (UK)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00229"}, "BLKSEA_OMI_SEASTATE_extreme_var_swh_mean_and_anomaly": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "black-sea,blksea-omi-seastate-extreme-var-swh-mean-and-anomaly,coastal-marine-environment,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea Significant Wave Height extreme from Reanalysis", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe CMEMS BLKSEA_OMI_seastate_extreme_var_swh_mean_and_anomaly OMI indicator is based on the computation of the annual 99th percentile of Significant Wave Height (SWH) from model data. Two different CMEMS products are used to compute the indicator: The Iberia-Biscay-Ireland Multi Year Product (BLKSEA_MULTIYEAR_WAV_007_006) and the Analysis product (BLKSEA_ANALYSISFORECAST_WAV_007_003).\nTwo parameters have been considered for this OMI:\n* Map of the 99th mean percentile: It is obtained from the Multy Year Product, the annual 99th percentile is computed for each year of the product. The percentiles are temporally averaged in the whole period (1979-2019).\n* Anomaly of the 99th percentile in 2020: The 99th percentile of the year 2020 is computed from the Analysis product. The anomaly is obtained by subtracting the mean percentile to the percentile in 2020.\nThis indicator is aimed at monitoring the extremes of annual significant wave height and evaluate the spatio-temporal variability. The use of percentiles instead of annual maxima, makes this extremes study less affected by individual data. This approach was first successfully applied to sea level variable (P\u00e9rez G\u00f3mez et al., 2016) and then extended to other essential variables, such as sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018 and \u00c1lvarez-Fanjul et al., 2019). Further details and in-depth scientific evaluation can be found in the CMEMS Ocean State report (\u00c1lvarez- Fanjul et al., 2019).\n\n**CONTEXT**\n\nThe sea state and its related spatio-temporal variability affect maritime activities and the physical connectivity between offshore waters and coastal ecosystems, including biodiversity of marine protected areas (Gonz\u00e1lez-Marco et al., 2008; Savina et al., 2003; Hewitt, 2003). Over the last decades, significant attention has been devoted to extreme wave height events since their destructive effects in both the shoreline environment and human infrastructures have prompted a wide range of adaptation strategies to deal with natural hazards in coastal areas (Hansom et al., 2015, IPCC, 2019). Complementarily, there is also an emerging question about the role of anthropogenic global climate change on present and future extreme wave conditions (IPCC, 2021).\nSignificant Wave Height mean 99th percentile in the Black Sea region shows west-eastern dependence demonstrating that the highest values of the average annual 99th percentiles are in the areas where high winds and long fetch are simultaneously present. The largest values of the mean 99th percentile in the Black Sea in the southewestern Black Sea are around 3.5 m, while in the eastern part of the basin are around 2.5 m (Staneva et al., 2019a and 2019b).\n\n**CMEMS KEY FINDINGS**\n\nSignificant Wave Height mean 99th percentile in the Black Sea region shows west-eastern dependence with largest values in the southwestern Black Sea, with values as high as 3.5 m, while the 99th percentile values in the eastern part of the basin are around 2.5 m. The Black Sea, the 99th mean percentile for 2002-2019 shows a similar pattern demonstrating that the highest values of the mean annual 99th percentile are in the western Black Sea. This pattern is consistent with the previous studies, e.g. of (Akp\u0131nar and K\u00f6m\u00fcrc\u00fc, 2012; and Akpinar et al., 2016).\nThe anomaly of the 99th percentile in 2020 is mostly negative with values down to ~-45 cm. The highest negative anomalies for 2020 are observed in the southeastern area where the multi-year mean 99th percentile is the lowest. The highest positive anomalies of the 99th percentile in 2020 are located in the southwestern Black Sea and along the eastern coast. The map of anomalies for 2020, presenting alternate bands of positive and negative values depending on latitude, is consistent with the yearly west-east displacement of the tracks of the largest storms. \n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00214\n\n**References:**\n\n* Akp\u0131nar, A.; K\u00f6m\u00fcrc\u00fc, M.\u02d9I. Wave energy potential along the south-east coasts of the Black Sea. Energy 2012, 42, 289\u2013302.\n* Akp\u0131nar, A., Bing\u00f6lbali, B., Van Vledder, G., 2016. Wind and wave characteristics in the Black Sea based on the SWAN wave model forced with the CFSR winds. Ocean Eng. 126, 276\u2014298, http://dx. doi.org/10.1016/j.oceaneng.2016.09.026.\n* \u00c1lvarez Fanjul E, Pascual Collar A, P\u00e9rez G\u00f3mez B, De Alfonso M, Garc\u00eda Sotillo M, Staneva J, Clementi E, Grandi A, Zacharioudaki A, Korres G, Ravdas M, Renshaw R, Tinker J, Raudsepp U, Lagemaa P, Maljutenko I, Geyer G, M\u00fcller M, \u00c7a\u011flar Yumruktepe V. Sea level, sea surface temperature and SWH extreme percentiles: combined analysis from model results and in situ observations, Section 2.7, p:31. In: Schuckmann K, Le Traon P-Y, Smith N, Pascual A, Djavidnia S, Gattuso J-P, Gr\u00e9goire M, Nolan G, et al. 2019. Copernicus Marine Service Ocean State Report, Issue 3, Journal of Operational Oceanography, 12:sup1, S1-S123, DOI: 10.1080/1755876X.2019.1633075\n* Bauer E. 2001. Interannual changes of the ocean wave variability in the North Atlantic and in the North Sea, Climate Research, 18, 63\u201369.\n* Gonz\u00e1lez-Marco D, Sierra J P, Ybarra O F, S\u00e1nchez-Arcilla A. 2008. Implications of long waves in harbor management: The Gij\u00f3n port case study. Ocean & Coastal Management, 51, 180-201. doi:10.1016/j.ocecoaman.2007.04.001.\n* Hanson et al., 2015. Extreme Waves: Causes, Characteristics and Impact on Coastal Environments and Society January 2015 In book: Coastal and Marine Hazards, Risks, and Disasters Edition: Hazards and Disasters Series, Elsevier Major Reference Works Chapter: Chapter 11: Extreme Waves: Causes, Characteristics and Impact on Coastal Environments and Society. Publisher: Elsevier Editors: Ellis, J and Sherman, D. J.\n* Hewit J E, Cummings V J, Elis J I, Funnell G, Norkko A, Talley T S, Thrush S.F. 2003. The role of waves in the colonisation of terrestrial sediments deposited in the marine environment. Journal of Experimental marine Biology and Ecology, 290, 19-47, doi:10.1016/S0022-0981(03)00051-0.\n* IPCC, 2019: IPCC Special Report on the Ocean and Cryosphere in a Changing Climate [H.-O. Po\u0308rtner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegri\u0301a, M. Nicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. In press.\n* IPCC, 2021: Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [Masson-Delmotte, V., P. Zhai, A. Pirani, S.L. Connors, C. P\u00e9an, S. Berger, N. Caud, Y. Chen, L. Goldfarb, M.I. Gomis, M. Huang, K. Leitzell, E. Lonnoy, J.B.R. Matthews, T.K. Maycock, T. Waterfield, O. Yelek\u00e7i, R. Yu, and B. Zhou (eds.)]. Cambridge University Press. In Press.\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B., De Alfonso M., Zacharioudaki A., P\u00e9rez Gonz\u00e1lez I., \u00c1lvarez Fanjul E., M\u00fcller M., Marcos M., Manzano F., Korres G., Ravdas M., Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208\n* Savina H, Lefevre J-M, Josse P, Dandin P. 2003. Definition of warning criteria. Proceedings of MAXWAVE Final Meeting, October 8-11, Geneva, Switzerland.\n* Staneva, J. Behrens, A., Gayer G, Ricker M. (2019a) Black sea CMEMS MYP QUID Report\n* Staneva J, Behrens A., Gayer G, Aouf A., (2019b). Synergy between CMEMS products and newly available data from SENTINEL, Section 3.3, In: Schuckmann K,et al. 2019. Copernicus Marine Service Ocean State Report, Issue 3, Journal of Operational Oceanography, doi: 10.1080/1755876X.2019.1633075.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00214"}, "GLOBAL_OMI_CLIMVAR_enso_sst_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-climvar-enso-sst-area-averaged-anomalies,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,sea-surface-temperature,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Nino 3.4 Sea Surface Temperature time series from Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nNINO34 sea surface temperature anomaly (\u00b0C) is defined as the difference between the sea surface temperature averaged over the 170\u00b0W-120\u00b0W 5\u00b0S,-5\u00b0N area and the climatological reference value over same area. Spatial averaging was weighted by surface area. Monthly mean values are given here. The reference period is 1993-2014. El Nino or La Nina events are defined when the NINO3.4 SST anomalies exceed +/- 0.5\u00b0C during a period of six month.\n\n**CONTEXT**\n\nEl Nino Southern Oscillation (ENSO) is one of the most important source of climatic variability resulting from a strong coupling between ocean and atmosphere in the central tropical Pacific and affecting surrounding populations. Globally, it impacts ecosystems, precipitation, and freshwater resources (Glantz, 2001). ENSO is mainly characterized by two anomalous states that last from several months to more than a year and recur irregularly on a typical time scale of 2-7 years. The warm phase El Ni\u00f1o is broadly characterized by a weakening of the easterly trade winds at interannual timescales associated with surface and subsurface processes leading to a surface warming in the eastern Pacific. Opposite changes are observed during the cold phase La Ni\u00f1a (review in Wang et al., 2017). Nino 3.4 Sea surface Temperature Anomaly is a good indicator of the state of the Central tropical Pacific El Nino conditions and enable to monitor the evolution the ENSO phase.\n\n**CMEMS KEY FINDINGS**\n\nOver the 1993-2019 period, there were several episodes of strong positive ENSO phases in particular in 1998 and 2016, where NINO3.4 indicator reached positive values larger than 2\u00b0C (and remained above 0.5\u00b0C during more than 6 months). Several La Nina events were also observed like in 2000 and 2008. \nThe NINO34 indicator is a good index to monitor the state of ENSO phase and a useful tool to help seasonal forecasting of meteorological conditions.\n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00219\n\n**References:**\n\n* Copernicus Marine Service Ocean State Report. (2018). Journal of Operational Oceanography, 11(sup1), S1\u2013S142. https://doi.org/10.1080/1755876X.2018.1489208\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00219"}, "GLOBAL_OMI_CLIMVAR_enso_Tzt_anomaly": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-climvar-enso-tzt-anomaly,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,sea-water-temperature,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Nino 3.4 Temporal Evolution of Vertical Profile of Temperature from Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "\"_DEFINITION_'\n\nNINO34 sub surface temperature anomaly (\u00b0C) is defined as the difference between the subsurface temperature averaged over the 170\u00b0W-120\u00b0W 5\u00b0S,-5\u00b0N area and the climatological reference value over same area. Spatial averaging was weighted by surface area. Monthly mean values are given here. The reference period is 1993-2014. \n\n**CONTEXT**\n\nEl Nino Southern Oscillation (ENSO) is one of the most important sources of climatic variability resulting from a strong coupling between ocean and atmosphere in the central tropical Pacific and affecting surrounding populations. Globally, it impacts ecosystems, precipitation, and freshwater resources (Glantz, 2001). ENSO is mainly characterized by two anomalous states that last from several months to more than a year and recur irregularly on a typical time scale of 2-7 years. The warm phase El Ni\u00f1o is broadly characterized by a weakening of the easterly trade winds at interannual timescales associated with surface and subsurface processes leading to a surface warming in the eastern Pacific. Opposite changes are observed during the cold phase La Ni\u00f1a (review in Wang et al., 2017). Nino 3.4 sub-surface Temperature Anomaly is a good indicator of the state of the Central tropical Pacific el Nino conditions and enable to monitor the evolution the ENSO phase.\n\n**CMEMS KEY FINDINGS **\n\nOver the 1993-2017 period, there were several episodes of strong positive ENSO (el nino) phases in particular during the 1997/1998 winter and the 2015/2016 winter, where NINO3.4 indicator reached positive values larger than 2\u00b0C (and remained above 0.5\u00b0C during more than 6 months). Several La Nina events were also observed like during the 1998/1999 winter and during the 2010/2011 winter. \nThe NINO34 subsurface indicator is a good index to monitor the state of ENSO phase and a useful tool to help seasonal forecasting of atmospheric conditions.\n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n'\"\"REFERENCES'''\n\n\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00220\n\n**References:**\n\n* Copernicus Marine Service Ocean State Report. (2018). Journal of Operational Oceanography, 11(sup1), S1\u2013S142. https://doi.org/10.1080/1755876X.2018.1489208\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00220"}, "GLOBAL_OMI_WMHE_heattrp": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-wmhe-heattrp,marine-resources,marine-safety,multi-year,numerical-model,ocean-volume-transport-across-line,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mean Heat Transport across sections from Reanalysis", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nHeat transport across lines are obtained by integrating the heat fluxes along some selected sections and from top to bottom of the ocean. The values are computed from models\u2019 daily output.\nThe mean value over a reference period (1993-2014) and over the last full year are provided for the ensemble product and the individual reanalysis, as well as the standard deviation for the ensemble product over the reference period (1993-2014). The values are given in PetaWatt (PW).\n\n**CONTEXT**\n\nThe ocean transports heat and mass by vertical overturning and horizontal circulation, and is one of the fundamental dynamic components of the Earth\u2019s energy budget (IPCC, 2013). There are spatial asymmetries in the energy budget resulting from the Earth\u2019s orientation to the sun and the meridional variation in absorbed radiation which support a transfer of energy from the tropics towards the poles. However, there are spatial variations in the loss of heat by the ocean through sensible and latent heat fluxes, as well as differences in ocean basin geometry and current systems. These complexities support a pattern of oceanic heat transport that is not strictly from lower to high latitudes. Moreover, it is not stationary and we are only beginning to unravel its variability. \n\n**CMEMS KEY FINDINGS**\n\nThe mean transports estimated by the ensemble global reanalysis are comparable to estimates based on observations; the uncertainties on these integrated quantities are still large in all the available products. \n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00245\n\n**References:**\n\n* Lumpkin R, Speer K. 2007. Global ocean meridional overturning. J. Phys. Oceanogr., 37, 2550\u20132562, doi:10.1175/JPO3130.1.\n* Madec G : NEMO ocean engine, Note du P\u00f4le de mod\u00e9lisation, Institut Pierre-Simon Laplace (IPSL), France, No 27, ISSN No 1288-1619, 2008\n* Bricaud C, Drillet Y, Garric G. 2016. Ocean mass and heat transport. In CMEMS Ocean State Report, Journal of Operational Oceanography, 9, http://dx.doi.org/10.1080/1755876X.2016.1273446\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00245"}, "OMI_HEALTH_CHL_MEDSEA_OCEANCOLOUR_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "change-in-mass-concentration-of-chlorophyll-in-seawater-over-time,coastal-marine-environment,level-4,marine-resources,marine-safety,mediterranean-sea,multi-year,oceanographic-geographical-features,omi-health-chl-medsea-oceancolour-trend,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea Chlorophyll-a trend map from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThis product includes the Mediterranean Sea satellite chlorophyll trend map based on regional chlorophyll reprocessed (MY) product as distributed by CMEMS OC-TAC. This dataset, derived from multi-sensor (SeaStar-SeaWiFS, AQUA-MODIS, NOAA20-VIIRS, NPP-VIIRS, Envisat-MERIS and Sentinel3-OLCI) (at 1 km resolution) Rrs spectra produced by CNR using an in-house processing chain, is obtained by means of the Mediterranean Ocean Colour regional algorithms: an updated version of the MedOC4 (Case 1 (off-shore) waters, Volpe et al., 2019, with new coefficients) and AD4 (Case 2 (coastal) waters, Berthon and Zibordi, 2004). The processing chain and the techniques used for algorithms merging are detailed in Colella et al. (2023). \nThe trend map is obtained by applying Colella et al. (2016) methodology, where the Mann-Kendall test (Mann, 1945; Kendall, 1975) and Sens\u2019s method (Sen, 1968) are applied on deseasonalized monthly time series, as obtained from the X-11 technique (see e. g. Pezzulli et al. 2005), to estimate, trend magnitude and its significance. The trend is expressed in % per year that represents the relative changes (i.e., percentage) corresponding to the dimensional trend [mg m-3 y-1] with respect to the reference climatology (1997-2014). Only significant trends (p < 0.05) are included.\n\n**CONTEXT**\n\nPhytoplankton are key actors in the carbon cycle and, as such, recognised as an Essential Climate Variable (ECV). Chlorophyll concentration - as a proxy for phytoplankton - respond rapidly to changes in environmental conditions, such as light, temperature, nutrients and mixing (Colella et al. 2016). The character of the response depends on the nature of the change drivers, and ranges from seasonal cycles to decadal oscillations (Basterretxea et al. 2018). The Mediterranean Sea is an oligotrophic basin, where chlorophyll concentration decreases following a specific gradient from West to East (Colella et al. 2016). The highest concentrations are observed in coastal areas and at the river mouths, where the anthropogenic pressure and nutrient loads impact on the eutrophication regimes (Colella et al. 2016). The the use of long-term time series of consistent, well-calibrated, climate-quality data record is crucial for detecting eutrophication. Furthermore, chlorophyll analysis also demands the use of robust statistical temporal decomposition techniques, in order to separate the long-term signal from the seasonal component of the time series.\n\n**CMEMS KEY FINDINGS**\n\nChlorophyll trend in the Mediterranean Sea, for the period 1997-2022, generally confirm trend results of the previous release with negative values over most of the basin. In Ligurian Sea, Gulf of Lion and Adriatic Sea, negative trend are slightly emphasized. Weak positive trend areas of the previous release are confirmed in the southern part of the western Mediterranean basin, Rhode Gyre and in the northern coast of the Aegean Sea. On average the trend in the Mediterranean Sea is about -0.69% per year. Contrary to what shown by Salgado-Hernanz et al. (2019) in their analysis (related to 1998-2014 satellite observations), western and eastern part of the Mediterranean Sea do not show differences. In the Ligurian Sea, the trend switch to negative values, differing from the positive regime observed in the trend maps of both Colella et al. (2016) and Salgado-Hernanz et al. (2019), referred, respectively, to 1998-2009 and 1998-2014 period, respectively. The waters offshore the Po River mouth show weak negative trend values, partially differing from the markable negative regime observed in the 1998-2009 period (Colella et al., 2016), and definitely moving from the positive trend observed by Salgado-Hernanz et al. (2019).\n\n**Figure caption**\n\nMediterranean Sea satellite chlorophyll trend over the period 1997-2022, based on CMEMS product OCEANCOLOUR_MED_BGC_L4_MY_009_144. Trend are expressed in % per year, with positive trends in red and negative trends in blue.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00260\n\n**References:**\n\n* Basterretxea, G., Font-Mu\u00f1oz, J. S., Salgado-Hernanz, P. M., Arrieta, J., & Hern\u00e1ndez-Carrasco, I. (2018). Patterns of chlorophyll interannual variability in Mediterranean biogeographical regions. Remote Sensing of Environment, 215, 7-17.\n* Berthon, J.-F., Zibordi, G.: Bio-optical relationships for the northern Adriatic Sea. Int. J. Remote Sens., 25, 1527-1532, 200.\n* Colella, S., Falcini, F., Rinaldi, E., Sammartino, M., & Santoleri, R. (2016). Mediterranean ocean colour chlorophyll trends. PloS one, 11(6).\n* Colella, S., Brando, V.E., Cicco, A.D., D\u2019Alimonte, D., Forneris, V., Bracaglia, M., 2021. OCEAN COLOUR PRODUCTION CENTRE, Ocean Colour Mediterranean and Black Sea Observation Product. Copernicus Marine Environment Monitoring Centre. Quality Information Document (https://catalogue.marine.copernicus.eu/documents/QUID/CMEMS-OC-QUID-009-038to045-071-073-078-079-095-096.pdf).\n* Kendall MG. 1975. Multivariate analysis. London: Charles Griffin & Co; p. 210, 43.\n* Mann HB. 1945. Nonparametric tests against trend. Econometrica. 13:245\u2013259. p. 42.\n* Pezzulli S, Stephenson DB, Hannachi A. 2005. The Variability of Seasonality. J. Climate. 18:71\u201388. doi:10.1175/JCLI-3256.1.\n* Salgado-Hernanz, P. M., Racault, M. F., Font-Mu\u00f1oz, J. S., & Basterretxea, G. (2019). Trends in phytoplankton phenology in the Mediterranean Sea based on ocean-colour remote sensing. Remote Sensing of Environment, 221, 50-64.\n* Sen PK. 1968. Estimates of the regression coefficient based on Kendall\u2019s tau. J Am Statist Assoc. 63:1379\u20131389.\n* Volpe, G., Colella, S., Brando, V. E., Forneris, V., Padula, F. L., Cicco, A. D., ... & Santoleri, R. (2019). Mediterranean ocean colour Level 3 operational multi-sensor processing. Ocean Science, 15(1), 127-146.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00260"}, "MEDSEA_OMI_TEMPSAL_extreme_var_temp_mean_and_anomaly": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,marine-resources,marine-safety,mediterranean-sea,medsea-omi-tempsal-extreme-var-temp-mean-and-anomaly,multi-year,numerical-model,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea Surface Temperature extreme from Reanalysis", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe CMEMS MEDSEA_OMI_tempsal_extreme_var_temp_mean_and_anomaly OMI indicator is based on the computation of the annual 99th percentile of Sea Surface Temperature (SST) from model data. Two different CMEMS products are used to compute the indicator: The Iberia-Biscay-Ireland Multi Year Product (MEDSEA_MULTIYEAR_PHY_006_004) and the Analysis product (MEDSEA_ANALYSISFORECAST_PHY_006_013).\nTwo parameters have been considered for this OMI:\n* Map of the 99th mean percentile: It is obtained from the Multi Year Product, the annual 99th percentile is computed for each year of the product. The percentiles are temporally averaged over the whole period (1987-2019).\n* Anomaly of the 99th percentile in 2020: The 99th percentile of the year 2020 is computed from the Near Real Time product. The anomaly is obtained by subtracting the mean percentile from the 2020 percentile.\nThis indicator is aimed at monitoring the extremes of sea surface temperature every year and at checking their variations in space. The use of percentiles instead of annual maxima, makes this extremes study less affected by individual data. This study of extreme variability was first applied to the sea level variable (P\u00e9rez G\u00f3mez et al 2016) and then extended to other essential variables, such as sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018 and Alvarez Fanjul et al., 2019). More details and a full scientific evaluation can be found in the CMEMS Ocean State report (Alvarez Fanjul et al., 2019).\n\n**CONTEXT**\n\nThe Sea Surface Temperature is one of the Essential Ocean Variables, hence the monitoring of this variable is of key importance, since its variations can affect the ocean circulation, marine ecosystems, and ocean-atmosphere exchange processes. As the oceans continuously interact with the atmosphere, trends of sea surface temperature can also have an effect on the global climate. In recent decades (from mid \u201880s) the Mediterranean Sea showed a trend of increasing temperatures (Ducrocq et al., 2016), which has been observed also by means of the CMEMS SST_MED_SST_L4_REP_OBSERVATIONS_010_021 satellite product and reported in the following CMEMS OMI: MEDSEA_OMI_TEMPSAL_sst_area_averaged_anomalies and MEDSEA_OMI_TEMPSAL_sst_trend.\nThe Mediterranean Sea is a semi-enclosed sea characterized by an annual average surface temperature which varies horizontally from ~14\u00b0C in the Northwestern part of the basin to ~23\u00b0C in the Southeastern areas. Large-scale temperature variations in the upper layers are mainly related to the heat exchange with the atmosphere and surrounding oceanic regions. The Mediterranean Sea annual 99th percentile presents a significant interannual and multidecadal variability with a significant increase starting from the 80\u2019s as shown in Marb\u00e0 et al. (2015) which is also in good agreement with the multidecadal change of the mean SST reported in Mariotti et al. (2012). Moreover the spatial variability of the SST 99th percentile shows large differences at regional scale (Darmariaki et al., 2019; Pastor et al. 2018).\n\n**CMEMS KEY FINDINGS**\n\nThe Mediterranean mean Sea Surface Temperature 99th percentile evaluated in the period 1987-2019 (upper panel) presents highest values (~ 28-30 \u00b0C) in the eastern Mediterranean-Levantine basin and along the Tunisian coasts especially in the area of the Gulf of Gabes, while the lowest (~ 23\u201325 \u00b0C) are found in the Gulf of Lyon (a deep water formation area), in the Alboran Sea (affected by incoming Atlantic waters) and the eastern part of the Aegean Sea (an upwelling region). These results are in agreement with previous findings in Darmariaki et al. (2019) and Pastor et al. (2018) and are consistent with the ones presented in CMEMS OSR3 (Alvarez Fanjul et al., 2019) for the period 1993-2016.\nThe 2020 Sea Surface Temperature 99th percentile anomaly map (bottom panel) shows a general positive pattern up to +3\u00b0C in the North-West Mediterranean area while colder anomalies are visible in the Gulf of Lion and North Aegean Sea . This Ocean Monitoring Indicator confirms the continuous warming of the SST and in particular it shows that the year 2020 is characterized by an overall increase of the extreme Sea Surface Temperature values in almost the whole domain with respect to the reference period. This finding can be probably affected by the different dataset used to evaluate this anomaly map: the 2020 Sea Surface Temperature 99th percentile derived from the Near Real Time Analysis product compared to the mean (1987-2019) Sea Surface Temperature 99th percentile evaluated from the Reanalysis product which, among the others, is characterized by different atmospheric forcing).\n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00266\n\n**References:**\n\n* \u00c1lvarez Fanjul E, Pascual Collar A, P\u00e9rez G\u00f3mez B, De Alfonso M, Garc\u00eda Sotillo M, Staneva J, Clementi E, Grandi A, Zacharioudaki A, Korres G, Ravdas M, Renshaw R, Tinker J, Raudsepp U, Lagemaa P, Maljutenko I, Geyer G, M\u00fcller M, \u00c7a\u011flar Yumruktepe V. Sea level, sea surface temperature and SWH extreme percentiles: combined analysis from model results and in situ observations, Section 2.7, p:31. In: Schuckmann K, Le Traon P-Y, Smith N, Pascual A, Djavidnia S, Gattuso J-P, Gr\u00e9goire M, Nolan G, et al. 2019. Copernicus Marine Service Ocean State Report, Issue 3, Journal of Operational Oceanography, 12:sup1, S1-S123, DOI: 10.1080/1755876X.2019.1633075\n* Darmaraki S, Somot S, Sevault F, Nabat P, Cabos W, Cavicchia L, et al. 2019. Future evolution of marine heatwaves in the Mediterranean Sea. Clim. Dyn. 53, 1371\u20131392. doi: 10.1007/s00382-019-04661-z\n* Ducrocq V., Drobinski P., Gualdi S., Raimbault P. 2016. The water cycle in the Mediterranean. Chapter 1.2.1 in The Mediterranean region under climate change. IRD E\u0301ditions. DOI : 10.4000/books.irdeditions.22908.\n* Marb\u00e0 N, Jord\u00e0 G, Agust\u00ed S, Girard C, Duarte CM. 2015. Footprints of climate change on Mediterranean Sea biota. Front.Mar.Sci.2:56. doi: 10.3389/fmars.2015.00056\n* Mariotti A and Dell\u2019Aquila A. 2012. Decadal climate variability in the Mediterranean region: roles of large-scale forcings and regional processes. Clim Dyn. 38,1129\u20131145. doi:10.1007/s00382-011-1056-7\n* Pastor F, Valiente JA, Palau JL. 2018. Sea Surface Temperature in the Mediterranean: Trends and Spatial Patterns (1982\u20132016). Pure Appl. Geophys, 175: 4017. https://doi.org/10.1007/s00024-017-1739-zP\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B., De Alfonso M., Zacharioudaki A., P\u00e9rez Gonz\u00e1lez I., \u00c1lvarez Fanjul E., M\u00fcller M., Marcos M., Manzano F., Korres G., Ravdas M., Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208\n* Pisano A, Marullo S, Artale V, Falcini F, Yang C, Leonelli FE, Santoleri R, Buongiorno Nardelli B. 2020. New Evidence of Mediterranean Climate Change and Variability from Sea Surface Temperature Observations. Remote Sens. 2020, 12, 132.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00266"}, "GLOBAL_OMI_NATLANTIC_amoc_26N_profile": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-natlantic-amoc-26n-profile,marine-resources,marine-safety,numerical-model,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic Meridional Overturning Circulation AMOC profile at 26N from Reanalysis", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe Atlantic Meridional Overturning profile at 26.5N is obtained by integrating the meridional transport at 26.5 N across the Atlantic basin (zonally) and then doing a cumulative integral in depth. A climatological mean is then taken over time. This is done over the whole time period (1993-2016) and over the period for which there are comparable observations (Apr 2004-Mar 2016). The observations come from the RAPID array (Smeed et al, 2017). \n\n**CONTEXT**\n\nThe Atlantic Meridional Overturning Circulation (AMOC) transports heat northwards in the Atlantic and plays a key role in regional and global climate (Srokosz et al, 2012). There is a northwards transport in the upper kilometer resulting from northwards flow in the Gulf Stream and wind-driven Ekman transport, and southwards flow in the ocean interior and in deep western boundary currents (Srokosz et al, 2012). There are uncertainties in the deep profile associated with how much transport is returned in the upper (1-3km) or lower (3-5km) North Atlantic deep waters (Roberts et al 2013, Sinha et al 2018).\n\n**CMEMS KEY FINDINGS** \n\nThe AMOC strength at 1000m is found to be 17.1 \u00b1 4.7 Sv (1 Sverdrup=106m3/s; range is 2 x standard deviation of multi-product). See also Jackson et al (2018).\n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00231\n\n**References:**\n\n* Jackson, L., C. Dubois, S. Masina, A Storto and H Zuo, 2018: Atlantic Meridional Overturning Circulation. In Copernicus Marine Service Ocean State Report, Issue 2. Journal of Operational Oceanography , 11:sup1, S65-S66, 10.1080/1755876X.2018.1489208\n* Roberts, C. D., J. Waters, K. A. Peterson, M. D. Palmer, G. D. McCarthy, E. Frajka\u2010Williams, K. Haines, D. J. Lea, M. J. Martin, D. Storkey, E. W. Blockley and H. Zuo (2013), Atmosphere drives recent interannual variability of the Atlantic meridional overturning circulation at 26.5\u00b0N, Geophys. Res. Lett., 40, 5164\u20135170 doi: 10.1002/grl.50930.\n* Sinha, B., Smeed, D.A., McCarthy, G., Moat, B.I., Josey, S.A., Hirschi, J.J.-M., Frajka-Williams, E., Blaker, A.T., Rayner, D. and Madec, G. (2018), The accuracy of estimates of the overturning circulation from basin-wide mooring arrays. Progress in Oceanography, 160. 101-123\n* Smeed D., McCarthy G., Rayner D., Moat B.I., Johns W.E., Baringer M.O. and Meinen C.S. (2017). Atlantic meridional overturning circulation observed by the RAPID-MOCHA-WBTS (RAPID-Meridional Overturning Circulation and Heatflux Array-Western Boundary Time Series) array at 26N from 2004 to 2017. British Oceanographic Data Centre - Natural Environment Research Council, UK. doi: 10.5285/5acfd143-1104-7b58-e053-6c86abc0d94b\n* Srokosz, M., M. Baringer, H. Bryden, S. Cunningham, T. Delworth, S. Lozier, J. Marotzke, and R. Sutton, 2012: Past, Present, and Future Changes in the Atlantic Meridional Overturning Circulation. Bull. Amer. Meteor. Soc., 93, 1663\u20131676, https://doi.org/10.1175/BAMS-D-11-00151.1\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00231"}, "GLOBAL_OMI_TEMPSAL_Tyz_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "change-over-time-in-sea-water-temperature,coastal-marine-environment,global-ocean,global-omi-tempsal-tyz-trend,in-situ-observation,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Zonal Mean Subsurface Temperature cumulative trend from Multi-Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe linear change of zonal mean subsurface temperature over the period 1993-2019 at each grid point (in depth and latitude) is evaluated to obtain a global mean depth-latitude plot of subsurface temperature trend, expressed in \u00b0C.\nThe linear change is computed using the slope of the linear regression at each grid point scaled by the number of time steps (27 years, 1993-2019). A multi-product approach is used, meaning that the linear change is first computed for 5 different zonal mean temperature estimates. The average linear change is then computed, as well as the standard deviation between the five linear change computations. The evaluation method relies in the study of the consistency in between the 5 different estimates, which provides a qualitative estimate of the robustness of the indicator. See Mulet et al. (2018) for more details.\n\n**CONTEXT**\n\nLarge-scale temperature variations in the upper layers are mainly related to the heat exchange with the atmosphere and surrounding oceanic regions, while the deeper ocean temperature in the main thermocline and below varies due to many dynamical forcing mechanisms (Bindoff et al., 2019). Together with ocean acidification and deoxygenation (IPCC, 2019), ocean warming can lead to dramatic changes in ecosystem assemblages, biodiversity, population extinctions, coral bleaching and infectious disease, change in behavior (including reproduction), as well as redistribution of habitat (e.g. Gattuso et al., 2015, Molinos et al., 2016, Ramirez et al., 2017). Ocean warming also intensifies tropical cyclones (Hoegh-Guldberg et al., 2018; Trenberth et al., 2018; Sun et al., 2017).\n\n**CMEMS KEY FINDINGS**\n\nThe results show an overall ocean warming of the upper global ocean over the period 1993-2019, particularly in the upper 300m depth. In some areas, this warming signal reaches down to about 800m depth such as for example in the Southern Ocean south of 40\u00b0S. In other areas, the signal-to-noise ratio in the deeper ocean layers is less than two, i.e. the different products used for the ensemble mean show weak agreement. However, interannual-to-decadal fluctuations are superposed on the warming signal, and can interfere with the warming trend. For example, in the subpolar North Atlantic decadal variations such as the so called \u2018cold event\u2019 prevail (Dubois et al., 2018; Gourrion et al., 2018), and the cumulative trend over a quarter of a decade does not exceed twice the noise level below about 100m depth.\n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00244\n\n**References:**\n\n* Dubois, C., K. von Schuckmann, S. Josey, A. Ceschin, 2018: Changes in the North Atlantic. In: Copernicus Marine Service Ocean State Report, Journal of Operational Oceanography, 11:sup1, S1-S142, DOI: 10.1080/1755876X.2018.1489208.\n* Gattuso, J-P., et al. (2015): Contrasting futures for ocean and society from different anthropogenic CO2 emissions scenarios. Science 349, no. 6243.\n* Gourrion, J., J. Deshayes, M. Juza, T. Szekely, J. Tontore, 2018: A persisting regional cold and fresh water anomaly in the Northern Atlantic. In: Copernicus Marine Service Ocean State Report, Journal of Operational Oceanography, 11:sup1, S1-S142, DOI: 10.1080/1755876X.2018.1489208.\n* Hoegh-Guldberg, O., et al., 2018: Impacts of 1.5\u00baC Global Warming on Natural and Human Systems. In: Global Warming of 1.5\u00b0C. An IPCC Special Report on the impacts of global warming of 1.5\u00b0C above preindustrial levels and related global greenhouse gas emission pathways, in the context of strengthening the global response to the threat of climate change, sustainable development, and efforts to eradicate poverty [Masson-Delmotte, V., P. Zhai, H.-O. P\u00f6rtner, D. Roberts, J. Skea, P.R. Shukla, A. Pirani, W. Moufouma- Okia, C. P\u00e9an, R. Pidcock, S. Connors, J.B.R. Matthews, Y. Chen, X. Zhou, M.I. Gomis, E. Lonnoy, T. Maycock, M. Tignor, and T. Waterfield (eds.)]. In Press.\n* IPCC, 2019: Summary for Policymakers. In: IPCC Special Report on the Ocean and Cryosphere in a Changing Climate [H.-O. Po\u0308rtner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegri\u0301a, M. Nicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. In press.\n* Molinos, J.G., et al. (2016): Climate velocity and the future global redistribution of marine biodiversity, NATURE Climate Change 6 doi:10.10383/NCLIMATE2769.\n* Mulet S, Buongiorno Nardelli B, Good S, A. Pisano A, E. Greiner, Monier M, 2018. Ocean temperature and salinity. In: Copernicus Marine Service Ocean State Report, Journal of Operational Oceanography, 11:sup1, S1-S142, DOI: 10.1080/1755876X.2018.1489208.\n* Ram\u00edrez, F., I. Af\u00e1n, L.S. Davis, and A. Chiaradia (2017): Climate impacts on global hot spots of marine biodiversity. Science Advances 3, no. 2 : e1601198.\n* Sun, Y., Z. Zhong, T. Li, L. Yi, Y. Hu, H. Wan, H. Chen, Q. Liao, C. Ma and Q. Li, 2017: Impact of Ocean Warming on Tropical Cyclone Size and Its Destructiveness, Nature Scientific Reports, Volume 7 (8154), https://doi.org/10.1038/s41598-017-08533-6.\n* Trenberth, K. E., L. J. Cheng, P. Jacobs, Y. X. Zhang, and J. Fasullo (2018): Hurricane Harvey links to ocean heat content and climate change adaptation. Earth's Future, 6, 730--744, https://doi.org/10.1029/2018EF000825.\n", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00244"}, "NORTHWESTSHELF_OMI_TEMPSAL_extreme_var_temp_mean_and_anomaly": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,marine-resources,marine-safety,multi-year,north-west-shelf-seas,northwestshelf-omi-tempsal-extreme-var-temp-mean-and-anomaly,numerical-model,oceanographic-geographical-features,temp-percentile99-anom,temp-percentile99-mean,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "North West Shelf Sea Surface Temperature extreme from Reanalysis", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe CMEMS NORTHWESTSHELF_OMI_tempsal_extreme_var_temp_mean_and_anomaly OMI indicator is based on the computation of the annual 99th percentile of Sea Surface Temperature (SST) from model data. Two different CMEMS products are used to compute the indicator: The North-West Shelf Multi Year Product (NWSHELF_MULTIYEAR_PHY_004_009) and the Analysis product (NORTHWESTSHELF_ANALYSIS_FORECAST_PHY_004_013).\nTwo parameters are included on this OMI:\n* Map of the 99th mean percentile: It is obtained from the Multi Year Product, the annual 99th percentile is computed for each year of the product. The percentiles are temporally averaged over the whole period (1993-2019).\n* Anomaly of the 99th percentile in 2020: The 99th percentile of the year 2020 is computed from the Analysis product. The anomaly is obtained by subtracting the mean percentile from the 2020 percentile.\nThis indicator is aimed at monitoring the extremes of sea surface temperature every year and at checking their variations in space. The use of percentiles instead of annual maxima, makes this extremes study less affected by individual data. This study of extreme variability was first applied to the sea level variable (P\u00e9rez G\u00f3mez et al 2016) and then extended to other essential variables, such as sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018 and Alvarez Fanjul et al., 2019). More details and a full scientific evaluation can be found in the CMEMS Ocean State report (Alvarez Fanjul et al., 2019).\n\n**CONTEXT**\n\nThis domain comprises the North West European continental shelf where depths do not exceed 200m and deeper Atlantic waters to the North and West. For these deeper waters, the North-South temperature gradient dominates (Liu and Tanhua, 2021). Temperature over the continental shelf is affected also by the various local currents in this region and by the shallow depth of the water (Elliott et al., 1990). Atmospheric heat waves can warm the whole water column, especially in the southern North Sea, much of which is no more than 30m deep (Holt et al., 2012). Warm summertime water observed in the Norwegian trench is outflow heading North from the Baltic Sea and from the North Sea itself.\n\n**CMEMS KEY FINDINGS**\n\nThe 99th percentile SST product can be considered to represent approximately the warmest 4 days for the sea surface in Summer. Maximum anomalies for 2020 are up to 4oC warmer than the 1993-2019 average in the western approaches, Celtic and Irish Seas, English Channel and the southern North Sea. For the atmosphere, Summer 2020 was exceptionally warm and sunny in southern UK (Kendon et al., 2021), with heatwaves in June and August. Further north in the UK, the atmosphere was closer to long-term average temperatures. Overall, the 99th percentile SST anomalies show a similar pattern, with the exceptional warm anomalies in the south of the domain.\n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product)**\nhttps://doi.org/10.48670/moi-00273\n\n**References:**\n\n* \u00c1lvarez Fanjul E, Pascual Collar A, P\u00e9rez G\u00f3mez B, De Alfonso M, Garc\u00eda Sotillo M, Staneva J, Clementi E, Grandi A, Zacharioudaki A, Korres G, Ravdas M, Renshaw R, Tinker J, Raudsepp U, Lagemaa P, Maljutenko I, Geyer G, M\u00fcller M, \u00c7a\u011flar Yumruktepe V. Sea level, sea surface temperature and SWH extreme percentiles: combined analysis from model results and in situ observations, Section 2.7, p:31. In: Schuckmann K, Le Traon P-Y, Smith N, Pascual A, Djavidnia S, Gattuso J-P, Gr\u00e9goire M, Nolan G, et al. 2019. Copernicus Marine Service Ocean State Report, Issue 3, Journal of Operational Oceanography, 12:sup1, S1-S123, DOI: 10.1080/1755876X.2019.1633075\n* Elliott, A.J., Clarke, T., Li, ., 1990: Monthly distributions of surface and bottom temperatures in the northwest European shelf seas. Continental Shelf Research, Vol 11, no 5, pp 453-466, http://doi.org/10.1016/0278-4343(91)90053-9\n* Holt, J., Hughes, S., Hopkins, J., Wakelin, S., Holliday, P.N., Dye, S., Gonz\u00e1lez-Pola, C., Hj\u00f8llo, S., Mork, K., Nolan, G., Proctor, R., Read, J., Shammon, T., Sherwin, T., Smyth, T., Tattersall, G., Ward, B., Wiltshire, K., 2012: Multi-decadal variability and trends in the temperature of the northwest European continental shelf: A model-data synthesis. Progress in Oceanography, 96-117, 106, http://doi.org/10.1016/j.pocean.2012.08.001\n* Kendon, M., McCarthy, M., Jevrejeva, S., Matthews, A., Sparks, T. and Garforth, J. (2021), State of the UK Climate 2020. Int J Climatol, 41 (Suppl 2): 1-76. https://doi.org/10.1002/joc.7285\n* Liu, M., Tanhua, T., 2021: Water masses in the Atlantic Ocean: characteristics and distributions. Ocean Sci, 17, 463-486, http://doi.org/10.5194/os-17-463-2021\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B., De Alfonso M., Zacharioudaki A., P\u00e9rez Gonz\u00e1lez I., \u00c1lvarez Fanjul E., M\u00fcller M., Marcos M., Manzano F., Korres G., Ravdas M., Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00273"}, "OMI_HEALTH_CHL_GLOBAL_OCEANCOLOUR_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "change-in-mass-concentration-of-chlorophyll-in-seawater-over-time,coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-health-chl-global-oceancolour-trend,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Chlorophyll-a trend map from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe trend map is derived from version 5 of the global climate-quality chlorophyll time series produced by the ESA Ocean Colour Climate Change Initiative (ESA OC-CCI, Sathyendranath et al. 2019; Jackson 2020) and distributed by CMEMS. The trend detection method is based on the Census-I algorithm as described by Vantrepotte et al. (2009), where the time series is decomposed as a fixed seasonal cycle plus a linear trend component plus a residual component. The linear trend is expressed in % year -1, and its level of significance (p) calculated using a t-test. Only significant trends (p < 0.05) are included. \n\n**CONTEXT**\n\nPhytoplankton are key actors in the carbon cycle and, as such, recognised as an Essential Climate Variable (ECV). Chlorophyll concentration is the most widely used measure of the concentration of phytoplankton present in the ocean. Drivers for chlorophyll variability range from small-scale seasonal cycles to long-term climate oscillations and, most importantly, anthropogenic climate change. Due to such diverse factors, the detection of climate signals requires a long-term time series of consistent, well-calibrated, climate-quality data record. Furthermore, chlorophyll analysis also demands the use of robust statistical temporal decomposition techniques, in order to separate the long-term signal from the seasonal component of the time series.\n\n**CMEMS KEY FINDINGS**\n\nThe average global trend for the 1997-2021 period was 0.51% per year, with a maximum value of 25% per year and a minimum value of -6.1% per year. Positive trends are pronounced in the high latitudes of both northern and southern hemispheres. The significant increases in chlorophyll reported in 2016-2017 (Sathyendranath et al., 2018b) for the Atlantic and Pacific oceans at high latitudes appear to be plateauing after the 2021 extension. The negative trends shown in equatorial waters in 2020 appear to be remain consistent in 2021. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00230\n\n**References:**\n\n* Jackson, T. (2020) OC-CCI Product User Guide (PUG). ESA/ESRIN Report. D4.2PUG, 2020-10-12. Issue:v4.2. https://docs.pml.space/share/s/okB2fOuPT7Cj2r4C5sppDg\n* Sathyendranath, S., Pardo, S., Benincasa, M., Brando, V. E., Brewin, R. J.W., M\u00e9lin, F., Santoleri, R., 2018b, 1.5. Essential Variables: Ocean Colour in Copernicus Marine Service Ocean State Report - Issue 2, Journal of Operational Oceanography, 11:sup1, 1-142, doi: 10.1080/1755876X.2018.1489208\n* Sathyendranath, S, Brewin, RJW, Brockmann, C, Brotas, V, Calton, B, Chuprin, A, Cipollini, P, Couto, AB, Dingle, J, Doerffer, R, Donlon, C, Dowell, M, Farman, A, Grant, M, Groom, S, Horseman, A, Jackson, T, Krasemann, H, Lavender, S, Martinez-Vicente, V, Mazeran, C, M\u00e9lin, F, Moore, TS, Mu\u0308ller, D, Regner, P, Roy, S, Steele, CJ, Steinmetz, F, Swinton, J, Taberner, M, Thompson, A, Valente, A, Zu\u0308hlke, M, Brando, VE, Feng, H, Feldman, G, Franz, BA, Frouin, R, Gould, Jr., RW, Hooker, SB, Kahru, M, Kratzer, S, Mitchell, BG, Muller-Karger, F, Sosik, HM, Voss, KJ, Werdell, J, and Platt, T (2019) An ocean-colour time series for use in climate studies: the experience of the Ocean-Colour Climate Change Initiative (OC-CCI). Sensors: 19, 4285. doi:10.3390/s19194285\n* Vantrepotte, V., M\u00e9lin, F., 2009. Temporal variability of 10-year global SeaWiFS time series of phytoplankton chlorophyll-a concentration. ICES J. Mar. Sci., 66, 1547-1556. doi: 10.1093/icesjms/fsp107.\n", "providers": [{"name": "PML (UK)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00230"}, "MEDSEA_ANALYSISFORECAST_WAV_006_017": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,forecast,level-4,marine-resources,marine-safety,mediterranean-sea,medsea-analysisforecast-wav-006-017,near-real-time,numerical-model,oceanographic-geographical-features,sea-floor-depth-below-geoid,sea-surface-primary-swell-wave-from-direction,sea-surface-primary-swell-wave-mean-period,sea-surface-primary-swell-wave-significant-height,sea-surface-secondary-swell-wave-from-direction,sea-surface-secondary-swell-wave-mean-period,sea-surface-secondary-swell-wave-significant-height,sea-surface-wave-from-direction,sea-surface-wave-from-direction-at-variance-spectral-density-maximum,sea-surface-wave-maximum-crest-height,sea-surface-wave-maximum-height,sea-surface-wave-mean-period-from-variance-spectral-density-inverse-frequency-moment,sea-surface-wave-mean-period-from-variance-spectral-density-second-frequency-moment,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,sea-surface-wave-stokes-drift-x-velocity,sea-surface-wave-stokes-drift-y-velocity,sea-surface-wind-wave-from-direction,sea-surface-wind-wave-mean-period,sea-surface-wind-wave-significant-height,significant-wave-height-(swh),weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea Waves Analysis and Forecast", "missionStartDate": "2021-04-19T00:00:00Z", "abstract": "MEDSEA_ANALYSISFORECAST_WAV_006_017 is the nominal wave product of the Mediterranean Sea Forecasting system, composed by hourly wave parameters at 1/24\u00ba horizontal resolution covering the Mediterranean Sea and extending up to 18.125W into the Atlantic Ocean. The waves forecast component (Med-WAV system) is a wave model based on the WAM Cycle 6. The Med-WAV modelling system resolves the prognostic part of the wave spectrum with 24 directional and 32 logarithmically distributed frequency bins and the model solutions are corrected by an optimal interpolation data assimilation scheme of all available along track satellite significant wave height observations. The atmospheric forcing is provided by the operational ECMWF Numerical Weather Prediction model and the wave model is forced with hourly averaged surface currents and sea level obtained from MEDSEA_ANALYSISFORECAST_PHY_006_013 at 1/24\u00b0 resolution. The model uses wave spectra for Open Boundary Conditions from GLOBAL_ANALYSIS_FORECAST_WAV_001_027 product. The wave system includes 2 forecast cycles providing twice per day a Mediterranean wave analysis and 10 days of wave forecasts.\n\n_Product Citation_: Please refer to our Technical FAQ for citing products. http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169\n\n**DOI (product)**: https://doi.org/10.25423/cmcc/medsea_analysisforecast_wav_006_017_medwam4\n\n**References:**\n\n* Korres, G., Oikonomou, C., Denaxa, D., & Sotiropoulou, M. (2023). Mediterranean Sea Waves Analysis and Forecast (Copernicus Marine Service MED-Waves, MEDWA\u039c4 system) (Version 1) [Data set]. Copernicus Marine Service (CMS). https://doi.org/10.25423/CMCC/MEDSEA_ANALYSISFORECAST_WAV_006_017_MEDWAM4\n", "providers": [{"name": "HCMR (Greece)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.25423/cmcc/medsea_analysisforecast_wav_006_017_medwam4"}, "BALTICSEA_ANALYSISFORECAST_PHY_003_006": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,balticsea-analysisforecast-phy-003-006,coastal-marine-environment,eastward-sea-water-velocity,eastward-sea-water-velocity-assuming-no-tide,forecast,level-4,marine-resources,marine-safety,near-real-time,northward-sea-water-velocity,northward-sea-water-velocity-assuming-no-tide,numerical-model,ocean-mixed-layer-thickness-defined-by-sigma-theta,oceanographic-geographical-features,s,sea-ice-area-fraction,sea-ice-thickness,sea-surface-height-above-geoid-assuming-no-tide,sea-surface-height-above-sea-level,sea-water-potential-temperature,sea-water-potential-temperature-at-sea-floor,sea-water-salinity,sst,t,target-application#seaiceservices,upward-sea-water-velocity,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Physics Analysis and Forecast", "missionStartDate": "2020-10-01T00:00:00Z", "abstract": "This Baltic Sea physical model product provides forecasts for the physical conditions in the Baltic Sea. The Baltic forecast is updated twice daily providing a new six days forecast. Several datasets are provided: One with hourly instantaneous values, one with daily mean values and one with monthly mean values, all containing these parameters: sea level variations, ice concentration and thickness at the surface, and temperature, salinity and horizontal and vertical velocities for the 3D field. Additionally a dataset with 15 minutes (instantaneous) surface values are provided for the sea level variation and the surface horizontal currents. The product is produced by a Baltic Sea set up of the NEMOv4.0 ocean model. This product is provided at the models native grid with a resolution of 1 nautical mile in the horizontal, and up to 56 vertical depth levels. The area covers the Baltic Sea including the transition area towards the North Sea (i.e. the Danish Belts, the Kattegat and Skagerrak). The ocean model is forced with Stokes drift data from the Baltic Wave forecast product (BALTICSEA_ANALYSISFORECAST_WAV_003_010). Satellite SST, ice concentrations and in-situ T and S profiles are assimilated into the model's analysis field. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00010", "providers": [{"name": "SMHI (Sweden)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00010"}, "IBI_ANALYSISFORECAST_PHY_005_001": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "barotropic-eastward-sea-water-velocity,barotropic-northward-sea-water-velocity,coastal-marine-environment,eastward-sea-water-velocity,forecast,iberian-biscay-irish-seas,ibi-analysisforecast-phy-005-001,in-situ-ts-profiles,level-4,marine-resources,marine-safety,near-real-time,northward-sea-water-velocity,numerical-model,ocean-mixed-layer-thickness-defined-by-sigma-theta,oceanographic-geographical-features,sea-floor-depth-below-geoid,sea-level,sea-surface-height-above-geoid,sea-water-potential-temperature,sea-water-potential-temperature-at-sea-floor,sea-water-salinity,sst,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic-Iberian Biscay Irish- Ocean Physics Analysis and Forecast", "missionStartDate": "2020-12-01T00:00:00Z", "abstract": "The IBI-MFC provides a high-resolution ocean analysis and forecast product (daily run by Nologin with the support of CESGA in terms of supercomputing resources), covering the European waters, and more specifically the Iberia\u2013Biscay\u2013Ireland (IBI) area. The last 2 years before now (historic best estimates) as well as forecasts of different temporal resolutions with a horizon of 5 days (updated on a daily basis) are available on the catalogue.\nThe system is based on a eddy-resolving NEMO model application at 1/36\u00ba horizontal resolution, being Mercator-Ocean in charge of the model code development. The hydrodynamic forecast includes high frequency processes of paramount importance to characterize regional scale marine processes: tidal forcing, surges and high frequency atmospheric forcing, fresh water river discharge, wave forcing in forecast, etc. A weekly update of IBI downscaled analysis is also delivered as historic IBI best estimates.\nThe product offers 3D daily and monthly ocean fields, as well as hourly mean and 15-minute instantaneous values for some surface variables. Daily and monthly averages of 3D Temperature, 3D Salinity, 3D Zonal and Meridional Velocity components, Mix Layer Depth, Sea Bottom Temperature and Sea Surface Height are provided. Additionally, hourly means of surface fields for variables such as Sea Surface Height, Mix Layer Depth, Surface Temperature and Currents, together with Barotropic Velocities are delivered. Finally, 15-minute instantaneous values of Sea Surface Height and Currents are also given.\n\n**Product Citation**: \nPlease refer to our Technical FAQ for citing [products.](http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169)\n\n**DOI (Product)**: \nhttps://doi.org/10.48670/moi-00027\n\n**References:**\n\n* Sotillo, M.G.; Campuzano, F.; Guihou, K.; Lorente, P.; Olmedo, E.; Matulka, A.; Santos, F.; Amo-Baladr\u00f3n, M.A.; Novellino, A. River Freshwater Contribution in Operational Ocean Models along the European Atlantic Fa\u00e7ade: Impact of a New River Discharge Forcing Data on the CMEMS IBI Regional Model Solution. J. Mar. Sci. Eng. 2021, 9, 401. https://doi.org/10.3390/jmse9040401\n* Mason, E. and Ruiz, S. and Bourdalle-Badie, R. and Reffray, G. and Garc\u00eda-Sotillo, M. and Pascual, A. New insight into 3-D mesoscale eddy properties from CMEMS operational models in the western Mediterranean. Ocean Sci., 15, 1111\u20131131, 2019. https://doi.org/10.5194/os-15-1111-2019\n* Lorente, P. and Garc\u00eda-Sotillo, M. and Amo-Baladr\u00f3n, A. and Aznar, R. and Levier, B. and S\u00e1nchez-Garrido, J. C. and Sammartino, S. and de Pascual-Collar, \u00c1. and Reffray, G. and Toledano, C. and \u00c1lvarez-Fanjul, E. Skill assessment of global, regional, and coastal circulation forecast models: evaluating the benefits of dynamical downscaling in IBI (Iberia-Biscay-Ireland) surface waters. Ocean Sci., 15, 967\u2013996, 2019. https://doi.org/10.5194/os-15-967-2019\n* Aznar, R., Sotillo, M. G., Cailleau, S., Lorente, P., Levier, B., Amo-Baladr\u00f3n, A., Reffray, G., and Alvarez Fanjul, E. Strengths and weaknesses of the CMEMS forecasted and reanalyzed solutions for the Iberia-Biscay-Ireland (IBI) waters. J. Mar. Syst., 159, 1\u201314, https://doi.org/10.1016/j.jmarsys.2016.02.007, 2016\n* Sotillo, M. G., Cailleau, S., Lorente, P., Levier, B., Reffray, G., Amo-Baladr\u00f3n, A., Benkiran, M., and Alvarez Fanjul, E.: The MyOcean IBI Ocean Forecast and Reanalysis Systems: operational products and roadmap to the future Copernicus Service, J. Oper. Oceanogr., 8, 63\u201379, https://doi.org/10.1080/1755876X.2015.1014663, 2015.\n", "providers": [{"name": "NOLOGIN", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00027"}, "SST_MED_SST_L3S_NRT_OBSERVATIONS_010_012": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,level-3,marine-resources,marine-safety,mediterranean-sea,near-real-time,oceanographic-geographical-features,satellite-observation,sea-surface-foundation-temperature,sea-surface-temperature,sst-med-sst-l3s-nrt-observations-010-012,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea - High Resolution and Ultra High Resolution L3S Sea Surface Temperature", "missionStartDate": "2008-01-01T00:00:00Z", "abstract": "For the Mediterranean Sea (MED), the CNR MED Sea Surface Temperature (SST) processing chain provides supercollated (merged multisensor, L3S) SST data remapped over the Mediterranean Sea at high (1/16\u00b0) and Ultra High (0.01\u00b0) spatial resolution, representative of nighttime SST values (00:00 UTC). The L3S SST data are produced selecting only the highest quality input data from input L2P images within a strict temporal window (local nightime), to avoid diurnal cycle and cloud contamination. The main L2P data currently used include SLSTR-3A/3B, VIIRS-N20/NPP, Metop-B/C AVHRR and SEVIRI. Consequently, the L3S processing is run daily, but L3S files are produced only if valid SST measurements are present on the area considered. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00171\n\n**References:**\n\n* Buongiorno Nardelli B., C.Tronconi, A. Pisano, R.Santoleri, 2013: High and Ultra-High resolution processing of satellite Sea Surface Temperature data over Southern European Seas in the framework of MyOcean project, Rem. Sens. Env., 129, 1-16, doi:10.1016/j.rse.2012.10.012.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00171"}, "MEDSEA_MULTIYEAR_PHY_006_004": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "cell-thickness,coastal-marine-environment,eastward-sea-water-velocity,in-situ-ts-profiles,level-4,marine-resources,marine-safety,mediterranean-sea,medsea-multiyear-phy-006-004,model-level-number-at-sea-floor,multi-year,northward-sea-water-velocity,numerical-model,ocean-mixed-layer-thickness-defined-by-sigma-theta,oceanographic-geographical-features,sea-floor-depth-below-geoid,sea-level,sea-surface-height-above-geoid,sea-water-potential-temperature,sea-water-potential-temperature-at-sea-floor,sea-water-salinity,sst,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea Physics Reanalysis", "missionStartDate": "1987-01-01T00:00:00Z", "abstract": "The Med MFC physical multiyear product is generated by a numerical system composed of an hydrodynamic model, supplied by the Nucleous for European Modelling of the Ocean (NEMO) and a variational data assimilation scheme (OceanVAR) for temperature and salinity vertical profiles and satellite Sea Level Anomaly along track data. It contains a reanalysis dataset and an interim dataset which covers the period after the reanalysis until 1 month before present. The model horizontal grid resolution is 1/24\u02da (ca. 4-5 km) and the unevenly spaced vertical levels are 141. \n\n**Product Citation**: \nPlease refer to our Technical FAQ for citing products\n\n**DOI (Product)**: \nhttps://doi.org/10.25423/CMCC/MEDSEA_MULTIYEAR_PHY_006_004_E3R1\n\n**DOI (Interim dataset)**:\nhttps://doi.org/10.25423/CMCC/MEDSEA_MULTIYEAR_PHY_006_004_E3R1I\n\n**References:**\n\n* Escudier, R., Clementi, E., Omar, M., Cipollone, A., Pistoia, J., Aydogdu, A., Drudi, M., Grandi, A., Lyubartsev, V., Lecci, R., Cret\u00ed, S., Masina, S., Coppini, G., & Pinardi, N. (2020). Mediterranean Sea Physical Reanalysis (CMEMS MED-Currents) (Version 1) [Data set]. Copernicus Monitoring Environment Marine Service (CMEMS). https://doi.org/10.25423/CMCC/MEDSEA_MULTIYEAR_PHY_006_004_E3R1\n* Escudier, R., Clementi, E., Cipollone, A., Pistoia, J., Drudi, M., Grandi, A., Lyubartsev, V., Lecci, R., Aydogdu, A., Delrosso, D., Omar, M., Masina, S., Coppini G., Pinardi, N. (2021). A High Resolution Reanalysis for the Mediterranean Sea. Frontiers in Earth Science, 9, 1060, https://www.frontiersin.org/article/10.3389/feart.2021.702285, DOI=10.3389/feart.2021.702285\n* Nigam, T., Escudier, R., Pistoia, J., Aydogdu, A., Omar, M., Clementi, E., Cipollone, A., Drudi, M., Grandi, A., Mariani, A., Lyubartsev, V., Lecci, R., Cret\u00ed, S., Masina, S., Coppini, G., & Pinardi, N. (2021). Mediterranean Sea Physical Reanalysis INTERIM (CMEMS MED-Currents, E3R1i system) (Version 1) [Data set]. Copernicus Monitoring Environment Marine Service (CMEMS). https://doi.org/10.25423/CMCC/MEDSEA_MULTIYEAR_PHY_006_004_E3R1I\n", "providers": [{"name": "CMCC (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.25423/CMCC/MEDSEA_MULTIYEAR_PHY_006_004_E3R1"}, "GLOBAL_OMI_WMHE_northward_mht": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-wmhe-northward-mht,marine-resources,marine-safety,multi-year,numerical-model,ocean-volume-transport-across-line,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Northward Heat Transport for Global Ocean, Atlantic and Indian+Pacific basins from Reanalysis", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nMeridional Heat Transport is computed by integrating the heat fluxes along the zonal direction and from top to bottom of the ocean. \nThey are given over 3 basins (Global Ocean, Atlantic Ocean and Indian+Pacific Ocean) and for all the grid points in the meridional grid of each basin. The mean value over a reference period (1993-2014) and over the last full year are provided for the ensemble product and the individual reanalysis, as well as the standard deviation for the ensemble product over the reference period (1993-2014). The values are given in PetaWatt (PW).\n\n**CONTEXT**\n\nThe ocean transports heat and mass by vertical overturning and horizontal circulation, and is one of the fundamental dynamic components of the Earth\u2019s energy budget (IPCC, 2013). There are spatial asymmetries in the energy budget resulting from the Earth\u2019s orientation to the sun and the meridional variation in absorbed radiation which support a transfer of energy from the tropics towards the poles. However, there are spatial variations in the loss of heat by the ocean through sensible and latent heat fluxes, as well as differences in ocean basin geometry and current systems. These complexities support a pattern of oceanic heat transport that is not strictly from lower to high latitudes. Moreover, it is not stationary and we are only beginning to unravel its variability. \n\n**CMEMS KEY FINDINGS**\n\nAfter an anusual 2016 year (Bricaud 2016), with a higher global meridional heat transport in the tropical band explained by, the increase of northward heat transport at 5-10 \u00b0 N in the Pacific Ocean during the El Ni\u00f1o event, 2017 northward heat transport is lower than the 1993-2014 reference value in the tropical band, for both Atlantic and Indian + Pacific Oceans. At the higher latitudes, 2017 northward heat transport is closed to 1993-2014 values.\n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00246\n\n**References:**\n\n* Crosnier L, Barnier B, Treguier AM, 2001. Aliasing inertial oscillations in a 1/6\u00b0 Atlantic circulation model: impact on the mean meridional heat transport. Ocean Modelling, vol 3, issues 1-2, pp21-31. https://doi.org/10.1016/S1463-5003(00)00015-9\n* Ganachaud, A. , Wunsch C. 2003. Large-Scale Ocean Heat and Freshwater Transports during the World Ocean Circulation Experiment. J. Climate, 16, 696\u2013705, https://doi.org/10.1175/1520-0442(2003)016<0696:LSOHAF>2.0.CO;2\n* Lumpkin R, Speer K. 2007. Global ocean meridional overturning. J. Phys. Oceanogr., 37, 2550\u20132562, doi:10.1175/JPO3130.1.\n* Madec G : NEMO ocean engine, Note du P\u00f4le de mod\u00e9lisation, Institut Pierre-Simon Laplace (IPSL), France, No 27, ISSN No 1288-1619, 2008\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00246"}, "IBI_MULTIYEAR_BGC_005_003": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,euphotic-zone-depth,iberian-biscay-irish-seas,ibi-multiyear-bgc-005-003,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mole-concentration-of-ammonium-in-sea-water,mole-concentration-of-dissolved-inorganic-carbon-in-sea-water,mole-concentration-of-dissolved-iron-in-sea-water,mole-concentration-of-dissolved-molecular-oxygen-in-sea-water,mole-concentration-of-nitrate-in-sea-water,mole-concentration-of-phosphate-in-sea-water,mole-concentration-of-phytoplankton-expressed-as-carbon-in-sea-water,mole-concentration-of-silicate-in-sea-water,multi-year,net-primary-production-of-biomass-expressed-as-carbon-per-unit-volume-in-sea-water,none,numerical-model,oceanographic-geographical-features,sea-floor-depth-below-geoid,sea-water-ph-reported-on-total-scale,surface-partial-pressure-of-carbon-dioxide-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic-Iberian Biscay Irish- Ocean BioGeoChemistry NON ASSIMILATIVE Hindcast", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "The IBI-MFC provides a biogeochemical reanalysis product for the Iberia-Biscay-Ireland (IBI) area starting in 01/01/1993 and being regularly updated on a yearly basis. The model system is run by Mercator-Ocean, being the product post-processed to the user\u2019s format by Nologin with the support of CESGA in terms of supercomputing resources.\nTo this aim, an application of the biogeochemical model PISCES is run simultaneously with the ocean physical IBI reanalysis, generating both products at the same 1/12\u00b0 horizontal resolution. The PISCES model is able to simulate the first levels of the marine food web, from nutrients up to mesozooplankton and it has 24 state variables.\nThe product provides daily, monthly and yearly averages of the main biogeochemical variables: chlorophyll, oxygen, nitrate, phosphate, silicate, iron, ammonium, net primary production, euphotic zone depth, phytoplankton carbon, pH, dissolved inorganic carbon and surface partial pressure of carbon dioxide. Additionally, climatological parameters (monthly mean and standard deviation) of these variables for the period 1993-2016 are delivered.\n\n**Product Citation**: \nPlease refer to our Technical FAQ for citing [products.](http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169)\n\n**DOI (Product)**: \nhttps://doi.org/10.48670/moi-00028\n\n**References:**\n\n* Aznar, R., Sotillo, M. G., Cailleau, S., Lorente, P., Levier, B., Amo-Baladr\u00f3n, A., Reffray, G., and Alvarez Fanjul, E. Strengths and weaknesses of the CMEMS forecasted and reanalyzed solutions for the Iberia-Biscay-Ireland (IBI) waters. J. Mar. Syst., 159, 1\u201314, https://doi.org/10.1016/j.jmarsys.2016.02.007, 2016\n", "providers": [{"name": "NOLOGIN", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00028"}, "IBI_OMI_CURRENTS_cui": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,ibi-omi-currents-cui,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Iberia Biscay Ireland Coastal Upwelling Index from Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe Coastal Upwelling Index (CUI) is computed along the African and the Iberian Peninsula coasts. For each latitudinal point from 27\u00b0N to 42\u00b0N the Coastal Upwelling Index is defined as the temperature difference between the maximum and minimum temperature in a range of distance from the coast up to 3.5\u00ba westwards.\n\u3016CUI\u3017_lat=max\u2061(T_lat )-min\u2061(T_lat)\nA high Coastal Upwelling Index indicates intense upwelling conditions.\nThe index is computed from the following Copernicus Marine products:\n\tIBI-MYP: IBI_MULTIYEAR_PHY_005_002 (1993-2019)\n\tIBI-NRT: IBI_ANALYSISFORECAST_PHYS_005_001 (2020 onwards)\n\n**CONTEXT**\n\nCoastal upwelling process occurs along coastlines as the result of deflection of the oceanic water away from the shore. Such deflection is produced by Ekman transport induced by persistent winds parallel to the coastline (Sverdrup, 1938). When this transported water is forced, the mass balance is maintained by pumping of ascending intermediate water. This water is typically denser, cooler and richer in nutrients. The Iberia-Biscay-Ireland domain contains two well-documented Eastern Boundary Upwelling Ecosystems, they are hosted under the same system known as Canary Current Upwelling System (Fraga, 1981; Hempel, 1982). This system is one of the major coastal upwelling regions of the world and it is produced by the eastern closure of the Subtropical Gyre. The North West African (NWA) coast presents an intense upwelling region that extends from Morocco to south of Senegal, likewise the western coast of the Iberian Peninsula (IP) shows a seasonal upwelling behavior. These two upwelling domains are separated by the presence of the Gulf of Cadiz, where the coastline does not allow the formation of upwelling conditions from 34\u00baN up to 37\u00baN.\nThe Copernicus Marine Service Coastal Upwelling Index is defined following the steps of several previous upwelling indices described in literature. More details and full scientific evaluation can be found in the dedicated section in the first issue of the Copernicus Marine Service Ocean State report (Sotillo et al., 2016).\n\n**CMEMS KEY FINDINGS**\n\nThe NWA coast (latitudes below 34\u00baN) shows a quite constantlow variability of the periodicity and the intensity of the upwelling, few periods of upwelling intensifications are found in years 1993-1995, and 2003-2004.\nIn the IP coast (latitudes higher than 37\u00baN) the interannual variability is more remarkable showing years with high upwelling activity (1994, 2004, and 2015-2017) followed by periods of lower activity (1996-1998, 2003, 2011, and 2013).\nAccording to the results of the IBI-NRT system, 2020 was a year with weak upwelling in the IP latitudes. \nWhile in the NWA coast the upwelling activity was more intense than the average.\nThe analysis of trends in the period 1993-2019 shows significant positive trend of the upwelling index in the IP latitudes. This trend implies an increase of temperature differences between the coastal and offshore waters of approximately 0.02 \u00b0C/Year.\n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00248\n\n**References:**\n\n* Fraga F. 1981. Upwelling off the Galician Coast, Northwest Spain. In: Richardson FA, editor. Coastal Upwelling. Washington (DC): Am Geoph Union; p. 176\u2013182.\n* Hempel G. 1982. The Canary current: studies of an upwelling system. Introduction. Rapp. Proc. Reun. Cons. Int. Expl. Mer., 180, 7\u20138.\n* Sotillo MG, Levier B, Pascual A, Gonzalez A. 2016 Iberian-Biscay-Irish Sea. In von Scuckmann et al. (2016) The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography, 9:sup2, s235-s320, DOI: 10.1080/1755876X.2016.1273446\n* Sverdrup HV. 1938. On the process of upwelling. J Mar Res. 1:155\u2013164.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00248"}, "MEDSEA_ANALYSISFORECAST_BGC_006_014": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "cell-thickness,coastal-marine-environment,forecast,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-diatoms-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-nanoflagellates-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,mediterranean-sea,medsea-analysisforecast-bgc-006-014,model-level-number-at-sea-floor,mole-concentration-of-ammonium-in-sea-water,mole-concentration-of-diatoms-expressed-as-carbon-in-sea-water,mole-concentration-of-dissolved-inorganic-carbon-in-sea-water,mole-concentration-of-dissolved-molecular-oxygen-in-sea-water,mole-concentration-of-nanoflagellates-expressed-as-carbon-in-sea-water,mole-concentration-of-nitrate-in-sea-water,mole-concentration-of-phosphate-in-sea-water,mole-concentration-of-phytoplankton-expressed-as-carbon-in-sea-water,mole-concentration-of-picophytoplankton-expressed-as-carbon-in-sea-water,mole-concentration-of-silicate-in-sea-water,mole-concentration-of-zooplankton-expressed-as-carbon-in-sea-water,near-real-time,net-primary-production-of-biomass-expressed-as-carbon-per-unit-volume-in-sea-water,numerical-model,nutrients-(o2-n-p),oceanographic-geographical-features,satellite-chlorophyll,sea-binary-mask,sea-floor-depth-below-geoid,sea-water-alkalinity-expressed-as-mole-equivalent,sea-water-ph-reported-on-total-scale,surface-downward-mass-flux-of-carbon-dioxide-expressed-as-carbon,surface-partial-pressure-of-carbon-dioxide-in-sea-water,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water-490,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea Biogeochemistry Analysis and Forecast", "missionStartDate": "2020-01-01T00:00:00Z", "abstract": "The biogeochemical analysis and forecasts for the Mediterranean Sea at 1/24\u00b0 of horizontal resolution (ca. 4 km) are produced by means of the MedBFM4 model system. MedBFM4, which is run by OGS (IT), consists of the coupling of the multi-stream atmosphere radiative model OASIM, the multi-stream in-water radiative and tracer transport model OGSTM_BIOPTIMOD v4.3, and the biogeochemical flux model BFM v5. Additionally, MedBFM4 features the 3D variational data assimilation scheme 3DVAR-BIO v3.3 with the assimilation of surface chlorophyll (CMEMS-OCTAC NRT product) and of vertical profiles of chlorophyll, nitrate and oxygen (BGC-Argo floats provided by CORIOLIS DAC).\nThe biogeochemical MedBFM system, which is forced by the NEMO-OceanVar model (MEDSEA_ANALYSIS_FORECAST_PHY_006_013 product run by CMCC), produces one day of hindcast and ten days of forecast (every day) and seven days of analysis (weekly on Tuesday).\n\nSalon, S., Cossarini, G., Bolzon, G., Feudale, L., Lazzari, P., Teruzzi, A., Solidoro, C., Crise, A., 2019. Marine Ecosystem forecasts: skill performance of the CMEMS Mediterranean Sea model system. Ocean Sci. Discuss. 1\u201335. https://doi.org/10.5194/os-2018-145\n\n_Product Citation_: Please refer to our Technical FAQ for citing products. http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169\n\n_DOI (Product)_: https://doi.org/10.25423/cmcc/medsea_analysisforecast_bgc_006_014_medbfm4\n\n**References:**\n\n* Feudale, L., Bolzon, G., Lazzari, P., Salon, S., Teruzzi, A., Di Biagio, V., Coidessa, G., Alvarez, E., Amadio, C., & Cossarini, G. (2022). Mediterranean Sea Biogeochemical Analysis and Forecast (CMEMS MED-Biogeochemistry, MedBFM4 system) (Version 1) [Data set]. Copernicus Marine Service. https://doi.org/10.25423/CMCC/MEDSEA_ANALYSISFORECAST_BGC_006_014_MEDBFM4\n", "providers": [{"name": "OGS (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.25423/cmcc/medsea_analysisforecast_bgc_006_014_medbfm4"}, "NWSHELF_ANALYSISFORECAST_BGC_004_002": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,e1t,e2t,e3t,euphotic-zone-depth,forecast,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mole-concentration-of-ammonium-in-sea-water,mole-concentration-of-dissolved-inorganic-carbon-in-sea-water,mole-concentration-of-dissolved-iron-in-sea-water,mole-concentration-of-dissolved-molecular-oxygen-in-sea-water,mole-concentration-of-nitrate-in-sea-water,mole-concentration-of-phosphate-in-sea-water,mole-concentration-of-phytoplankton-expressed-as-carbon-in-sea-water,mole-concentration-of-silicate-in-sea-water,mole-concentration-of-zooplankton-expressed-as-carbon-in-sea-watermass-concentration-of-chlorophyll-a-in-sea-water,mole-concentration-of-zooplankton-expressed-as-carbon-in-sea-watersea-floor-depth-below-geoid,near-real-time,net-primary-production-of-biomass-expressed-as-carbon-per-unit-volume-in-sea-water,none,north-west-shelf-seas,numerical-model,nwshelf-analysisforecast-bgc-004-002,oceanographic-geographical-features,sea-binary-mask,sea-water-ph-reported-on-total-scale,surface-partial-pressure-of-carbon-dioxide-in-sea-water,volume-beam-attenuation-coefficient-of-radiative-flux-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic - European North West Shelf - Ocean Biogeochemistry Analysis and Forecast", "missionStartDate": "2019-05-01T00:00:00Z", "abstract": "The NWSHELF_ANALYSISFORECAST_BGC_004_002 is produced by a coupled physical-biogeochemical model, implemented over the North East Atlantic and Shelf Seas at 1/20 degrees of horizontal resolution and 50 vertical levels.\nThe product is updated weekly, providing 10-day forecast of the main biogeochemical variables.\nProducts are provided as daily and monthly means.\n\n**Product Citation**:\nPlease refer to our Technical FAQ for citing [products.](http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169)\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00056", "providers": [{"name": "NOLOGIN", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00056"}, "GLOBAL_OMI_OHC_area_averaged_anomalies_0_300": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-ohc-area-averaged-anomalies-0-300,in-situ-observation,integral-of-sea-water-potential-temperature-wrt-depth-expressed-as-heat-content,integral-of-sea-water-temperature-wrt-depth-expressed-as-heat-content,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Heat Content (0-300m) from Reanalysis & Multi-Observations Reprocessing", "missionStartDate": "2005-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nEstimates of Ocean Heat Content (OHC) are obtained from integrated differences of the measured temperature and a climatology along a vertical profile in the ocean (von Schuckmann et al., 2018). The regional OHC values are then averaged from 60\u00b0S-60\u00b0N aiming \ni)\tto obtain the mean OHC as expressed in Joules per meter square (J/m2) to monitor the large-scale variability and change.\nii)\tto monitor the amount of energy in the form of heat stored in the ocean (i.e. the change of OHC in time), expressed in Watt per square meter (W/m2). \nOcean heat content is one of the six Global Climate Indicators recommended by the World Meterological Organisation for Sustainable Development Goal 13 implementation (WMO, 2017).\n\n**CONTEXT**\n\nKnowing how much and where heat energy is stored and released in the ocean is essential for understanding the contemporary Earth system state, variability and change, as the ocean shapes our perspectives for the future (von Schuckmann et al., 2020). Variations in OHC can induce changes in ocean stratification, currents, sea ice and ice shelfs (IPCC, 2019; 2021); they set time scales and dominate Earth system adjustments to climate variability and change (Hansen et al., 2011); they are a key player in ocean-atmosphere interactions and sea level change (WCRP, 2018) and they can impact marine ecosystems and human livelihoods (IPCC, 2019).\n\n**CMEMS KEY FINDINGS**\n\nSince the year 2005, the near-surface (0-300m) near-global (60\u00b0S-60\u00b0N) ocean warms at a rate of 0.4 \u00b1 0.1 W/m2. \n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00233\n\n**References:**\n\n* Hansen, J., Sato, M., Kharecha, P., & von Schuckmann, K. (2011). Earth\u2019s energy imbalance and implications. Atmos. Chem. Phys., 11(24), 13421\u201313449. https://doi.org/10.5194/acp-11-13421-2011\n* IPCC Special Report on the Ocean and Cryosphere in a Changing Climate. (2019). In H. O. P\u00f6rtner, D. C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Nicolai, A. Okem, J. Petzold, B. Rama, & N. M. Weyer (Eds.), IPCC Intergovernmental Panel on Climate Change: Geneva, Switzerland. https://www.ipcc.ch/srocc/\n* IPCC, 2021: Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [Masson-Delmotte, V., P. Zhai, A. Pirani, S.L. Connors, C. P\u00e9an, S. Berger, N. Caud, Y. Chen, L. Goldfarb, M.I. Gomis, M. Huang, K. Leitzell, E. Lonnoy, J.B.R. Matthews, T.K. Maycock, T. Waterfield, O. Yelek\u00e7i, R. Yu, and B. Zhou (eds.)]. Cambridge University Press. In Press.\n* von Schuckmann, K., A. Storto, S. Simoncelli, R. Raj, A. Samuelsen, A. de Pascual Collar, M. Garcia Sotillo, T. Szerkely, M. Mayer, D. Peterson, H. Zuo, G. Garric, M. Monier, 2018: Ocean heat content. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s13\u2013s16, DOI: 10.1080/1755876X.2018.1489208\n* von Schuckmann, K., Cheng, L., Palmer, M. D., Tassone, C., Aich, V., Adusumilli, S., Beltrami, H., Boyer, T., Cuesta-Valero, F. J., Desbruy\u00e8res, D., Domingues, C., Garc\u00eda-Garc\u00eda, A., Gentine, P., Gilson, J., Gorfer, M., Haimberger, L., Ishii, M., Johnson, G. C., Killik, R., \u2026 Wijffels, S. E. (2020). Heat stored in the Earth system: Where does the energy go? The GCOS Earth heat inventory team. Earth Syst. Sci. Data Discuss., 2020, 1\u201345. https://doi.org/10.5194/essd-2019-255\n* von Schuckmann, K., & Le Traon, P.-Y. (2011). How well can we derive Global Ocean Indicators from Argo data? Ocean Sci., 7(6), 783\u2013791. https://doi.org/10.5194/os-7-783-2011\n* WCRP (2018). Global sea-level budget 1993\u2013present. Earth Syst. Sci. Data, 10(3), 1551\u20131590. https://doi.org/10.5194/essd-10-1551-2018\n* WMO, 2017: World Meterological Organisation Bulletin, 66(2), https://public.wmo.int/en/resources/bulletin.\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00233"}, "MEDSEA_MULTIYEAR_BGC_006_008": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "cell-thickness,coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mediterranean-sea,medsea-multiyear-bgc-006-008,model-level-number-at-sea-floor,mole-concentration-of-ammonium-in-sea-water,mole-concentration-of-dissolved-inorganic-carbon-in-sea-water,mole-concentration-of-dissolved-molecular-oxygen-in-sea-water,mole-concentration-of-nitrate-in-sea-water,mole-concentration-of-phosphate-in-sea-water,mole-concentration-of-phytoplankton-expressed-as-carbon-in-sea-water,multi-year,net-primary-production-of-biomass-expressed-as-carbon-per-unit-volume-in-sea-water,numerical-model,oceanographic-geographical-features,satellite-chlorophyll,sea-floor-depth-below-geoid,sea-water-alkalinity-expressed-as-mole-equivalent,sea-water-ph-reported-on-total-scale,surface-downward-mass-flux-of-carbon-dioxide-expressed-as-carbon,surface-partial-pressure-of-carbon-dioxide-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea Biogeochemistry Reanalysis", "missionStartDate": "1999-01-01T00:00:00Z", "abstract": "The Mediterranean Sea biogeochemical reanalysis at 1/24\u00b0 of horizontal resolution (ca. 4 km) covers the period from Jan 1999 to 1 month to the present and is produced by means of the MedBFM3 model system. MedBFM3, which is run by OGS (IT), includes the transport model OGSTM v4.0 coupled with the biogeochemical flux model BFM v5 and the variational data assimilation module 3DVAR-BIO v2.1 for surface chlorophyll. MedBFM3 is forced by the physical reanalysis (MEDSEA_MULTIYEAR_PHY_006_004 product run by CMCC) that provides daily forcing fields (i.e., currents, temperature, salinity, diffusivities, wind and solar radiation). The ESA-CCI database of surface chlorophyll concentration (CMEMS-OCTAC REP product) is assimilated with a weekly frequency. \n\nCossarini, G., Feudale, L., Teruzzi, A., Bolzon, G., Coidessa, G., Solidoro C., Amadio, C., Lazzari, P., Brosich, A., Di Biagio, V., and Salon, S., 2021. High-resolution reanalysis of the Mediterranean Sea biogeochemistry (1999-2019). Frontiers in Marine Science. Front. Mar. Sci. 8:741486.doi: 10.3389/fmars.2021.741486\n\n_Product Citation_: Please refer to our Technical FAQ for citing products. http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169\n\n_DOI (Product)_: https://doi.org/10.25423/cmcc/medsea_multiyear_bgc_006_008_medbfm3\n\n_DOI (Interim dataset)_:\nhttps://doi.org/10.25423/CMCC/MEDSEA_MULTIYEAR_BGC_006_008_MEDBFM3I\n\n**References:**\n\n* Teruzzi, A., Di Biagio, V., Feudale, L., Bolzon, G., Lazzari, P., Salon, S., Coidessa, G., & Cossarini, G. (2021). Mediterranean Sea Biogeochemical Reanalysis (CMEMS MED-Biogeochemistry, MedBFM3 system) (Version 1) [Data set]. Copernicus Monitoring Environment Marine Service (CMEMS). https://doi.org/10.25423/CMCC/MEDSEA_MULTIYEAR_BGC_006_008_MEDBFM3\n* Teruzzi, A., Feudale, L., Bolzon, G., Lazzari, P., Salon, S., Di Biagio, V., Coidessa, G., & Cossarini, G. (2021). Mediterranean Sea Biogeochemical Reanalysis INTERIM (CMEMS MED-Biogeochemistry, MedBFM3i system) (Version 1) [Data set]. Copernicus Monitoring Environment Marine Service (CMEMS) https://doi.org/10.25423/CMCC/MEDSEA_MULTIYEAR_BGC_006_008_MEDBFM3I\n", "providers": [{"name": "OGS (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.25423/cmcc/medsea_multiyear_bgc_006_008_medbfm3"}, "MEDSEA_ANALYSISFORECAST_PHY_006_013": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "cell-thickness,coastal-marine-environment,eastward-sea-water-velocity,forecast,in-situ-ts-profiles,level-4,marine-resources,marine-safety,mediterranean-sea,medsea-analysisforecast-phy-006-013,model-level-number-at-sea-floor,near-real-time,northward-sea-water-velocity,northward-sea-water-velocity-assuming-no-tided,numerical-model,ocean-mixed-layer-thickness-defined-by-sigma-theta,oceanographic-geographical-features,sea-binary-mask,sea-floor-depth-below-geoid,sea-level,sea-surface-height-above-geoid,sea-surface-height-above-geoid-assuming-no-tided,sea-surface-height-above-geoid-detided,sea-water-potential-temperature,sea-water-potential-temperature-at-sea-floor,sea-water-salinity,sst,upward-sea-water-velocity,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea Physics Analysis and Forecast", "missionStartDate": "2021-03-01T00:00:00Z", "abstract": "The physical component of the Mediterranean Forecasting System (Med-Physics) is a coupled hydrodynamic-wave model implemented over the whole Mediterranean Basin including tides. The model horizontal grid resolution is 1/24\u02da (ca. 4 km) and has 141 unevenly spaced vertical levels.\nThe hydrodynamics are supplied by the Nucleous for European Modelling of the Ocean NEMO (v4.2) and include the representation of tides, while the wave component is provided by Wave Watch-III (v6.07) coupled through OASIS; the model solutions are corrected by a 3DVAR assimilation scheme (OceanVar) for temperature and salinity vertical profiles and along track satellite Sea Level Anomaly observations.\n\n_Product Citation_: Please refer to our Technical FAQ for citing products.http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169\n\n_DOI (Product)_: https://doi.org/10.25423/CMCC/MEDSEA_ANALYSISFORECAST_PHY_006_013_EAS8\n\n**References:**\n\n* Clementi, E., Aydogdu, A., Goglio, A. C., Pistoia, J., Escudier, R., Drudi, M., Grandi, A., Mariani, A., Lyubartsev, V., Lecci, R., Cret\u00ed, S., Coppini, G., Masina, S., & Pinardi, N. (2021). Mediterranean Sea Physical Analysis and Forecast (CMEMS MED-Currents, EAS6 system) (Version 1) [Data set]. Copernicus Monitoring Environment Marine Service (CMEMS). https://doi.org/10.25423/CMCC/MEDSEA_ANALYSISFORECAST_PHY_006_013_EAS8\n", "providers": [{"name": "CMCC (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.25423/CMCC/MEDSEA_ANALYSISFORECAST_PHY_006_013_EAS8"}, "GLOBAL_OMI_SL_thsl_area_averaged_anomalies_0_2000": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-sl-thsl-area-averaged-anomalies-0-2000,in-situ-observation,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,satellite-observation,thermosteric-change-in-mean-sea-level,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Thermosteric Sea Level anomaly (0-2000m) time series and trend from Reanalysis & Multi-Observations Reprocessing", "missionStartDate": "2005-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe temporal evolution of thermosteric sea level in an ocean layer is obtained from an integration of temperature driven ocean density variations, which are subtracted from a reference climatology to obtain the fluctuations from an average field. The regional thermosteric sea level values are then averaged from 60\u00b0S-60\u00b0N aiming to monitor interannual to long term global sea level variations caused by temperature driven ocean volume changes through thermal expansion as expressed in meters (m). \n\n**CONTEXT**\n\nThe global mean sea level is reflecting changes in the Earth\u2019s climate system in response to natural and anthropogenic forcing factors such as ocean warming, land ice mass loss and changes in water storage in continental river basins. Thermosteric sea-level variations result from temperature related density changes in sea water associated with volume expansion and contraction. Global thermosteric sea level rise caused by ocean warming is known as one of the major drivers of contemporary global mean sea level rise (Cazenave et al., 2018; Oppenheimer et al., 2019).\n\n**CMEMS KEY FINDINGS**\n\nSince the year 2005 the upper (0-2000m) near-global (60\u00b0S-60\u00b0N) thermosteric sea level rises at a rate of 1.3\u00b10.2 mm/year. \n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00240\n\n**References:**\n\n* Oppenheimer, M., B.C. Glavovic , J. Hinkel, R. van de Wal, A.K. Magnan, A. Abd-Elgawad, R. Cai, M. CifuentesJara, R.M. DeConto, T. Ghosh, J. Hay, F. Isla, B. Marzeion, B. Meyssignac, and Z. Sebesvari, 2019: Sea Level Rise and Implications for Low-Lying Islands, Coasts and Communities. In: IPCC Special Report on the Ocean and Cryosphere in a Changing Climate [H.-O. Po\u0308rtner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegri\u0301a, M. Nicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. In press.\n* WCRP Global Sea Level Group, 2018: Global sea-level budget: 1993-present. Earth Syst. Sci. Data, 10, 1551-1590, https://doi.org/10.5194/essd-10-1551-2018.\n* von Storto et al., 2018: Thermosteric Sea Level. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s13\u2013s16, DOI: 10.1080/1755876X.2018.1489208\n* von Schuckmann, K., & Le Traon, P.-Y. (2011). How well can we derive Global Ocean Indicators from Argo data? Ocean Sci., 7(6), 783\u2013791. https://doi.org/10.5194/os-7-783-2011\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00240"}, "OMI_CIRCULATION_VOLTRANS_ARCTIC_averaged": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,coastal-marine-environment,level-4,marine-resources,marine-safety,multi-year,numerical-model,ocean-volume-transport-across-line,oceanographic-geographical-features,omi-circulation-voltrans-arctic-averaged,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Nordic Seas Volume Transports from Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nNet (positive minus negative) volume transport of Atlantic Water through the sections (see Figure 1): Faroe Shetland Channel (Water mass criteria, T > 5 \u00b0C); Barents Sea Opening (T > 3 \u00b0C) and the Fram Strait (T > 2 \u00b0C). Net volume transport of Overflow Waters (\u03c3\u03b8 >27.8 kg/m3) exiting from the Nordic Seas to the North Atlantic via the Denmark Strait and Faroe Shetland Channel. For further details, see Ch. 3.2 in von Schuckmann et al. (2018).\n\n**CONTEXT**\n\nThe poleward flow of relatively warm and saline Atlantic Water through the Nordic Seas to the Arctic Basin, balanced by the overflow waters exiting the Nordic Seas, governs the exchanges between the North Atlantic and the Arctic as well as the distribution of oceanic heat within the Arctic (e.g., Mauritzen et al., 2011; Rudels, 2012). Atlantic Water transported poleward has been found to significantly influence the sea-ice cover in the Barents Sea (Sand\u00f8 et al., 2010; \u00c5rthun et al., 2012; Onarheim et al., 2015) and near Svalbard (Piechura and Walczowski, 2009). Furthermore, Atlantic Water flow through the eastern Nordic seas and its associated heat loss and densification are important factors for the formation of overflow waters in the region (Mauritzen, 1996; Eldevik et al., 2009). These overflow waters together with those generated in the Arctic, exit the Greenland Scotland Ridge, which further contribute to the North Atlantic Deep Water (Dickson and Brown, 1994) and thus play an important role in the Atlantic Meridional Overturning Circulation (Eldevik et al., 2009; Ch. 2.3 in von Schuckmann et al., 2016). In addition to the transport of heat, the Atlantic Water also transports nutrients and zooplankton (e.g., Sundby, 2000), and it carries large amounts of ichthyoplankton of commercially important species, such as Arcto-Norwegian cod (Gadus morhua) and Norwegian spring-spawning herring (Clupea harengus) along the Norwegian coast. The Atlantic Water flow thus plays an integral part in defining both the physical and biological border between the boreal and Arctic realm. Variability of Atlantic Water flow to the Barents Sea has been found to move the position of the ice edge (Onarheim et al., 2015) as well as habitats of various species in the Barents Sea ecosystem (Fossheim et al., 2015).\n\n**CMEMS KEY FINDINGS**\n\nThe flow of Atlantic Water through the F\u00e6r\u00f8y-Shetland Channel amounts to 2.7 Sv (Berx et al., 2013). The corresponding model-based estimate was 2.5 Sv for the period 1993-2021. \nIn the Barents Sea Opening, the model indicates a long-term average net Atlantic Water inflow of 2.2 Sv, as compared with the long-term estimate from observations of 1.8 Sv (Smedsrud et al., 2013).\nIn the Fram Strait, the model data indicates a positive trend in the Atlantic Water transport to the Arctic. This trend may be explained by increased temperature in the West Spitsbergen Current during the period 2005-2010 (e.g., Walczowski et al., 2012), which caused a larger fraction of the water mass to be characterized as Atlantic Water (T > 2 \u00b0C).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00189\n\n**References:**\n\n* Berx B. Hansen B, \u00d8sterhus S, Larsen KM, Sherwin T, Jochumsen K. 2013. Combining in situ measurements and altimetry to estimate volume, heat and salt transport variability through the F\u00e6r\u00f8y-Shetland Channel. Ocean Sci. 9, 639-654\n* Dickson RR, Brown J. 1994. The production of North-Atlantic deep-water \u2013 sources, rates, and pathways. J Geophys Res Oceans. 99(C6), 12319-12341\n* Eldevik T, Nilsen JE\u00d8, Iovino D, Olsson KA, Sand\u00f8 AB, Drange H. 2009. Observed sources and variability of Nordic seas overflow. Nature Geosci. 2(6), 405-409\n* Fossheim M, Primicerio R, Johannesen E, Ingvaldsen RB, Aschan M.M, Dolgov AV. 2015. Recent warming leads to a rapid borealization of fish communities in the Arctic. Nat Climate Change. 5, 673-678.\n* Mauritzen C. 1996. Production of dense overflow waters feeding the North Atlantic across the Greenland-Scotland Ridge. 1. Evidence for a revised circulation scheme. Deep-Sea Res Part I. 43(6), 769-806\n* Mauritzen C, Hansen E, Andersson M, Berx B, Beszczynzka-M\u00f6ller A, Burud I, Christensen KH, Debernard J, de Steur L, Dodd P, et al. 2011. Closing the loop \u2013 Approaches to monitoring the state of the Arctic Mediterranean during the International Polar Year 2007-2008. Prog Oceanogr. 90, 62-89\n* Onarheim IH, Eldevik T, \u00c5rthun M, Ingvaldsen RB, Smedsrud LH. 2015. Skillful prediction of Barents Sea ice cover. Geophys Res Lett. 42(13), 5364-5371\n* Raj RP, Johannessen JA, Eldevik T, Nilsen JE\u00d8, Halo I. 2016. Quantifying mesoscale eddies in the Lofoten basin. J Geophys Res Oceans. 121. doi:10.1002/2016JC011637\n* Rudels B. 2012. Arctic Ocean circulation and variability \u2013 advection and external forcing encounter constraints and local processes. Ocean Sci. 8(2), 261-286\n* Sand\u00f8, A.B., J.E.\u00d8. Nilsen, Y. Gao and K. Lohmann, 2010: Importance of heat transport and local air-sea heat fluxes for Barents Sea climate variability. J Geophys Res. 115, C07013\n* von Schuckmann K, et al. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report. J Oper Oceanogr. 9, 235-320\n* von Schuckmann K. 2018. Copernicus Marine Service Ocean State Report, J Oper Oceanogr. 11, sup1, S1-S142. Smedsrud LH, Esau I, Ingvaldsen RB, Eldevik T, Haugan PM, Li C, Lien VS, Olsen A, Omar AM, Otter\u00e5 OH, Risebrobakken B, Sand\u00f8 AB, Semenov VA, Sorokina SA. 2013. The role of the Barents Sea in the climate system. Rev Geophys. 51, 415-449\n* Sundby, S., 2000. Recruitment of Atlantic cod stocks in relation to temperature and advection of copepod populations. Sarsia. 85, 277-298.\n* Walczowski W, Piechura J, Goszczko I, Wieczorek P. 2012. Changes in Atlantic water properties: an important factor in the European Arctic marine climate. ICES J Mar Sys. 69(5), 864-869.\n* Piechura J, Walczowski W. 2009. Warming of the West Spitsbergen Current and sea ice north of Svalbard. Oceanol. 51(2), 147-164\n* \u00c5rthun, M., Eldevik, T., Smedsrud, L.H., Skagseth, \u00d8., Ingvaldsen, R.B., 2012. Quantifying the Influence of Atlantic Heat on Barents Sea Ice Variability and Retreat. J. Climate. 25, 4736-4743.\n", "providers": [{"name": "NERSC (Norway)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00189"}, "IBI_MULTIYEAR_WAV_005_006": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,e1t,e2t,iberian-biscay-irish-seas,ibi-multiyear-wav-005-006,level-4,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,sea-binary-mask,sea-floor-depth-below-geoid,sea-surface-primary-swell-wave-from-direction,sea-surface-primary-swell-wave-mean-period,sea-surface-primary-swell-wave-significant-height,sea-surface-secondary-swell-wave-from-direction,sea-surface-secondary-swell-wave-mean-period,sea-surface-secondary-swell-wave-significant-height,sea-surface-wave-from-direction,sea-surface-wave-from-direction-at-variance-spectral-density-maximum,sea-surface-wave-maximum-crest-height,sea-surface-wave-maximum-height,sea-surface-wave-mean-period-from-variance-spectral-density-inverse-frequency-moment,sea-surface-wave-mean-period-from-variance-spectral-density-second-frequency-moment,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,sea-surface-wave-stokes-drift-x-velocity,sea-surface-wave-stokes-drift-y-velocity,sea-surface-wind-wave-from-direction,sea-surface-wind-wave-mean-period,sea-surface-wind-wave-significant-height,significant-wave-height-(swh),weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic -Iberian Biscay Irish- Ocean Wave Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "The IBI-MFC provides a high-resolution wave reanalysis product for the Iberia-Biscay-Ireland (IBI) area starting in 01/01/1993 and being regularly extended on a yearly basis. The model system is run by Nologin with the support of CESGA in terms of supercomputing resources. \nThe Multi-Year model configuration is based on the MFWAM model developed by M\u00e9t\u00e9o-France (MF), covering the same region as the IBI-MFC Near Real Time (NRT) analysis and forecasting product, but with an enhanced horizontal resolution (1/36\u00ba instead of 1/20\u00ba). The system assimilates significant wave height (SWH) altimeter data and wave spectral data (Envisat and CFOSAT), supplied by MF. Both, the MY and the NRT products, are fed by ECMWF hourly winds. Specifically, the MY system is forced by the ERA5 reanalysis wind data. As boundary conditions, the NRT system uses the 2D wave spectra from the Copernicus Marine GLOBAL forecast system, whereas the MY system is nested to the GLOBAL reanalysis.\nThe product offers hourly instantaneous fields of different wave parameters, including Wave Height, Period and Direction for total spectrum; fields of Wind Wave (or wind sea), Primary Swell Wave and Secondary Swell for partitioned wave spectra; and the highest wave variables, such as maximum crest height and maximum crest-to-trough height. Additionally, climatological parameters of significant wave height (VHM0) and zero -crossing wave period (VTM02) are delivered for the time interval 1993-2016.\n\n**Product Citation**: \nPlease refer to our Technical FAQ for citing [products.](http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169)\n\n**DOI (Product)**: \nhttps://doi.org/10.48670/moi-00030", "providers": [{"name": "NOLOGIN", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00030"}, "IBI_OMI_TEMPSAL_extreme_var_temp_mean_and_anomaly": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,ibi-omi-tempsal-extreme-var-temp-mean-and-anomaly,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Iberia Biscay Ireland Sea Surface Temperature extreme from Reanalysis", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe CMEMS IBI_OMI_tempsal_extreme_var_temp_mean_and_anomaly OMI indicator is based on the computation of the annual 99th percentile of Sea Surface Temperature (SST) from model data. Two different CMEMS products are used to compute the indicator: The Iberia-Biscay-Ireland Multi Year Product (IBI_MULTIYEAR_PHY_005_002) and the Analysis product (IBI_ANALYSISFORECAST_PHY_005_001).\nTwo parameters have been considered for this OMI:\n\u2022\tMap of the 99th mean percentile: It is obtained from the Multi Year Product, the annual 99th percentile is computed for each year of the product. The percentiles are temporally averaged over the whole period (1993-2021).\n\u2022\tAnomaly of the 99th percentile in 2022: The 99th percentile of the year 2022 is computed from the Analysis product. The anomaly is obtained by subtracting the mean percentile from the 2022 percentile.\nThis indicator is aimed at monitoring the extremes of sea surface temperature every year and at checking their variations in space. The use of percentiles instead of annual maxima, makes this extremes study less affected by individual data. This study of extreme variability was first applied to the sea level variable (P\u00e9rez G\u00f3mez et al 2016) and then extended to other essential variables, such as sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018 and Alvarez Fanjul et al., 2019). More details and a full scientific evaluation can be found in the CMEMS Ocean State report (Alvarez Fanjul et al., 2019).\n\n**CONTEXT**\n\nThe Sea Surface Temperature is one of the essential ocean variables, hence the monitoring of this variable is of key importance, since its variations can affect the ocean circulation, marine ecosystems, and ocean-atmosphere exchange processes. As the oceans continuously interact with the atmosphere, trends of sea surface temperature can also have an effect on the global climate. While the global-averaged sea surface temperatures have increased since the beginning of the 20th century (Hartmann et al., 2013) in the North Atlantic, anomalous cold conditions have also been reported since 2014 (Mulet et al., 2018; Dubois et al., 2018).\n\nThe IBI area is a complex dynamic region with a remarkable variety of ocean physical processes and scales involved. The Sea Surface Temperature field in the region is strongly dependent on latitude, with higher values towards the South (Locarnini et al. 2013). This latitudinal gradient is supported by the presence of the eastern part of the North Atlantic subtropical gyre that transports cool water from the northern latitudes towards the equator. Additionally, the Iberia-Biscay-Ireland region is under the influence of the Sea Level Pressure dipole established between the Icelandic low and the Bermuda high. Therefore, the interannual and interdecadal variability of the surface temperature field may be influenced by the North Atlantic Oscillation pattern (Czaja and Frankignoul, 2002; Flatau et al., 2003).\nAlso relevant in the region are the upwelling processes taking place in the coastal margins. The most referenced one is the eastern boundary coastal upwelling system off the African and western Iberian coast (Sotillo et al., 2016), although other smaller upwelling systems have also been described in the northern coast of the Iberian Peninsula (Alvarez et al., 2011), the south-western Irish coast (Edwars et al., 1996) and the European Continental Slope (Dickson, 1980).\n\n**CMEMS KEY FINDINGS**\n\nIn the IBI region, the 99th mean percentile for 1993-2021 shows a north-south pattern driven by the climatological distribution of temperatures in the North Atlantic. In the coastal regions of Africa and the Iberian Peninsula, the mean values are influenced by the upwelling processes (Sotillo et al., 2016). These results are consistent with the ones presented in \u00c1lvarez Fanjul (2019) for the period 1993-2016.\nThe 99th percentile SST anomaly in 2022 is predominantly positive, with values surpassing up to two times the climatic standard deviation. The northern half of the Atlantic domain is affected by extreme values that exceed the mean. In this region, anomalies exceeding the standard deviation are observed, particularly in the Bay of Biscay and the Northeastern Atlantic above the 45\u2070N parallel.\nIt is worth noting the Mediterranean area, where the impact of maximum sea surface temperature values exceeding two times the standard deviation is widespread. \n\n**Figure caption**\n\nIberia-Biscay-Ireland Surface Temperature extreme variability: Map of the 99th mean percentile computed from the Multi Year Product (left panel) and anomaly of the 99th percentile in 2022 computed from the Analysis product (right panel). Transparent grey areas (if any) represent regions where anomaly exceeds the climatic standard deviation (light grey) and twice the climatic standard deviation (dark grey).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00254\n\n**References:**\n\n* Alvarez I, Gomez-Gesteira M, DeCastro M, Lorenzo MN, Crespo AJC, Dias JM. 2011. Comparative analysis of upwelling influence between the western and northern coast of the Iberian Peninsula. Continental Shelf Research, 31(5), 388-399.\n* \u00c1lvarez Fanjul E, Pascual Collar A, P\u00e9rez G\u00f3mez B, De Alfonso M, Garc\u00eda Sotillo M, Staneva J, Clementi E, Grandi A, Zacharioudaki A, Korres G, Ravdas M, Renshaw R, Tinker J, Raudsepp U, Lagemaa P, Maljutenko I, Geyer G, M\u00fcller M, \u00c7a\u011flar Yumruktepe V. Sea level, sea surface temperature and SWH extreme percentiles: combined analysis from model results and in situ observations, Section 2.7, p:31. In: Schuckmann K, Le Traon P-Y, Smith N, Pascual A, Djavidnia S, Gattuso J-P, Gr\u00e9goire M, Nolan G, et al. 2019. Copernicus Marine Service Ocean State Report, Issue 3, Journal of Operational Oceanography, 12:sup1, S1-S123, DOI: 10.1080/1755876X.2019.1633075\n* Czaja A, Frankignoul C. 2002. Observed impact of Atlantic SST anomalies on the North Atlantic Oscillation. Journal of Climate, 15(6), 606-623.\n* Dickson RR, Gurbutt PA, Pillai VN. 1980. Satellite evidence of enhanced upwelling along the European continental slope. Journal of Physical Oceanography, 10(5), 813-819.\n* Dubois C, von Schuckmann K, Josey S. 2018. Changes in the North Atlantic. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 2.9, s66\u2013s70, DOI: https://doi.org/10.1080/1755876X.2018.1489208\n* Edwards A, Jones K, Graham JM, Griffiths CR, MacDougall N, Patching J, Raine R. 1996. Transient coastal upwelling and water circulation in Bantry Bay, a ria on the south-west coast of Ireland. Estuarine, Coastal and Shelf Science, 42(2), 213-230.\n* Flatau MK, Talley L, Niiler PP. 2003. The North Atlantic Oscillation, surface current velocities, and SST changes in the subpolar North Atlantic. Journal of Climate, 16(14), 2355-2369.\n* Hartmann DL, Klein Tank AMG, Rusticucci M, Alexander LV, Br\u00f6nnimann S, Charabi Y, Dentener FJ, Dlugokencky EJ, Easterling DR, Kaplan A, Soden BJ, Thorne PW, Wild M, Zhai PM. 2013. Observations: Atmosphere and Surface. In: Climate Change 2013: The Physical Science Basis. Contribution of Working Group I to the Fifth Assessment Report of the Intergovernmental Panel on Climate Change. Cambridge University Press, Cambridge, United Kingdom and New York, NY, USA.\n* Mulet S, Nardelli BB, Good S, Pisano A, Greiner E, Monier M. 2018. Ocean temperature and salinity. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 1.1, s5\u2013s13, DOI: https://doi.org/10.1080/1755876X.2018.1489208\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B., De Alfonso M., Zacharioudaki A., P\u00e9rez Gonz\u00e1lez I., \u00c1lvarez Fanjul E., M\u00fcller M., Marcos M., Manzano F., Korres G., Ravdas M., Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208\n* Sotillo MG, Levier B, Pascual A, Gonzalez A. 2016. Iberian-Biscay-Irish Sea. In von Schuckmann et al. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report No.1, Journal of Operational Oceanography, 9:sup2, s235-s320, DOI: 10.1080/1755876X.2016.1273446\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00254"}, "OMI_HEALTH_CHL_GLOBAL_OCEANCOLOUR_oligo_sag_area_mean": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "area-type-oligotropic-gyre,coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-in-seawater-for-averaged-mean,multi-year,oceanographic-geographical-features,omi-health-chl-global-oceancolour-oligo-sag-area-mean,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "South Atlantic Gyre Area Chlorophyll-a time series and trend from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nOligotrophic subtropical gyres are regions of the ocean with low levels of nutrients required for phytoplankton growth and low levels of surface chlorophyll-a whose concentration can be quantified through satellite observations. The gyre boundary has been defined using a threshold value of 0.15 mg m-3 chlorophyll for the Atlantic gyres (Aiken et al. 2016), and 0.07 mg m-3 for the Pacific gyres (Polovina et al. 2008). The area inside the gyres for each month is computed using monthly chlorophyll data from which the monthly climatology is subtracted to compute anomalies. A gap filling algorithm has been utilized to account for missing data inside the gyre. Trends in the area anomaly are then calculated for the entire study period (September 1997 to December 2021).\n\n**CONTEXT**\n\nOligotrophic gyres of the oceans have been referred to as ocean deserts (Polovina et al. 2008). They are vast, covering approximately 50% of the Earth\u2019s surface (Aiken et al. 2016). Despite low productivity, these regions contribute significantly to global productivity due to their immense size (McClain et al. 2004). Even modest changes in their size can have large impacts on a variety of global biogeochemical cycles and on trends in chlorophyll (Signorini et al 2015). Based on satellite data, Polovina et al. (2008) showed that the areas of subtropical gyres were expanding. The Ocean State Report (Sathyendranath et al. 2018) showed that the trends had reversed in the Pacific for the time segment from January 2007 to December 2016. \n\n**CMEMS KEY FINDINGS**\n\nThe trend in the South Altantic gyre area for the 1997 Sept \u2013 2021 December period was positive, with a 0.01% increase in area relative to 2000-01-01 values. Note that this trend is lower than the 0.09% rate for the 1997-2020 trend (though within the uncertainties associated with the two estimates) and is not statistically significant (p>0.05). \nDuring the 1997 Sept \u2013 2021 December period, the trend in chlorophyll concentration was positive (0.73% year-1) relative to 2000-01-01 values. This is a significant increase from the trend of 0.35% year-1 for the 1997-2020 period and is statistically significant (p<0.05). The last two years of the timeseries show an increased deviation from the mean.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00228\n\n**References:**\n\n* Aiken J, Brewin RJW, Dufois F, Polimene L, Hardman-Mountford NJ, Jackson T, Loveday B, Hoya SM, Dall\u2019Olmo G, Stephens J, et al. 2016. A synthesis of the environmental response of the North and South Atlantic sub-tropical gyres during two decades of AMT. Prog Oceanogr. doi:10.1016/j.pocean.2016.08.004.\n* McClain CR, Signorini SR, Christian JR 2004. Subtropical gyre variability observed by ocean-color satellites. Deep Sea Res Part II Top Stud Oceanogr. 51:281\u2013301. doi:10.1016/j.dsr2.2003.08.002.\n* Polovina JJ, Howell EA, Abecassis M 2008. Ocean\u2019s least productive waters are expanding. Geophys Res Lett. 35:270. doi:10.1029/2007GL031745.\n* Sathyendranath S, Pardo S, Brewin RJW. 2018. Oligotrophic gyres. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s13\u2013s16, DOI: 10.1080/1755876X.2018.1489208\n* Signorini SR, Franz BA, McClain CR 2015. Chlorophyll variability in the oligotrophic gyres: mechanisms, seasonality and trends. Front Mar Sci. 2. doi:10.3389/fmars.2015.00001.\n", "providers": [{"name": "PML (UK)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00228"}, "GLOBAL_OMI_OHC_area_averaged_anomalies_0_700": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-ohc-area-averaged-anomalies-0-700,in-situ-observation,integral-of-sea-water-potential-temperature-wrt-depth-expressed-as-heat-content,integral-of-sea-water-temperature-wrt-depth-expressed-as-heat-content,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Heat Content (0-700m) from Reanalysis & Multi-Observations Reprocessing", "missionStartDate": "2005-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nEstimates of Ocean Heat Content (OHC) are obtained from integrated differences of the measured temperature and a climatology along a vertical profile in the ocean (von Schuckmann et al., 2018). The regional OHC values are then averaged from 60\u00b0S-60\u00b0N aiming \ni)\tto obtain the mean OHC as expressed in Joules per meter square (J/m2) to monitor the large-scale variability and change.\nii)\tto monitor the amount of energy in the form of heat stored in the ocean (i.e. the change of OHC in time), expressed in Watt per square meter (W/m2). \nOcean heat content is one of the six Global Climate Indicators recommended by the World Meterological Organisation for Sustainable Development Goal 13 implementation (WMO, 2017).\n\n**CONTEXT**\n\nKnowing how much and where heat energy is stored and released in the ocean is essential for understanding the contemporary Earth system state, variability and change, as the ocean shapes our perspectives for the future (von Schuckmann et al., 2020). Variations in OHC can induce changes in ocean stratification, currents, sea ice and ice shelfs (IPCC, 2019; 2021); they set time scales and dominate Earth system adjustments to climate variability and change (Hansen et al., 2011); they are a key player in ocean-atmosphere interactions and sea level change (WCRP, 2018) and they can impact marine ecosystems and human livelihoods (IPCC, 2019).\n\n**CMEMS KEY FINDINGS**\n\nSince the year 2005, the upper (0-700m) near-global (60\u00b0S-60\u00b0N) ocean warms at a rate of 0.6 \u00b1 0.1 W/m2. \n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00234\n\n**References:**\n\n* Hansen, J., Sato, M., Kharecha, P., & von Schuckmann, K. (2011). Earth\u2019s energy imbalance and implications. Atmos. Chem. Phys., 11(24), 13421\u201313449. https://doi.org/10.5194/acp-11-13421-2011\n* IPCC Special Report on the Ocean and Cryosphere in a Changing Climate. (2019). In H. O. P\u00f6rtner, D. C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Nicolai, A. Okem, J. Petzold, B. Rama, & N. M. Weyer (Eds.), IPCC Intergovernmental Panel on Climate Change: Geneva, Switzerland. https://www.ipcc.ch/srocc/\n* IPCC, 2021: Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [Masson-Delmotte, V., P. Zhai, A. Pirani, S.L. Connors, C. P\u00e9an, S. Berger, N. Caud, Y. Chen, L. Goldfarb, M.I. Gomis, M. Huang, K. Leitzell, E. Lonnoy, J.B.R. Matthews, T.K. Maycock, T. Waterfield, O. Yelek\u00e7i, R. Yu, and B. Zhou (eds.)]. Cambridge University Press. In Press.\n* von Schuckmann, K., A. Storto, S. Simoncelli, R. Raj, A. Samuelsen, A. de Pascual Collar, M. Garcia Sotillo, T. Szerkely, M. Mayer, D. Peterson, H. Zuo, G. Garric, M. Monier, 2018: Ocean heat content. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s13\u2013s16, DOI: 10.1080/1755876X.2018.1489208\n* von Schuckmann, K., Cheng, L., Palmer, M. D., Tassone, C., Aich, V., Adusumilli, S., Beltrami, H., Boyer, T., Cuesta-Valero, F. J., Desbruy\u00e8res, D., Domingues, C., Garc\u00eda-Garc\u00eda, A., Gentine, P., Gilson, J., Gorfer, M., Haimberger, L., Ishii, M., Johnson, G. C., Killik, R., \u2026 Wijffels, S. E. (2020). Heat stored in the Earth system: Where does the energy go? The GCOS Earth heat inventory team. Earth Syst. Sci. Data Discuss., 2020, 1\u201345. https://doi.org/10.5194/essd-2019-255\n* von Schuckmann, K., & Le Traon, P.-Y. (2011). How well can we derive Global Ocean Indicators from Argo data? Ocean Sci., 7(6), 783\u2013791. https://doi.org/10.5194/os-7-783-2011\n* WCRP (2018). Global sea-level budget 1993\u2013present. Earth Syst. Sci. Data, 10(3), 1551\u20131590. https://doi.org/10.5194/essd-10-1551-2018\n* WMO, 2017: World Meterological Organisation Bulletin, 66(2), https://public.wmo.int/en/resources/bulletin.\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00234"}, "IBI_OMI_WMHE_mow": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,ibi-omi-wmhe-mow,in-situ-observation,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterrranean Outflow Water Index from Reanalysis & Multi-Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nVariations of the Mediterranean Outflow Water at 1000 m depth are monitored through area-averaged salinity anomalies in specifically defined boxes. The salinity data are extracted from several CMEMS products and averaged in the corresponding monitoring domain: \n* IBI-MYP: IBI_MULTIYEAR_PHY_005_002\n* IBI-NRT: IBI_ANALYSISFORECAST_PHYS_005_001\n* GLO-MYP: GLOBAL_REANALYSIS_PHY_001_030\n* CORA: INSITU_GLO_TS_REP_OBSERVATIONS_013_002_b\n* ARMOR: MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012\n\nThe anomalies of salinity have been computed relative to the monthly climatology obtained from IBI-MYP. Outcomes from diverse products are combined to deliver a unique multi-product result. Multi-year products (IBI-MYP, GLO,MYP, CORA, and ARMOR) are used to show an ensemble mean and the standard deviation of members in the covered period. The IBI-NRT short-range product is not included in the ensemble, but used to provide the deterministic analysis of salinity anomalies in the most recent year.\n\n**CONTEXT**\n\nThe Mediterranean Outflow Water is a saline and warm water mass generated from the mixing processes of the North Atlantic Central Water and the Mediterranean waters overflowing the Gibraltar sill (Daniault et al., 1994). The resulting water mass is accumulated in an area west of the Iberian Peninsula (Daniault et al., 1994) and spreads into the North Atlantic following advective pathways (Holliday et al. 2003; Lozier and Stewart 2008, de Pascual-Collar et al., 2019).\nThe importance of the heat and salt transport promoted by the Mediterranean Outflow Water flow has implications beyond the boundaries of the Iberia-Biscay-Ireland domain (Reid 1979, Paillet et al. 1998, van Aken 2000). For example, (i) it contributes substantially to the salinity of the Norwegian Current (Reid 1979), (ii) the mixing processes with the Labrador Sea Water promotes a salt transport into the inner North Atlantic (Talley and MacCartney, 1982; van Aken, 2000), and (iii) the deep anti-cyclonic Meddies developed in the African slope is a cause of the large-scale westward penetration of Mediterranean salt (Iorga and Lozier, 1999).\nSeveral studies have demonstrated that the core of Mediterranean Outflow Water is affected by inter-annual variability. This variability is mainly caused by a shift of the MOW dominant northward-westward pathways (Bozec et al. 2011), it is correlated with the North Atlantic Oscillation (Bozec et al. 2011) and leads to the displacement of the boundaries of the water core (de Pascual-Collar et al., 2019). The variability of the advective pathways of MOW is an oceanographic process that conditions the destination of the Mediterranean salt transport in the North Atlantic. Therefore, monitoring the Mediterranean Outflow Water variability becomes decisive to have a proper understanding of the climate system and its evolution (e.g. Bozec et al. 2011, Pascual-Collar et al. 2019).\nThe CMEMS IBI-OMI_WMHE_mow product is aimed to monitor the inter-annual variability of the Mediterranean Outflow Water in the North Atlantic. The objective is the establishment of a long-term monitoring program to observe the variability and trends of the Mediterranean water mass in the IBI regional seas. To do that, the salinity anomaly is monitored in key areas selected to represent the main reservoir and the three main advective spreading pathways. More details and a full scientific evaluation can be found in the CMEMS Ocean State report Pascual et al., 2018 and de Pascual-Collar et al. 2019.\n\n**CMEMS KEY FINDINGS**\n\nThe absence of long-term trends in the monitoring domain Reservoir (b) suggests the steadiness of water mass properties involved on the formation of Mediterranean Outflow Water.\nResults obtained in monitoring box North (c) present an alternance of periods with positive and negative anomalies. The last negative period started in 2016 reaching up to the present. Such negative events are linked to the decrease of the northward pathway of Mediterranean Outflow Water (Bozec et al., 2011), which appears to return to steady conditions in 2020 and 2021. \nResults for box West (d) reveal a cycle of negative (2015-2017) and positive (2017 up to the present) anomalies. The positive anomalies of salinity in this region are correlated with an increase of the westward transport of salinity into the inner North Atlantic (de Pascual-Collar et al., 2019), which appear to be maintained for years 2020-2021.\nResults in monitoring boxes North and West are consistent with independent studies (Bozec et al., 2011; and de Pascual-Collar et al., 2019), suggesting a westward displacement of Mediterranean Outflow Water and the consequent contraction of the northern boundary.\n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00258\n\n**References:**\n\n* Bozec A, Lozier MS, Chassignet EP, Halliwell GR. 2011. On the variability of the Mediterranean outflow water in the North Atlantic from 1948 to 2006. J Geophys Res 116:C09033. doi:10.1029/2011JC007191.\n* Daniault N, Maze JP, Arhan M. 1994. Circulation and mixing of MediterraneanWater west of the Iberian Peninsula. Deep Sea Res. Part I. 41:1685\u20131714.\n* de Pascual-Collar A, Sotillo MG, Levier B, Aznar R, Lorente P, Amo-Baladr\u00f3n A, \u00c1lvarez-Fanjul E. 2019. Regional circulation patterns of Mediterranean Outflow Water near the Iberian and African continental slopes. Ocean Sci., 15, 565\u2013582. https://doi.org/10.5194/os-15-565-2019.\n* Holliday NP. 2003. Air-sea interaction and circulation changes in the northeast Atlantic. J Geophys Res. 108(C8):3259. doi:10.1029/2002JC001344.\n* Iorga MC, Lozier MS. 1999. Signatures of the Mediterranean outflow from a North Atlantic climatology: 1. Salinity and density fields. Journal of Geophysical Research: Oceans, 104(C11), 25985-26009.\n* Lozier MS, Stewart NM. 2008. On the temporally varying northward penetration of Mediterranean overflow water and eastward penetration of Labrador Sea water. J Phys Oceanogr. 38(9):2097\u20132103. doi:10.1175/2008JPO3908.1.\n* Paillet J, Arhan M, McCartney M. 1998. Spreading of labrador Sea water in the eastern North Atlantic. J Geophys Res. 103 (C5):10223\u201310239.\n* Pascual A, Levier B, Sotillo M, Verbrugge N, Aznar R, Le Cann B. 2018. Characterisation of Mediterranean outflow w\u00e1ter in the Iberia-Gulf of Biscay-Ireland region. In: von Schuckmann, K., Le Traon, P.-Y., Smith, N., Pascual, A., Braseur, P., Fennel, K., Djavidnia, S.: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11, sup1, s1-s142, doi:10.1080/1755876X.2018.1489208, 2018.\n* Reid JL. 1979. On the contribution of the Mediterranean Sea outflow to the Norwegian\u2010Greenland Sea, Deep Sea Res., Part A, 26, 1199\u20131223, doi:10.1016/0198-0149(79)90064-5.\n* Talley LD, McCartney MS. 1982. Distribution and circulation of Labrador Sea water. Journal of Physical Oceanography, 12(11), 1189-1205.\n* van Aken HM. 2000. The hydrography of the mid-latitude northeast Atlantic Ocean I: the deep water masses. Deep Sea Res. Part I. 47:757\u2013788.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00258"}, "GLOBAL_OMI_SL_thsl_area_averaged_anomalies_0_700": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-sl-thsl-area-averaged-anomalies-0-700,in-situ-observation,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,satellite-observation,thermosteric-change-in-mean-sea-level,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Thermosteric Sea Level anomaly (0-700m) time series and trend from Reanalysis & Multi-Observations Reprocessing", "missionStartDate": "2005-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe temporal evolution of thermosteric sea level in an ocean layer is obtained from an integration of temperature driven ocean density variations, which are subtracted from a reference climatology to obtain the fluctuations from an average field. The regional thermosteric sea level values are then averaged from 60\u00b0S-60\u00b0N aiming to monitor interannual to long term global sea level variations caused by temperature driven ocean volume changes through thermal expansion as expressed in meters (m). \n\n**CONTEXT**\n\nThe global mean sea level is reflecting changes in the Earth\u2019s climate system in response to natural and anthropogenic forcing factors such as ocean warming, land ice mass loss and changes in water storage in continental river basins. Thermosteric sea-level variations result from temperature related density changes in sea water associated with volume expansion and contraction. Global thermosteric sea level rise caused by ocean warming is known as one of the major drivers of contemporary global mean sea level rise (Cazenave et al., 2018; Oppenheimer et al., 2019).\n\n**CMEMS KEY FINDINGS**\n\nSince the year 2005 the upper (0-700m) near-global (60\u00b0S-60\u00b0N) thermosteric sea level rises at a rate of 0.9\u00b10.1 mm/year. \n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00239\n\n**References:**\n\n* Oppenheimer, M., B.C. Glavovic , J. Hinkel, R. van de Wal, A.K. Magnan, A. Abd-Elgawad, R. Cai, M. CifuentesJara, R.M. DeConto, T. Ghosh, J. Hay, F. Isla, B. Marzeion, B. Meyssignac, and Z. Sebesvari, 2019: Sea Level Rise and Implications for Low-Lying Islands, Coasts and Communities. In: IPCC Special Report on the Ocean and Cryosphere in a Changing Climate [H.-O. Po\u0308rtner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegri\u0301a, M. Nicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. In press.\n* WCRP Global Sea Level Group, 2018: Global sea-level budget: 1993-present. Earth Syst. Sci. Data, 10, 1551-1590, https://doi.org/10.5194/essd-10-1551-2018.\n* von Storto et al., 2018: Thermosteric Sea Level. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s13\u2013s16, DOI: 10.1080/1755876X.2018.1489208\n* von Schuckmann, K., & Le Traon, P.-Y. (2011). How well can we derive Global Ocean Indicators from Argo data? Ocean Sci., 7(6), 783\u2013791. https://doi.org/10.5194/os-7-783-2011\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00239"}, "IBI_OMI_SEASTATE_swi": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,ibi-omi-seastate-swi,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Iberia Biscay Ireland Strong Wave Incidence index from Reanalysis", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe Strong Wave Incidence index is proposed to quantify the variability of strong wave conditions in the Iberia-Biscay-Ireland regional seas. The anomaly of exceeding a threshold of Significant Wave Height is used to characterize the wave behavior. A sensitivity test of the threshold has been performed evaluating the differences using several ones (percentiles 75, 80, 85, 90, and 95). From this indicator, it has been chosen the 90th percentile as the most representative, coinciding with the state-of-the-art.\nTwo CMEMS products are used to compute the Strong Wave Incidence index:\n\u2022\tIBI-WAV-MYP: IBI_REANALYSIS_WAV_005_006\n\u2022\tIBI-WAV-NRT: IBI_ANALYSIS_FORECAST_WAV_005_005\nThe Strong Wave Incidence index (SWI) is defined as the difference between the climatic frequency of exceedance (Fclim) and the observational frequency of exceedance (Fobs) of the threshold defined by the 90th percentile (ThP90) of Significant Wave Height (SWH) computed on a monthly basis from hourly data of IBI-WAV-MYP product:\nSWI = Fobs(SWH > ThP90) \u2013 Fclim(SWH > ThP90)\nSince the Strong Wave Incidence index is defined as a difference of a climatic mean and an observed value, it can be considered an anomaly. Such index represents the percentage that the stormy conditions have occurred above/below the climatic average. Thus, positive/negative values indicate the percentage of hourly data that exceed the threshold above/below the climatic average, respectively.\n\n**CONTEXT**\n\nOcean waves have a high relevance over the coastal ecosystems and human activities. Extreme wave events can entail severe impacts over human infrastructures and coastal dynamics. However, the incidence of severe (90th percentile) wave events also have valuable relevance affecting the development of human activities and coastal environments. The Strong Wave Incidence index based on the CMEMS regional analysis and reanalysis product provides information on the frequency of severe wave events.\nThe IBI-MFC covers the Europe\u2019s Atlantic coast in a region bounded by the 26\u00baN and 56\u00baN parallels, and the 19\u00baW and 5\u00baE meridians. The western European coast is located at the end of the long fetch of the subpolar North Atlantic (M\u00f8rk et al., 2010), one of the world\u2019s greatest wave generating regions (Folley, 2017). Several studies have analyzed changes of the ocean wave variability in the North Atlantic Ocean (Bacon and Carter, 1991; Kursnir et al., 1997; WASA Group, 1998; Bauer, 2001; Wang and Swail, 2004; Dupuis et al., 2006; Wolf and Woolf, 2006; Dodet et al., 2010; Young et al., 2011; Young and Ribal, 2019). The observed variability is composed of fluctuations ranging from the weather scale to the seasonal scale, together with long-term fluctuations on interannual to decadal scales associated with large-scale climate oscillations. Since the ocean surface state is mainly driven by wind stresses, part of this variability in Iberia-Biscay-Ireland region is connected to the North Atlantic Oscillation (NAO) index (Bacon and Carter, 1991; Hurrell, 1995; Bouws et al., 1996, Bauer, 2001; Woolf et al., 2002; Tsimplis et al., 2005; Gleeson et al., 2017). However, later studies have quantified the relationships between the wave climate and other atmospheric climate modes such as the East Atlantic pattern, the Arctic Oscillation pattern, the East Atlantic Western Russian pattern and the Scandinavian pattern (Izaguirre et al., 2011, Mat\u00ednez-Asensio et al., 2016).\nThe Strong Wave Incidence index provides information on incidence of stormy events in four monitoring regions in the IBI domain. The selected monitoring regions (Figure 1.A) are aimed to provide a summarized view of the diverse climatic conditions in the IBI regional domain: Wav1 region monitors the influence of stormy conditions in the West coast of Iberian Peninsula, Wav2 region is devoted to monitor the variability of stormy conditions in the Bay of Biscay, Wav3 region is focused in the northern half of IBI domain, this region is strongly affected by the storms transported by the subpolar front, and Wav4 is focused in the influence of marine storms in the North-East African Coast, the Gulf of Cadiz and Canary Islands.\nMore details and a full scientific evaluation can be found in the CMEMS Ocean State report (Pascual et al., 2020).\n\n**CMEMS KEY FINDINGS**\n\nThe analysis of the index in the last decades do not show significant trends of the strong wave conditions over the period 1992-2021 with 99% confidence. The maximum wave event reported in region WAV1 (B) occurred in February 2014, producing an increment of 34% of strong wave conditions in the region. Two maximum wave events are found in WAV2 (C) with an increment of 28% of high wave conditions in November 2009 and February 2014. As in regions WAV1 and WAV2, in the region WAV3 (D), a strong wave event took place in February 2014, this event is the one of the maximum events reported in the region with an increment of strong wave conditions of 20%, two months before (December 2013) there was a storm of similar characteristics affecting this region. The region WAV4 (E) present its maximum wave event in January 1996, such event produced a 33% of increment of strong wave conditions in the region. Despite of each monitoring region is affected by independent wave events; the analysis shows several past higher-than-average wave events that were propagated though several monitoring regions: November-December 2010 (WAV3 and WAV2); February 2014 (WAV1, WAV2, and WAV3); and February-March 2018 (WAV1 and WAV4). \nThe analysis of the NRT period (January 2022 onwards) depicts a significant event that occurred in November 2022, which affected the WAV2 and WAV3 regions (resulting in a 25% and 19% increase in maximum wave conditions in the WAV2 and WAV3 regions, respectively). Additionally, a second event in June 2022 impacted the WAV1 and WAV3 regions, leading to a 21% and 17% increase in maximum wave heights, respectively. While these mentioned events are noteworthy, both cases exhibit an intensity in line with the climatic variability characteristic of each region.\nThe NRT analysis period for the WAV4 region does not indicate any notable events. However, the event described for the WAV2 and WAV3 regions in June 2022 had a moderate impact on this region, resulting in a 13% increase in maximum wave height.\n\n**Figure caption**\n\n(A) Mean 90th percentile of Sea Wave Height computed from IBI_REANALYSIS_WAV_005_006 product at an hourly basis. Gray dotted lines denote the four monitoring areas where the Strong Wave Incidence index is computed. (B, C, D, and E) Strong Wave Incidence index averaged in monitoring regions WAV1 (A), WAV2 (B), WAV3 (C), and WAV4 (D). Panels show merged results of two CMEMS products: IBI_REANALYSIS_WAV_005_006 (blue), IBI_ANALYSIS_FORECAST_WAV_005_005 (orange). The trend and 99% confidence interval of IBI-MYP product is included (bottom right).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00251\n\n**References:**\n\n* Bacon S, Carter D J T. 1991. Wave climate changes in the north Atlantic and North Sea, International Journal of Climatology, 11, 545\u2013558.\n* Bauer E. 2001. Interannual changes of the ocean wave variability in the North Atlantic and in the North Sea, Climate Research, 18, 63\u201369.\n* Bouws E, Jannink D, Komen GJ. 1996. The increasing wave height in the North Atlantic Ocean, Bull. Am. Met. Soc., 77, 2275\u20132277.\n* Dodet G, Bertin X, Taborda R. 2010. Wave climate variability in the North-East Atlantic Ocean over the last six decades, Ocean Modelling, 31, 120\u2013131.\n* Dupuis H, Michel D, Sottolichio A. 2006. Wave climate evolution in the Bay of Biscay over two decades. Journal of Marine Systems, 63, 105\u2013114.\n* Folley M. 2017. The wave energy resource. In Pecher A, Kofoed JP (ed.), Handbook of Ocean Wave Energy, Ocean Engineering & Oceanography 7, doi:10.1007/978-3-319-39889-1_3.\n* Gleeson E, Gallagher S, Clancy C, Dias F. 2017. NAO and extreme ocean states in the Northeast Atlantic Ocean, Adv. Sci. Res., 14, 23\u201333, doi:10.5194/asr-14-23-2017.\n* Gonz\u00e1lez-Marco D, Sierra J P, Ybarra O F, S\u00e1nchez-Arcilla A. 2008. Implications of long waves in harbor management: The Gij\u00f3n port case study. Ocean & Coastal Management, 51, 180-201. doi:10.1016/j.ocecoaman.2007.04.001.\n* Hurrell JW. 1995. Decadal trends in the North Atlantic Oscillation: regional temperatures and precipitation, Science, 269:676\u2013679.\n* Izaguirre C, M\u00e9ndez F J, Men\u00e9ndez M, Losada I J. 2011. Global extreme wave height variability based on satellite data Cristina. Geoph. Res. Letters, Vol. 38, L10607, doi: 10.1029/2011GL047302.\n* Kushnir Y, Cardone VJ, Greenwood JG, Cane MA. 1997. The recent increase in North Atlantic wave heights. Journal of Climate 10:2107\u20132113.\n* Mart\u00ednez-Asensio A, Tsimplis M N, Marcos M, Feng F, Gomis D, Jord\u00e0a G, Josey S A. 2016. Response of the North Atlantic wave climate to atmospheric modes of variability. International Journal of Climatology, 36, 1210\u20131225, doi: 10.1002/joc.4415.\n* M\u00f8rk G, Barstow S, Kabush A, Pontes MT. 2010. Assessing the global wave energy potential. Proceedings of OMAE2010 29th International Conference on Ocean, Offshore Mechanics and Arctic Engineering June 6-11, 2010, Shanghai, China.\n* Pascual A., Levier B., Aznar R., Toledano C., Garc\u00eda-Valdecasas JM., Garc\u00eda M., Sotillo M., Aouf L., \u00c1lvarez E. (2020) Monitoring of wave sea state in the Iberia-Biscay-Ireland regional seas. In von Scuckmann et al. (2020) Copernicus Marine Service Ocean State Report, Issue 4, Journal of Operational Oceanography, 13:sup1, S1-S172, DOI: 10.1080/1755876X.2020.1785097\n* Tsimplis M N, Woolf D K, Osborn T J, Wakelin S, Wolf J, Flather R, Shaw A G P, Woodworth P, Challenor P, Blackman D, Pert F, Yan Z, Jevrejeva S. 2005. Towards a vulnerability assessment of the UK and northern European coasts: the role of regional climate variability. Phil. Trans. R. Soc. A, Vol. 363, 1329\u20131358 doi:10.1098/rsta.2005.1571.\n* Wang X, Swail V. 2004. Historical and possible future changes of wave heights in northern hemisphere oceans. In: Perrie W (ed), Atmosphere ocean interactions, vol 2. Wessex Institute of Technology Press, Ashurst.\n* WASA-Group. 1998. Changing waves and storms in the Northeast Atlantic?, Bull. Am. Meteorol. Soc., 79:741\u2013760.\n* Wolf J, Woolf D K. 2006. Waves and climate change in the north-east Atlantic. Geophysical Research Letters, Vol. 33, L06604, doi: 10.1029/2005GL025113.\n* Woolf D K, Challenor P G, Cotton P D. 2002. Variability and predictability of the North Atlantic wave climate, J. Geophys. Res., 107(C10), 3145, doi:10.1029/2001JC001124.\n* Young I R, Zieger S, Babanin A V. 2011. Global Trends in Wind Speed and Wave Height. Science, Vol. 332, Issue 6028, 451-455, doi: 10.1126/science.1197219.\n* Young I R, Ribal A. 2019. Multiplatform evaluation of global trends in wind speed and wave height. Science, 364, 548-552, doi: 10.1126/science.aav9527.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00251"}, "MULTIOBS_GLO_BIO_CARBON_SURFACE_REP_015_008": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,dissolved-inorganic-carbon-in-sea-water,global-ocean,in-situ-observation,level-4,marine-resources,marine-safety,multi-year,multiobs-glo-bio-carbon-surface-rep-015-008,none,oceanographic-geographical-features,sea-water-ph-reported-on-total-scale,surface-downward-mass-flux-of-carbon-dioxide-expressed-as-carbon,surface-partial-pressure-of-carbon-dioxide-in-sea-water,total-alkalinity-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Surface Carbon", "missionStartDate": "1985-01-01T00:00:00Z", "abstract": "This product corresponds to a REP L4 time series of monthly global reconstructed surface ocean pCO2, air-sea fluxes of CO2, pH, total alkalinity, dissolved inorganic carbon, saturation state with respect to calcite and aragonite, and associated uncertainties on a 0.25\u00b0 x 0.25\u00b0 regular grid. The product is obtained from an ensemble-based forward feed neural network approach mapping situ data for surface ocean fugacity (SOCAT data base, Bakker et al. 2016, https://www.socat.info/) and sea surface salinity, temperature, sea surface height, chlorophyll a, mixed layer depth and atmospheric CO2 mole fraction. Sea-air flux fields are computed from the air-sea gradient of pCO2 and the dependence on wind speed of Wanninkhof (2014). Surface ocean pH on total scale, dissolved inorganic carbon, and saturation states are then computed from surface ocean pCO2 and reconstructed surface ocean alkalinity using the CO2sys speciation software.\n\n**Product Citation**: Please refer to our Technical FAQ for citing products: http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169.\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00047\n\n**References:**\n\n* Chau, T. T. T., Gehlen, M., and Chevallier, F.: A seamless ensemble-based reconstruction of surface ocean pCO2 and air\u2013sea CO2 fluxes over the global coastal and open oceans, Biogeosciences, 19, 1087\u20131109, https://doi.org/10.5194/bg-19-1087-2022, 2022.\n", "providers": [{"name": "LSCE (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00047"}, "MULTIOBS_GLO_PHY_W_3D_REP_015_007": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,eastward-sea-water-velocity,global-ocean,in-situ-observation,level-4,marine-resources,marine-safety,multi-year,multiobs-glo-phy-w-3d-rep-015-007,northward-sea-water-velocity,numerical-model,oceanographic-geographical-features,satellite-observation,upward-sea-water-velocity,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Observed Ocean Physics 3D Quasi-Geostrophic Currents (OMEGA3D)", "missionStartDate": "1993-01-06T00:00:00Z", "abstract": "You can find here the OMEGA3D observation-based quasi-geostrophic vertical and horizontal ocean currents developed by the Consiglio Nazionale delle RIcerche. The data are provided weekly over a regular grid at 1/4\u00b0 horizontal resolution, from the surface to 1500 m depth (representative of each Wednesday). The velocities are obtained by solving a diabatic formulation of the Omega equation, starting from ARMOR3D data (MULTIOBS_GLO_PHY_REP_015_002 which corresponds to former version of MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012) and ERA-Interim surface fluxes. \n\n**DOI (product):** \nhttps://commons.datacite.org/doi.org/10.25423/cmcc/multiobs_glo_phy_w_rep_015_007\n\n\n**Product citation**: \nPlease refer to our Technical FAQ for citing products.http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169\n\n**References:**\n\n* DOI (Product): https://doi.org/10.25423/cmcc/multiobs_glo_phy_w_rep_015_007\n* Buongiorno Nardelli, B. (2020). CNR global observation-based OMEGA3D quasi-geostrophic vertical and horizontal ocean currents (1993-2018) (Version 1) [Data set]. Copernicus Monitoring Environment Marine Service (CMEMS). https://doi.org/10.25423/CMCC/MULTIOBS_GLO_PHY_W_REP_015_007\n* Buongiorno Nardelli, B. A Multi-Year Timeseries of Observation-Based 3D Horizontal and Vertical Quasi-Geostrophic Global Ocean Currents. Earth Syst. Sci. Data 2020, No. 12, 1711\u20131723. https://doi.org/10.5194/essd-12-1711-2020.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": null}, "OMI_HEALTH_CHL_BALTIC_OCEANCOLOUR_area_averaged_mean": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-in-seawater,multi-year,oceanographic-geographical-features,omi-health-chl-baltic-oceancolour-area-averaged-mean,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Chlorophyll-a time series and trend from Observations Reprocessing", "missionStartDate": "1997-06-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe time series are derived from the regional chlorophyll reprocessed (MY) product as distributed by CMEMS which, in turn, result from the application of the regional chlorophyll algorithm over remote sensing reflectances (Rrs) provided by the Plymouth Marine Laboratory using an ad-hoc configuration for CMEMS of the ESA OC-CCI processor version 6 (OC-CCIv6) to merge at 1km resolution (rather than at 4km as for OC-CCI) MERIS, MODIS-AQUA, SeaWiFS, NPP-VIIRS and OLCI-A data. The chlorophyll product is derived from a Multi-Layer Perceptron neural-net (MLP) developed on field measurements collected within the BiOMaP program of JRC/EC (Zibordi et al., 2011). The algorithm is an ensemble of different MLPs that use Rrs at different wavelengths as input. The processing chain and the techniques used to develop the algorithm are detailed in Brando et al. (2021a; 2021b). \nMonthly regional mean values are calculated by performing the average of 2D monthly mean (weighted by pixel area) over the region of interest. The deseasonalized time series is obtained by applying the X-11 seasonal adjustment methodology on the original time series as described in Colella et al. (2016), and then the Mann-Kendall test (Mann, 1945; Kendall, 1975) and Sens\u2019s method (Sen, 1968) are subsequently applied to obtain the magnitude of trend. \n\n**CONTEXT**\n\nPhytoplankton and chlorophyll concentration, as a proxy for phytoplankton respond rapidly to changes in environmental conditions, such as light, temperature, nutrients and mixing (Gregg and Rousseaux, 2014). The character of the response in the Baltic Sea depends on the nature of the change drivers, and ranges from seasonal cycles to decadal oscillations (Kahru and Elmgren 2014). Therefore, it is of critical importance to monitor chlorophyll concentration at multiple temporal and spatial scales, in order to be able to separate potential long-term climate signals from natural variability in the short term. In particular, in the Baltic Sea phytoplankton is known to respond to the variations of SST in the basin associated with climate variability (Kabel et al. 2012).\n\n**CMEMS KEY FINDINGS**\n\nBaltic Sea shows a positive trend in the time interval 1997-2022 with a slope of 0.67\u00b10.49% per year and it confirms the trend retrieved in the previous release. Maxima and minima values are quite similar year-by-year. Absolute maximum is clear in 2008 while absolute minimum is achieved during 2004. Since 2019 chlorophyll seems to increase weakly.\n\n**Figure caption**\n\nBaltic Sea time series and trend (1997-2021) of satellite chlorophyll, based on CMEMS product OCEANCOLOUR_BAL_BGC_L3_MY_009_133. The monthly regional average (weighted by pixel area) time series is shown in grey, with the deseasonalized time series in green and the trend in blue.\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00197\n\n**References:**\n\n* Brando, V.E., A. Di Cicco, M. Sammartino, S. Colella, D D\u2019Alimonte, T. Kajiyama, S. Kaitala, J. Attila, 2021a. OCEAN COLOUR PRODUCTION CENTRE, Baltic Sea Observation Products. Copernicus Marine Environment Monitoring Centre. Quality Information Document (https://catalogue.marine.copernicus.eu/documents/QUID/CMEMS-OC-QUID-009-080-097.pdf).\n* Brando, V.E.; Sammartino, M; Colella, S.; Bracaglia, M.; Di Cicco, A; D\u2019Alimonte, D.; Kajiyama, T., Kaitala, S., Attila, J., 2021b (accepted). Phytoplankton Bloom Dynamics in the Baltic Sea Using a Consistently Reprocessed Time Series of Multi-Sensor Reflectance and Novel Chlorophyll-a Retrievals. Remote Sens. 2021, 13, x.\n* Colella, S., Falcini, F., Rinaldi, E., Sammartino, M., & Santoleri, R. (2016). Mediterranean ocean colour chlorophyll trends. PloS one, 11(6).\n* Gregg, W. W., and C. S. Rousseaux, 2014. Decadal Trends in Global Pelagic Ocean Chlorophyll: A New Assessment Integrating Multiple Satellites, in Situ Data, and Models. Journal of Geophysical Research Oceans 119. doi:10.1002/2014JC010158.\n* Kabel K, Moros M, Porsche C, Neumann T, Adolphi F, Andersen TJ, Siegel H, Gerth M, Leipe T, Jansen E, Sinninghe Damste\u0301 JS. 2012. Impact of climate change on the health of the Baltic Sea ecosystem over the last 1000 years. Nat Clim Change. doi:10.1038/nclimate1595.\n* Kahru, M. and Elmgren, R.: Multidecadal time series of satellite- detected accumulations of cyanobacteria in the Baltic Sea, Biogeosciences, 11, 3619 3633, doi:10.5194/bg-11-3619-2014, 2014.\n* Kendall MG. 1975. Multivariate analysis. London: Charles Griffin & Co; p. 210, 43.\n* Mann HB. 1945. Nonparametric tests against trend. Econometrica. 13:245 259. p. 42.\n* Sathyendranath, S., et al., 2018. ESA Ocean Colour Climate Change Initiative (Ocean_Colour_cci): Version 3.1. Technical Report Centre for Environmental Data Analysis. doi:10.5285/9c334fbe6d424a708cf3c4cf0c6a53f5.\n* Sen PK. 1968. Estimates of the regression coefficient based on Kendall\u2019s tau. J Am Statist Assoc. 63:1379 1389.\n* Zibordi, G., Berthon, J.-F., Me\u0301lin, F., and D\u2019Alimonte, D.: Cross- site consistent in situ measurements for satellite ocean color ap- plications: the BiOMaP radiometric dataset, Rem. Sens. Environ., 115, 2104\u20132115, 2011.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00197"}, "OMI_VAR_EXTREME_WMF_MEDSEA_area_averaged_mean": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,in-situ-ts-profiles,marine-resources,marine-safety,mediterranean-sea,multi-year,numerical-model,oceanographic-geographical-features,omi-var-extreme-wmf-medsea-area-averaged-mean,sea-level,water-mass-formation-rate,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Water Mass Formation Rates from Reanalysis", "missionStartDate": "1987-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe Mediterranean water mass formation rates are evaluated in 4 areas as defined in the Ocean State Report issue 2 section 3.4 (Simoncelli and Pinardi, 2018) as shown in Figure 2: (1) the Gulf of Lions for the Western Mediterranean Deep Waters (WMDW); (2) the Southern Adriatic Sea Pit for the Eastern Mediterranean Deep Waters (EMDW); (3) the Cretan Sea for Cretan Intermediate Waters (CIW) and Cretan Deep Waters (CDW); (4) the Rhodes Gyre, the area of formation of the so-called Levantine Intermediate Waters (LIW) and Levantine Deep Waters (LDW).\nAnnual water mass formation rates have been computed using daily mixed layer depth estimates (density criteria \u0394\u03c3 = 0.01 kg/m3, 10 m reference level) considering the annual maximum volume of water above mixed layer depth with potential density within or higher the specific thresholds specified in Table 1 then divided by seconds per year.\nAnnual mean values are provided using the Mediterranean 1/24o eddy resolving reanalysis (Escudier et al. 2020, 2021).\n\n**CONTEXT**\n\nThe formation of intermediate and deep water masses is one of the most important processes occurring in the Mediterranean Sea, being a component of its general overturning circulation. This circulation varies at interannual and multidecadal time scales and it is composed of an upper zonal cell (Zonal Overturning Circulation) and two main meridional cells in the western and eastern Mediterranean (Pinardi and Masetti 2000).\nThe objective is to monitor the main water mass formation events using the eddy resolving Mediterranean Sea Reanalysis (Escudier et al. 2020, 2021) and considering Pinardi et al. (2015) and Simoncelli and Pinardi (2018) as references for the methodology. The Mediterranean Sea Reanalysis can reproduce both Eastern Mediterranean Transient and Western Mediterranean Transition phenomena and catches the principal water mass formation events reported in the literature. This will permit constant monitoring of the open ocean deep convection process in the Mediterranean Sea and a better understanding of the multiple drivers of the general overturning circulation at interannual and multidecadal time scales. \nDeep and intermediate water formation events reveal themselves by a deep mixed layer depth distribution in four Mediterranean areas (Table 1 and Figure 2): Gulf of Lions, Southern Adriatic Sea Pit, Cretan Sea and Rhodes Gyre. \n\n**CMEMS KEY FINDINGS**\n\nThe Western Mediterranean Deep Water (WMDW) formation events in the Gulf of Lion appear to be larger after 1999 consistently with Schroeder et al. (2006, 2008) related to the Eastern Mediterranean Transient event. This modification of WMDW after 2005 has been called Western Mediterranean Transition. WMDW formation events are consistent with Somot et al. (2016) and the event in 2009 is also reported in Houpert et al. (2016). \nThe Eastern Mediterranean Deep Water (EMDW) formation in the Southern Adriatic Pit region displays a period of water mass formation between 1988 and 1993, in agreement with Pinardi et al. (2015), in 1996, 1999 and 2000 as documented by Manca et al. (2002). Weak deep water formation in winter 2006 is confirmed by observations in Vilibi\u0107 and \u0160anti\u0107 (2008). An intense deep water formation event is detected in 2012-2013 (Ga\u010di\u0107 et al., 2014). Last years are characterized by large events starting from 2017 (Mihanovic et al., 2021).\nCretan Intermediate Water formation rates present larger peaks between 1989 and 1993 with the ones in 1992 and 1993 composing the Eastern Mediterranean Transient phenomena. The Cretan Deep Water formed in 1992 and 1993 is characterized by the highest densities of the entire period in accordance with Velaoras et al. (2014).\nThe Levantine Deep Water formation rate in the Rhode Gyre region presents the largest values between 1992 and 1993 in agreement with Kontoyiannis et al. (1999). \n\n**Figure caption**\n\nWater mass formation rates [Sverdrup] computed in 4 regions: in the Gulf of Lion for the Western Mediterranean Deep Waters (WMDW); in the Southern Adriatic region for the Eastern Mediterranean Deep Waters (EMDW); in the Cretan Sea for the Cretan Intermediate Waters (CIW) and the Cretan Deep Waters (CDW); in the Rhode Gyre area for the Levantine Intermediate Waters (LIW) and the Levantine Deep Waters (LDW). Product used: MEDSEA_MULTIYEAR_PHY_006_004.\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00318\n\n**References:**\n\n* Escudier R., Clementi E., Cipollone A., Pistoia J., Drudi M., Grandi A., Lyubartsev V., Lecci R., Aydogdu A., Delrosso D., Omar M., Masina S., Coppini G., Pinardi N. 2021. A High Resolution Reanalysis for the Mediterranean Sea. Frontiers in Earth Science, Vol.9, pp.1060, DOI:10.3389/feart.2021.702285.\n* Escudier, R., Clementi, E., Omar, M., Cipollone, A., Pistoia, J., Aydogdu, A., Drudi, M., Grandi, A., Lyubartsev, V., Lecci, R., Cret\u00ed, S., Masina, S., Coppini, G., & Pinardi, N. (2020). Mediterranean Sea Physical Reanalysis (CMEMS MED-Currents) (Version 1) set. Copernicus Monitoring Environment Marine Service (CMEMS). https://doi.org/10.25423/CMCC/MEDSEA_MULTIYEAR_PHY_006_004_E3R1\n* Ga\u010di\u0107, M., Civitarese, G., Kova\u010devi\u0107, V., Ursella, L., Bensi, M., Menna, M., et al. 2014. Extreme winter 2012 in the Adriatic: an example of climatic effect on the BiOS rhythm. Ocean Sci. 10, 513\u2013522. doi: 10.5194/os-10-513-2014\n* Houpert, L., de Madron, X.D., Testor, P., Bosse, A., D\u2019Ortenzio, F., Bouin, M.N., Dausse, D., Le Goff, H., Kunesch, S., Labaste, M., et al. 2016. Observations of open-ocean deep convection in the northwestern Mediterranean Sea: seasonal and inter- annual variability of mixing and deep water masses for the 2007-2013 period. J Geophys Res Oceans. 121:8139\u20138171. doi:10.1002/ 2016JC011857.\n* Kontoyiannis, H., Theocharis, A., Nittis, K. 1999. Structures and characteristics of newly formed water masses in the NW levantine during 1986, 1992, 1995. In: Malanotte-Rizzoli P., Eremeev V.N., editor. The eastern Mediterranean as a laboratory basin for the assessment of contrasting ecosys- tems. NATO science series (series 2: environmental secur- ity), Vol. 51. Springer: Dordrecht.\n* Manca, B., Kovacevic, V., Gac\u030cic\u0301, M., Viezzoli, D. 2002. Dense water formation in the Southern Adriatic Sea and spreading into the Ionian Sea in the period 1997\u20131999. J Mar Sys. 33/ 34:33\u2013154.\n* Mihanovi\u0107, H., Vilibi\u0107, I., \u0160epi\u0107, J., Mati\u0107, F., Ljube\u0161i\u0107, Z., Mauri, E., Gerin, R., Notarstefano, G., Poulain, P.-M.. 2021. Observation, preconditioning and recurrence of exceptionally high salinities in the Adriatic Sea. Frontiers in Marine Science, Vol. 8, https://www.frontiersin.org/article/10.3389/fmars.2021.672210\n* Pinardi, N., Zavatarelli, M., Adani, M., Coppini, G., Fratianni, C., Oddo, P., ... & Bonaduce, A. 2015. Mediterranean Sea large-scale low-frequency ocean variability and water mass formation rates from 1987 to 2007: a retrospective analysis. Progress in Oceanography, 132, 318-332\n* Schroeder, K., Gasparini, G.P., Tangherlini, M., Astraldi, M. 2006. Deep and intermediate water in the western Mediterranean under the influence of the eastern Mediterranean transient. Geophys Res Lett. 33. doi:10. 1028/2006GL02712.\n* Schroeder, K., Ribotti, A., Borghini, M., Sorgente, R., Perilli, A., Gasparini, G.P. 2008. An extensive western Mediterranean deep water renewal between 2004 and 2006. Geophys Res Lett. 35(18):L18605. doi:10.1029/2008GL035146.\n* Simoncelli, S. and Pinardi, N. 2018. Water mass formation processes in the Mediterranean sea over the past 30 years. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s13\u2013s16, DOI: 10.1080/1755876X.2018.1489208.\n* Somot, S., Houpert, L., Sevault, F., Testor, P., Bosse, A., Taupier-Letage, I., Bouin, M.N., Waldman, R., Cassou, C., Sanchez-Gomez, E., et al. 2016. Characterizing, modelling and under- standing the climate variability of the deep water formation in the North-Western Mediterranean Sea. Clim Dyn. 1\u201332. doi:10.1007/s00382-016-3295-0.\n* Velaoras, D., Krokos, G., Nittis, K., Theocharis, A. 2014. Dense intermediate water outflow from the Cretan Sea: a salinity driven, recurrent phenomenon, connected to thermohaline circulation changes. J Geophys Res Oceans. 119:4797\u20134820. doi:10.1002/2014JC009937.\n* Vilibic\u0301, I., S\u030cantic\u0301, D. 2008. Deep water ventilation traced by Synechococcus cyanobacteria. Ocean Dyn 58:119\u2013125. doi:10.1007/s10236-008-0135-8.\n* Von Schuckmann K. et al. (2018) Copernicus Marine Service Ocean State Report, Journal of Operational Oceanography, 11:sup1, S1-S142, DOI: 10.1080/1755876X.2018.1489208\n", "providers": [{"name": "CMCC (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00318"}, "OMI_HEALTH_CHL_BALTIC_OCEANCOLOUR_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,change-in-mass-concentration-of-chlorophyll-in-seawater-over-time,coastal-marine-environment,level-4,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-health-chl-baltic-oceancolour-trend,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Chlorophyll-a trend map from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThis product includes the Baltic Sea satellite chlorophyll trend map based on regional chlorophyll reprocessed (MY) product as distributed by CMEMS OC-TAC which, in turn, result from the application of the regional chlorophyll algorithms over remote sensing reflectances (Rrs) provided by the Plymouth Marine Laboratory (PML) using an ad-hoc configuration for CMEMS of the ESA OC-CCI processor version 6 (OC-CCIv6) to merge at 1km resolution (rather than at 4km as for OC-CCI) MERIS, MODIS-AQUA, SeaWiFS, NPP-VIIRS and OLCI-A data. The chlorophyll product is derived from a Multi Layer Perceptron neural-net (MLP) developed on field measurements collected within the BiOMaP program of JRC/EC (Zibordi et al., 2011). The algorithm is an ensemble of different MLPs that use Rrs at different wavelengths as input. The processing chain and the techniques used to develop the algorithm are detailed in Brando et al. (2021a; 2021b).\nThe trend map is obtained by applying Colella et al. (2016) methodology, where the Mann-Kendall test (Mann, 1945; Kendall, 1975) and Sens\u2019s method (Sen, 1968) are applied on deseasonalized monthly time series, as obtained from the X-11 technique (see e. g. Pezzulli et al. 2005), to estimate, trend magnitude and its significance. The trend is expressed in % per year that represents the relative changes (i.e., percentage) corresponding to the dimensional trend [mg m-3 y-1] with respect to the reference climatology (1997-2014). Only significant trends (p < 0.05) are included.\n\n**CONTEXT**\n\nPhytoplankton are key actors in the carbon cycle and, as such, recognised as an Essential Climate Variable (ECV). Chlorophyll concentration - as a proxy for phytoplankton - respond rapidly to changes in environmental conditions, such as light, temperature, nutrients and mixing (Colella et al. 2016). The character of the response in the Baltic Sea depends on the nature of the change drivers, and ranges from seasonal cycles to decadal oscillations (Kahru and Elmgren 2014) and anthropogenic climate change. Eutrophication is one of the most important issues for the Baltic Sea (HELCOM, 2018), therefore the use of long-term time series of consistent, well-calibrated, climate-quality data record is crucial for detecting eutrophication. Furthermore, chlorophyll analysis also demands the use of robust statistical temporal decomposition techniques, in order to separate the long-term signal from the seasonal component of the time series.\n\n**CMEMS KEY FINDINGS**\n\nThe average Baltic Sea trend for the 1997-2021 period is 0.5% per year. The basin shows a general positive chlorophyll trend. This result is in accordance with those of Sathyendranath et al. (2018), that reveal an increasing trend in chlorophyll concentration in most of the European Seas. Weak negative trends are observable in the northern sector of the Bothnian Bay and partially in the Gulf of Finland. \n\n**Figure caption**\n\nBaltic Sea satellite chlorophyll trend over the period 1997-2022, based on CMEMS product OCEANCOLOUR_BAL_BGC_L3_MY_009_133. Trend are expressed in % per year, with positive trends in red and negative trends in blue.\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00198\n\n**References:**\n\n* Brando, V.E., A. Di Cicco, M. Sammartino, S. Colella, D D\u2019Alimonte, T. Kajiyama, S. Kaitala, J. Attila, 2021a. OCEAN COLOUR PRODUCTION CENTRE, Baltic Sea Observation Products. Copernicus Marine Environment Monitoring Centre. Quality Information Document (https://catalogue.marine.copernicus.eu/documents/QUID/CMEMS-OC-QUID-009-080-097.pdf).\n* Brando, V.E.; Sammartino, M; Colella, S.; Bracaglia, M.; Di Cicco, A; D\u2019Alimonte, D.; Kajiyama, T., Kaitala, S., Attila, J., 2021b. Phytoplankton bloom dynamics in the Baltic sea using a consistently reprocessed time series of multi-sensor reflectance and novel chlorophyll-a retrievals. Remote Sensing, 13(16), 3071.\n* Colella, S., Falcini, F., Rinaldi, E., Sammartino, M., & Santoleri, R. (2016). Mediterranean ocean colour chlorophyll trends. PloS one, 11(6).\n* HELCOM (2018): HELCOM Thematic assessment of eutrophication 2011-2016. Baltic Sea Environment Proceedings No. 156.\n* Kahru, M. and Elmgren, R.: Multidecadal time series of satellite- detected accumulations of cyanobacteria in the Baltic Sea, Biogeosciences, 11, 3619 3633, doi:10.5194/bg-11-3619-2014, 2014.\n* Kendall MG. 1975. Multivariate analysis. London: Charles Griffin & Co; p. 210, 43.\n* Mann HB. 1945. Nonparametric tests against trend. Econometrica. 13:245\u2013259. p. 42.\n* Pezzulli S, Stephenson DB, Hannachi A. 2005. The Variability of Seasonality. J. Climate. 18:71\u201388. doi:10.1175/JCLI-3256.1.\n* Sathyendranath, S., Pardo, S., Benincasa, M., Brando, V. E., Brewin, R. J.W., M\u00e9lin, F., Santoleri, R., 2018, 1.5. Essential Variables: Ocean Colour in Copernicus Marine Service Ocean State Report - Issue 2, Journal of Operational Oceanography, 11:sup1, 1-142, doi: 10.1080/1755876X.2018.1489208.\n* Sen PK. 1968. Estimates of the regression coefficient based on Kendall\u2019s tau. J Am Statist Assoc. 63:1379\u20131389.\n* Zibordi, G., Berthon, J.-F., M\u00e9lin, F., and D\u2019Alimonte, D.: Cross- site consistent in situ measurements for satellite ocean color ap- plications: the BiOMaP radiometric dataset, Rem. Sens. Environ., 115, 2104\u20132115, 2011.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00198"}, "MULTIOBS_GLO_BIO_BGC_3D_REP_015_010": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,global-ocean,in-situ-observation,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-particulate-organic-matter-expressed-as-carbon-in-sea-water,multi-year,multiobs-glo-bio-bgc-3d-rep-015-010,none,oceanographic-geographical-features,satellite-observation,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean 3D Chlorophyll-a concentration, Particulate Backscattering coefficient and Particulate Organic Carbon", "missionStartDate": "1998-01-07T00:00:00Z", "abstract": "This product consists of 3D fields of Particulate Organic Carbon (POC), Particulate Backscattering coefficient (bbp) and Chlorophyll-a concentration (Chla) at depth. The reprocessed product is provided at 0.25\u00b0x0.25\u00b0 horizontal resolution, over 36 levels from the surface to 1000 m depth. \nA neural network method estimates both the vertical distribution of Chla concentration and of particulate backscattering coefficient (bbp), a bio-optical proxy for POC, from merged surface ocean color satellite measurements with hydrological properties and additional relevant drivers. \n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00046\n\n**Product Citation:** \nPlease refer to our Technical FAQ for citing products: http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169.\n\n**References:**\n\n* Sauzede R., H. Claustre, J. Uitz, C. Jamet, G. Dall\u2019Olmo, F. D\u2019Ortenzio, B. Gentili, A. Poteau, and C. Schmechtig, 2016: A neural network-based method for merging ocean color and Argo data to extend surface bio-optical properties to depth: Retrieval of the particulate backscattering coefficient, J. Geophys. Res. Oceans, 121, doi:10.1002/2015JC011408.\n", "providers": [{"name": "LOV (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00046"}, "SST_MED_SST_L4_REP_OBSERVATIONS_010_021": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,level-4,marine-resources,marine-safety,mediterranean-sea,multi-year,oceanographic-geographical-features,satellite-observation,sea-surface-temperature,sst-med-sst-l4-rep-observations-010-021,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea - High Resolution L4 Sea Surface Temperature Reprocessed", "missionStartDate": "1981-08-25T00:00:00Z", "abstract": "The Reprocessed (REP) Mediterranean (MED) dataset provides a stable and consistent long-term Sea Surface Temperature (SST) time series over the Mediterranean Sea (and the adjacent North Atlantic box) developed for climate applications. This product consists of daily (nighttime), optimally interpolated (L4), satellite-based estimates of the foundation SST (namely, the temperature free, or nearly-free, of any diurnal cycle) at 0.05\u00b0 resolution grid covering the period from January 1st 1982 to present (currently, up to one month before real time). The MED-REP-L4 product is built from a consistent reprocessing of the collated level-3 (merged single-sensor, L3C) climate data record provided by the ESA Climate Change Initiative (CCI) and the Copernicus Climate Change Service (C3S) initiatives, but also includes in input an adjusted version of the AVHRR Pathfinder dataset version 5.3 to increase the input observation coverage. Due to Brexit, an interim production guarantees the temporal extension of the MED-REP-L4 product since 1st January 2023 to present.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00173\n\n**References:**\n\n* Merchant, C. J., Embury, O., Bulgin, C. E., Block, T., Corlett, G. K., Fiedler, E., ... & Eastwood, S. (2019). Satellite-based time-series of sea-surface temperature since 1981 for climate applications. Scientific data, 6(1), 1-18. Pisano, A., Buongiorno Nardelli, B., Tronconi, C. & Santoleri, R. (2016). The new Mediterranean optimally interpolated pathfinder AVHRR SST Dataset (1982\u20132012). Remote Sens. Environ. 176, 107\u2013116.\n* Saha, Korak; Zhao, Xuepeng; Zhang, Huai-min; Casey, Kenneth S.; Zhang, Dexin; Baker-Yeboah, Sheekela; Kilpatrick, Katherine A.; Evans, Robert H.; Ryan, Thomas; Relph, John M. (2018). AVHRR Pathfinder version 5.3 level 3 collated (L3C) global 4km sea surface temperature for 1981-Present. NOAA National Centers for Environmental Information. Dataset. https://doi.org/10.7289/v52j68xx\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00173"}, "SST_MED_SST_L4_NRT_OBSERVATIONS_010_004": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,level-4,marine-resources,marine-safety,mediterranean-sea,near-real-time,oceanographic-geographical-features,satellite-observation,sea-surface-temperature,sst-med-sst-l4-nrt-observations-010-004,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea High Resolution and Ultra High Resolution Sea Surface Temperature Analysis", "missionStartDate": "2008-01-01T00:00:00Z", "abstract": "For the Mediterranean Sea (MED), the CNR MED Sea Surface Temperature (SST) processing chain provides daily gap-free (L4) maps at high (HR 0.0625\u00b0) and ultra-high (UHR 0.01\u00b0) spatial resolution over the Mediterranean Sea. Remotely-sensed L4 SST datasets are operationally produced and distributed in near-real time by the Consiglio Nazionale delle Ricerche - Gruppo di Oceanografia da Satellite (CNR-GOS). These SST products are based on the nighttime images collected by the infrared sensors mounted on different satellite platforms, and cover the Southern European Seas. The main upstream data currently used include SLSTR-3A/3B, VIIRS-N20/NPP, Metop-B/C AVHRR and SEVIRI. The CNR-GOS processing chain includes several modules, from the data extraction and preliminary quality control, to cloudy pixel removal and satellite images collating/merging. A two-step algorithm finally allows to interpolate SST data at high (HR 0.0625\u00b0) and ultra-high (UHR 0.01\u00b0) spatial resolution, applying statistical techniques. These L4 data are also used to estimate the SST anomaly with respect to a pentad climatology. The basic design and the main algorithms used are described in the following papers.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00172\n\n**References:**\n\n* Buongiorno Nardelli B., C.Tronconi, A. Pisano, R.Santoleri, 2013: High and Ultra-High resolution processing of satellite Sea Surface Temperature data over Southern European Seas in the framework of MyOcean project, Rem. Sens. Env., 129, 1-16, doi:10.1016/j.rse.2012.10.012.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00172"}, "OMI_HEALTH_CHL_MEDSEA_OCEANCOLOUR_area_averaged_mean": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-in-seawater,mediterranean-sea,multi-year,oceanographic-geographical-features,omi-health-chl-medsea-oceancolour-area-averaged-mean,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea Chlorophyll-a time series and trend from Observations Reprocessing", "missionStartDate": "1997-06-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe time series are derived from the regional chlorophyll reprocessed (MY) product as distributed by CMEMS. This dataset, derived from multi-sensor (SeaStar-SeaWiFS, AQUA-MODIS, NOAA20-VIIRS, NPP-VIIRS, Envisat-MERIS and Sentinel3-OLCI) Rrs spectra produced by CNR using an in-house processing chain, is obtained by means of the Mediterranean Ocean Colour regional algorithms: an updated version of the MedOC4 (Case 1 (off-shore) waters, Volpe et al., 2019, with new coefficients) and AD4 (Case 2 (coastal) waters, Berthon and Zibordi, 2004). The processing chain and the techniques used for algorithms merging are detailed in Colella et al. (2023). Monthly regional mean values are calculated by performing the average of 2D monthly mean (weighted by pixel area) over the region of interest. The deseasonalized time series is obtained by applying the X-11 seasonal adjustment methodology on the original time series as described in Colella et al. (2016), and then the Mann-Kendall test (Mann, 1945; Kendall, 1975) and Sens\u2019s method (Sen, 1968) are subsequently applied to obtain the magnitude of trend.\n\n**CONTEXT**\n\nPhytoplankton and chlorophyll concentration as a proxy for phytoplankton respond rapidly to changes in environmental conditions, such as light, temperature, nutrients and mixing (Colella et al. 2016). The character of the response depends on the nature of the change drivers, and ranges from seasonal cycles to decadal oscillations (Basterretxea et al. 2018). Therefore, it is of critical importance to monitor chlorophyll concentration at multiple temporal and spatial scales, in order to be able to separate potential long-term climate signals from natural variability in the short term. In particular, phytoplankton in the Mediterranean Sea is known to respond to climate variability associated with the North Atlantic Oscillation (NAO) and El Ni\u00f1o Southern Oscillation (ENSO) (Basterretxea et al. 2018, Colella et al. 2016).\n\n**CMEMS KEY FINDINGS**\n\nIn the Mediterranean Sea, the trend average for the 1997-2022 period is slightly negative (-0.69\u00b10.69% per year) confirm the results obtained from previous release (1997-2021). This result is in contrast with the analysis of Sathyendranath et al. (2018) that reveals an increasing trend in chlorophyll concentration in all the European Seas. Starting from 2010-2011, except for 2018-2019, the decrease of chlorophyll concentrations is quite evident in the deseasonalized timeseries (in green), and in the maxima of the observations (grey line), starting from 2015. This attenuation of chlorophyll values of the last decade, results in an overall negative trend for the Mediterranean Sea.\n\n**Figure caption**\n\nMediterranean Sea time series and trend (1997-2022) of satellite chlorophyll, based on CMEMS product OCEANCOLOUR_MED_BGC_L4_MY_009_144. The monthly regional average (weighted by pixel area) time series is shown in grey, with the deseasonalized time series in green and the trend in blue.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00259\n\n**References:**\n\n* Basterretxea, G., Font-Mu\u00f1oz, J. S., Salgado-Hernanz, P. M., Arrieta, J., & Hern\u00e1ndez-Carrasco, I. (2018). Patterns of chlorophyll interannual variability in Mediterranean biogeographical regions. Remote Sensing of Environment, 215, 7-17.\n* Berthon, J.-F., Zibordi, G. (2004). Bio-optical relationships for the northern Adriatic Sea. Int. J. Remote Sens., 25, 1527-1532.\n* Colella, S., Falcini, F., Rinaldi, E., Sammartino, M., Santoleri, R., 2016. Mediterranean ocean colour chlorophyll trends. PLoS One 11, 1 16. https://doi.org/10.1371/journal.pone.0155756.\n* Colella, S., Brando, V.E., Cicco, A.D., D\u2019Alimonte, D., Forneris, V., Bracaglia, M., 2021. Quality Information Document. Copernicus Marine Service. OCEAN COLOUR PRODUCTION CENTRE, Ocean Colour Mediterranean and Black Sea Observation Product. (https://catalogue.marine.copernicus.eu/documents/QUID/CMEMS-OC-QUID-009-141to144-151to154.pdf).\n* Kendall MG. 1975. Multivariate analysis. London: Charles Griffin & Co; p. 210, 43.\n* Mann HB. 1945. Nonparametric tests against trend. Econometrica. 13:245 259. p. 42.\n* Sathyendranath, S., Pardo, S., Benincasa, M., Brando, V. E., Brewin, R. J.W., M\u00e9lin, F., Santoleri, R., 2018, 1.5. Essential Variables: Ocean Colour in Copernicus Marine Service Ocean State Report - Issue 2, Journal of Operational Oceanography, 11:sup1, 1-142, doi: 10.1080/1755876X.2018.1489208\n* Sen PK. 1968. Estimates of the regression coefficient based on Kendall\u2019s tau. J Am Statist Assoc. 63:1379 1389.\n* Volpe, G., Colella, S., Brando, V. E., Forneris, V., Padula, F. L., Cicco, A. D., ... & Santoleri, R. (2019). Mediterranean ocean colour Level 3 operational multi-sensor processing. Ocean Science, 15(1), 127-146.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00259"}, "MEDSEA_OMI_SEASTATE_extreme_var_swh_mean_and_anomaly": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,marine-resources,marine-safety,mediterranean-sea,medsea-omi-seastate-extreme-var-swh-mean-and-anomaly,multi-year,numerical-model,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea Significant Wave Height extreme from Reanalysis", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe CMEMS MEDSEA_OMI_seastate_extreme_var_swh_mean_and_anomaly OMI indicator is based on the computation of the annual 99th percentile of Significant Wave Height (SWH) from model data. Two different CMEMS products are used to compute the indicator: The Iberia-Biscay-Ireland Multi Year Product (MEDSEA_MULTIYEAR_WAV_006_012) and the Analysis product (MEDSEA_ANALYSIS_FORECAST_WAV_006_017).\nTwo parameters have been considered for this OMI:\n* Map of the 99th mean percentile: It is obtained from the Multy Year Product, the annual 99th percentile is computed for each year of the product. The percentiles are temporally averaged in the whole period (1993-2019).\n* Anomaly of the 99th percentile in 2020: The 99th percentile of the year 2020 is computed from the Analysis product. The anomaly is obtained by subtracting the mean percentile to the percentile in 2020.\nThis indicator is aimed at monitoring the extremes of annual significant wave height and evaluate the spatio-temporal variability. The use of percentiles instead of annual maxima, makes this extremes study less affected by individual data. This approach was first successfully applied to sea level variable (P\u00e9rez G\u00f3mez et al., 2016) and then extended to other essential variables, such as sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018 and \u00c1lvarez-Fanjul et al., 2019). Further details and in-depth scientific evaluation can be found in the CMEMS Ocean State report (\u00c1lvarez- Fanjul et al., 2019).\n\n**CONTEXT**\n\nThe sea state and its related spatio-temporal variability affect maritime activities and the physical connectivity between offshore waters and coastal ecosystems, impacting therefore on the biodiversity of marine protected areas (Gonz\u00e1lez-Marco et al., 2008; Savina et al., 2003; Hewitt, 2003). Over the last decades, significant attention has been devoted to extreme wave height events since their destructive effects in both the shoreline environment and human infrastructures have prompted a wide range of adaptation strategies to deal with natural hazards in coastal areas (Hansom et al., 2014). Complementarily, there is also an emerging question about the role of anthropogenic global climate change on present and future extreme wave conditions.\nThe Mediterranean Sea is an almost enclosed basin where the complexity of its orographic characteristics deeply influences the atmospheric circulation at local scale, giving rise to strong regional wind regimes (Drobinski et al. 2018). Therefore, since waves are primarily driven by winds, high waves are present over most of the Mediterranean Sea and tend to reach the highest values where strong wind and long fetch (i.e. the horizontal distance over which wave-generating winds blow) are simultaneously present (Lionello et al. 2006). Specifically, as seen in figure and in agreement with other studies (e.g. Sartini et al. 2017), the highest values (5 \u2013 6 m in figure, top) extend from the Gulf of Lion to the southwestern Sardinia through the Balearic Sea and are sustained southwards approaching the Algerian coast. They result from northerly winds dominant in the western Mediterranean Sea (Mistral or Tramontana), that become stronger due to orographic effects (Menendez et al. 2014), and act over a large area. In the Ionian Sea, the northerly Mistral wind is still the main cause of high waves (4-5 m in figure, top). In the Aegean and Levantine Seas, high waves (4-5 m in figure, top) are caused by the northerly Bora winds, prevalent in winter, and the northerly Etesian winds, prevalent in summer (Lionello et al. 2006; Chronis et al. 2011; Menendez et al. 2014). In general, northerly winds are responsible for most high waves in the Mediterranean (e.g. Chronis et al. 2011; Menendez et al. 2014). In agreement with figure (top), studies on the eastern Mediterranean and the Hellenic Seas have found that the typical wave height range in the Aegean Sea is similar to the one observed in the Ionian Sea despite the shorter fetches characterizing the former basin (Zacharioudaki et al. 2015). This is because of the numerous islands in the Aegean Sea which cause wind funneling and enhance the occurrence of extreme winds and thus of extreme waves (Kotroni et al. 2001). Special mention should be made of the high waves, sustained throughout the year, observed east and west of the island of Crete, i.e. around the exiting points of the northerly airflow in the Aegean Sea (Zacharioudaki et al. 2015). This airflow is characterized by consistently high magnitudes that are sustained during all seasons in contrast to other airflows in the Mediterranean Sea that exhibit a more pronounced seasonality (Chronis et al. 2011). \n\n**CMEMS KEY FINDINGS**\n\nIn 2020 (bottom panel), higher-than-average values of the 99th percentile of Significant Wave Height are seen over most of the northern Mediterranean Sea, in the eastern Alboran Sea, and along stretches of the African coast (Tunisia, Libya and Egypt). In many cases they exceed the climatic standard deviation. Regions where the climatic standard deviation is exceeded twice are the European and African coast of the eastern Alboran Sea, a considerable part of the eastern Spanish coast, the Ligurian Sea and part of the east coast of France as well as areas of the southern Adriatic. These anomalies correspond to the maximum positive anomalies computed in the Mediterranean Sea for year 2020 with values that reach up to 1.1 m. Spatially constrained maxima are also found at other coastal stretches (e.g. Algeri, southeast Sardinia). Part of the positive anomalies found along the French and Spanish coast, including the coast of the Balearic Islands, can be associated with the wind storm \u201cGloria\u201d (19/1 \u2013 24/1) during which exceptional eastern winds originated in the Ligurian Sea and propagated westwards. The storm, which was of a particularly high intensity and long duration, caused record breaking wave heights in the region, and, in return, great damage to the coast (Amores et al., 2020; de Alfonso et al., 2021). Other storms that could have contributed to the positive anomalies observed in the western Mediterranean Sea include: storm Karine (25/2 \u2013 5/4), which caused high waves from the eastern coast of Spain to the Balearic Islands (Copernicus, Climate Change Service, 2020); storm Bernardo (7/11 \u2013 18/11) which also affected the Balearic islands and the Algerian coast and; storm Herv\u00e9 (2/2 \u2013 8/2) during which the highest wind gust was recorded at north Corsica (Wikiwand, 2021). In the eastern Mediterranean Sea, the medicane Ianos (14/9 \u2013 21/9) may have contributed to the positive anomalies shown in the central Ionian Sea since this area coincides with the area of peak wave height values during the medicane (Copernicus, 2020a and Copernicus, 2020b). Otherwise, higher-than-average values in the figure are the result of severe, yet not unusual, wind events, which occurred during the year. Negative anomalies occur over most of the southern Mediterranean Sea, east of the Alboran Sea. The maximum negative anomalies reach about -1 m and are located in the southeastern Ionian Sea and west of the south part of mainland Greece as well as in coastal locations of the north and east Aegean They appear to be quite unusual since they are greater than two times the climatic standard deviation in the region. They could imply less severe southerly wind activity during 2020 (Drobinski et al., 2018). \n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00262\n\n**References:**\n\n* \u00c1lvarez Fanjul E, Pascual Collar A, P\u00e9rez G\u00f3mez B, De Alfonso M, Garc\u00eda Sotillo M, Staneva J, Clementi E, Grandi A, Zacharioudaki A, Korres G, Ravdas M, Renshaw R, Tinker J, Raudsepp U, Lagemaa P, Maljutenko I, Geyer G, M\u00fcller M, \u00c7a\u011flar Yumruktepe V. Sea level, sea surface temperature and SWH extreme percentiles: combined analysis from model results and in situ observations, Section 2.7, p:31. In: Schuckmann K, Le Traon P-Y, Smith N, Pascual A, Djavidnia S, Gattuso J-P, Gr\u00e9goire M, Nolan G, et al. 2019. Copernicus Marine Service Ocean State Report, Issue 3, Journal of Operational Oceanography, 12:sup1, S1-S123, DOI: 10.1080/1755876X.2019.1633075\n* Amores, A., Marcos, M., Carri\u00f3, Di.S., Gomez-Pujol, L., 2020. Coastal impacts of Storm Gloria (January 2020) over the north-western Mediterranean. Nat. Hazards Earth Syst. Sci. 20, 1955\u20131968. doi:10.5194/nhess-20-1955-2020\n* Chronis T, Papadopoulos V, Nikolopoulos EI. 2011. QuickSCAT observations of extreme wind events over the Mediterranean and Black Seas during 2000-2008. Int J Climatol. 31: 2068\u20132077.\n* Copernicus: Climate Change Service. 2020a (Last accessed July 2021): URL: https://surfobs.climate.copernicus.eu/stateoftheclimate/march2020.php\n* Copernicus, Copernicus Marine Service. 2020b (Last accessed July 2021): URL: https://marine.copernicus.eu/news/following-cyclone-ianos-across-mediterranean-sea\n* de Alfonso, M., Lin-Ye, J., Garc\u00eda-Valdecasas, J.M., P\u00e9rez-Rubio, S., Luna, M.Y., Santos-Mu\u00f1oz, D., Ruiz, M.I., P\u00e9rez-G\u00f3mez, B., \u00c1lvarez-Fanjul, E., 2021. Storm Gloria: Sea State Evolution Based on in situ Measurements and Modeled Data and Its Impact on Extreme Values. Front. Mar. Sci. 8, 1\u201317. doi:10.3389/fmars.2021.646873\n* Drobinski P, Alpert P, Cavicchia L, Flaoumas E, Hochman A, Kotroni V. 2018. Strong winds Observed trends, future projections, Sub-chapter 1.3.2, p. 115-122. In: Moatti JP, Thi\u00e9bault S (dir.). The Mediterranean region under climate change: A scientific update. Marseille: IRD \u00c9ditions.\n* Gonz\u00e1lez-Marco D, Sierra J P, Ybarra O F, S\u00e1nchez-Arcilla A. 2008. Implications of long waves in harbor management: The Gij\u00f3n port case study. Ocean & Coastal Management, 51, 180-201. doi:10.1016/j.ocecoaman.2007.04.001.\n* Hanson et al., 2014. Extreme Waves: Causes, Characteristics and Impact on Coastal Environments and Society January 2014 In book: Coastal and Marine Hazards, Risks, and Disasters Edition: Hazards and Disasters Series, Elsevier Major Reference Works Chapter: Chapter 11: Extreme Waves: Causes, Characteristics and Impact on Coastal Environments and Society. Publisher: Elsevier Editors: Ellis, J and Sherman, D. J.\n* Hewit J E, Cummings V J, Elis J I, Funnell G, Norkko A, Talley T S, Thrush S.F. 2003. The role of waves in the colonisation of terrestrial sediments deposited in the marine environment. Journal of Experimental marine Biology and Ecology, 290, 19-47, doi:10.1016/S0022-0981(03)00051-0.\n* Kotroni V, Lagouvardos K, Lalas D. 2001. The effect of the island of Crete on the Etesian winds over the Aegean Sea. Q J R Meteorol Soc. 127: 1917\u20131937. doi:10.1002/qj.49712757604\n* Lionello P, Rizzoli PM, Boscolo R. 2006. Mediterranean climate variability, developments in earth and environmental sciences. Elsevier.\n* Menendez M, Garc\u00eda-D\u00edez M, Fita L, Fern\u00e1ndez J, M\u00e9ndez FJ, Guti\u00e9rrez JM. 2014. High-resolution sea wind hindcasts over the Mediterranean area. Clim Dyn. 42:1857\u20131872.\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B., De Alfonso M., Zacharioudaki A., P\u00e9rez Gonz\u00e1lez I., \u00c1lvarez Fanjul E., M\u00fcller M., Marcos M., Manzano F., Korres G., Ravdas M., Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208\n* Sartini L, Besio G, Cassola F. 2017. Spatio-temporal modelling of extreme wave heights in the Mediterranean Sea. Ocean Modelling, 117, 52-69.\n* Savina H, Lefevre J-M, Josse P, Dandin P. 2003. Definition of warning criteria. Proceedings of MAXWAVE Final Meeting, October 8-11, Geneva, Switzerland.\n* Wikiwand: 2019 - 20 European windstorm season. URL: https://www.wikiwand.com/en/2019%E2%80%9320_European_windstorm_season\n* Zacharioudaki A, Korres G, Perivoliotis L, 2015. Wave climate of the Hellenic Seas obtained from a wave hindcast for the period 1960\u20132001. Ocean Dynamics. 65: 795\u2013816. https://doi.org/10.1007/s10236-015-0840-z\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00262"}, "ARCTIC_OMI_SI_extent_obs": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "arctic-ocean,arctic-omi-si-extent-obs,coastal-marine-environment,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-ice-extent,target-application#seaiceinformation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Monthly Mean Sea Ice Extent from Observations Reprocessing", "missionStartDate": "1978-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nSea Ice Extent (SIE) is defined as the area covered by sufficient sea ice, that is the area of ocean having more than 15% Sea Ice Concentration (SIC). SIC is the fractional area of ocean that is covered with sea ice. It is computed from Passive Microwave satellite observations since 1979. \nSIE is often reported with units of 106 km2 (millions square kilometers). The change in sea ice extent (trend) is expressed in millions of km squared per decade (106 km2/decade). In addition, trends are expressed relative to the 1979-2022 period in % per decade.\nThese trends are calculated (i) from the annual mean values; (ii) from the March values (winter ice loss); (iii) from September values (summer ice loss). The annual mean trend is reported on the key figure, the March and September values are reported in the text below.\nSIE includes all sea ice, but not lake or river ice.\nSee also section 1.7 in Samuelsen et al. (2016) for an introduction to this Ocean Monitoring Indicator (OMI).\n\n**CONTEXT**\n\nSea ice is frozen seawater that floats at the ocean surface. This large blanket of millions of square kilometers insulates the relatively warm ocean waters from the cold polar atmosphere. The seasonal cycle of sea ice, forming and melting with the polar seasons, impacts both human activities and biological habitat. Knowing how and by how much the sea ice cover is changing is essential for monitoring the health of the Earth. Sea ice has a significant impact on ecosystems and Arctic communities, as well as economic activities such as fisheries, tourism, and transport (Meredith et al. 2019).\n\n**CMEMS KEY FINDINGS**\n\nSince 1979, the Northern Hemisphere sea ice extent has decreased at an annual rate of -0.51 +/- 0.03106 km2 per decade (-4.41% per decade). Loss of sea ice extent during summer exceeds the loss observed during winter periods: Summer (September) sea ice extent loss amounts to -0.81 +/- 0.06 106 km2 per decade (-12.73% per decade). Winter (March) sea ice extent loss amounts to -0.39 +/- 0.03 106 km2 per decade (-2.55% per decade). These values are in agreement with those assessed in the IPCC Special Report on the Ocean and Cryosphere in a Changing Climate (SROCC) (Meredith et al. 2019, with estimates up until year 2018). September 2022 had the 11th lowest mean September sea ice extent. Sea ice extent in September 2012 is to date the record minimum Northern Hemisphere sea ice extent value since the beginning of the satellite record, followed by September values in 2020.\n\n**Figure caption**\n\na) The seasonal cycle of Northern Hemisphere sea ice extent expressed in millions of km2 averaged over the period 1979-2022 (red), shown together with the seasonal cycle in the year 2022 (green), and b) time series of yearly average Northern Hemisphere sea ice extent expressed in millions of km2. Time series are based on satellite observations (SMMR, SSM/I, SSMIS) by EUMETSAT OSI SAF Sea Ice Index (v2.2) with R&D input from ESA CCI. Details on the product are given in the corresponding PUM for this OMI. The change of sea ice extent over the period 1979-2022 is expressed as a trend in millions of square kilometers per decade and is plotted with a dashed line in panel b).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00191\n\n**References:**\n\n* Samuelsen, A., L.-A. Breivik, R.P. Raj, G. Garric, L. Axell, E. Olason (2016): Sea Ice. In: The Copernicus Marine Service Ocean State Report, issue 1, Journal of Operational Oceanography, 9:sup2, s235-s320, DOI: 10.1080/1755876X.2016.1273446\n* Meredith, M., M. Sommerkorn, S. Cassotta, C. Derksen, A. Ekaykin, A. Hollowed, G. Kofinas, A. Mackintosh, J. Melbourne-Thomas, M.M.C. Muelbert, G. Ottersen, H. Pritchard, and E.A.G. Schuur, 2019: Polar Regions. In: IPCC Special Report on the Ocean and Cryosphere in a Changing Climate [H.-O. Po\u0308rtner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegri\u0301a, M. Nicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. In press.\n", "providers": [{"name": "MET Norway", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00191"}, "SST_ATL_SST_L4_REP_OBSERVATIONS_010_026": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,level-4,marine-resources,marine-safety,multi-year,north-west-shelf-seas,oceanographic-geographical-features,satellite-observation,sea-surface-temperature,sst-atl-sst-l4-rep-observations-010-026,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "European North West Shelf/Iberia Biscay Irish Seas - High Resolution L4 Sea Surface Temperature Reprocessed", "missionStartDate": "1982-01-01T00:00:00Z", "abstract": "For the European North West Shelf Ocean Iberia Biscay Irish Seas. The IFREMER Sea Surface Temperature reprocessed analysis aims at providing daily gap-free maps of sea surface temperature, referred as L4 product, at 0.05deg. x 0.05deg. horizontal resolution, over the 1982-present period, using satellite data from the European Space Agency Sea Surface Temperature Climate Change Initiative (ESA SST CCI) L3 products (1982-2016) and from the Copernicus Climate Change Service (C3S) L3 product (2017-present). The gridded SST product is intended to represent a daily-mean SST field at 20 cm depth.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00153", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00153"}, "OCEANCOLOUR_BAL_BGC_L4_NRT_009_132": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,near-real-time,oceancolour-bal-bgc-l4-nrt-009-132,oceanographic-geographical-features,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Surface Ocean Colour Plankton from Sentinel-3 OLCI L4 monthly observations", "missionStartDate": "2022-01-01T00:00:00Z", "abstract": "For the **Baltic Sea** Ocean **Satellite Observations**, the Italian National Research Council (CNR \u2013 Rome, Italy), is providing **Bio-Geo_Chemical (BGC)** regional datasets:\n* **_plankton**_ with the phytoplankton chlorophyll concentration (CHL) evaluated via region-specific neural network (Brando et al. 2021)\n\n**Upstreams**: OLCI-S3A & S3B \n\n**Temporal resolution**: monthly \n\n**Spatial resolution**: 300 meters \n\nTo find this product in the catalogue, use the search keyword **\"\"OCEANCOLOUR_BAL_BGC_L4_NRT\"\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00295\n\n**References:**\n\n* Brando, V. E., Sammartino, M., Colella, S., Bracaglia, M., Di Cicco, A., D\u2019Alimonte, D., ... & Attila, J. (2021). Phytoplankton bloom dynamics in the Baltic Sea using a consistently reprocessed time series of multi-sensor reflectance and novel chlorophyll-a retrievals. Remote Sensing, 13(16), 3071\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00295"}, "IBI_OMI_SEASTATE_extreme_var_swh_mean_and_anomaly": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,ibi-omi-seastate-extreme-var-swh-mean-and-anomaly,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Iberia Biscay Ireland Significant Wave Height extreme from Reanalysis", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe CMEMS IBI_OMI_seastate_extreme_var_swh_mean_and_anomaly OMI indicator is based on the computation of the annual 99th percentile of Significant Wave Height (SWH) from model data. Two different CMEMS products are used to compute the indicator: The Iberia-Biscay-Ireland Multi Year Product (IBI_MULTIYEAR_WAV_005_006) and the Analysis product (IBI_ANALYSIS_FORECAST_WAV_005_005).\nTwo parameters have been considered for this OMI:\n\u2022\tMap of the 99th mean percentile: It is obtained from the Multi-Year Product, the annual 99th percentile is computed for each year of the product. The percentiles are temporally averaged in the whole period (1993-2021).\n\u2022\tAnomaly of the 99th percentile in 2022: The 99th percentile of the year 2022 is computed from the Analysis product. The anomaly is obtained by subtracting the mean percentile to the percentile in 2022.\nThis indicator is aimed at monitoring the extremes of annual significant wave height and evaluate the spatio-temporal variability. The use of percentiles instead of annual maxima, makes this extremes study less affected by individual data. This approach was first successfully applied to sea level variable (P\u00e9rez G\u00f3mez et al., 2016) and then extended to other essential variables, such as sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018 and \u00c1lvarez-Fanjul et al., 2019). Further details and in-depth scientific evaluation can be found in the CMEMS Ocean State report (\u00c1lvarez- Fanjul et al., 2019).\n\n**CONTEXT**\n\nThe sea state and its related spatio-temporal variability affect dramatically maritime activities and the physical connectivity between offshore waters and coastal ecosystems, impacting therefore on the biodiversity of marine protected areas (Gonz\u00e1lez-Marco et al., 2008; Savina et al., 2003; Hewitt, 2003). Over the last decades, significant attention has been devoted to extreme wave height events since their destructive effects in both the shoreline environment and human infrastructures have prompted a wide range of adaptation strategies to deal with natural hazards in coastal areas (Hansom et al., 2019). Complementarily, there is also an emerging question about the role of anthropogenic global climate change on present and future extreme wave conditions.\nThe Iberia-Biscay-Ireland region, which covers the North-East Atlantic Ocean from Canary Islands to Ireland, is characterized by two different sea state wave climate regions: whereas the northern half, impacted by the North Atlantic subpolar front, is of one of the world\u2019s greatest wave generating regions (M\u00f8rk et al., 2010; Folley, 2017), the southern half, located at subtropical latitudes, is by contrast influenced by persistent trade winds and thus by constant and moderate wave regimes.\nThe North Atlantic Oscillation (NAO), which refers to changes in the atmospheric sea level pressure difference between the Azores and Iceland, is a significant driver of wave climate variability in the Northern Hemisphere. The influence of North Atlantic Oscillation on waves along the Atlantic coast of Europe is particularly strong in and has a major impact on northern latitudes wintertime (Mart\u00ednez-Asensio et al. 2016; Bacon and Carter, 1991; Bouws et al., 1996; Bauer, 2001; Wolf et al., 2002; Gleeson et al., 2017). Swings in the North Atlantic Oscillation index produce changes in the storms track and subsequently in the wind speed and direction over the Atlantic that alter the wave regime. When North Atlantic Oscillation index is in its positive phase, storms usually track northeast of Europe and enhanced westerly winds induce higher than average waves in the northernmost Atlantic Ocean. Conversely, in the negative North Atlantic Oscillation phase, the track of the storms is more zonal and south than usual, with trade winds (mid latitude westerlies) being slower and producing higher than average waves in southern latitudes (Marshall et al., 2001; Wolf et al., 2002; Wolf and Woolf, 2006). \nAdditionally a variety of previous studies have uniquevocally determined the relationship between the sea state variability in the IBI region and other atmospheric climate modes such as the East Atlantic pattern, the Arctic Oscillation, the East Atlantic Western Russian pattern and the Scandinavian pattern (Izaguirre et al., 2011, Mart\u00ednez-Asensio et al., 2016). \nIn this context, long\u2010term statistical analysis of reanalyzed model data is mandatory not only to disentangle other driving agents of wave climate but also to attempt inferring any potential trend in the number and/or intensity of extreme wave events in coastal areas with subsequent socio-economic and environmental consequences.\n\n**CMEMS KEY FINDINGS**\n\nThe climatic mean of 99th percentile (1993-2021) reveals a north-south gradient of Significant Wave Height with the highest values in northern latitudes (above 8m) and lowest values (2-3 m) detected southeastward of Canary Islands, in the seas between Canary Islands and the African Continental Shelf. This north-south pattern is the result of the two climatic conditions prevailing in the region and previously described. \nThe 99th percentile anomalies in 2022 display a north-south dipole, with positive anomalies primarily located north of the 47\u2070N parallel. While the region of negative anomalies shows only insignificant values, the positive anomalies above 50\u2070N exhibit wide regions where their values exceed the standard deviation.\nAdditionally, the impact of significant wave extremes is detected along the Mediterranean coast of the Iberian Peninsula. These maxima surpass two times the standard deviation values on the shores of the Albor\u00e1n Sea.\nConsequently, it is concluded that the maximum wave values in the IBI seas in 2022 were mainly distributed around the mean. H owever, the incidence of positive anomalies is observed in the northern third of the domain, with highly pronounced positive anomalies along the Spanish Mediterranean coast.\n\n**Figure caption**\n\nIberia-Biscay-Ireland Significant Wave Height extreme variability: Map of the 99th mean percentile computed from the Multi Year Product (left panel) and anomaly of the 99th percentile in 2022 computed from the Analysis product (right panel). Transparent grey areas (if any) represent regions where anomaly exceeds the climatic standard deviation (light grey) and twice the climatic standard deviation (dark grey).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00249\n\n**References:**\n\n* \u00c1lvarez Fanjul E, Pascual Collar A, P\u00e9rez G\u00f3mez B, De Alfonso M, Garc\u00eda Sotillo M, Staneva J, Clementi E, Grandi A, Zacharioudaki A, Korres G, Ravdas M, Renshaw R, Tinker J, Raudsepp U, Lagemaa P, Maljutenko I, Geyer G, M\u00fcller M, \u00c7a\u011flar Yumruktepe V. Sea level, sea surface temperature and SWH extreme percentiles: combined analysis from model results and in situ observations, Section 2.7, p:31. In: Schuckmann K, Le Traon P-Y, Smith N, Pascual A, Djavidnia S, Gattuso J-P, Gr\u00e9goire M, Nolan G, et al. 2019. Copernicus Marine Service Ocean State Report, Issue 3, Journal of Operational Oceanography, 12:sup1, S1-S123, DOI: 10.1080/1755876X.2019.1633075\n* Bacon S, Carter D J T. 1991. Wave climate changes in the north Atlantic and North Sea, International Journal of Climatology, 11, 545\u2013558.\n* Bauer E. 2001. Interannual changes of the ocean wave variability in the North Atlantic and in the North Sea, Climate Research, 18, 63\u201369.\n* Bouws E, Jannink D, Komen GJ. 1996. The increasing wave height in the North Atlantic Ocean, Bull. Am. Met. Soc., 77, 2275\u20132277.\n* Folley M. 2017. The wave energy resource. In Pecher A, Kofoed JP (ed.), Handbook of Ocean Wave Energy, Ocean Engineering & Oceanography 7, doi:10.1007/978-3-319-39889-1_3.\n* Gleeson E, Gallagher S, Clancy C, Dias F. 2017. NAO and extreme ocean states in the Northeast Atlantic Ocean, Adv. Sci. Res., 14, 23\u201333, doi:10.5194/asr-14-23-2017.\n* Gonz\u00e1lez-Marco D, Sierra J P, Ybarra O F, S\u00e1nchez-Arcilla A. 2008. Implications of long waves in harbor management: The Gij\u00f3n port case study. Ocean & Coastal Management, 51, 180-201. doi:10.1016/j.ocecoaman.2007.04.001.\n* Hanson et al., 2015. Extreme Waves: Causes, Characteristics and Impact on Coastal Environments and Society January 2015 In book: .Coastal and Marine Hazards, Risks, and Disasters Edition: Hazards and Disasters Series, Elsevier Major Reference Works Chapter: Chapter 11: Extreme Waves: Causes, Characteristics and Impact on Coastal Environments and Society. Publisher: Elsevier Editors: Ellis, J and Sherman, D. J.\n* Hewit J E, Cummings V J, Elis J I, Funnell G, Norkko A, Talley T S, Thrush S.F. 2003. The role of waves in the colonisation of terrestrial sediments deposited in the marine environment. Journal of Experimental marine Biology and Ecology, 290, 19-47, doi:10.1016/S0022-0981(03)00051-0.\n* Izaguirre C, M\u00e9ndez F J, Men\u00e9ndez M, Losada I J. 2011. Global extreme wave height variability based on satellite data Cristina. Geoph. Res. Letters, Vol. 38, L10607, doi: 10.1029/2011GL047302.\n* Mart\u00ednez-Asensio A, Tsimplis M N, Marcos M, Feng F, Gomis D, Jord\u00e0a G, Josey S A. 2016. Response of the North Atlantic wave climate to atmospheric modes of variability. International Journal of Climatology, 36, 1210\u20131225, doi: 10.1002/joc.4415.\n* M\u00f8rk G, Barstow S, Kabush A, Pontes MT. 2010. Assessing the global wave energy potential. Proceedings of OMAE2010 29th International Conference on Ocean, Offshore Mechanics and Arctic Engineering June 6-11, 2010, Shanghai, China.\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B., De Alfonso M., Zacharioudaki A., P\u00e9rez Gonz\u00e1lez I., \u00c1lvarez Fanjul E., M\u00fcller M., Marcos M., Manzano F., Korres G., Ravdas M., Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208\n* Savina H, Lefevre J-M, Josse P, Dandin P. 2003. Definition of warning criteria. Proceedings of MAXWAVE Final Meeting, October 8-11, Geneva, Switzerland.\n* Woolf D K, Challenor P G, Cotton P D. 2002. Variability and predictability of the North Atlantic wave climate, J. Geophys. Res., 107(C10), 3145, doi:10.1029/2001JC001124.\n* Wolf J, Woolf D K. 2006. Waves and climate change in the north-east Atlantic. Geophysical Research Letters, Vol. 33, L06604, doi: 10.1029/2005GL025113.\n* Young I R, Ribal A. 2019. Multiplatform evaluation of global trends in wind speed and wave height. Science, 364, 548-552, doi: 10.1126/science.aav9527.\n* Kushnir Y, Cardone VJ, Greenwood JG, Cane MA. 1997. The recent increase in North Atlantic wave heights. Journal of Climate 10:2107\u20132113.\n* Marshall, J., Kushnir, Y., Battisti, D., Chang, P., Czaja, A., Dickson, R., ... & Visbeck, M. (2001). North Atlantic climate variability: phenomena, impacts and mechanisms. International Journal of Climatology: A Journal of the Royal Meteorological Society, 21(15), 1863-1898.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00249"}, "OCEANCOLOUR_GLO_BGC_L3_NRT_009_101": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,global-ocean,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-diatoms-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-dinophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-greenalgae-and-prochlorophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-haptophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-microphytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-nanophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prochlorococcus-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prokaryotes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-suspended-particulate-matter-in-sea-water,near-real-time,oceancolour-glo-bgc-l3-nrt-009-101,oceanographic-geographical-features,satellite-observation,secchi-depth-of-sea-water,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-absorption-coefficient-of-radiative-flux-in-sea-water-due-to-dissolved-organic-matter-and-non-algal-particles,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Colour (Copernicus-GlobColour), Bio-Geo-Chemical, L3 (daily) from Satellite Observations (Near Real Time)", "missionStartDate": "2023-04-25T00:00:00Z", "abstract": "For the **Global** Ocean **Satellite Observations**, ACRI-ST company (Sophia Antipolis, France) is providing **Bio-Geo-Chemical (BGC)** products based on the **Copernicus-GlobColour** processor.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **\"multi\"** products, and S3A & S3B only for the **\"olci\"** products.\n* Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional types and sizes (**PFT**), Suspended Matter (**SPM**), Secchi Transparency Depth (**ZSD**), Diffuse Attenuation (**KD490**), Particulate Backscattering (**BBP**), Absorption Coef. (**CDM**) and Reflectance (**RRS**).\n\n* Temporal resolutions: **daily**\n* Spatial resolutions: **4 km** and a finer resolution based on olci **300 meters** inputs.\n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\nTo find the **Copernicus-GlobColour** products in the catalogue, use the search keyword **\"GlobColour\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00278", "providers": [{"name": "ACRI (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00278"}, "SST_BAL_SST_L3S_NRT_OBSERVATIONS_010_032": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "baltic-sea,coastal-marine-environment,level-3,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-surface-temperature,sst-bal-sst-l3s-nrt-observations-010-032,target-application#seaiceforecastingapplication,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "North Sea/Baltic Sea - Sea Surface Temperature Analysis L3S", "missionStartDate": "2019-03-11T00:00:00Z", "abstract": "For the Baltic Sea- The DMI Sea Surface Temperature L3S aims at providing daily multi-sensor supercollated data at 0.03deg. x 0.03deg. horizontal resolution, using satellite data from infra-red radiometers. Uses SST satellite products from these sensors: NOAA AVHRRs 7, 9, 11, 14, 16, 17, 18 , Envisat ATSR1, ATSR2 and AATSR.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00154\n\n**References:**\n\n* H\u00f8yer, J. L., Le Borgne, P. and Eastwood, S. 2014. A bias correction method for Arctic satellite sea surface temperature observations, Remote Sensing of Environment, https://doi.org/10.1016/j.rse.2013.04.020.\n* H\u00f8yer, J. L. and She, J., Optimal interpolation of sea surface temperature for the North Sea and Baltic Sea, J. Mar. Sys., Vol 65, 1-4, pp., 2007.H\u00f8yer, J. L. and She, J., Optimal interpolation of sea surface temperature for the North Sea and Baltic Sea, J. Mar. Sys., Vol 65, 1-4, pp., 2007.\n", "providers": [{"name": "DMI (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00154"}, "SST_BAL_SST_L4_REP_OBSERVATIONS_010_016": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-ice-area-fraction,sea-surface-temperature,sst-bal-sst-l4-rep-observations-010-016,target-application#seaiceclimate,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea- Sea Surface Temperature Reprocessed", "missionStartDate": "1982-01-01T00:00:00Z", "abstract": "For the Baltic Sea- The DMI Sea Surface Temperature reprocessed analysis aims at providing daily gap-free maps of sea surface temperature, referred as L4 product, at 0.02deg. x 0.02deg. horizontal resolution, using satellite data from infra-red radiometers. The product uses SST satellite products from the ESA CCI and Copernicus C3S projects, including the sensors: NOAA AVHRRs 7, 9, 11, 12, 14, 15, 16, 17, 18 , 19, Metop, ATSR1, ATSR2, AATSR and SLSTR.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00156\n\n**References:**\n\n* H\u00f8yer, J. L., & Karagali, I. (2016). Sea surface temperature climate data record for the North Sea and Baltic Sea. Journal of Climate, 29(7), 2529-2541.\n* H\u00f8yer, J. L. and She, J., Optimal interpolation of sea surface temperature for the North Sea and Baltic Sea, J. Mar. Sys., Vol 65, 1-4, pp., 2007.H\u00f8yer, J. L. and She, J., Optimal interpolation of sea surface temperature for the North Sea and Baltic Sea, J. Mar. Sys., Vol 65, 1-4, pp., 2007.\n", "providers": [{"name": "DMI (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00156"}, "SST_BS_SST_L3S_NRT_OBSERVATIONS_010_013": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "black-sea,coastal-marine-environment,level-3,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-surface-foundation-temperature,sea-surface-temperature,sst-bs-sst-l3s-nrt-observations-010-013,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea - High Resolution and Ultra High Resolution L3S Sea Surface Temperature", "missionStartDate": "2008-01-01T00:00:00Z", "abstract": "For the Black Sea (BS), the CNR BS Sea Surface Temperature (SST) processing chain provides supercollated (merged multisensor, L3S) SST data remapped over the Black Sea at high (1/16\u00b0) and Ultra High (0.01\u00b0) spatial resolution, representative of nighttime SST values (00:00 UTC). The L3S SST data are produced selecting only the highest quality input data from input L2P images within a strict temporal window (local nightime), to avoid diurnal cycle and cloud contamination. The main L2P data currently used include SLSTR-3A/3B, VIIRS-N20/NPP, Metop-B/C AVHRR and SEVIRI. Consequently, the L3S processing is run daily, but L3S files are produced only if valid SST measurements are present on the area considered. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00158\n\n**References:**\n\n* Buongiorno Nardelli B., C.Tronconi, A. Pisano, R.Santoleri, 2013: High and Ultra-High resolution processing of satellite Sea Surface Temperature data over Southern European Seas in the framework of MyOcean project, Rem. Sens. Env., 129, 1-16, doi:10.1016/j.rse.2012.10.012.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00158"}, "SST_ATL_PHY_L3S_NRT_010_037": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,level-3,marine-resources,marine-safety,near-real-time,north-west-shelf-seas,oceanographic-geographical-features,satellite-observation,sea-surface-foundation-temperature,sea-surface-temperature,sst-atl-phy-l3s-nrt-010-037,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "European North West Shelf/Iberia Biscay Irish Seas \u2013 High Resolution ODYSSEA Sea Surface Temperature Multi-sensor L3 Observations", "missionStartDate": "2020-12-31T00:00:00Z", "abstract": "For the NWS/IBI Ocean- Sea Surface Temperature L3 Observations . This product provides daily foundation sea surface temperature from multiple satellite sources. The data are intercalibrated. This product consists in a fusion of sea surface temperature observations from multiple satellite sensors, daily, over a 0.02\u00b0 resolution grid. It includes observations by polar orbiting and geostationary satellites . The L3S SST data are produced selecting only the highest quality input data from input L2P/L3P images within a strict temporal window (local nightime), to avoid diurnal cycle and cloud contamination. The observations of each sensor are intercalibrated prior to merging using a bias correction based on a multi-sensor median reference correcting the large-scale cross-sensor biases. 3 more datasets are available that only contain \"per sensor type\" data: Polar InfraRed (PIR), Polar MicroWave (PMW), Geostationary InfraRed (GIR)\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00310", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00310"}, "OCEANCOLOUR_ARC_BGC_L3_NRT_009_121": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "arctic-ocean,coastal-marine-environment,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,near-real-time,oceancolour-arc-bgc-l3-nrt-009-121,oceanographic-geographical-features,satellite-observation,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean Colour Plankton, Reflectance, Transparency and Optics L3 NRT daily observations", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "For the **Arctic** Ocean **Satellite Observations**, Italian National Research Council (CNR \u2013 Rome, Italy) is providing **Bio-Geo_Chemical (BGC)** products.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP, OLCI-S3A & OLCI-S3B for the **\"\"multi\"\"** products, and S3A & S3B only for the **\"\"olci\"\"** products.\n* Variables: Chlorophyll-a (**CHL**), Suspended Matter (**SPM**), Diffuse Attenuation (**KD490**), Detrital and Dissolved Material Absorption Coef. (**ADG443_), Phytoplankton Absorption Coef. (**APH443_), Total Absorption Coef. (**ATOT443_) and Reflectance (**RRS_').\n\n* Temporal resolutions: **daily**, **monthly**.\n* Spatial resolutions: **1 km** (multi) or **300 meters** (olci).\n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00290", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00290"}, "INSITU_GLO_PHY_SSH_DISCRETE_MY_013_053": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 2", "keywords": "coastal-marine-environment,global-ocean,in-situ-observation,insitu-glo-phy-ssh-discrete-my-013-053,level-2,marine-resources,marine-safety,near-real-time,non-tidal-elevation-of-sea-surface-height,oceanographic-geographical-features,tidal-sea-surface-height-above-reference-datum,water-surface-height-above-reference-datum,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean - Delayed Mode Sea level product", "missionStartDate": "1821-05-25T05:00:00Z", "abstract": "This product integrates sea level observations aggregated and validated from the Regional EuroGOOS consortium (Arctic-ROOS, BOOS, NOOS, IBI-ROOS, MONGOOS) and Black Sea GOOS as well as from the Global telecommunication system (GTS) used by the Met Offices.\n\n**DOI (product):** \nhttps://doi.org/10.17882/93670", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.17882/93670"}, "SST_GLO_SST_L3S_NRT_OBSERVATIONS_010_010": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,global-ocean,level-3,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-surface-foundation-temperature,sea-surface-temperature,sst-glo-sst-l3s-nrt-observations-010-010,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "ODYSSEA Global Ocean - Sea Surface Temperature Multi-sensor L3 Observations", "missionStartDate": "2020-12-31T00:00:00Z", "abstract": "For the Global Ocean- Sea Surface Temperature L3 Observations . This product provides daily foundation sea surface temperature from multiple satellite sources. The data are intercalibrated. This product consists in a fusion of sea surface temperature observations from multiple satellite sensors, daily, over a 0.1\u00b0 resolution global grid. It includes observations by polar orbiting (NOAA-18 & NOAAA-19/AVHRR, METOP-A/AVHRR, ENVISAT/AATSR, AQUA/AMSRE, TRMM/TMI) and geostationary (MSG/SEVIRI, GOES-11) satellites . The observations of each sensor are intercalibrated prior to merging using a bias correction based on a multi-sensor median reference correcting the large-scale cross-sensor biases.3 more datasets are available that only contain \"per sensor type\" data: Polar InfraRed (PIR), Polar MicroWave (PMW), Geostationary InfraRed (GIR)\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00164", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00164"}, "SST_MED_PHY_L3S_MY_010_042": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "adjusted-sea-surface-temperature,coastal-marine-environment,level-3,marine-resources,marine-safety,mediterranean-sea,multi-year,oceanographic-geographical-features,satellite-observation,sst-med-phy-l3s-my-010-042,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea - High Resolution L3S Sea Surface Temperature Reprocessed", "missionStartDate": "1981-08-25T00:00:00Z", "abstract": "The Reprocessed (REP) Mediterranean Sea (MED) dataset provides a stable and consistent long-term Sea Surface Temperature (SST) time series over the Mediterranean Sea developed for climate applications. This product consists of daily (nighttime), merged multi-sensor (L3S), satellite-based estimates of the foundation SST (namely, the temperature free, or nearly-free, of any diurnal cycle) at 0.05\u00b0 resolution grid covering the period from January 1st 1982 to present (currently, up to one month before real time). The MED-REP-L3S product is built from a consistent reprocessing of the collated level-3 (merged single-sensor, L3C) climate data record provided by the ESA Climate Change Initiative (CCI) and the Copernicus Climate Change Service (C3S) initiatives, but also includes in input an adjusted version of the AVHRR Pathfinder dataset version 5.3 to increase the input observation coverage. Due to Brexit, an interim production guarantees the temporal extension of the MED-REP-L3S product since 1st January 2023 to present.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00314\n\n**References:**\n\n* Merchant, C. J., Embury, O., Bulgin, C. E., Block, T., Corlett, G. K., Fiedler, E., ... & Eastwood, S. (2019). Satellite-based time-series of sea-surface temperature since 1981 for climate applications. Scientific data, 6(1), 1-18. Pisano, A., Buongiorno Nardelli, B., Tronconi, C. & Santoleri, R. (2016). The new Mediterranean optimally interpolated pathfinder AVHRR SST Dataset (1982\u20132012). Remote Sens. Environ. 176, 107\u2013116.\n* Saha, Korak; Zhao, Xuepeng; Zhang, Huai-min; Casey, Kenneth S.; Zhang, Dexin; Baker-Yeboah, Sheekela; Kilpatrick, Katherine A.; Evans, Robert H.; Ryan, Thomas; Relph, John M. (2018). AVHRR Pathfinder version 5.3 level 3 collated (L3C) global 4km sea surface temperature for 1981-Present. NOAA National Centers for Environmental Information. Dataset. https://doi.org/10.7289/v52j68xx\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00314"}, "WIND_GLO_PHY_L4_NRT_012_004": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "air-density,coastal-marine-environment,eastward-wind,global-ocean,level-4,marine-resources,marine-safety,near-real-time,northward-wind,numerical-model,oceanographic-geographical-features,satellite-observation,stress-curl,stress-divergence,surface-downward-eastward-stress,surface-downward-northward-stress,weather-climate-and-seasonal-forecasting,wind-curl,wind-divergence,wind-glo-phy-l4-nrt-012-004", "license": "proprietary", "title": "Global Ocean Hourly Sea Surface Wind and Stress from Scatterometer and Model", "missionStartDate": "2020-07-01T00:00:00Z", "abstract": "For the Global Ocean - The product contains hourly Level-4 sea surface wind and stress fields at 0.125 degrees horizontal spatial resolution. Scatterometer observations for Metop-B and Metop-C ASCAT and their collocated European Centre for Medium-Range Weather Forecasts (ECMWF) operational model variables are used to calculate temporally-averaged difference fields. These fields are used to correct for persistent biases in hourly ECMWF operational model fields. The product provides stress-equivalent wind and stress variables as well as their divergence and curl. The applied bias corrections, the standard deviation of the differences (for wind and stress fields) and difference of variances (for divergence and curl fields) are included in the product.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00305", "providers": [{"name": "KNMI (The Netherlands)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00305"}, "SST_BAL_PHY_L3S_MY_010_040": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "baltic-sea,coastal-marine-environment,level-3,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-surface-temperature,sst-bal-phy-l3s-my-010-040,target-application#seaiceforecastingapplication,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea - L3S Sea Surface Temperature Reprocessed", "missionStartDate": "1982-01-01T00:00:00Z", "abstract": "For the Baltic Sea- the DMI Sea Surface Temperature reprocessed L3S aims at providing daily multi-sensor supercollated data at 0.02deg. x 0.02deg. horizontal resolution, using satellite data from infra-red radiometers. Uses SST satellite products from these sensors: NOAA AVHRRs 7, 9, 11, 14, 16, 17, 18 , Envisat ATSR1, ATSR2 and AATSR \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00312\n\n**References:**\n\n* H\u00f8yer, J. L., Le Borgne, P. and Eastwood, S. 2014. A bias correction method for Arctic satellite sea surface temperature observations, Remote Sensing of Environment, https://doi.org/10.1016/j.rse.2013.04.020.\n* H\u00f8yer, J. L. and She, J., Optimal interpolation of sea surface temperature for the North Sea and Baltic Sea, J. Mar. Sys., Vol 65, 1-4, pp., 2007.H\u00f8yer, J. L. and She, J., Optimal interpolation of sea surface temperature for the North Sea and Baltic Sea, J. Mar. Sys., Vol 65, 1-4, pp., 2007.\n", "providers": [{"name": "DMI (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00312"}, "SEAICE_ARC_SEAICE_L3_REP_OBSERVATIONS_011_010": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "arctic-ocean,coastal-marine-environment,eastward-sea-ice-velocity,level-3,marine-resources,marine-safety,multi-year,northward-sea-ice-velocity,oceanographic-geographical-features,satellite-observation,sea-ice-thickness,seaice-arc-seaice-l3-rep-observations-011-010,target-application#seaiceclimate,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean Sea Ice Drift REPROCESSED", "missionStartDate": "1991-12-03T00:00:00Z", "abstract": "Arctic sea ice drift dataset at 3, 6 and 30 day lag during winter. The Arctic low resolution sea ice drift products provided from IFREMER have a 62.5 km grid resolution. They are delivered as daily products at 3, 6 and 30 days for the cold season extended at fall and spring: from September until May, it is updated on a monthly basis. The data are Merged product from radiometer and scatterometer:\n* SSM/I 85 GHz V & H Merged product (1992-1999)\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00126", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00126"}, "WAVE_GLO_PHY_SWH_L4_NRT_014_003": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,baltic-sea,black-sea,coastal-marine-environment,global-ocean,iberian-biscay-irish-seas,level-4,marine-resources,marine-safety,mediterranean-sea,near-real-time,north-west-shelf-seas,oceanographic-geographical-features,satellite-observation,sea-surface-wave-significant-height,wave-glo-phy-swh-l4-nrt-014-003,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "GLOBAL OCEAN L4 SIGNIFICANT WAVE HEIGHT FROM NRT SATELLITE MEASUREMENTS", "missionStartDate": "2020-01-01T00:00:00Z", "abstract": "Near-Real-Time gridded multi-mission merged satellite significant wave height. Only valid data are included. This product is processed in Near-Real-Time by the WAVE-TAC multi-mission altimeter data processing system and is based on CMEMS level-3 SWH datasets (see the product WAVE_GLO_WAV_L3_SWH_NRT_OBSERVATIONS_014_001).\nIt merges along-track SWH data from the following missions: Jason-3, Sentinel-3A, Sentinel-3B, SARAL/AltiKa, Cryosat-2, CFOSAT and HaiYang-2B. The resulting gridded product has a 2\u00b0 horizontal resolution and is produced daily. Different SWH fields are produced: VAVH_DAILY fields are daily statistics computed from all available level 3 along-track measurements from 00 UTC until 23:59 UTC ; VAVH_INST field provides an estimate of the instantaneous wave field at 12:00UTC (noon), using all available Level 3 along-track measurements and accounting for their spatial and temporal proximity.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00180", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00180"}, "SEAICE_BAL_PHY_L4_MY_011_019": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-ice-classification,sea-ice-concentration,sea-ice-extent,sea-ice-thickness,seaice-bal-phy-l4-my-011-019,target-application#seaiceclimate,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea ice concentration, extent, and classification time series", "missionStartDate": "1980-11-03T00:00:00Z", "abstract": "Gridded sea ice concentration, sea ice extent and classification based on the digitized Baltic ice charts produced by the FMI/SMHI ice analysts. It is produced daily in the afternoon, describing the ice situation daily at 14:00 EET. The nominal resolution is about 1km. The temporal coverage is from the beginning of the season 1980-1981 until today.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00131", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00131"}, "SEAICE_BAL_SEAICE_L4_NRT_OBSERVATIONS_011_004": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-ice-area-fraction,sea-ice-extent,sea-ice-thickness,seaice-bal-seaice-l4-nrt-observations-011-004,target-application#seaiceforecastingapplication,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea - Sea Ice Concentration and Thickness Charts", "missionStartDate": "2018-01-01T00:00:00Z", "abstract": "For the Baltic Sea- The operational sea ice service at FMI provides ice parameters over the Baltic Sea. The parameters are based on ice chart produced on daily basis during the Baltic Sea ice season and show the ice concentration in a 1 km grid. Ice thickness chart (ITC) is a product based on the most recent available ice chart (IC) and a SAR image. The SAR data is used to update the ice information in the IC. The ice regions in the IC are updated according to a SAR segmentation and new ice thickness values are assigned to each SAR segment based on the SAR backscattering and the ice IC thickness range at that location.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00132\n\n**References:**\n\n* J. Karvonen, M. Simila, SAR-Based Estimation of the Baltic Sea Ice Motion, Proc. of the International Geoscience and Remote Sensing Symposium 2007 (IGARSS 07), pp. 2605-2608, 2007. (Unfortunately there is no publication of the new algorithm version yet).\n", "providers": [{"name": "FMI (Finland)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00132"}, "SEAICE_ARC_PHY_L4_NRT_011_014": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "arctic-ocean,coastal-marine-environment,level-3,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-ice-thickness,seaice-arc-phy-l4-nrt-011-014,target-application#seaiceforecastingapplication,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Sea Ice Thickness derived from merging CryoSat-2 and SMOS ice thickness", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "Arctic sea ice thickness from merged SMOS and Cryosat-2 (CS2) observations during freezing season between October and April. The SMOS mission provides L-band observations and the ice thickness-dependency of brightness temperature enables to estimate the sea-ice thickness for thin ice regimes. On the other hand, CS2 uses radar altimetry to measure the height of the ice surface above the water level, which can be converted into sea ice thickness assuming hydrostatic equilibrium.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00125", "providers": [{"name": "FMI (Finland)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00125"}, "SEAICE_ARC_SEAICE_L4_NRT_OBSERVATIONS_011_008": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,coastal-marine-environment,level-4,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-ice-surface-temperature,sea-surface-temperature,seaice-arc-seaice-l4-nrt-observations-011-008,target-application#seaiceforecastingapplication,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean - Sea and Ice Surface Temperature", "missionStartDate": "2018-01-01T00:00:00Z", "abstract": "Arctic Sea and Ice surface temperature product based upon observations from the Metop_A AVHRR instrument. The product is a daily interpolated field with a 0.05 degrees resolution, and covers surface temperatures in the ocean, the sea ice and the marginal ice zone.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00130", "providers": [{"name": "DMI (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00130"}, "SST_BAL_SST_L4_NRT_OBSERVATIONS_010_007_b": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-surface-temperature,sst-bal-sst-l4-nrt-observations-010-007-b,target-application#seaiceforecastingapplication,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea- Sea Surface Temperature Analysis L4", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "For the Baltic Sea- The DMI Sea Surface Temperature analysis aims at providing daily gap-free maps of sea surface temperature, referred as L4 product, at 0.02deg. x 0.02deg. horizontal resolution, using satellite data from infra-red and microwave radiometers. Uses SST nighttime satellite products from these sensors: NOAA AVHRR, Metop AVHRR, Terra MODIS, Aqua MODIS, Aqua AMSR-E, Envisat AATSR, MSG Seviri\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00155", "providers": [{"name": "DMI (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00155"}, "ANTARCTIC_OMI_SI_extent_obs": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "antarctic-omi-si-extent-obs,coastal-marine-environment,global-ocean,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-ice-extent,target-application#seaiceinformation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Antarctic Monthly Sea Ice Extent from Observations Reprocessing", "missionStartDate": "1978-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nSea Ice Extent (SIE) is defined as the area covered by sufficient sea ice, that is the area of ocean having more than 15% Sea Ice Concentration (SIC). SIC is the fractional area of ocean surface that is covered with sea ice. SIC is computed from Passive Microwave satellite observations since 1979. \nSIE is often reported with units of 106 km2 (millions square kilometers). The change in sea ice extent (trend) is expressed in millions of km squared per decade (106 km2/decade). In addition, trends are expressed relative to the 1979-2022 period in % per decade.\nThese trends are calculated (i) from the annual mean values; (ii) from the September values (winter ice loss); (iii) from February values (summer ice loss). The annual mean trend is reported on the key figure, the September (maximum extent) and February (minimum extent) values are reported in the text below.\nSIE includes all sea ice, except for lake and river ice.\nSee also section 1.7 in Samuelsen et al. (2016) for an introduction to this Ocean Monitoring Indicator (OMI).\n\n**CONTEXT**\n\nSea ice is frozen seawater that floats at the ocean surface. This large blanket of millions of square kilometers insulates the relatively warm ocean waters from the cold polar atmosphere. The seasonal cycle of sea ice, forming and melting with the polar seasons, impacts both human activities and biological habitat. Knowing how and by how much the sea-ice cover is changing is essential for monitoring the health of the Earth (Meredith et al. 2019). \n\n**CMEMS KEY FINDINGS**\n\nSince 1979, there has been an overall slight increase of sea ice extent in the Southern Hemisphere but a sharp decrease was observed after 2016. Over the period 1979-2022, the annual rate amounts to +0.02 +/- 0.05 106 km2 per decade (+0.18% per decade). Winter (September) sea ice extent trend amounts to +0.06 +/- 0.05106 km2 per decade (+0.32% per decade). Summer (February) sea ice extent trend amounts to -0.01+/- 0.05 106 km2 per decade (-0.38% per decade). These trend estimates are hardly significant, which is in agreement with the IPCC SROCC, which has assessed that \u2018Antarctic sea ice extent overall has had no statistically significant trend (1979\u20132018) due to contrasting regional signals and large interannual variability (high confidence).\u2019 (IPCC, 2019). Both June and July 2022 had the lowest average sea ice extent values for these months since 1979. \n\n**Figure caption**\n\na) The seasonal cycle of Southern Hemisphere sea ice extent expressed in millions of km2 averaged over the period 1979-2022 (red), shown together with the seasonal cycle in the year 2022 (green), and b) time series of yearly average Southern Hemisphere sea ice extent expressed in millions of km2. Time series are based on satellite observations (SMMR, SSM/I, SSMIS) by EUMETSAT OSI SAF Sea Ice Index (v2.2) with R&D input from ESA CCI. Details on the product are given in the corresponding PUM for this OMI. The change of sea ice extent over the period 1979-2022 is expressed as a trend in millions of square kilometers per decade and is plotted with a dashed line on panel b).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00187\n\n**References:**\n\n* Meredith, M., M. Sommerkorn, S. Cassotta, C. Derksen, A. Ekaykin, A. Hollowed, G. Kofinas, A. Mackintosh, J. Melbourne-Thomas, M.M.C. Muelbert, G. Ottersen, H. Pritchard, and E.A.G. Schuur, 2019: Polar Regions. In: IPCC Special Report on the Ocean and Cryosphere in a Changing Climate [H.-O. Po\u0308rtner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegri\u0301a, M. Nicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. In press.\n* IPCC, 2019: IPCC Special Report on the Ocean and Cryosphere in a Changing Climate [H.-O. Po\u0308rtner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegri\u0301a, M. Nicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. In press.\n* Samuelsen, A., L.-A. Breivik, R.P. Raj, G. Garric, L. Axell, E. Olason (2016): Sea Ice. In: The Copernicus Marine Service Ocean State Report, issue 1, Journal of Operational Oceanography, 9:sup2, s235-s320, DOI: 10.1080/1755876X.2016.1273446\n", "providers": [{"name": "MET Norway", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00187"}, "MULTIOBS_GLO_PHY_SSS_L3_MYNRT_015_014": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,global-ocean,in-situ-observation,level-3,marine-resources,marine-safety,multi-year,multiobs-glo-phy-sss-l3-mynrt-015-014,near-real-time,none,oceanographic-geographical-features,satellite-observation,sea-surface-salinity,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "SMOS CATDS Qualified (L2Q) Sea Surface Salinity product", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "The product MULTIOBS_GLO_PHY_SSS_L3_MYNRT_015_014 is a reformatting and a simplified version of the CATDS L3 product called \u201c2Q\u201d or \u201cL2Q\u201d. it is an intermediate product, that provides, in daily files, SSS corrected from land-sea contamination and latitudinal bias, with/without rain freshening correction.\n\n**DOI (product):** \nhttps://doi.org/10.1016/j.rse.2016.02.061\n\n**References:**\n\n* Boutin, J., J. L. Vergely, S. Marchand, F. D'Amico, A. Hasson, N. Kolodziejczyk, N. Reul, G. Reverdin, and J. Vialard (2018), New SMOS Sea Surface Salinity with reduced systematic errors and improved variability, Remote Sensing of Environment, 214, 115-134. doi:https://doi.org/10.1016/j.rse.2018.05.022\n* Kolodziejczyk, N., J. Boutin, J.-L. Vergely, S. Marchand, N. Martin, and G. Reverdin (2016), Mitigation of systematic errors in SMOS sea surface salinity, Remote Sensing of Environment, 180, 164-177. doi:https://doi.org/10.1016/j.rse.2016.02.061\n", "providers": [{"name": "CATDS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.1016/j.rse.2016.02.061"}, "SST_BS_PHY_L3S_MY_010_041": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "adjusted-sea-surface-temperature,black-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sst-bs-phy-l3s-my-010-041,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea - High Resolution L3S Sea Surface Temperature Reprocessed", "missionStartDate": "1981-08-25T00:00:00Z", "abstract": "The Reprocessed (REP) Black Sea (BS) dataset provides a stable and consistent long-term Sea Surface Temperature (SST) time series over the Black Sea developed for climate applications. This product consists of daily (nighttime), merged multi-sensor (L3S), satellite-based estimates of the foundation SST (namely, the temperature free, or nearly-free, of any diurnal cycle) at 0.05\u00b0 resolution grid covering the period from January 1st 1982 to present (currently, up to one month before real time). The BS-REP-L3S product is built from a consistent reprocessing of the collated level-3 (merged single-sensor, L3C) climate data record provided by the ESA Climate Change Initiative (CCI) and the Copernicus Climate Change Service (C3S) initiatives, but also includes in input an adjusted version of the AVHRR Pathfinder dataset version 5.3 to increase the input observation coverage. Due to Brexit, an interim production guarantees the temporal extension of the BS-REP-L3S product since 1st January 2023 to present.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00313\n\n**References:**\n\n* Merchant, C. J., Embury, O., Bulgin, C. E., Block, T., Corlett, G. K., Fiedler, E., ... & Eastwood, S. (2019). Satellite-based time-series of sea-surface temperature since 1981 for climate applications. Scientific data, 6(1), 1-18. Pisano, A., Buongiorno Nardelli, B., Tronconi, C. & Santoleri, R. (2016). The new Mediterranean optimally interpolated pathfinder AVHRR SST Dataset (1982\u20132012). Remote Sens. Environ. 176, 107\u2013116.\n* Saha, Korak; Zhao, Xuepeng; Zhang, Huai-min; Casey, Kenneth S.; Zhang, Dexin; Baker-Yeboah, Sheekela; Kilpatrick, Katherine A.; Evans, Robert H.; Ryan, Thomas; Relph, John M. (2018). AVHRR Pathfinder version 5.3 level 3 collated (L3C) global 4km sea surface temperature for 1981-Present. NOAA National Centers for Environmental Information. Dataset. https://doi.org/10.7289/v52j68xx\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00313"}, "SST_BS_PHY_SUBSKIN_L4_NRT_010_035": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "black-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-surface-subskin-temperature,sst-bs-phy-subskin-l4-nrt-010-035,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea - High Resolution Diurnal Subskin Sea Surface Temperature Analysis", "missionStartDate": "2020-01-01T00:00:00Z", "abstract": "For the Black Sea - the CNR diurnal sub-skin Sea Surface Temperature product provides daily gap-free (L4) maps of hourly mean sub-skin SST at 1/16\u00b0 (0.0625\u00b0) horizontal resolution over the CMEMS Black Sea (BS) domain, by combining infrared satellite and model data (Marullo et al., 2014). The implementation of this product takes advantage of the consolidated operational SST processing chains that provide daily mean SST fields over the same basin (Buongiorno Nardelli et al., 2013). The sub-skin temperature is the temperature at the base of the thermal skin layer and it is equivalent to the foundation SST at night, but during daytime it can be significantly different under favorable (clear sky and low wind) diurnal warming conditions. The sub-skin SST L4 product is created by combining geostationary satellite observations aquired from SEVIRI and model data (used as first-guess) aquired from the CMEMS BS Monitoring Forecasting Center (MFC). This approach takes advantage of geostationary satellite observations as the input signal source to produce hourly gap-free SST fields using model analyses as first-guess. The resulting SST anomaly field (satellite-model) is free, or nearly free, of any diurnal cycle, thus allowing to interpolate SST anomalies using satellite data acquired at different times of the day (Marullo et al., 2014).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00157\n\n**References:**\n\n* Marullo, S., Santoleri, R., Ciani, D., Le Borgne, P., P\u00e9r\u00e9, S., Pinardi, N., ... & Nardone, G. (2014). Combining model and geostationary satellite data to reconstruct hourly SST field over the Mediterranean Sea. Remote sensing of environment, 146, 11-23.\n* Buongiorno Nardelli B., C.Tronconi, A. Pisano, R.Santoleri, 2013: High and Ultra-High resolution processing of satellite Sea Surface Temperature data over Southern European Seas in the framework of MyOcean project, Rem. Sens. Env., 129, 1-16, doi:10.1016/j.rse.2012.10.012.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00157"}, "SEAICE_ARC_SEAICE_L4_NRT_OBSERVATIONS_011_002": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,coastal-marine-environment,level-4,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-ice-area-fraction,seaice-arc-seaice-l4-nrt-observations-011-002,target-application#seaiceforecastingapplication,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean - Sea Ice Concentration Charts - Svalbard and Greenland", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "For the Arctic Ocean - The operational sea ice services at MET Norway and DMI provides ice charts of the Arctic area covering Baffin Bay, Greenland Sea, Fram Strait and Barents Sea. The charts show the ice concentration in WMO defined concentration intervals. The three different types of ice charts (datasets) are produced from twice to several times a week: MET charts are produced every weekday. DMI regional charts are produced at irregular intervals daily and a supplemental DMI overview chart is produced twice weekly.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00128", "providers": [{"name": "MET Norway", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00128"}, "ARCTIC_ANALYSISFORECAST_BGC_002_004": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-analysisforecast-bgc-002-004,arctic-ocean,coastal-marine-environment,forecast,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mole-concentration-of-dissolved-inorganic-carbon-in-sea-water,mole-concentration-of-dissolved-molecular-oxygen-in-sea-water,mole-concentration-of-nitrate-in-sea-water,mole-concentration-of-phosphate-in-sea-water,mole-concentration-of-phytoplankton-expressed-as-carbon-in-sea-water,mole-concentration-of-silicate-in-sea-water,mole-concentration-of-zooplankton-expressed-as-carbon-in-sea-water,near-real-time,net-primary-production-of-biomass-expressed-as-carbon-per-unit-volume-in-sea-water,numerical-model,oceanographic-geographical-features,satellite-chlorophyll,sea-floor-depth-below-sea-level,sea-water-ph-reported-on-total-scale,sinking-mole-flux-of-particulate-organic-matter-expressed-as-carbon-in-sea-water,surface-partial-pressure-of-carbon-dioxide-in-sea-water,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean Biogeochemistry Analysis and Forecast", "missionStartDate": "2019-01-01T00:00:00Z", "abstract": "The operational TOPAZ5-ECOSMO Arctic Ocean system uses the ECOSMO biological model coupled online to the TOPAZ5 physical model planned for a future update of the ARCTIC_ANALYSIS_FORECAST_PHYS_002_001_a physical forecast. It is run daily to provide 10 days of forecast of 3D biogeochemical variables ocean. The coupling is done by the FABM framework.\n\nCoupling to a biological ocean model provides a description of the evolution of basic biogeochemical variables. The output consists of daily mean fields interpolated onto a standard grid and 40 fixed levels in NetCDF4 CF format. Variables include 3D fields of nutrients (nitrate, phosphate, silicate), phytoplankton and zooplankton biomass, oxygen, chlorophyll, primary productivity, carbon cycle variables (pH, dissolved inorganic carbon and surface partial CO2 pressure in seawater, carbon export) and light attenuation coefficient. Surface Chlorophyll-a from satellite ocean colour is assimilated every week and projected downwards using the Uitz et al. (2006) method. A new 10-day forecast is produced daily using the previous day's forecast and the most up-to-date prognostic forcing fields.\nOutput products have 6.25 km resolution at the North Pole (equivalent to 1/8 deg) on a stereographic projection. See the Product User Manual for the exact projection parameters.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00003\n\n**References:**\n\n* Daewel, U. and Schrum, C. (2013). Simulating long-term dynamics of the coupled North Sea and Baltic Sea ecosystem with ECOSMO II: Model description and validation. Journal of Marine Systems. 119-120. 30-49. 10.1016/j.jmarsys.2013.03.008.\n* Samuelsen, A., Hansen, C., and Wehde, H.: Tuning and assessment of the HYCOM-NORWECOM V2.1 biogeochemical modeling system for the North Atlantic and Arctic oceans, Geosci. Model Dev., 8, 2187\u20132202, https://doi.org/10.5194/gmd-8-2187-2015, 2015.\n* Uitz,J.,H.Claustre,A.Morel,andS.B.Hooker(2006),Vertical distribution of phytoplankton communities in open ocean: An assessment based on surface chlorophyll, J.Geophys. Res.,111,C08005, doi:10.1029/2005JC003207.\n", "providers": [{"name": "MET Norway", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00003"}, "OCEANCOLOUR_ATL_BGC_L3_NRT_009_111": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "bbp-pft,cdm,chl,coastal-marine-environment,global-ocean,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-diatoms-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-dinophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-greenalgae-and-prochlorophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-haptophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-microphytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-nanophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prochlorococcus-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prokaryotes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-suspended-particulate-matter-in-sea-water,near-real-time,oceancolour-atl-bgc-l3-nrt-009-111,oceanographic-geographical-features,pft,satellite-observation,secchi-depth-of-sea-water,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-absorption-coefficient-of-radiative-flux-in-sea-water-due-to-dissolved-organic-matter-and-non-algal-particles,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "North Atlantic Ocean Colour Plankton, Reflectance, Transparency and Optics L3 NRT daily observations", "missionStartDate": "2023-04-21T00:00:00Z", "abstract": "For the **Global** Ocean **Satellite Observations**, ACRI-ST company (Sophia Antipolis, France) is providing **Bio-Geo-Chemical (BGC)** products based on the **Copernicus-GlobColour** processor.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **\"multi\"** products, and S3A & S3B only for the **\"olci\"** products.\n* Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional types and sizes (**PFT**), Suspended Matter (**SPM**), Secchi Transparency Depth (**ZSD**), Diffuse Attenuation (**KD490**), Particulate Backscattering (**BBP**), Absorption Coef. (**CDM**) and Reflectance (**RRS**).\n\n* Temporal resolutions: **daily**.\n* Spatial resolutions: **1 km** and a finer resolution based on olci **300 meters** inputs.\n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\nTo find the **Copernicus-GlobColour** products in the catalogue, use the search keyword **\"GlobColour\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00284", "providers": [{"name": "ACRI (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00284"}, "OCEANCOLOUR_BLK_BGC_L3_NRT_009_151": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "black-sea,coastal-marine-environment,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-microphytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-nanophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,near-real-time,oceancolour-blk-bgc-l3-nrt-009-151,oceanographic-geographical-features,satellite-observation,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-absorption-coefficient-of-radiative-flux-in-sea-water-due-to-dissolved-organic-matter-and-non-algal-particles,volume-absorption-coefficient-of-radiative-flux-in-sea-water-due-to-phytoplankton,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea, Bio-Geo-Chemical, L3, daily Satellite Observations (Near Real Time)", "missionStartDate": "2023-04-29T00:00:00Z", "abstract": "For the **Black Sea** Ocean **Satellite Observations**, the Italian National Research Council (CNR \u2013 Rome, Italy), is providing **Bio-Geo_Chemical (BGC)** regional datasets:\n* **_plankton**_ with the phytoplankton chlorophyll concentration (CHL) evaluated via region-specific algorithms (Zibordi et al., 2015; Kajiyama et al., 2018) and Phytoplankton Functional Types (PFT) evaluated via region-specific algorithm\n* **_reflectance**_ with the spectral Remote Sensing Reflectance (RRS)\n* **_transparency**_ with the diffuse attenuation coefficient of light at 490 nm (KD490) \n* **_optics**_ including the IOPs (Inherent Optical Properties) such as absorption and scattering and particulate and dissolved matter (ADG, APH, BBP), via QAAv6 model (Lee et al., 2002 and updates)\n\n**Upstreams**: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **\"\"multi\"\"** products, and OLCI-S3A & S3B for the **\"\"olci\"\"** products\n\n**Temporal resolution**: daily\n\n**Spatial resolutions**: 1 km for **\"\"multi\"\"** and 300 meters for **\"\"olci\"\"**\n\nTo find this product in the catalogue, use the search keyword **\"\"OCEANCOLOUR_BLK_BGC_L3_NRT\"\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00301\n\n**References:**\n\n* Kajiyama T., D. D\u2019Alimonte, and G. Zibordi, \u201cAlgorithms merging for the determination of Chlorophyll-a concentration in the Black Sea,\u201d IEEE Geoscience and Remote Sensing Letters, 2018. [Online]. Available: https://-www.doi.org/\u00ac10.1+D7109/\u00acLGRS.2018.2883539\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772\n* Zibordi, G., F. Me\u0301lin, J.-F. Berthon, and M. Talone (2015). In situ autonomous optical radiometry measurements for satellite ocean color validation in the Western Black Sea. Ocean Sci., 11, 275\u2013286.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00301"}, "OCEANCOLOUR_BAL_BGC_L4_MY_009_134": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,multi-year,oceancolour-bal-bgc-l4-my-009-134,oceanographic-geographical-features,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Multiyear Ocean Colour Plankton monthly observations", "missionStartDate": "1997-09-01T00:00:00Z", "abstract": "For the **Baltic Sea** Ocean **Satellite Observations**, the Italian National Research Council (CNR \u2013 Rome, Italy), is providing multi-years **Bio-Geo_Chemical (BGC)** regional datasets:\n* **_plankton**_ with the phytoplankton chlorophyll concentration (CHL) evaluated via region-specific neural network (Brando et al. 2021)\n\n**Upstreams**: SeaWiFS, MODIS, MERIS, VIIRS, OLCI-S3A (ESA OC-CCIv5) for the **\"\"multi\"\"** products, and OLCI-S3A & S3B for the **\"\"olci\"\"** products\n\n**Temporal resolutions**: monthly\n\n**Spatial resolution**: 1 km for **\"\"multi\"\"** and 300 meters for **\"\"olci\"\"**\n\nTo find this product in the catalogue, use the search keyword **\"\"OCEANCOLOUR_BAL_BGC_L4_MY\"\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00308\n\n**References:**\n\n* Brando, V. E., Sammartino, M., Colella, S., Bracaglia, M., Di Cicco, A., D\u2019Alimonte, D., ... & Attila, J. (2021). Phytoplankton bloom dynamics in the Baltic sea using a consistently reprocessed time series of multi-sensor reflectance and novel chlorophyll-a retrievals. Remote Sensing, 13(16), 3071\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00308"}, "OCEANCOLOUR_MED_BGC_L4_NRT_009_142": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mediterranean-sea,near-real-time,oceancolour-med-bgc-l4-nrt-009-142,oceanographic-geographical-features,satellite-observation,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea, Bio-Geo-Chemical, L4, monthly means, daily gapfree and climatology Satellite Observations (Near Real Time)", "missionStartDate": "2022-01-01T00:00:00Z", "abstract": "For the **Mediterranean Sea** Ocean **Satellite Observations**, the Italian National Research Council (CNR \u2013 Rome, Italy), is providing **Bio-Geo_Chemical (BGC)** regional datasets:\n* **_plankton**_ with the phytoplankton chlorophyll concentration (CHL) evaluated via region-specific algorithms (Case 1 waters: Volpe et al., 2019, with new coefficients; Case 2 waters, Berthon and Zibordi, 2004), and the interpolated **gap-free** Chl concentration (to provide a \"\"cloud free\"\" product) estimated by means of a modified version of the DINEOF algorithm (Volpe et al., 2018)\n* **_transparency**_ with the diffuse attenuation coefficient of light at 490 nm (KD490) (for **\"\"multi**\"\" observations achieved via region-specific algorithm, Volpe et al., 2019)\n\n**Upstreams**: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **\"\"multi\"\"** products, and OLCI-S3A & S3B for the **\"\"olci\"\"** products\n\n**Temporal resolutions**: monthly and daily (for **\"\"gap-free\"\"** data)\n\n**Spatial resolutions**: 1 km for **\"\"multi\"\"** and 300 meters for **\"\"olci\"\"**\n\nTo find this product in the catalogue, use the search keyword **\"\"OCEANCOLOUR_MED_BGC_L4_NRT\"\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00298\n\n**References:**\n\n* Berthon, J.-F., Zibordi, G.: Bio-optical relationships for the northern Adriatic Sea. Int. J. Remote Sens., 25, 1527-1532, 2004\n* Volpe, G., Buongiorno Nardelli, B., Colella, S., Pisano, A. and Santoleri, R. (2018). An Operational Interpolated Ocean Colour Product in the Mediterranean Sea, in New Frontiers in Operational Oceanography, edited by E. P. Chassignet, A. Pascual, J. Tintor\u00e8, and J. Verron, pp. 227\u2013244\n* Volpe, G., Colella, S., Brando, V. E., Forneris, V., Padula, F. L., Cicco, A. D., ... & Santoleri, R. (2019). Mediterranean ocean colour Level 3 operational multi-sensor processing. Ocean Science, 15(1), 127-146.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00298"}, "SST_BS_SST_L4_REP_OBSERVATIONS_010_022": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "black-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-surface-temperature,sst-bs-sst-l4-rep-observations-010-022,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea - High Resolution L4 Sea Surface Temperature Reprocessed", "missionStartDate": "1981-08-25T00:00:00Z", "abstract": "The Reprocessed (REP) Black Sea (BS) dataset provides a stable and consistent long-term Sea Surface Temperature (SST) time series over the Black Sea developed for climate applications. This product consists of daily (nighttime), optimally interpolated (L4), satellite-based estimates of the foundation SST (namely, the temperature free, or nearly-free, of any diurnal cycle) at 0.05\u00b0 resolution grid covering the period from January 1st 1982 to present (currently, up to one month before real time). The BS-REP-L4 product is built from a consistent reprocessing of the collated level-3 (merged single-sensor, L3C) climate data record provided by the ESA Climate Change Initiative (CCI) and the Copernicus Climate Change Service (C3S) initiatives, but also includes in input an adjusted version of the AVHRR Pathfinder dataset version 5.3 to increase the input observation coverage. Due to Brexit, an interim production guarantees the temporal extension of the BS-REP-L4 product since 1st January 2023 to present.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00160\n\n**References:**\n\n* Merchant, C. J., Embury, O., Bulgin, C. E., Block, T., Corlett, G. K., Fiedler, E., ... & Eastwood, S. (2019). Satellite-based time-series of sea-surface temperature since 1981 for climate applications. Scientific data, 6(1), 1-18. Pisano, A., Buongiorno Nardelli, B., Tronconi, C. & Santoleri, R. (2016). The new Mediterranean optimally interpolated pathfinder AVHRR SST Dataset (1982\u20132012). Remote Sens. Environ. 176, 107\u2013116.\n* Saha, Korak; Zhao, Xuepeng; Zhang, Huai-min; Casey, Kenneth S.; Zhang, Dexin; Baker-Yeboah, Sheekela; Kilpatrick, Katherine A.; Evans, Robert H.; Ryan, Thomas; Relph, John M. (2018). AVHRR Pathfinder version 5.3 level 3 collated (L3C) global 4km sea surface temperature for 1981-Present. NOAA National Centers for Environmental Information. Dataset. https://doi.org/10.7289/v52j68xx\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00160"}, "SST_GLO_SST_L4_NRT_OBSERVATIONS_010_001": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-ice-area-fraction,sea-surface-temperature,sst-glo-sst-l4-nrt-observations-010-001,target-application#seaiceforecastingapplication,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean OSTIA Sea Surface Temperature and Sea Ice Analysis", "missionStartDate": "2007-01-01T00:00:00Z", "abstract": "For the Global Ocean- the OSTIA global foundation Sea Surface Temperature product provides daily gap-free maps of: Foundation Sea Surface Temperature at 0.05\u00b0 x 0.05\u00b0 horizontal grid resolution, using in-situ and satellite data from both infrared and microwave radiometers. \n\nThe Operational Sea Surface Temperature and Ice Analysis (OSTIA) system is run by the UK's Met Office and delivered by IFREMER PU. OSTIA uses satellite data provided by the GHRSST project together with in-situ observations to determine the sea surface temperature.\nA high resolution (1/20\u00b0 - approx. 6 km) daily analysis of sea surface temperature (SST) is produced for the global ocean and some lakes.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00165\n\n**References:**\n\n* Good, S.; Fiedler, E.; Mao, C.; Martin, M.J.; Maycock, A.; Reid, R.; Roberts-Jones, J.; Searle, T.; Waters, J.; While, J.; Worsfold, M. The Current Configuration of the OSTIA System for Operational Production of Foundation Sea Surface Temperature and Ice Concentration Analyses. Remote Sens. 2020, 12, 720. doi: 10.3390/rs12040720\n* Donlon, C.J., Martin, M., Stark, J., Roberts-Jones, J., Fiedler, E., and Wimmer, W., 2012, The Operational Sea Surface Temperature and Sea Ice Analysis (OSTIA) system. Remote Sensing of the Environment. doi: 10.1016/j.rse.2010.10.017 2011.\n* John D. Stark, Craig J. Donlon, Matthew J. Martin and Michael E. McCulloch, 2007, OSTIA : An operational, high resolution, real time, global sea surface temperature analysis system., Oceans 07 IEEE Aberdeen, conference proceedings. Marine challenges: coastline to deep sea. Aberdeen, Scotland.IEEE.\n", "providers": [{"name": "Met Office (UK)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00165"}, "SST_MED_PHY_SUBSKIN_L4_NRT_010_036": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,level-4,marine-resources,marine-safety,mediterranean-sea,near-real-time,oceanographic-geographical-features,satellite-observation,sea-surface-subskin-temperature,sst-med-phy-subskin-l4-nrt-010-036,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea - High Resolution Diurnal Subskin Sea Surface Temperature Analysis", "missionStartDate": "2019-01-01T00:00:00Z", "abstract": "For the Mediterranean Sea - the CNR diurnal sub-skin Sea Surface Temperature (SST) product provides daily gap-free (L4) maps of hourly mean sub-skin SST at 1/16\u00b0 (0.0625\u00b0) horizontal resolution over the CMEMS Mediterranean Sea (MED) domain, by combining infrared satellite and model data (Marullo et al., 2014). The implementation of this product takes advantage of the consolidated operational SST processing chains that provide daily mean SST fields over the same basin (Buongiorno Nardelli et al., 2013). The sub-skin temperature is the temperature at the base of the thermal skin layer and it is equivalent to the foundation SST at night, but during daytime it can be significantly different under favorable (clear sky and low wind) diurnal warming conditions. The sub-skin SST L4 product is created by combining geostationary satellite observations aquired from SEVIRI and model data (used as first-guess) aquired from the CMEMS MED Monitoring Forecasting Center (MFC). This approach takes advantage of geostationary satellite observations as the input signal source to produce hourly gap-free SST fields using model analyses as first-guess. The resulting SST anomaly field (satellite-model) is free, or nearly free, of any diurnal cycle, thus allowing to interpolate SST anomalies using satellite data acquired at different times of the day (Marullo et al., 2014).\n \n[How to cite](https://help.marine.copernicus.eu/en/articles/4444611-how-to-cite-or-reference-copernicus-marine-products-and-services)\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00170\n\n**References:**\n\n* Marullo, S., Santoleri, R., Ciani, D., Le Borgne, P., P\u00e9r\u00e9, S., Pinardi, N., ... & Nardone, G. (2014). Combining model and geostationary satellite data to reconstruct hourly SST field over the Mediterranean Sea. Remote sensing of environment, 146, 11-23.\n* Buongiorno Nardelli B., C.Tronconi, A. Pisano, R.Santoleri, 2013: High and Ultra-High resolution processing of satellite Sea Surface Temperature data over Southern European Seas in the framework of MyOcean project, Rem. Sens. Env., 129, 1-16, doi:10.1016/j.rse.2012.10.012.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00170"}, "SST_GLO_SST_L4_REP_OBSERVATIONS_010_011": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-ice-area-fraction,sea-surface-temperature,sst-glo-sst-l4-rep-observations-010-011,target-application#seaiceclimate,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean OSTIA Sea Surface Temperature and Sea Ice Reprocessed", "missionStartDate": "1981-10-01T00:00:00Z", "abstract": "The OSTIA (Good et al., 2020) global sea surface temperature reprocessed product provides daily gap-free maps of foundation sea surface temperature and ice concentration (referred to as an L4 product) at 0.05deg.x 0.05deg. horizontal grid resolution, using in-situ and satellite data. This product provides the foundation Sea Surface Temperature, which is the temperature free of diurnal variability.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00168\n\n**References:**\n\n* Good, S.; Fiedler, E.; Mao, C.; Martin, M.J.; Maycock, A.; Reid, R.; Roberts-Jones, J.; Searle, T.; Waters, J.; While, J.; Worsfold, M. The Current Configuration of the OSTIA System for Operational Production of Foundation Sea Surface Temperature and Ice Concentration Analyses. Remote Sens. 2020, 12, 720, doi:10.3390/rs12040720\n", "providers": [{"name": "Met Office (UK)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00168"}, "SST_BS_SST_L4_NRT_OBSERVATIONS_010_006": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "black-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-surface-temperature,sst-bs-sst-l4-nrt-observations-010-006,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea High Resolution and Ultra High Resolution Sea Surface Temperature Analysis", "missionStartDate": "2008-01-01T00:00:00Z", "abstract": "For the Black Sea (BS), the CNR BS Sea Surface Temperature (SST) processing chain providess daily gap-free (L4) maps at high (HR 0.0625\u00b0) and ultra-high (UHR 0.01\u00b0) spatial resolution over the Black Sea. Remotely-sensed L4 SST datasets are operationally produced and distributed in near-real time by the Consiglio Nazionale delle Ricerche - Gruppo di Oceanografia da Satellite (CNR-GOS). These SST products are based on the nighttime images collected by the infrared sensors mounted on different satellite platforms, and cover the Southern European Seas. The main upstream data currently used include SLSTR-3A/3B, VIIRS-N20/NPP, Metop-B/C AVHRR and SEVIRI. The CNR-GOS processing chain includes several modules, from the data extraction and preliminary quality control, to cloudy pixel removal and satellite images collating/merging. A two-step algorithm finally allows to interpolate SST data at high (HR 0.0625\u00b0) and ultra-high (UHR 0.01\u00b0) spatial resolution, applying statistical techniques. These L4 data are also used to estimate the SST anomaly with respect to a pentad climatology. The basic design and the main algorithms used are described in the following papers.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00159\n\n**References:**\n\n* Buongiorno Nardelli B., S. Colella, R. Santoleri, M. Guarracino, A. Kholod, 2009: A re-analysis of Black Sea Surface Temperature, J. Mar. Sys.., doi:10.1016/j.jmarsys.2009.07.001\n* Buongiorno Nardelli B., C.Tronconi, A. Pisano, R.Santoleri, 2013: High and Ultra-High resolution processing of satellite Sea Surface Temperature data over Southern European Seas in the framework of MyOcean project, Rem. Sens. Env., 129, 1-16, doi:10.1016/j.rse.2012.10.012.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00159"}, "OCEANCOLOUR_BLK_BGC_L4_NRT_009_152": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "black-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,near-real-time,oceancolour-blk-bgc-l4-nrt-009-152,oceanographic-geographical-features,satellite-observation,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea, Bio-Geo-Chemical, L4, monthly means, daily gapfree and climatology Satellite Observations (Near Real Time)", "missionStartDate": "2022-01-01T00:00:00Z", "abstract": "For the **Black Sea** Ocean **Satellite Observations**, the Italian National Research Council (CNR \u2013 Rome, Italy), is providing **Bio-Geo_Chemical (BGC)** regional datasets:\n* **_plankton**_ with the phytoplankton chlorophyll concentration (CHL) evaluated via region-specific algorithms (Zibordi et al., 2015; Kajiyama et al., 2018), and the interpolated **gap-free** Chl concentration (to provide a \"\"cloud free\"\" product) estimated by means of a modified version of the DINEOF algorithm (Volpe et al., 2018)\n* **_transparency**_ with the diffuse attenuation coefficient of light at 490 nm (KD490) (for **\"\"multi**\"\" observations achieved via region-specific algorithm, Volpe et al., 2019)\n\n**Upstreams**: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **\"\"multi\"\"** products, and OLCI-S3A & S3B for the **\"\"olci\"\"** products\n\n**Temporal resolutions**: monthly and daily (for **\"\"gap-free\"\"** data)\n\n**Spatial resolutions**: 1 km for **\"\"multi\"\"** and 300 meters for **\"\"olci\"\"**\n\nTo find this product in the catalogue, use the search keyword **\"\"OCEANCOLOUR_BLK_BGC_L4_NRT\"\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00302\n\n**References:**\n\n* Kajiyama T., D. D\u2019Alimonte, and G. Zibordi, \u201cAlgorithms merging for the determination of Chlorophyll-a concentration in the Black Sea,\u201d IEEE Geoscience and Remote Sensing Letters, 2018. [Online]. Available: https://-www.doi.org/\u00ac10.1+D7109/\u00acLGRS.2018.2883539\n* Volpe, G., Buongiorno Nardelli, B., Colella, S., Pisano, A. and Santoleri, R. (2018). An Operational Interpolated Ocean Colour Product in the Mediterranean Sea, in New Frontiers in Operational Oceanography, edited by E. P. Chassignet, A. Pascual, J. Tintor\u00e8, and J. Verron, pp. 227\u2013244\n* Zibordi, G., F. Me\u0301lin, J.-F. Berthon, and M. Talone (2015). In situ autonomous optical radiometry measurements for satellite ocean color validation in the Western Black Sea. Ocean Sci., 11, 275\u2013286.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00302"}, "SEALEVEL_MED_PHY_MDT_L4_STATIC_008_066": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,invariant,level-4,marine-resources,marine-safety,mediterranean-sea,oceanographic-geographical-features,sea-surface-height-above-geoid,sealevel-med-phy-mdt-l4-static-008-066,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "MEDITERRANEAN SEA MEAN DYNAMIC TOPOGRAPHY", "missionStartDate": "2003-01-01T00:00:00Z", "abstract": "The Mean Dynamic Topography MDT-CMEMS_2020_MED is an estimate of the mean over the 1993-2012 period of the sea surface height above geoid for the Mediterranean Sea. This is consistent with the reference time period also used in the SSALTO DUACS products\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00151", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00151"}, "SEALEVEL_GLO_PHY_MDT_008_063": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,baltic-sea,coastal-marine-environment,global-ocean,iberian-biscay-irish-seas,invariant,level-4,marine-resources,marine-safety,north-west-shelf-seas,oceanographic-geographical-features,sea-surface-height-above-geoid,sealevel-glo-phy-mdt-008-063,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "GLOBAL OCEAN MEAN DYNAMIC TOPOGRAPHY", "missionStartDate": "2003-01-01T00:00:00Z", "abstract": "Mean Dynamic Topography that combines the global CNES-CLS-2022 MDT, the Black Sea CMEMS2020 MDT and the Med Sea CMEMS2020 MDT. It is an estimate of the mean over the 1993-2012 period of the sea surface height above geoid. This is consistent with the reference time period also used in the DUACS products\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00150", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00150"}, "INSITU_ARC_PHYBGCWAV_DISCRETE_MYNRT_013_031": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 2", "keywords": "arctic-ocean,coastal-marine-environment,direction-of-sea-water-velocity,in-situ-observation,insitu-arc-phybgcwav-discrete-mynrt-013-031,level-2,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,moles-of-oxygen-per-unit-mass-in-sea-water,near-real-time,oceanographic-geographical-features,sea-surface-wave-from-direction,sea-surface-wave-mean-period,sea-surface-wave-significant-height,sea-water-practical-salinity,sea-water-speed,sea-water-temperature,water-surface-height-above-reference-datum,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean- In Situ Near Real Time Observations", "missionStartDate": "1841-03-21T00:00:00Z", "abstract": "Arctic Oceans - near real-time (NRT) in situ quality controlled observations, hourly updated and distributed by INSTAC within 24-48 hours from acquisition in average\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00031", "providers": [{"name": "IMR (Norway)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00031"}, "WAVE_GLO_PHY_SWH_L4_MY_014_007": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,baltic-sea,black-sea,coastal-marine-environment,global-ocean,iberian-biscay-irish-seas,level-4,marine-resources,marine-safety,mediterranean-sea,multi-year,north-west-shelf-seas,oceanographic-geographical-features,satellite-observation,sea-surface-wave-significant-height,sea-surface-wave-significant-height-daily-maximum,sea-surface-wave-significant-height-daily-mean,sea-surface-wave-significant-height-daily-number-of-observations,sea-surface-wave-significant-height-daily-standard-deviation,sea-surface-wave-significant-height-mapping-score,sea-surface-wave-significant-height-number-of-observations,wave-glo-phy-swh-l4-my-014-007,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "GLOBAL OCEAN L4 SIGNIFICANT WAVE HEIGHT FROM REPROCESSED SATELLITE MEASUREMENTS", "missionStartDate": "2002-01-15T00:00:00Z", "abstract": "Multi-Year gridded multi-mission merged satellite significant wave height. Only valid data are included. This Multi-Year product is processed by the WAVE-TAC multi-mission altimeter data processing system and is based on CMEMS Multi-Year level-3 SWH datasets (see the product WAVE_GLO_PHY_SWH_L3_MY_014_005).\nIt merges along-track SWH data from the following missions: Jason-1, Jason-2, Envisat, Cryosat-2, SARAL/AltiKa, Jason-3 and CFOSAT. The resulting gridded product has a 2\u00b0 horizontal resolution and is produced daily. Different SWH fields are produced: VAVH_DAILY fields are daily statistics computed from all available level 3 along-track measurements from 00 UTC until 23:59 UTC ; VAVH_INST field provides an estimate of the instantaneous wave field at 12:00UTC (noon), using all available Level 3 along-track measurements and accounting for their spatial and temporal proximity.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00177", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00177"}, "ARCTIC_ANALYSISFORECAST_PHY_TIDE_002_015": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-analysisforecast-phy-tide-002-015,arctic-ocean,coastal-marine-environment,forecast,level-4,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,sea-surface-elevation,weather-climate-and-seasonal-forecasting,x-sea-water-velocity,y-sea-water-velocity", "license": "proprietary", "title": "Arctic Ocean Tidal Analysis and Forecast", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "The Arctic Ocean Surface Currents Analysis and Forecast system uses the HYCOM model at 3 km resolution forced with tides at its lateral boundaries, surface winds sea level pressure from the ECMWF (European Centre for Medium-Range Weather Forecasts) and wave terms (Stokes-Coriolis drift, stress and parameterisation of mixing by Langmuir cells) from the Arctic wave forecast. HYCOM runs daily providing 10 days forecast. The output variables are the surface currents and sea surface heights, provided at 15 minutes frequency, which therefore include mesoscale signals (though without data assimilation so far), tides and storm surge signals. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00005", "providers": [{"name": "MET Norway", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00005"}, "SEAICE_ARC_PHY_CLIMATE_L3_MY_011_021": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "arctic-ocean,coastal-marine-environment,level-3,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-ice-surface-temperature,sea-surface-temperature,seaice-arc-phy-climate-l3-my-011-021,target-application#seaiceclimate,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean - Sea and Ice Surface Temperature REPROCESSED", "missionStartDate": "1982-01-01T00:00:00Z", "abstract": "Arctic Sea and Ice surface temperature\n\n**Detailed description:** \nArctic Sea and Ice surface temperature product based upon reprocessed AVHRR, (A)ATSR and SLSTR SST observations from the ESA CCI project, the Copernicus C3S project and the AASTI dataset. The product is a daily interpolated field with a 0.05 degrees resolution, and covers surface temperatures in the ocean, the sea ice and the marginal ice zone.\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00315", "providers": [{"name": "DMI (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00315"}, "OCEANCOLOUR_GLO_BGC_L4_NRT_009_102": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,global-ocean,kd490,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-diatoms-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-dinophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-greenalgae-and-prochlorophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-haptophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-microphytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-nanophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prochlorococcus-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prokaryotes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-suspended-particulate-matter-in-sea-water,near-real-time,oceancolour-glo-bgc-l4-nrt-009-102,oceanographic-geographical-features,primary-production-of-biomass-expressed-as-carbon,satellite-observation,secchi-depth-of-sea-water,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-absorption-coefficient-of-radiative-flux-in-sea-water-due-to-dissolved-organic-matter-and-non-algal-particles,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting,zsd", "license": "proprietary", "title": "Global Ocean Colour (Copernicus-GlobColour), Bio-Geo-Chemical, L4 (monthly and interpolated) from Satellite Observations (Near Real Time)", "missionStartDate": "2023-04-01T00:00:00Z", "abstract": "For the **Global** Ocean **Satellite Observations**, ACRI-ST company (Sophia Antipolis, France) is providing **Bio-Geo-Chemical (BGC)** products based on the **Copernicus-GlobColour** processor.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **\"multi\"** products, and S3A & S3B only for the **\"olci\"** products.\n* Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional types and sizes (**PFT**), Primary Production (**PP**), Suspended Matter (**SPM**), Secchi Transparency Depth (**ZSD**), Diffuse Attenuation (**KD490**), Particulate Backscattering (**BBP**), Absorption Coef. (**CDM**) and Reflectance (**RRS**).\n\n* Temporal resolutions: **monthly** plus, for some variables, **daily gap-free** based on a space-time interpolation to provide a \"cloud free\" product.\n* Spatial resolutions: **4 km** and a finer resolution based on olci **300 meters** inputs.\n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\nTo find the **Copernicus-GlobColour** products in the catalogue, use the search keyword **\"GlobColour\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00279", "providers": [{"name": "ACRI (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00279"}, "WIND_GLO_PHY_L4_MY_012_006": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "air-density,coastal-marine-environment,eastward-wind,global-ocean,level-4,marine-resources,marine-safety,multi-year,northward-wind,numerical-model,oceanographic-geographical-features,satellite-observation,stress-curl,stress-divergence,surface-downward-eastward-stress,surface-downward-northward-stress,weather-climate-and-seasonal-forecasting,wind-curl,wind-divergence,wind-glo-phy-l4-my-012-006", "license": "proprietary", "title": "Global Ocean Hourly Reprocessed Sea Surface Wind and Stress from Scatterometer and Model", "missionStartDate": "1994-06-01T00:00:00Z", "abstract": "For the Global Ocean - The product contains hourly Level-4 sea surface wind and stress fields at 0.125 and 0.25 degrees horizontal spatial resolution. Scatterometer observations and their collocated European Centre for Medium-Range Weather Forecasts (ECMWF) ERA5 reanalysis model variables are used to calculate temporally-averaged difference fields. These fields are used to correct for persistent biases in hourly ECMWF ERA5 model fields. Bias corrections are based on scatterometer observations from Metop-A, Metop-B, Metop-C ASCAT (0.125 degrees) and QuikSCAT SeaWinds, ERS-1 and ERS-2 SCAT (0.25 degrees). The product provides stress-equivalent wind and stress variables as well as their divergence and curl. The applied bias corrections, the standard deviation of the differences (for wind and stress fields) and difference of variances (for divergence and curl fields) are included in the product.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00185", "providers": [{"name": "KNMI (The Netherlands)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00185"}, "SEAICE_ANT_PHY_L3_MY_011_018": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "antarctic-ocean,coastal-marine-environment,eastward-sea-ice-velocity,level-3,marine-resources,marine-safety,multi-year,northward-sea-ice-velocity,oceanographic-geographical-features,satellite-observation,seaice-ant-phy-l3-my-011-018,target-application#seaiceclimate,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Antarctic Ocean Sea Ice Drift REPROCESSED", "missionStartDate": "2003-04-01T00:00:00Z", "abstract": "Antarctic sea ice displacement during winter from medium resolution sensors since 2002\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00120", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00120"}, "SEAICE_ARC_PHY_CLIMATE_L4_MY_011_016": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,coastal-marine-environment,level-4,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-ice-surface-temperature,sea-surface-temperature,seaice-arc-phy-climate-l4-my-011-016,target-application#seaiceclimate,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean - Sea and Ice Surface Temperature REPROCESSED", "missionStartDate": "1982-01-01T00:00:00Z", "abstract": "Arctic Sea and Ice surface temperature\n\n**Detailed description:**\nArctic Sea and Ice surface temperature product based upon reprocessed AVHRR, (A)ATSR and SLSTR SST observations from the ESA CCI project, the Copernicus C3S project and the AASTI dataset. The product is a daily interpolated field with a 0.05 degrees resolution, and covers surface temperatures in the ocean, the sea ice and the marginal ice zone.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00123", "providers": [{"name": "DMI (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00123"}, "SST_GLO_SST_L4_REP_OBSERVATIONS_010_024": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "analysed-sst-uncertainty,coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-ice-area-fraction,sea-water-temperature,sea-water-temperature-standard-error,sst-glo-sst-l4-rep-observations-010-024,target-application#seaiceclimate,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "ESA SST CCI and C3S reprocessed sea surface temperature analyses", "missionStartDate": "1981-09-01T00:00:00Z", "abstract": "The ESA SST CCI and C3S global Sea Surface Temperature Reprocessed product provides gap-free maps of daily average SST at 20 cm depth at 0.05deg. x 0.05deg. horizontal grid resolution, using satellite data from the (A)ATSRs, SLSTR and the AVHRR series of sensors (Merchant et al., 2019). The ESA SST CCI and C3S level 4 analyses were produced by running the Operational Sea Surface Temperature and Sea Ice Analysis (OSTIA) system (Good et al., 2020) to provide a high resolution (1/20deg. - approx. 5km grid resolution) daily analysis of the daily average sea surface temperature (SST) at 20 cm depth for the global ocean. Only (A)ATSR, SLSTR and AVHRR satellite data processed by the ESA SST CCI and C3S projects were used, giving a stable product. It also uses reprocessed sea-ice concentration data from the EUMETSAT OSI-SAF (OSI-450 and OSI-430; Lavergne et al., 2019).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00169\n\n**References:**\n\n* Good, S., Fiedler, E., Mao, C., Martin, M.J., Maycock, A., Reid, R., Roberts-Jones, J., Searle, T., Waters, J., While, J., Worsfold, M. The Current Configuration of the OSTIA System for Operational Production of Foundation Sea Surface Temperature and Ice Concentration Analyses. Remote Sens. 2020, 12, 720, doi:10.3390/rs12040720.\n* Lavergne, T., S\u00f8rensen, A. M., Kern, S., Tonboe, R., Notz, D., Aaboe, S., Bell, L., Dybkj\u00e6r, G., Eastwood, S., Gabarro, C., Heygster, G., Killie, M. A., Brandt Kreiner, M., Lavelle, J., Saldo, R., Sandven, S., and Pedersen, L. T.: Version 2 of the EUMETSAT OSI SAF and ESA CCI sea-ice concentration climate data records, The Cryosphere, 13, 49-78, doi:10.5194/tc-13-49-2019, 2019.\n* Merchant, C.J., Embury, O., Bulgin, C.E. et al. Satellite-based time-series of sea-surface temperature since 1981 for climate applications. Sci Data 6, 223 (2019) doi:10.1038/s41597-019-0236-x.\n", "providers": [{"name": "Met Office (UK)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00169"}, "INSITU_GLO_BGC_DISCRETE_MY_013_046": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 2", "keywords": "coastal-marine-environment,global-ocean,in-situ-observation,insitu-glo-bgc-discrete-my-013-046,level-2,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mole-concentration-of-nitrate-in-sea-water,mole-concentration-of-phosphate-in-sea-water,mole-concentration-of-silicate-in-sea-water,moles-of-oxygen-per-unit-mass-in-sea-water,multi-year,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean - Delayed Mode Biogeochemical product", "missionStartDate": "1901-01-01T08:00:00Z", "abstract": "For the Global Ocean- In-situ observation delivered in delayed mode. This In Situ delayed mode product integrates the best available version of in situ oxygen, chlorophyll / fluorescence and nutrients data.\n\n**DOI (product):** \nhttps://doi.org/10.17882/86207", "providers": [{"name": "IMR (Norway)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.17882/86207"}, "ANTARCTIC_OMI_SI_extent": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "antarctic-omi-si-extent,coastal-marine-environment,global-ocean,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,sea-ice-extent,target-application#seaiceinformation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Antarctic Sea Ice Extent from Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nEstimates of Antarctic sea ice extent are obtained from the surface of oceans grid cells that have at least 15% sea ice concentration. These values are cumulated in the entire Southern Hemisphere (excluding ice lakes) and from 1993 up to real time aiming to:\ni) obtain the Antarctic sea ice extent as expressed in millions of km squared (106 km2) to monitor both the large-scale variability and mean state and change.\nii) to monitor the change in sea ice extent as expressed in millions of km squared per decade (106 km2/decade), or in sea ice extent loss/gain since the beginning of the time series as expressed in percent per decade (%/decade; reference period being the first date of the key figure b) dot-dashed trend line, Vaughan et al., 2013)). For the Southern Hemisphere, these trends are calculated from the annual mean values.\nThe Antarctic sea ice extent used here is based on the \u201cmulti-product\u201d approach as introduced in the second issue of the Ocean State Report (CMEMS OSR, 2017). Five global products have been used to build the ensemble mean, and its associated ensemble spread.\n\n**CONTEXT**\n\nSea ice is frozen seawater that floats on the ocean surface. This large blanket of millions of square kilometers insulates the relatively warm ocean waters from the cold polar atmosphere. The seasonal cycle of the sea ice, forming and melting with the polar seasons, impacts both human activities and biological habitat. Knowing how and how much the sea ice cover is changing is essential for monitoring the health of the Earth as sea ice is one of the highest sensitive natural environments. Variations in sea ice cover can induce changes in ocean stratification and modify the key rule played by the cold poles in the Earth engine (IPCC, 2019). \nThe sea ice cover is monitored here in terms of sea ice extent quantity. More details and full scientific evaluations can be found in the CMEMS Ocean State Report (Samuelsen et al., 2016; Samuelsen et al., 2018).\n \n**CMEMS KEY FINDINGS**\n\nWith quasi regular highs and lows, the annual Antarctic sea ice extent shows large variability until several monthly record high in 2014 and record lows in 2017 and 2018. Since the year 1993, the Southern Hemisphere annual sea ice extent regularly alternates positive and negative trend. The period 1993-2018 have seen a slight decrease at a rate of -0.01*106km2 per decade. This represents a loss amount of 0.1% per decade of Southern Hemisphere sea ice extent during this period; with however large uncertainties. The last quarter of the year 2016 and years 2017 and 2018 experienced unusual losses of ice. 2019 is not a record year, but the summer of 2019 remains among the lowest since the 1990s. \n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00186\n\n**References:**\n\n* IPCC Special Report on the Ocean and Cryosphere in a Changing Climate. (2019). In H. O. P\u00f6rtner, D. C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Nicolai, A. Okem, J. Petzold, B. Rama, & N. M. Weyer (Eds.), IPCC Intergovernmental Panel on Climate Change: Geneva, Switzerland. https://www.ipcc.ch/srocc/\n* Samuelsen et al., 2016: Sea Ice In: The Copernicus Marine Environment Monitoring Service Ocean State Report, issue 1, Journal of Operational Oceanography, 9, 2016, http://dx.doi.org/10.1080/1755876X.2016.1273446.\n* Samuelsen et al., 2018: Sea Ice. In: The Copernicus Marine Environment Monitoring Service Ocean State Report, issue 2, Journal of Operational Oceanography, 11:sup1, 2018, DOI: 10.1080/1755876X.2018.1489208.\n* Vaughan, D.G., J.C. Comiso, I. Allison, J. Carrasco, G. Kaser, R. Kwok, P. Mote, T. Murray, F. Paul, J. Ren, E. Rignot, O. Solomina, K. Steffen and T. Zhang, 2013: Observations: Cryosphere. In: Climate Change 2013: The Physical Science Basis. Contribution of Working Group I to the Fifth Assessment Report of the Intergovernmental Panel on Climate Change [Stocker, T.F., D. Qin, G.-K. Plattner, M.Tignor, S.K. Allen, J. Boschung, A. Nauels, Y. Xia, V. Bex and P.M. Midgley (eds.)]. Cambridge University Press, Cambridge, United Kingdom and New York, NY, USA, pp. 317\u2013382, doi:10.1017/CBO9781107415324.012.\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00186"}, "ARCTIC_ANALYSIS_FORECAST_WAV_002_014": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-analysis-forecast-wav-002-014,arctic-ocean,coastal-marine-environment,forecast,level-4,marine-resources,marine-safety,near-real-time,numerical-model,oceanographic-geographical-features,sea-floor-depth-below-sea-level,sea-ice-area-fraction,sea-surface-primary-swell-wave-from-direction,sea-surface-primary-swell-wave-mean-period,sea-surface-primary-swell-wave-significant-height,sea-surface-secondary-swell-wave-from-direction,sea-surface-secondary-swell-wave-mean-period,sea-surface-secondary-swell-wave-significant-height,sea-surface-wave-from-direction,sea-surface-wave-from-direction-at-spectral-peak,sea-surface-wave-maximum-crest-height,sea-surface-wave-maximum-height,sea-surface-wave-mean-period-from-variance-spectral-density-inverse-frequency-moment,sea-surface-wave-mean-period-from-variance-spectral-density-second-frequency-moment,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,sea-surface-wave-stokes-drift-x-velocity,sea-surface-wave-stokes-drift-y-velocity,sea-surface-wind-wave-from-direction,sea-surface-wind-wave-mean-period,sea-surface-wind-wave-significant-height,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean Wave Analysis and Forecast", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "The Arctic Ocean Wave Analysis and Forecast system uses the WAM model at 3 km resolution forced with surface winds and boundary wave spectra from the ECMWF (European Centre for Medium-Range Weather Forecasts) together with currents and ice from the ARC MFC analysis (Sea Ice concentration and thickness). WAM runs twice daily providing one hourly 10 days forecast and one hourly 5 days forecast. From the output variables the most commonly used are significant wave height, peak period and mean direction.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00002", "providers": [{"name": "MET Norway", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00002"}, "ARCTIC_OMI_TEMPSAL_FWC": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "arctic-ocean,arctic-omi-tempsal-fwc,coastal-marine-environment,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Freshwater Content from Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nEstimates of Arctic liquid Freshwater Content (FWC in meters) are obtained from integrated differences of the measured salinity and a reference salinity (set to 34.8) from the surface to the bottom per unit area in the Arctic region with a water depth greater than 500m as function of salinity (S), the vertical cell thickness of the dataset (dz) and the salinity reference (Sref). Waters saltier than the 34.8 reference are not included in the estimation. The regional FWC values from 1993 up to real time are then averaged aiming to:\n* obtain the mean FWC as expressed in cubic km (km3) \n* monitor the large-scale variability and change of liquid freshwater stored in the Arctic Ocean (i.e. the change of FWC in time).\n\n**CONTEXT**\n\nThe Arctic region is warming twice as fast as the global mean and its climate is undergoing unprecedented and drastic changes, affecting all the components of the Arctic system. Many of these changes affect the hydrological cycle. Monitoring the storage of freshwater in the Arctic region is essential for understanding the contemporary Earth system state and variability. Variations in Arctic freshwater can induce changes in ocean stratification. Exported southward downstream, these waters have potential future implications for global circulation and heat transport. \n\n**CMEMS KEY FINDINGS**\n\nSince 1993, the Arctic Ocean freshwater has experienced a significant increase of 423 \u00b1 39 km3/year. The year 2016 witnessed the highest freshwater content in the Artic since the last 24 years. Second half of 2016 and first half of 2017 show a substantial decrease of the FW storage. \n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00193\n\n**References:**\n\n* G. Garric, O. Hernandez, C. Bricaud, A. Storto, K. A. Peterson, H. Zuo, 2018: Arctic Ocean freshwater content. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, s70\u2013s72, DOI: 10.1080/1755876X.2018.1489208\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00193"}, "INSITU_MED_PHYBGCWAV_DISCRETE_MYNRT_013_035": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 2", "keywords": "coastal-marine-environment,direction-of-sea-water-velocity,in-situ-observation,insitu-med-phybgcwav-discrete-mynrt-013-035,level-2,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mediterranean-sea,moles-of-oxygen-per-unit-mass-in-sea-water,near-real-time,oceanographic-geographical-features,sea-surface-wave-from-direction,sea-surface-wave-mean-period,sea-surface-wave-significant-height,sea-water-practical-salinity,sea-water-speed,sea-water-temperature,water-surface-height-above-reference-datum,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea- In-Situ Near Real Time Observations", "missionStartDate": "2024-01-28T00:00:00Z", "abstract": "Mediterranean Sea - near real-time (NRT) in situ quality controlled observations, hourly updated and distributed by INSTAC within 24-48 hours from acquisition in average\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00044", "providers": [{"name": "HCMR (Greece)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00044"}, "ARCTIC_OMI_SI_Transport_NordicSeas": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,arctic-omi-si-transport-nordicseas,coastal-marine-environment,level-4,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,sea-ice-concentration-and/or-thickness,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Sea Ice Area/Volume Transport in the Nordic Seas from Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nNet sea-ice volume and area transport through the openings Fram Strait between Spitsbergen and Greenland along 79\u00b0N, 20\u00b0W - 10\u00b0E (positive southward); northern Barents Sea between Svalbard and Franz Josef Land archipelagos along 80\u00b0N, 27\u00b0E - 60\u00b0E (positive southward); eastern Barents Sea between the Novaya Zemlya and Franz Josef Land archipelagos along 60\u00b0E, 76\u00b0N - 80\u00b0N (positive westward). For further details, see Lien et al. (2021).\n\n**CONTEXT**\n\nThe Arctic Ocean contains a large amount of freshwater, and the freshwater export from the Arctic to the North Atlantic influence the stratification, and, the Atlantic Meridional Overturning Circulation (e.g., Aagaard et al., 1985). The Fram Strait represents the major gateway for freshwater transport from the Arctic Ocean, both as liquid freshwater and as sea ice (e.g., Vinje et al., 1998). The transport of sea ice through the Fram Strait is therefore important for the mass balance of the perennial sea-ice cover in the Arctic as it represents a large export of about 10% of the total sea ice volume every year (e.g., Rampal et al., 2011). Sea ice export through the Fram Strait has been found to explain a major part of the interannual variations in Arctic perennial sea ice volume changes (Ricker et al., 2018). The sea ice and associated freshwater transport to the Barents Sea has been suggested to be a driving mechanism for the presence of Arctic Water in the northern Barents Sea, and, hence, the presence of the Barents Sea Polar Front dividing the Barents Sea into a boreal and an Arctic part (Lind et al., 2018). In recent decades, the Arctic part of the Barents Sea has been giving way to an increasing boreal part, with large implications for the marine ecosystem and harvestable resources (e.g., Fossheim et al., 2015).\n\n**CMEMS KEY FINDINGS**\n\nThe sea-ice transport through the Fram Strait shows a distinct seasonal cycle in both sea ice area and volume transport, with a maximum in winter. There is a slight positive trend in the volume transport over the last two and a half decades. In the Barents Sea, a strong reduction of nearly 90% in average sea-ice thickness has diminished the sea-ice import from the Polar Basin (Lien et al., 2021). In both areas, the Fram Strait and the Barents Sea, the winds governed by the regional patterns of atmospheric pressure is an important driving force of temporal variations in sea-ice transport (e.g., Aaboe et al., 2021; Lien et al., 2021).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00192\n\n**References:**\n\n* Aaboe S, Lind S, Hendricks S, Down E, Lavergne T, Ricker R. 2021. Sea-ice and ocean conditions surprisingly normal in the Svalbard-Barents Sea region after large sea-ice inflows in 2019. In: Copernicus Marine Environment Monitoring Service Ocean State Report, issue 5, J Oper Oceanogr. 14, sup1, 140-148\n* Aagaard K, Swift JH, Carmack EC. 1985. Thermohaline circulation in the Arctic Mediterranean seas. J Geophys Res. 90(C7), 4833-4846\n* Fossheim M, Primicerio R, Johannesen E, Ingvaldsen RB, Aschan MM, Dolgov AV. 2015. Recent warming leads to a rapid borealization of fish communities in the Arctic. Nature Clim Change. doi:10.1038/nclimate2647\n* Lien VS, Raj RP, Chatterjee S. 2021. Modelled sea-ice volume and area transport from the Arctic Ocean to the Nordic and Barents seas. In: Copernicus Marine Environment Monitoring Service Ocean State Report, issue 5, J Oper Oceanogr. 14, sup1, 10-17\n* Lind S, Ingvaldsen RB, Furevik T. 2018. Arctic warming hotspot in the northern Barents Sea linked to declining sea ice import. Nature Clim Change. doi:10.1038/s41558-018-0205-y\n* Rampal P, Weiss J, Dubois C, Campin J-M. 2011. IPCC climate models do not capture Arctic sea ice drift acceleration: Consequences in terms of projected sea ice thinning and decline. J Geophys Res. 116, C00D07. https://doi.org/10.1029/2011JC007110\n* Ricker R, Girard-Ardhuin F, Krumpen T, Lique C. 2018. Satellite-derived sea ice export and its impact on Arctic ice mass balance. Cryosphere. 12, 3017-3032\n* Vinje T, Nordlund N, Kvambekk \u00c5. 1998. Monitoring ice thickness in Fram Strait. J Geophys Res. 103(C5), 10437-10449\n", "providers": [{"name": "NERSC (Norway)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00192"}, "ARCTIC_OMI_SI_extent": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "arctic-ocean,arctic-omi-si-extent,coastal-marine-environment,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,sea-ice-extent,target-application#seaiceinformation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Sea Ice Extent from Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nEstimates of Arctic sea ice extent are obtained from the surface of oceans grid cells that have at least 15% sea ice concentration. These values are cumulated in the entire Northern Hemisphere (excluding ice lakes) and from 1993 up to the year 2019 aiming to:\ni) obtain the Arctic sea ice extent as expressed in millions of km square (106 km2) to monitor both the large-scale variability and mean state and change.\nii) to monitor the change in sea ice extent as expressed in millions of km squared per decade (106 km2/decade), or in sea ice extent loss since the beginning of the time series as expressed in percent per decade (%/decade; reference period being the first date of the key figure b) dot-dashed trend line, Vaughan et al., 2013). These trends are calculated in three ways, i.e. (i) from the annual mean values; (ii) from the March values (winter ice loss); (iii) from September values (summer ice loss).\nThe Arctic sea ice extent used here is based on the \u201cmulti-product\u201d approach as introduced in the second issue of the Ocean State Report (CMEMS OSR, 2017). Five global products have been used to build the ensemble mean, and its associated ensemble spread.\n\n**CONTEXT**\n\nSea ice is frozen seawater that floats on the ocean surface. This large blanket of millions of square kilometers insulates the relatively warm ocean waters from the cold polar atmosphere. The seasonal cycle of the sea ice, forming and melting with the polar seasons, impacts both human activities and biological habitat. Knowing how and how much the sea ice cover is changing is essential for monitoring the health of the Earth as sea ice is one of the highest sensitive natural environments. Variations in sea ice cover can induce changes in ocean stratification, in global and regional sea level rates and modify the key rule played by the cold poles in the Earth engine (IPCC, 2019). \nThe sea ice cover is monitored here in terms of sea ice extent quantity. More details and full scientific evaluations can be found in the CMEMS Ocean State Report (Samuelsen et al., 2016; Samuelsen et al., 2018).\n\n**CMEMS KEY FINDINGS**\n\nSince the year 1993 the Arctic sea ice extent has decreased significantly at an annual rate of -0.75*106 km2 per decade. This represents an amount of \u20135.8 % per decade of Arctic sea ice extent loss over the period 1993 to 2018. Summer (September) sea ice extent loss amounts to -1.18*106 km2/decade (September values), which corresponds to -14.85% per decade. Winter (March) sea ice extent loss amounts to -0.57*106 km2/decade, which corresponds to -3.42% per decade. These values slightly exceed the estimates given in the AR5 IPCC assessment report (estimate up to the year 2012) as a consequence of continuing Northern Hemisphere sea ice extent loss. Main change in the mean seasonal cycle is characterized by less and less presence of sea ice during summertime with time. The last twelve years have the twelve lowest summer minimums ever measured since 1993, the summer 2012 still being the lowest minimum. 2019 follows the recent trend of the 2010's with a summer and winter well below the 1990-2000's average. \n\nNote: The key findings will be updated annually in November, in line with OMI evolutions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00190\n\n**References:**\n\n* IPCC Special Report on the Ocean and Cryosphere in a Changing Climate. (2019). In H. O. P\u00f6rtner, D. C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Nicolai, A. Okem, J. Petzold, B. Rama, & N. M. Weyer (Eds.), IPCC Intergovernmental Panel on Climate Change: Geneva, Switzerland. https://www.ipcc.ch/srocc/\n* Samuelsen et al., 2016: Sea Ice In: The Copernicus Marine Environment Monitoring Service Ocean State Report, issue 1, Journal of Operational Oceanography, 9, 2016, http://dx.doi.org/10.1080/1755876X.2016.1273446.\n* Samuelsen et al., 2018: Sea Ice. In: The Copernicus Marine Environment Monitoring Service Ocean State Report, issue 2, Journal of Operational Oceanography, 11:sup1, 2018, DOI: 10.1080/1755876X.2018.1489208.\n* Vaughan, D.G., J.C. Comiso, I. Allison, J. Carrasco, G. Kaser, R. Kwok, P. Mote, T. Murray, F. Paul, J. Ren, E. Rignot, O. Solomina, K. Steffen and T. Zhang, 2013: Observations: Cryosphere. In: Climate Change 2013: The Physical Science Basis. Contribution of Working Group I to the Fifth Assessment Report of the Intergovernmental Panel on Climate Change [Stocker, T.F., D. Qin, G.-K. Plattner, M.Tignor, S.K. Allen, J. Boschung, A. Nauels, Y. Xia, V. Bex and P.M. Midgley (eds.)]. Cambridge University Press, Cambridge, United Kingdom and New York, NY, USA, pp. 317\u2013382, doi:10.1017/CBO9781107415324.012.\n", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00190"}, "SEALEVEL_EUR_PHY_L3_MY_008_061": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "baltic-sea,black-sea,coastal-marine-environment,iberian-biscay-irish-seas,level-3,marine-resources,marine-safety,mediterranean-sea,multi-year,north-west-shelf-seas,oceanographic-geographical-features,satellite-observation,sea-surface-height-above-geoid,sea-surface-height-above-sea-level,sealevel-eur-phy-l3-my-008-061,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "EUROPEAN SEAS ALONG-TRACK L3 SEA SURFACE HEIGHTS REPROCESSED (1993-ONGOING) TAILORED FOR DATA ASSIMILATION", "missionStartDate": "1992-10-03T07:53:03Z", "abstract": "Altimeter satellite along-track sea surface heights anomalies (SLA) computed with respect to a twenty-year [1993, 2012] mean with a 1Hz (~7km) sampling. It serves in delayed-time applications.\nThis product is processed by the DUACS multimission altimeter data processing system. It processes data from all altimeter missions available (e.g. Sentinel-6A, Jason-3, Sentinel-3A, Sentinel-3B, Saral/AltiKa, Cryosat-2, Jason-1, Jason-2, Topex/Poseidon, ERS-1, ERS-2, Envisat, Geosat Follow-On, HY-2A, HY-2B, etc). The system exploits the most recent datasets available based on the enhanced GDR/NTC production. All the missions are homogenized with respect to a reference mission. Part of the processing is fitted to the European Sea area. (see QUID document or http://duacs.cls.fr [](http://duacs.cls.fr) pages for processing details). \nThe product gives additional variables (e.g. Mean Dynamic Topography, Dynamic Atmospheric Correction, Ocean Tides, Long Wavelength Errors) that can be used to change the physical content for specific needs (see PUM document for details)\n\n\u201c\u2019Associated products\u201d\u2019\nA time invariant product https://resources.marine.copernicus.eu/product-detail/SEALEVEL_GLO_PHY_NOISE_L4_STATIC_008_033/INFORMATION describing the noise level of along-track measurements is available. It is associated to the sla_filtered variable. It is a gridded product. One file is provided for the global ocean and those values must be applied for Arctic and Europe products. For Mediterranean and Black seas, one value is given in the QUID document.\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00139", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00139"}, "INSITU_GLO_PHY_TS_OA_NRT_013_002": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,global-ocean,in-situ-observation,insitu-glo-phy-ts-oa-nrt-013-002,level-4,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,sea-water-salinity,sea-water-temperature,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean- Real time in-situ observations objective analysis", "missionStartDate": "2015-01-01T00:00:00Z", "abstract": "For the Global Ocean- Gridded objective analysis fields of temperature and salinity using profiles from the in-situ near real time database are produced monthly. Objective analysis is based on a statistical estimation method that allows presenting a synthesis and a validation of the dataset, providing a support for localized experience (cruises), providing a validation source for operational models, observing seasonal cycle and inter-annual variability.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00037", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00037"}, "INSITU_GLO_PHY_UV_DISCRETE_NRT_013_048": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 2", "keywords": "coastal-marine-environment,eastward-sea-water-velocity,global-ocean,in-situ-observation,insitu-glo-phy-uv-discrete-nrt-013-048,level-2,marine-resources,marine-safety,near-real-time,northward-sea-water-velocity,oceanographic-geographical-features,sea-water-temperature,surface-eastward-sea-water-velocity,surface-northward-sea-water-velocity,upward-sea-water-velocity,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean- in-situ Near real time observations of ocean currents", "missionStartDate": "1986-06-02T09:00:00Z", "abstract": "This product is entirely dedicated to ocean current data observed in near-real time. Current data from 3 different types of instruments are distributed:\n* The near-surface zonal and meridional velocities calculated along the trajectories of the drifting buoys which are part of the DBCP\u2019s Global Drifter Program. These data are delivered together with wind stress components and surface temperature. \n* The near-surface zonal and meridional total velocities, and near-surface radial velocities, measured by High Frequency radars that are part of the European High Frequency radar Network. These data are delivered together with standard deviation of near-surface zonal and meridional raw velocities, Geometrical Dilution of Precision (GDOP), quality flags and metadata.\n* The zonal and meridional velocities, at parking depth and in surface, calculated along the trajectories of the floats which are part of the Argo Program.\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00041", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00041"}, "OCEANCOLOUR_ATL_BGC_L4_NRT_009_116": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "chl,coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-diatoms-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-dinophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-greenalgae-and-prochlorophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-haptophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-microphytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-nanophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prochlorococcus-expressed-as-chlorophyll-in-sea-water,near-real-time,oceancolour-atl-bgc-l4-nrt-009-116,oceanographic-geographical-features,pft,pp,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic Ocean Colour (Copernicus-GlobColour), Bio-Geo-Chemical, L4 (daily interpolated) from Satellite Observations (Near Real Time)", "missionStartDate": "2023-04-27T00:00:00Z", "abstract": "For the **Global** Ocean **Satellite Observations**, ACRI-ST company (Sophia Antipolis, France) is providing **Bio-Geo-Chemical (BGC)** products based on the **Copernicus-GlobColour** processor.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **\"multi\"** products, and S3A & S3B only for the **\"olci\"** products.\n* Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional types and sizes (**PFT**), Primary Production (**PP**).\n\n* Temporal resolutions: **monthly** plus, for some variables, **daily gap-free** based on a space-time interpolation to provide a \"cloud free\" product.\n* Spatial resolutions: **1 km**.\n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\nTo find the **Copernicus-GlobColour** products in the catalogue, use the search keyword **\"GlobColour\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00288", "providers": [{"name": "ACRI (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00288"}, "ARCTIC_MULTIYEAR_BGC_002_005": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-multiyear-bgc-002-005,arctic-ocean,coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mole-concentration-of-dissolved-molecular-oxygen-in-sea-water,mole-concentration-of-nitrate-in-sea-water,mole-concentration-of-phosphate-in-sea-water,mole-concentration-of-phytoplankton-expressed-as-carbon-in-sea-water,mole-concentration-of-silicate-in-sea-water,mole-concentration-of-zooplankton-expressed-as-carbon-in-sea-water,multi-year,net-primary-production-of-biomass-expressed-as-carbon-per-unit-volume-in-sea-water,numerical-model,nutrients-(o2-n-p),oceanographic-geographical-features,satellite-chlorophyll,sea-floor-depth-below-sea-level,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean Biogeochemistry Reanalysis", "missionStartDate": "2007-01-01T00:00:00Z", "abstract": "The TOPAZ-ECOSMO reanalysis system assimilates satellite chlorophyll observations and in situ nutrient profiles. The model uses the Hybrid Coordinate Ocean Model (HYCOM) coupled online to a sea ice model and the ECOSMO biogeochemical model. It uses the Determinstic version of the Ensemble Kalman Smoother to assimilate remotely sensed colour data and nutrient profiles. Data assimilation, including the 80-member ensemble production, is performed every 8-days. Atmospheric forcing fields from the ECMWF ERA-5 dataset are used.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00006\n\n**References:**\n\n* Simon, E., Samuelsen, A., Bertino, L. and Mouysset, S.: Experiences in multiyear combined state-parameter estimation with an ecosystem model of the North Atlantic and Arctic Oceans using the Ensemble Kalman Filter, J. Mar. Syst., 152, 1\u201317, doi:10.1016/j.jmarsys.2015.07.004, 2015.\n", "providers": [{"name": "NERSC (Norway)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00006"}, "ARCTIC_MULTIYEAR_PHY_002_003": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-multiyear-phy-002-003,arctic-ocean,coastal-marine-environment,in-situ-ts-profiles,level-4,marine-resources,marine-safety,multi-year,numerical-model,ocean-barotropic-streamfunction,ocean-mixed-layer-thickness,oceanographic-geographical-features,sea-floor-depth-below-sea-level,sea-ice-area-fraction,sea-ice-concentration-and/or-thickness,sea-ice-thickness,sea-ice-x-velocity,sea-ice-y-velocity,sea-level,sea-surface-elevation,sea-water-potential-temperature,sea-water-potential-temperature-at-sea-floor,sea-water-salinity,sst,surface-snow-thickness,weather-climate-and-seasonal-forecasting,x-sea-water-velocity,y-sea-water-velocity", "license": "proprietary", "title": "Arctic Ocean Physics Reanalysis", "missionStartDate": "1991-01-01T00:00:00Z", "abstract": "The current version of the TOPAZ system - TOPAZ4b - is nearly identical to the real-time forecast system run at MET Norway. It uses a recent version of the Hybrid Coordinate Ocean Model (HYCOM) developed at University of Miami (Bleck 2002). HYCOM is coupled to a sea ice model; ice thermodynamics are described in Drange and Simonsen (1996) and the elastic-viscous-plastic rheology in Hunke and Dukowicz (1997). The model's native grid covers the Arctic and North Atlantic Oceans, has fairly homogeneous horizontal spacing (between 11 and 16 km). 50 hybrid layers are used in the vertical (z-isopycnal), more than the TOPAZ4 system (28 layers). TOPAZ4b uses the Deterministic version of the Ensemble Kalman filter (DEnKF; Sakov and Oke 2008) to assimilate remotely sensed as well as temperature and salinity profiles. The output is interpolated onto standard grids and depths. Daily values are provided at all depths. Data assimilation, including the 100-member ensemble production, is performed weekly.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00007", "providers": [{"name": "NERSC (Norway)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00007"}, "ARCTIC_ANALYSISFORECAST_PHY_ICE_002_011": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-analysisforecast-phy-ice-002-011,arctic-ocean,coastal-marine-environment,forecast,level-4,marine-resources,marine-safety,near-real-time,numerical-model,oceanographic-geographical-features,sea-ice-age,sea-ice-albedo,sea-ice-area-fraction,sea-ice-classification,sea-ice-concentration-and/or-thickness,sea-ice-thickness,sea-ice-volume-fraction-of-ridged-ice,sea-ice-x-velocity,sea-ice-y-velocity,surface-snow-thickness,target-application#seaiceservices,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean Sea Ice Analysis and Forecast", "missionStartDate": "2019-08-01T00:00:00Z", "abstract": "The Arctic Sea Ice Analysis and Forecast system uses the neXtSIM stand-alone sea ice model running the Brittle-Bingham-Maxwell sea ice rheology on an adaptive triangular mesh of 10 km average cell length. The model domain covers the whole Arctic domain, including the Canadian Archipelago, the Baffin and Hudson Bays. neXtSIM is forced with surface atmosphere forcings from the ECMWF (European Centre for Medium-Range Weather Forecasts) and ocean forcings from TOPAZ5, the ARC MFC PHY NRT system (002_001a). neXtSIM runs daily, assimilating manual ice charts, sea ice thickness from CS2SMOS in winter and providing 9-day forecasts. The output variables are the ice concentrations, ice thickness, ice drift velocity, snow depths, sea ice type, sea ice age, ridge volume fraction and albedo, provided at hourly frequency. The adaptive Lagrangian mesh is interpolated for convenience on a 3 km resolution regular grid in a Polar Stereographic projection. The projection is identical to other ARC MFC products.\n\n\n**DOI (product):** \n\nhttps://doi.org/10.48670/moi-00004\n\n**References:**\n\n* Williams, T., Korosov, A., Rampal, P., and \u00d3lason, E.: Presentation and evaluation of the Arctic sea ice forecasting system neXtSIM-F, The Cryosphere, 15, 3207\u20133227, https://doi.org/10.5194/tc-15-3207-2021, 2021.\n", "providers": [{"name": "NERSC (Norway)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00004"}, "OCEANCOLOUR_GLO_BGC_L3_MY_009_103": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,global-ocean,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-diatoms-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-dinophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-greenalgae-and-prochlorophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-haptophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-microphytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-nanophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prochlorococcus-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prokaryotes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-suspended-particulate-matter-in-sea-water,multi-year,oceancolour-glo-bgc-l3-my-009-103,oceanographic-geographical-features,satellite-observation,secchi-depth-of-sea-water,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-absorption-coefficient-of-radiative-flux-in-sea-water-due-to-dissolved-organic-matter-and-non-algal-particles,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Colour (Copernicus-GlobColour), Bio-Geo-Chemical, L3 (daily) from Satellite Observations (1997-ongoing)", "missionStartDate": "1997-09-04T00:00:00Z", "abstract": "For the **Global** Ocean **Satellite Observations**, ACRI-ST company (Sophia Antipolis, France) is providing **Bio-Geo-Chemical (BGC)** products based on the **Copernicus-GlobColour** processor.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **\"multi\"** products, and S3A & S3B only for the **\"olci\"** products.\n* Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional types and sizes (**PFT**), Suspended Matter (**SPM**), Secchi Transparency Depth (**ZSD**), Diffuse Attenuation (**KD490**), Particulate Backscattering (**BBP**), Absorption Coef. (**CDM**) and Reflectance (**RRS**).\n\n* Temporal resolutions: **daily**.\n* Spatial resolutions: **4 km** and a finer resolution based on olci **300 meters** inputs.\n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\nTo find the **Copernicus-GlobColour** products in the catalogue, use the search keyword **\"GlobColour\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00280", "providers": [{"name": "ACRI (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00280"}, "OCEANCOLOUR_ARC_BGC_L4_MY_009_124": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,chl,coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,multi-year,oceancolour-arc-bgc-l4-my-009-124,oceanographic-geographical-features,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean Colour Plankton MY L4 daily climatology and monthly observations", "missionStartDate": "1997-09-01T00:00:00Z", "abstract": "For the **Arctic** Ocean **Satellite Observations**, Italian National Research Council (CNR \u2013 Rome, Italy) is providing **Bio-Geo_Chemical (BGC)** products.\n* Upstreams: OCEANCOLOUR_GLO_BGC_L3_MY_009_107 for the **\"multi\"** products , and S3A & S3B only for the **\"OLCI\"** products.\n* Variables: Chlorophyll-a (**CHL**), Diffuse Attenuation (**KD490**)\n\n\n* Temporal resolutions: **monthly**.\n* Spatial resolutions: **4 km** (multi) or **300 meters** (OLCI).\n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00293", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00293"}, "OCEANCOLOUR_BAL_BGC_L3_NRT_009_131": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "baltic-sea,coastal-marine-environment,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-cryptophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-diatoms-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-dinophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-greenalgae-and-prochlorophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-microphytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-nanophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prokaryotes-expressed-as-chlorophyll-in-sea-water,near-real-time,oceancolour-bal-bgc-l3-nrt-009-131,oceanographic-geographical-features,satellite-observation,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-absorption-coefficient-of-radiative-flux-in-sea-water-due-to-dissolved-organic-matter-and-non-algal-particles,volume-absorption-coefficient-of-radiative-flux-in-sea-water-due-to-phytoplankton,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Ocean Colour Plankton, Reflectances, Transparency and Optics L3 NRT daily observations", "missionStartDate": "2023-04-18T00:00:00Z", "abstract": "For the **Baltic Sea** Ocean **Satellite Observations**, the Italian National Research Council (CNR \u2013 Rome, Italy), is providing **Bio-Geo_Chemical (BGC)** regional datasets:\n* **_plankton**_ with the phytoplankton chlorophyll concentration (CHL) evaluated via region-specific neural network (Brando et al. 2021) and Phytoplankton Functional Types (PFT) evaluated via region-specific algorithm\n* **_reflectance**_ with the spectral Remote Sensing Reflectance (RRS)\n* **_transparency**_ with the diffuse attenuation coefficient of light at 490 nm (KD490) \n* **_optics**_ including the IOPs (Inherent Optical Properties) such as absorption and scattering and particulate and dissolved matter (ADG, APH, BBP), via QAAv6 model (Lee et al., 2002 and updates)\n\n**Upstreams**: OLCI-S3A & S3B \n\n**Temporal resolution**: daily\n\n**Spatial resolution**: 300 meters \n\nTo find this product in the catalogue, use the search keyword **\"\"OCEANCOLOUR_BAL_BGC_L3_NRT\"\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00294\n\n**References:**\n\n* Brando, V. E., Sammartino, M., Colella, S., Bracaglia, M., Di Cicco, A., D\u2019Alimonte, D., ... & Attila, J. (2021). Phytoplankton bloom dynamics in the Baltic Sea using a consistently reprocessed time series of multi-sensor reflectance and novel chlorophyll-a retrievals. Remote Sensing, 13(16), 3071\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00294"}, "OCEANCOLOUR_GLO_BGC_L4_MY_009_108": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,multi-year,oceancolour-glo-bgc-l4-my-009-108,oceanographic-geographical-features,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Colour Plankton MY L4 monthly observations", "missionStartDate": "1997-09-01T00:00:00Z", "abstract": "For the **Global** Ocean **Satellite Observations**, Brockmann Consult (BC) is providing **Bio-Geo_Chemical (BGC)** products based on the ESA-CCI inputs.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP, OLCI-S3A & OLCI-S3B for the **\"\"multi\"\"** products.\n* Variables: Chlorophyll-a (**CHL**).\n\n* Temporal resolutions: **monthly**.\n* Spatial resolutions: **4 km** (multi).\n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\nTo find these products in the catalogue, use the search keyword **\"\"ESA-CCI\"\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00283", "providers": [{"name": "BC (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00283"}, "OCEANCOLOUR_BLK_BGC_L4_MY_009_154": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "black-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,multi-year,oceancolour-blk-bgc-l4-my-009-154,oceanographic-geographical-features,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea, Bio-Geo-Chemical, L4, monthly means, daily gapfree and climatology Satellite Observations (1997-ongoing)", "missionStartDate": "1997-09-01T00:00:00Z", "abstract": "For the **Black Sea** Ocean **Satellite Observations**, the Italian National Research Council (CNR \u2013 Rome, Italy), is providing multi-years **Bio-Geo_Chemical (BGC)** regional datasets:\n* **_plankton**_ with the phytoplankton chlorophyll concentration (CHL) evaluated via region-specific algorithms (Zibordi et al., 2015; Kajiyama et al., 2018), and the interpolated **gap-free** Chl concentration (to provide a \"cloud free\" product) estimated by means of a modified version of the DINEOF algorithm (Volpe et al., 2018); moreover, daily climatology for chlorophyll concentration is provided.\n\n**Upstreams**: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **\"multi\"** products, and OLCI-S3A & S3B for the **\"olci\"** products\n\n**Temporal resolutions**: monthly and daily (for **\"gap-free\"** and climatology data)\n\n**Spatial resolution**: 1 km for **\"multi\"** and 300 meters for **\"olci\"**\n\nTo find this product in the catalogue, use the search keyword **\"OCEANCOLOUR_BLK_BGC_L4_MY\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00304\n\n**References:**\n\n* Kajiyama T., D. D\u2019Alimonte, and G. Zibordi, \u201cAlgorithms merging for the determination of Chlorophyll-a concentration in the Black Sea,\u201d IEEE Geoscience and Remote Sensing Letters, 2018. [Online]. Available: https://-www.doi.org/\u00ac10.1+D7109/\u00acLGRS.2018.2883539\n* Volpe, G., Buongiorno Nardelli, B., Colella, S., Pisano, A. and Santoleri, R. (2018). An Operational Interpolated Ocean Colour Product in the Mediterranean Sea, in New Frontiers in Operational Oceanography, edited by E. P. Chassignet, A. Pascual, J. Tintor\u00e8, and J. Verron, pp. 227\u2013244\n* Zibordi, G., F. Me\u0301lin, J.-F. Berthon, and M. Talone (2015). In situ autonomous optical radiometry measurements for satellite ocean color validation in the Western Black Sea. Ocean Sci., 11, 275\u2013286.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00304"}, "OCEANCOLOUR_ATL_BGC_L4_MY_009_118": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "chl,coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-diatoms-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-dinophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-greenalgae-and-prochlorophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-microphytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prochlorococcus-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prokaryotes-expressed-as-chlorophyll-in-sea-water,multi-year,oceancolour-atl-bgc-l4-my-009-118,oceanographic-geographical-features,pft,pp,primary-production-of-biomass-expressed-as-carbon,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic Ocean Colour (Copernicus-GlobColour), Bio-Geo-Chemical, L4 (daily interpolated) from Satellite Observations (1997-ongoing)", "missionStartDate": "1997-09-01T00:00:00Z", "abstract": "For the **Global** Ocean **Satellite Observations**, ACRI-ST company (Sophia Antipolis, France) is providing **Bio-Geo-Chemical (BGC)** products based on the **Copernicus-GlobColour** processor.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **\"multi\"** products, and S3A & S3B only for the **\"olci\"** products.\n* Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional types and sizes (**PFT**), Primary Production (**PP**).\n\n* Temporal resolutions: **monthly** plus, for some variables, **daily gap-free** based on a space-time interpolation to provide a \"cloud free\" product.\n* Spatial resolutions: **1 km**.\n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\nTo find the **Copernicus-GlobColour** products in the catalogue, use the search keyword **\"GlobColour\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00289", "providers": [{"name": "ACRI (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00289"}, "ARCTIC_ANALYSISFORECAST_PHY_002_001": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "age-of-first-year-ice,age-of-sea-ice,arctic-analysisforecast-phy-002-001,arctic-ocean,coastal-marine-environment,forecast,fraction-of-first-year-ice,in-situ-ts-profiles,level-4,marine-resources,marine-safety,near-real-time,numerical-model,ocean-barotropic-streamfunction,ocean-mixed-layer-thickness,oceanographic-geographical-features,sea-floor-depth-below-sea-level,sea-ice-albedo,sea-ice-area-fraction,sea-ice-concentration-and/or-thickness,sea-ice-thickness,sea-ice-x-velocity,sea-ice-y-velocity,sea-level,sea-surface-elevation,sea-water-potential-temperature,sea-water-potential-temperature-at-sea-floor,sea-water-salinity,sea-water-x-velocity,sea-water-y-velocity,sst,surface-snow-thickness,target-application#seaiceforecastingapplication,upward-sea-water-velocity,weather-climate-and-seasonal-forecasting,x-sea-water-velocity,y-sea-water-velocity", "license": "proprietary", "title": "Arctic Ocean Physics Analysis and Forecast", "missionStartDate": "2021-07-05T00:00:00Z", "abstract": "The operational TOPAZ5 Arctic Ocean system uses the HYCOM model and a 100-member EnKF assimilation scheme. It is run daily to provide 10 days of forecast (average of 10 members) of the 3D physical ocean, including sea ice with the CICEv5.1 model; data assimilation is performed weekly to provide 7 days of analysis (ensemble average).\n\nOutput products are interpolated on a grid of 6 km resolution at the North Pole on a polar stereographic projection. The geographical projection follows these proj4 library parameters: \n\nproj4 = \"+units=m +proj=stere +lon_0=-45 +lat_0=90 +k=1 +R=6378273 +no_defs\" \n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00001\n\n**References:**\n\n* Sakov, P., Counillon, F., Bertino, L., Lis\u00e6ter, K. A., Oke, P. R. and Korablev, A.: TOPAZ4: an ocean-sea ice data assimilation system for the North Atlantic and Arctic, Ocean Sci., 8(4), 633\u2013656, doi:10.5194/os-8-633-2012, 2012.\n* Melsom, A., Counillon, F., LaCasce, J. H. and Bertino, L.: Forecasting search areas using ensemble ocean circulation modeling, Ocean Dyn., 62(8), 1245\u20131257, doi:10.1007/s10236-012-0561-5, 2012.\n", "providers": [{"name": "MET Norway", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00001"}, "OCEANCOLOUR_MED_BGC_L3_NRT_009_141": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-cryptophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-diatoms-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-dinophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-greenalgae-and-prochlorophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-microphytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-nanophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prokaryotes-expressed-as-chlorophyll-in-sea-water,mediterranean-sea,near-real-time,oceancolour-med-bgc-l3-nrt-009-141,oceanographic-geographical-features,satellite-observation,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-absorption-coefficient-of-radiative-flux-in-sea-water-due-to-dissolved-organic-matter-and-non-algal-particles,volume-absorption-coefficient-of-radiative-flux-in-sea-water-due-to-phytoplankton,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea, Bio-Geo-Chemical, L3, daily Satellite Observations (Near Real Time)", "missionStartDate": "2023-04-29T00:00:00Z", "abstract": "For the **Mediterranean Sea** Ocean **Satellite Observations**, the Italian National Research Council (CNR \u2013 Rome, Italy), is providing **Bio-Geo_Chemical (BGC)** regional datasets:\n* **_plankton**_ with the phytoplankton chlorophyll concentration (CHL) evaluated via region-specific algorithms (Case 1 waters: Volpe et al., 2019, with new coefficients; Case 2 waters, Berthon and Zibordi, 2004) and Phytoplankton Functional Types (PFT) evaluated via region-specific algorithm (Di Cicco et al. 2017)\n* **_reflectance**_ with the spectral Remote Sensing Reflectance (RRS)\n* **_transparency**_ with the diffuse attenuation coefficient of light at 490 nm (KD490) (for **\"\"multi**\"\" observations achieved via region-specific algorithm, Volpe et al., 2019)\n* **_optics**_ including the IOPs (Inherent Optical Properties) such as absorption and scattering and particulate and dissolved matter (ADG, APH, BBP), via QAAv6 model (Lee et al., 2002 and updates)\n\n**Upstreams**: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **\"\"multi\"\"** products, and OLCI-S3A & S3B for the **\"\"olci\"\"** products\n\n**Temporal resolution**: daily\n\n**Spatial resolutions**: 1 km for **\"\"multi\"\"** and 300 meters for **\"\"olci\"\"**\n\nTo find this product in the catalogue, use the search keyword **\"\"OCEANCOLOUR_MED_BGC_L3_NRT\"\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00297\n\n**References:**\n\n* Berthon, J.-F., Zibordi, G.: Bio-optical relationships for the northern Adriatic Sea. Int. J. Remote Sens., 25, 1527-1532, 2004\n* Di Cicco A, Sammartino M, Marullo S and Santoleri R (2017) Regional Empirical Algorithms for an Improved Identification of Phytoplankton Functional Types and Size Classes in the Mediterranean Sea Using Satellite Data. Front. Mar. Sci. 4:126. doi: 10.3389/fmars.2017.00126\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772.\n* Volpe, G., Colella, S., Brando, V. E., Forneris, V., Padula, F. L., Cicco, A. D., ... & Santoleri, R. (2019). Mediterranean ocean colour Level 3 operational multi-sensor processing. Ocean Science, 15(1), 127-146.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00297"}, "OCEANCOLOUR_NWS_BGC_HR_L3_NRT_009_203": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-suspended-matter-in-sea-water,near-real-time,oceancolour-nws-bgc-hr-l3-nrt-009-203,oceanographic-geographical-features,satellite-observation,sea-water-turbidity,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "North West Shelf Region, Bio-Geo-Chemical, L3, daily observation", "missionStartDate": "2020-01-01T00:00:00Z", "abstract": "The High-Resolution Ocean Colour (HR-OC) Consortium (Brockmann Consult, Royal Belgian Institute of Natural Sciences, Flemish Institute for Technological Research) distributes Remote Sensing Reflectances (RRS, expressed in sr-1), Turbidity (TUR, expressed in FNU), Solid Particulate Matter Concentration (SPM, expressed in mg/l), spectral particulate backscattering (BBP, expressed in m-1) and chlorophyll-a concentration (CHL, expressed in \u00b5g/l) for the Sentinel 2/MSI sensor at 100m resolution for a 20km coastal zone. The products are delivered on a geographic lat-lon grid (EPSG:4326). To limit file size the products are provided in tiles of 600x800 km\u00b2. RRS and BBP are delivered at nominal central bands of 443, 492, 560, 665, 704, 740, 783, 865 nm. The primary variable from which it is virtually possible to derive all the geophysical and transparency products is the spectral RRS. This, together with the spectral BBP, constitute the category of the 'optics' products. The spectral BBP product is generated from the RRS products using a quasi-analytical algorithm (Lee et al. 2002). The 'transparency' products include TUR and SPM). They are retrieved through the application of automated switching algorithms to the RRS spectra adapted to varying water conditions (Novoa et al. 2017). The GEOPHYSICAL product consists of the Chlorophyll-a concentration (CHL) retrieved via a multi-algorithm approach with optimized quality flagging (O'Reilly et al. 2019, Gons et al. 2005, Lavigne et al. 2021). The NRT products are generally provided withing 24 hours up to 3 days after end of the day.The RRS product is accompanied by a relative uncertainty estimate (unitless) derived by direct comparison of the products to corresponding fiducial reference measurements provided through the AERONET-OC network. The current day data temporal consistency is evaluated as Quality Index (QI) for TUR, SPM and CHL: QI=(CurrentDataPixel-ClimatologyDataPixel)/STDDataPixel where QI is the difference between current data and the relevant climatological field as a signed multiple of climatological standard deviations (STDDataPixel).\n\n**Processing information:**\n\nThe HR-OC processing system is deployed on Creodias where Sentinel 2/MSI L1C data are available. The production control element is being hosted within the infrastructure of Brockmann Consult. The processing chain consists of:\n* Resampling to 60m and mosaic generation of the set of Sentinel-2 MSI L1C granules of a single overpass that cover a single UTM zone.\n* Application of a glint correction taking into account the detector viewing angles\n* Application of a coastal mask with 20km water + 20km land. The result is a L1C mosaic tile with data just in the coastal area optimized for compression.\n* Level 2 processing with pixel identification (IdePix), atmospheric correction (C2RCC and ACOLITE or iCOR), in-water processing and merging (HR-OC L2W processor). The result is a 60m product with the same extent as the L1C mosaic, with variables for optics, transparency, and geophysics, and with data filled in the water part of the coastal area.\n* invalid pixel identification takes into account corrupted (L1) pixels, clouds, cloud shadow, glint, dry-fallen intertidal flats, coastal mixed-pixels, sea ice, melting ice, floating vegetation, non-water objects, and bottom reflection.\n* Daily L3 aggregation merges all Level 2 mosaics of a day intersecting with a target tile. All valid water pixels are included in the 20km coastal stripes; all other values are set to NaN. There may be more than a single overpass a day, in particular in the northern regions. The main contribution usually is the mosaic of the zone, but also adjacent mosaics may overlap. This step comprises resampling to the 100m target grid. \n* Monthly L4 aggregation combines all Level 3 products of a month and a single tile. The output is a set of 3 NetCDF datasets for optics, transparency, and geophysics respectively, for the tile and month.\n* Gap filling combines all daily products of a period and generates (partially) gap-filled daily products again. The output of gap filling are 3 datasets for optics (BBP443 only), transparency, and geophysics per day.\n\n**Description of observation methods/instruments:**\n\nOcean colour technique exploits the emerging electromagnetic radiation from the sea surface in different wavelengths. The spectral variability of this signal defines the so-called ocean colour which is affected by the presence of phytoplankton.\n\n**Quality / Accuracy / Calibration information:**\n\nA detailed description of the calibration and validation activities performed over this product can be found on the CMEMS web portal and in CMEMS-BGP_HR-QUID-009-201to212.\n\n**Suitability, Expected type of users / uses:**\n\nThis product is meant for use for educational purposes and for the managing of the marine safety, marine resources, marine and coastal environment and for climate and seasonal studies.\n\n**Dataset names: **\n\n*cmems_obs_oc_arc_bgc_geophy_nrt_l3-hr_P1D-v01\n*cmems_obs_oc_arc_bgc_transp_nrt_l3-hr_P1D-v01\n*cmems_obs_oc_arc_bgc_optics_nrt_l3-hr_P1D-v01\n\n**Files format:**\n*netCDF-4, CF-1.7\n*INSPIRE compliant.\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00118\n\n**References:**\n\n* Lavigne, H., et al. (2021), Quality-control tests for OC4, OC5 and NIR-red satellite chlorophyll-a algorithms applied to coastal waters, Remote Sensing of Environment, in press.\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772.\n* Novoa, S., et al. (2017), Atmospheric corrections and multi-conditional algorithm for multi-sensor remote sensing of suspended particulate matter in low-to-high turbidity levels coastal waters. Remote Sens., v. 9, 61.\n* Gons, et al. (2005), Effect of a waveband shift on chlorophyll retrieval from MERIS imagery of inland and coastal waters, J. Plankton Res., v. 27, n. 1, p. 125-127.\n* O'Reilly, et al. (2019), Chlorophyll algorithms for ocean color sensors-OC4, OC5 & OC6. Remote Sensing of Environment. 229, 32\u201347.\n", "providers": [{"name": "BC (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00118"}, "OCEANCOLOUR_BLK_BGC_L3_MY_009_153": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "black-sea,coastal-marine-environment,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-microphytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-nanophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,multi-year,oceancolour-blk-bgc-l3-my-009-153,oceanographic-geographical-features,satellite-observation,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-absorption-coefficient-of-radiative-flux-in-sea-water-due-to-dissolved-organic-matter-and-non-algal-particles,volume-absorption-coefficient-of-radiative-flux-in-sea-water-due-to-phytoplankton,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea, Bio-Geo-Chemical, L3, daily Satellite Observations (1997-ongoing)", "missionStartDate": "1997-09-16T00:00:00Z", "abstract": "For the **Black Sea** Ocean **Satellite Observations**, the Italian National Research Council (CNR \u2013 Rome, Italy), is providing multi-years **Bio-Geo_Chemical (BGC)** regional datasets:\n* **_plankton**_ with the phytoplankton chlorophyll concentration (CHL) evaluated via region-specific algorithms (Zibordi et al., 2015; Kajiyama et al., 2018) and Phytoplankton Functional Types (PFT) evaluated via region-specific algorithm \n* **_reflectance**_ with the spectral Remote Sensing Reflectance (RRS)\n* **_transparency**_ with the diffuse attenuation coefficient of light at 490 nm (KD490) \n* **_optics**_ including the IOPs (Inherent Optical Properties) such as absorption and scattering and particulate and dissolved matter (ADG, APH, BBP), via QAAv6 model (Lee et al., 2002 and updates)\n\n**Upstreams**: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **\"multi\"** products, and OLCI-S3A & S3B for the **\"olci\"** products\n\n**Temporal resolution**: daily\n\n**Spatial resolution**: 1 km for **\"multi\"** and 300 meters for **\"olci\"**\n\nTo find this product in the catalogue, use the search keyword **\"OCEANCOLOUR_BLK_BGC_L3_MY\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00303\n\n**References:**\n\n* Kajiyama T., D. D\u2019Alimonte, and G. Zibordi, \u201cAlgorithms merging for the determination of Chlorophyll-a concentration in the Black Sea,\u201d IEEE Geoscience and Remote Sensing Letters, 2018. [Online]. Available: https://-www.doi.org/\u00ac10.1+D7109/\u00acLGRS.2018.2883539\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772\n* Zibordi, G., F. Me\u0301lin, J.-F. Berthon, and M. Talone (2015). In situ autonomous optical radiometry measurements for satellite ocean color validation in the Western Black Sea. Ocean Sci., 11, 275\u2013286.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00303"}, "OCEANCOLOUR_MED_BGC_L3_MY_009_143": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-cryptophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-diatoms-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-dinophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-greenalgae-and-prochlorophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-haptophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-microphytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-nanophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prokaryotes-expressed-as-chlorophyll-in-sea-water,mediterranean-sea,multi-year,oceancolour-med-bgc-l3-my-009-143,oceanographic-geographical-features,primary-production-of-biomass-expressed-as-carbon,satellite-observation,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-absorption-coefficient-of-radiative-flux-in-sea-water-due-to-dissolved-organic-matter-and-non-algal-particles,volume-absorption-coefficient-of-radiative-flux-in-sea-water-due-to-phytoplankton,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea, Bio-Geo-Chemical, L3, daily Satellite Observations (1997-ongoing)", "missionStartDate": "1997-09-16T00:00:00Z", "abstract": "For the **Mediterranean Sea** Ocean **Satellite Observations**, the Italian National Research Council (CNR \u2013 Rome, Italy), is providing multi-years **Bio-Geo_Chemical (BGC)** regional datasets:\n* **_plankton**_ with the phytoplankton chlorophyll concentration (CHL) evaluated via region-specific algorithms (Case 1 waters: Volpe et al., 2019, with new coefficients; Case 2 waters, Berthon and Zibordi, 2004) and Phytoplankton Functional Types (PFT) evaluated via region-specific algorithm (Di Cicco et al. 2017)\n* **_reflectance**_ with the spectral Remote Sensing Reflectance (RRS)\n* **_transparency**_ with the diffuse attenuation coefficient of light at 490 nm (KD490) (for **\"multi**\" observations achieved via region-specific algorithm, Volpe et al., 2019)\n* **_optics**_ including the IOPs (Inherent Optical Properties) such as absorption and scattering and particulate and dissolved matter (ADG, APH, BBP), via QAAv6 model (Lee et al., 2002 and updates)\n* **_pp**_ with the Integrated Primary Production (PP)\n\n**Upstreams**: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **\"multi\"** products, and OLCI-S3A & S3B for the **\"olci\"** products\n\n**Temporal resolution**: daily\n\n**Spatial resolution**: 1 km for **\"multi\"** and 300 meters for **\"olci\"**\n\nTo find this product in the catalogue, use the search keyword **\"OCEANCOLOUR_MED_BGC_L3_MY\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00299\n\n**References:**\n\n* Berthon, J.-F., Zibordi, G.: Bio-optical relationships for the northern Adriatic Sea. Int. J. Remote Sens., 25, 1527-1532, 2004\n* Di Cicco A, Sammartino M, Marullo S and Santoleri R (2017) Regional Empirical Algorithms for an Improved Identification of Phytoplankton Functional Types and Size Classes in the Mediterranean Sea Using Satellite Data. Front. Mar. Sci. 4:126. doi: 10.3389/fmars.2017.00126\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772\n* Volpe, G., Colella, S., Brando, V. E., Forneris, V., Padula, F. L., Cicco, A. D., ... & Santoleri, R. (2019). Mediterranean ocean colour Level 3 operational multi-sensor processing. Ocean Science, 15(1), 127-146.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00299"}, "SEALEVEL_GLO_PHY_NOISE_L4_STATIC_008_033": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,global-ocean,invariant,level-4,marine-resources,marine-safety,oceanographic-geographical-features,satellite-observation,sea-surface-height-above-sea-level,sealevel-glo-phy-noise-l4-static-008-033,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "GLOBAL OCEAN GRIDDED NORMALIZED MEASUREMENT NOISE OF SEA LEVEL ANOMALIES", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "In wavenumber spectra, the 1hz measurement error is the noise level estimated as the mean value of energy at high wavenumbers (below ~20km in term of wavelength). The 1hz noise level spatial distribution follows the instrumental white-noise linked to the Surface Wave Height but also connections with the backscatter coefficient. The full understanding of this hump of spectral energy (Dibarboure et al., 2013, Investigating short wavelength correlated errors on low-resolution mode altimetry, OSTST 2013 presentation) still remain to be achieved and overcome with new retracking, new editing strategy or new technology.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00144", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00144"}, "OCEANCOLOUR_GLO_BGC_L3_MY_009_107": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,global-ocean,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-microphytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-nanophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,multi-year,oceancolour-glo-bgc-l3-my-009-107,oceanographic-geographical-features,satellite-observation,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Colour Plankton and Reflectances MY L3 daily observations", "missionStartDate": "1997-09-04T00:00:00Z", "abstract": "For the **Global** Ocean **Satellite Observations**, Brockmann Consult (BC) is providing **Bio-Geo_Chemical (BGC)** products based on the ESA-CCI inputs.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP, OLCI-S3A & OLCI-S3B for the **\"\"multi\"\"** products.\n* Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional types and sizes (**PFT**) and Reflectance (**RRS**).\n\n* Temporal resolutions: **daily**, **monthly**.\n* Spatial resolutions: **4 km** (multi).\n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\nTo find these products in the catalogue, use the search keyword **\"\"ESA-CCI\"\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00282", "providers": [{"name": "BC (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00282"}, "OCEANCOLOUR_IBI_BGC_HR_L3_NRT_009_204": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-suspended-matter-in-sea-water,near-real-time,oceancolour-ibi-bgc-hr-l3-nrt-009-204,oceanographic-geographical-features,satellite-observation,sea-water-turbidity,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Iberic Sea, Bio-Geo-Chemical, L3, daily observation", "missionStartDate": "2020-01-01T00:00:00Z", "abstract": "The High-Resolution Ocean Colour (HR-OC) Consortium (Brockmann Consult, Royal Belgian Institute of Natural Sciences, Flemish Institute for Technological Research) distributes Remote Sensing Reflectances (RRS, expressed in sr-1), Turbidity (TUR, expressed in FNU), Solid Particulate Matter Concentration (SPM, expressed in mg/l), spectral particulate backscattering (BBP, expressed in m-1) and chlorophyll-a concentration (CHL, expressed in \u00b5g/l) for the Sentinel 2/MSI sensor at 100m resolution for a 20km coastal zone. The products are delivered on a geographic lat-lon grid (EPSG:4326). To limit file size the products are provided in tiles of 600x800 km\u00b2. RRS and BBP are delivered at nominal central bands of 443, 492, 560, 665, 704, 740, 783, 865 nm. The primary variable from which it is virtually possible to derive all the geophysical and transparency products is the spectral RRS. This, together with the spectral BBP, constitute the category of the 'optics' products. The spectral BBP product is generated from the RRS products using a quasi-analytical algorithm (Lee et al. 2002). The 'transparency' products include TUR and SPM). They are retrieved through the application of automated switching algorithms to the RRS spectra adapted to varying water conditions (Novoa et al. 2017). The GEOPHYSICAL product consists of the Chlorophyll-a concentration (CHL) retrieved via a multi-algorithm approach with optimized quality flagging (O'Reilly et al. 2019, Gons et al. 2005, Lavigne et al. 2021). The NRT products are generally provided withing 24 hours after end of the day.The RRS product is accompanied by a relative uncertainty estimate (unitless) derived by direct comparison of the products to corresponding fiducial reference measurements provided through the AERONET-OC network. The current day data temporal consistency is evaluated as Quality Index (QI) for TUR, SPM and CHL: QI=(CurrentDataPixel-ClimatologyDataPixel)/STDDataPixel where QI is the difference between current data and the relevant climatological field as a signed multiple of climatological standard deviations (STDDataPixel).\n\n**Processing information:**\n\nThe HR-OC processing system is deployed on Creodias where Sentinel 2/MSI L1C data are available. The production control element is being hosted within the infrastructure of Brockmann Consult. The processing chain consists of:\n* Resampling to 60m and mosaic generation of the set of Sentinel-2 MSI L1C granules of a single overpass that cover a single UTM zone.\n* Application of a glint correction taking into account the detector viewing angles\n* Application of a coastal mask with 20km water + 20km land. The result is a L1C mosaic tile with data just in the coastal area optimized for compression.\n* Level 2 processing with pixel identification (IdePix), atmospheric correction (C2RCC and ACOLITE or iCOR), in-water processing and merging (HR-OC L2W processor). The result is a 60m product with the same extent as the L1C mosaic, with variables for optics, transparency, and geophysics, and with data filled in the water part of the coastal area.\n* invalid pixel identification takes into account corrupted (L1) pixels, clouds, cloud shadow, glint, dry-fallen intertidal flats, coastal mixed-pixels, sea ice, melting ice, floating vegetation, non-water objects, and bottom reflection.\n* Daily L3 aggregation merges all Level 2 mosaics of a day intersecting with a target tile. All valid water pixels are included in the 20km coastal stripes; all other values are set to NaN. There may be more than a single overpass a day, in particular in the northern regions. The main contribution usually is the mosaic of the zone, but also adjacent mosaics may overlap. This step comprises resampling to the 100m target grid. \n* Monthly L4 aggregation combines all Level 3 products of a month and a single tile. The output is a set of 3 NetCDF datasets for optics, transparency, and geophysics respectively, for the tile and month.\n* Gap filling combines all daily products of a period and generates (partially) gap-filled daily products again. The output of gap filling are 3 datasets for optics (BBP443 only), transparency, and geophysics per day.\n\n**Description of observation methods/instruments:**\n\nOcean colour technique exploits the emerging electromagnetic radiation from the sea surface in different wavelengths. The spectral variability of this signal defines the so-called ocean colour which is affected by the presence of phytoplankton.\n\n**Quality / Accuracy / Calibration information:**\n\nA detailed description of the calibration and validation activities performed over this product can be found on the CMEMS web portal and in CMEMS-BGP_HR-QUID-009-201to212.\n\n**Suitability, Expected type of users / uses:**\n\nThis product is meant for use for educational purposes and for the managing of the marine safety, marine resources, marine and coastal environment and for climate and seasonal studies.\n\n**Dataset names: **\n\n*cmems_obs_oc_nws_bgc_geophy_nrt_l3-hr_P1D-v01\n*cmems_obs_oc_nws_bgc_transp_nrt_l3-hr_P1D-v01\n*cmems_obs_oc_nws_bgc_optics_nrt_l3-hr_P1D-v01\n\n**Files format:**\n*netCDF-4, CF-1.7\n*INSPIRE compliant\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00107\n\n**References:**\n\n* Lavigne, H., et al. (2021), Quality-control tests for OC4, OC5 and NIR-red satellite chlorophyll-a algorithms applied to coastal waters, Remote Sensing of Environment, in press.\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772.\n* Novoa, S., et al. (2017), Atmospheric corrections and multi-conditional algorithm for multi-sensor remote sensing of suspended particulate matter in low-to-high turbidity levels coastal waters. Remote Sens., v. 9, 61.\n* Gons, et al. (2005), Effect of a waveband shift on chlorophyll retrieval from MERIS imagery of inland and coastal waters, J. Plankton Res., v. 27, n. 1, p. 125-127.\n* O'Reilly, et al. (2019), Chlorophyll algorithms for ocean color sensors-OC4, OC5 & OC6. Remote Sensing of Environment. 229, 32\u201347.\n", "providers": [{"name": "BC (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00107"}, "SEALEVEL_EUR_PHY_L4_MY_008_068": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,baltic-sea,black-sea,coastal-marine-environment,global-ocean,iberian-biscay-irish-seas,level-4,marine-resources,marine-safety,mediterranean-sea,multi-year,north-west-shelf-seas,oceanographic-geographical-features,satellite-observation,sea-surface-height-above-geoid,sea-surface-height-above-sea-level,sealevel-eur-phy-l4-my-008-068,surface-geostrophic-eastward-sea-water-velocity,surface-geostrophic-eastward-sea-water-velocity-assuming-sea-level-for-geoid,surface-geostrophic-northward-sea-water-velocity,surface-geostrophic-northward-sea-water-velocity-assuming-sea-level-for-geoid,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "EUROPEAN SEAS GRIDDED L4 SEA SURFACE HEIGHTS AND DERIVED VARIABLES REPROCESSED (1993-ONGOING)", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "Altimeter satellite gridded Sea Level Anomalies (SLA) computed with respect to a twenty-year [1993, 2012] mean. The SLA is estimated by Optimal Interpolation, merging the L3 along-track measurement from the different altimeter missions available. Part of the processing is fitted to the European Sea area. (see QUID document or http://duacs.cls.fr [](http://duacs.cls.fr) pages for processing details). The product gives additional variables (i.e. Absolute Dynamic Topography and geostrophic currents (absolute and anomalies)). It serves in delayed-time applications.\nThis product is processed by the DUACS multimission altimeter data processing system.\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00141", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00141"}, "SEALEVEL_BLK_PHY_MDT_L4_STATIC_008_067": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "black-sea,coastal-marine-environment,invariant,level-4,marine-resources,marine-safety,oceanographic-geographical-features,sea-surface-height-above-geoid,sealevel-blk-phy-mdt-l4-static-008-067,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "BLACK SEA MEAN DYNAMIC TOPOGRAPHY", "missionStartDate": "2003-01-01T00:00:00Z", "abstract": "The Mean Dynamic Topography MDT-CMEMS_2020_BLK is an estimate of the mean over the 1993-2012 period of the sea surface height above geoid for the Black Sea. This is consistent with the reference time period also used in the SSALTO DUACS products\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00138", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00138"}, "OCEANCOLOUR_MED_BGC_L4_MY_009_144": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mediterranean-sea,multi-year,oceancolour-med-bgc-l4-my-009-144,oceanographic-geographical-features,primary-production-of-biomass-expressed-as-carbon,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea, Bio-Geo-Chemical, L4, monthly means, daily gapfree and climatology Satellite Observations (1997-ongoing)", "missionStartDate": "1997-09-01T00:00:00Z", "abstract": "For the **Mediterranean Sea** Ocean **Satellite Observations**, the Italian National Research Council (CNR \u2013 Rome, Italy), is providing multi-years **Bio-Geo_Chemical (BGC)** regional datasets:\n* **_plankton**_ with the phytoplankton chlorophyll concentration (CHL) evaluated via region-specific algorithms (Case 1 waters: Volpe et al., 2019, with new coefficients; Case 2 waters, Berthon and Zibordi, 2004), and the interpolated **gap-free** Chl concentration (to provide a \"cloud free\" product) estimated by means of a modified version of the DINEOF algorithm (Volpe et al., 2018); moreover, daily climatology for chlorophyll concentration is provided.\n* **_pp**_ with the Integrated Primary Production (PP).\n\n**Upstreams**: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **\"multi\"** products, and OLCI-S3A & S3B for the **\"olci\"** products\n\n**Temporal resolutions**: monthly and daily (for **\"gap-free\"** and climatology data)\n\n**Spatial resolution**: 1 km for **\"multi\"** and 300 meters for **\"olci\"**\n\nTo find this product in the catalogue, use the search keyword **\"OCEANCOLOUR_MED_BGC_L4_MY\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00300\n\n**References:**\n\n* Berthon, J.-F., Zibordi, G.: Bio-optical relationships for the northern Adriatic Sea. Int. J. Remote Sens., 25, 1527-1532, 2004\n* Volpe, G., Buongiorno Nardelli, B., Colella, S., Pisano, A. and Santoleri, R. (2018). An Operational Interpolated Ocean Colour Product in the Mediterranean Sea, in New Frontiers in Operational Oceanography, edited by E. P. Chassignet, A. Pascual, J. Tintor\u00e8, and J. Verron, pp. 227\u2013244\n* Volpe, G., Colella, S., Brando, V. E., Forneris, V., Padula, F. L., Cicco, A. D., ... & Santoleri, R. (2019). Mediterranean ocean colour Level 3 operational multi-sensor processing. Ocean Science, 15(1), 127-146.\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00300"}, "OCEANCOLOUR_MED_BGC_HR_L4_NRT_009_211": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-suspended-matter-in-sea-water,mediterranean-sea,near-real-time,oceancolour-med-bgc-hr-l4-nrt-009-211,oceanographic-geographical-features,satellite-observation,sea-water-turbidity,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea, Bio-Geo-Chemical, L4, monthly means and interpolated daily observation", "missionStartDate": "2020-01-01T00:00:00Z", "abstract": "The High-Resolution Ocean Colour (HR-OC) Consortium (Brockmann Consult, Royal Belgian Institute of Natural Sciences, Flemish Institute for Technological Research) distributes Level 4 (L4) Turbidity (TUR, expressed in FNU), Solid Particulate Matter Concentration (SPM, expressed in mg/l), particulate backscattering at 443nm (BBP443, expressed in m-1) and chlorophyll-a concentration (CHL, expressed in \u00b5g/l) for the Sentinel 2/MSI sensor at 100m resolution for a 20km coastal zone. The products are delivered on a geographic lat-lon grid (EPSG:4326). To limit file size the products are provided in tiles of 600x800 km\u00b2. BBP443, constitute the category of the 'optics' products. The BBP443 product is generated from the L3 RRS products using a quasi-analytical algorithm (Lee et al. 2002). The 'transparency' products include TUR and SPM). They are retrieved through the application of automated switching algorithms to the RRS spectra adapted to varying water conditions (Novoa et al. 2017). The GEOPHYSICAL product consists of the Chlorophyll-a concentration (CHL) retrieved via a multi-algorithm approach with optimized quality flagging (O'Reilly et al. 2019, Gons et al. 2005, Lavigne et al. 2021). Monthly products (P1M) are temporal aggregates of the daily L3 products. Daily products contain gaps in cloudy areas and where there is no overpass at the respective day. Aggregation collects the non-cloudy (and non-frozen) contributions to each pixel. Contributions are averaged per variable. While this does not guarantee data availability in all pixels in case of persistent clouds, it provides a more complete product compared to the sparsely filled daily products. The Monthly L4 products (P1M) are generally provided withing 4 days after the last acquisition date of the month. Daily gap filled L4 products (P1D) are generated using the DINEOF (Data Interpolating Empirical Orthogonal Functions) approach which reconstructs missing data in geophysical datasets by using a truncated Empirical Orthogonal Functions (EOF) basis in an iterative approach. DINEOF reconstructs missing data in a geophysical dataset by extracting the main patterns of temporal and spatial variability from the data. While originally designed for low resolution data products, recent research has resulted in the optimization of DINEOF to handle high resolution data provided by Sentinel-2 MSI, including cloud shadow detection (Alvera-Azc\u00e1rate et al., 2021). These types of L4 products are generated and delivered one month after the respective period.\n\n**Processing information:**\n\nThe HR-OC processing system is deployed on Creodias where Sentinel 2/MSI L1C data are available. The production control element is being hosted within the infrastructure of Brockmann Consult. The processing chain consists of:\n* Resampling to 60m and mosaic generation of the set of Sentinel-2 MSI L1C granules of a single overpass that cover a single UTM zone.\n* Application of a glint correction taking into account the detector viewing angles\n* Application of a coastal mask with 20km water + 20km land. The result is a L1C mosaic tile with data just in the coastal area optimized for compression.\n* Level 2 processing with pixel identification (IdePix), atmospheric correction (C2RCC and ACOLITE or iCOR), in-water processing and merging (HR-OC L2W processor). The result is a 60m product with the same extent as the L1C mosaic, with variables for optics, transparency, and geophysics, and with data filled in the water part of the coastal area.\n* invalid pixel identification takes into account corrupted (L1-) pixels, clouds, cloud shadow, glint, dry-fallen intertidal flats, coastal mixed-pixels, sea ice, melting ice, floating vegetation, non-water objects, and bottom reflection.\n* Daily L3 aggregation merges all Level 2 mosaics of a day intersecting with a target tile. All valid water pixels are included in the 20km coastal stripes; all other values are set to NaN. There may be more than a single overpass a day, in particular in the northern regions. The main contribution usually is the mosaic of the zone, but also adjacent mosaics may overlap. This step comprises resampling to the 100m target grid. \n* Monthly L4 aggregation combines all Level 3 products of a month and a single tile. The output is a set of 3 NetCDF datasets for optics, transparency, and geophysics respectively, for the tile and month.\n* Gap filling combines all daily products of a period and generates (partially) gap-filled daily products again. The output of gap filling are 3 datasets for optics (BBP443 only), transparency, and geophysics per day.\n\n**Description of observation methods/instruments:**\n\nOcean colour technique exploits the emerging electromagnetic radiation from the sea surface in different wavelengths. The spectral variability of this signal defines the so-called ocean colour which is affected by the presence of phytoplankton.\n\n**Quality / Accuracy / Calibration information:**\n\nA detailed description of the calibration and validation activities performed over this product can be found on the CMEMS web portal and in CMEMS-BGP_HR-QUID-009-201_to_212.\n\n**Suitability, Expected type of users / uses:**\n\nThis product is meant for use for educational purposes and for the managing of the marine safety, marine resources, marine and coastal environment and for climate and seasonal studies.\n\n**Dataset names: **\n*cmems_obs_oc_med_bgc_geophy_nrt_l4-hr_P1M-v01+D19\n*cmems_obs_oc_med_bgc_transp_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_med_bgc_optics_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_med_bgc_geophy_nrt_l4-hr_P1D-v01\n*cmems_obs_oc_med_bgc_transp_nrt_l4-hr_P1D-v01\n*cmems_obs_oc_med_bgc_optics_nrt_l4-hr_P1D-v01\n\n**Files format:**\n*netCDF-4, CF-1.7\n*INSPIRE compliant.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00110\n\n**References:**\n\n* Alvera-Azc\u00e1rate, Aida, et al. (2021), Detection of shadows in high spatial resolution ocean satellite data using DINEOF. Remote Sensing of Environment 253: 112229.\n* Lavigne, H., et al. (2021), Quality-control tests for OC4, OC5 and NIR-red satellite chlorophyll-a algorithms applied to coastal waters, Remote Sensing of Environment, in press.\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772.\n* Novoa, S., et al. (2017), Atmospheric corrections and multi-conditional algorithm for multi-sensor remote sensing of suspended particulate matter in low-to-high turbidity levels coastal waters. Remote Sens., v. 9, 61.\n* Gons, et al. (2005), Effect of a waveband shift on chlorophyll retrieval from MERIS imagery of inland and coastal waters, J. Plankton Res., v. 27, n. 1, p. 125-127.\n* O'Reilly, et al. (2019), Chlorophyll algorithms for ocean color sensors-OC4, OC5 & OC6. Remote Sensing of Environment. 229, 32\u201347.\n", "providers": [{"name": "BC (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00110"}, "ARCTIC_MULTIYEAR_WAV_002_013": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-multiyear-wav-002-013,arctic-ocean,coastal-marine-environment,level-4,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,sea-floor-depth-below-sea-level,sea-ice-area-fraction,sea-ice-thickness,sea-surface-primary-swell-wave-from-direction,sea-surface-primary-swell-wave-mean-period,sea-surface-primary-swell-wave-significant-height,sea-surface-secondary-swell-wave-from-direction,sea-surface-secondary-swell-wave-mean-period,sea-surface-secondary-swell-wave-significant-height,sea-surface-wave-from-direction,sea-surface-wave-from-direction-at-variance-spectral-density-maximum,sea-surface-wave-mean-period-from-variance-spectral-density-inverse-frequency-moment,sea-surface-wave-mean-period-from-variance-spectral-density-second-frequency-moment,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,sea-surface-wave-stokes-drift-x-velocity,sea-surface-wave-stokes-drift-y-velocity,sea-surface-wind-wave-from-direction,sea-surface-wind-wave-mean-period,sea-surface-wind-wave-significant-height,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean Wave Hindcast", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "The Arctic Ocean Wave Hindcast system uses the WAM model at 3 km resolution forced with surface winds and boundary wave spectra from the ECMWF (European Centre for Medium-Range Weather Forecasts) ERA5 reanalysis together with ice from the ARC MFC reanalysis (Sea Ice concentration and thickness). Additionally, in the North Atlantic area, surface winds are used from a 2.5km atmospheric hindcast system. From the output variables the most commonly used are significant wave height, peak period and mean direction.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00008", "providers": [{"name": "MET Norway", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00008"}, "SEAICE_ANT_PHY_AUTO_L3_NRT_011_012": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,global-ocean,level-3,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-ice-concentration,sea-ice-edge,seaice-ant-phy-auto-l3-nrt-011-012,target-application#seaiceforecastingapplication,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Antarctic Ocean - High Resolution Sea Ice Information", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "For the Antarctic Sea - A sea ice concentration product based on satellite SAR imagery and microwave radiometer data: The algorithm uses SENTINEL-1 SAR EW and IW mode dual-polarized HH/HV data combined with AMSR2 radiometer data.\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00320", "providers": [{"name": "DMI (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00320"}, "SEALEVEL_GLO_PHY_CLIMATE_L4_MY_008_057": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,baltic-sea,coastal-marine-environment,global-ocean,iberian-biscay-irish-seas,level-4,marine-resources,marine-safety,multi-year,north-west-shelf-seas,oceanographic-geographical-features,satellite-observation,sea-surface-height-above-geoid,sea-surface-height-above-sea-level,sealevel-glo-phy-climate-l4-my-008-057,surface-geostrophic-eastward-sea-water-velocity,surface-geostrophic-eastward-sea-water-velocity-assuming-sea-level-for-geoid,surface-geostrophic-northward-sea-water-velocity,surface-geostrophic-northward-sea-water-velocity-assuming-sea-level-for-geoid,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "GLOBAL OCEAN GRIDDED L4 SEA SURFACE HEIGHTS AND DERIVED VARIABLES REPROCESSED (COPERNICUS CLIMATE SERVICE)", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "DUACS delayed-time altimeter gridded maps of sea surface heights and derived variables over the global Ocean (https://cds.climate.copernicus.eu/cdsapp#!/dataset/satellite-sea-level-global?tab=overview). The processing focuses on the stability and homogeneity of the sea level record (based on a stable two-satellite constellation) and the product is dedicated to the monitoring of the sea level long-term evolution for climate applications and the analysis of Ocean/Climate indicators. These products are produced and distributed by the Copernicus Climate Change Service (C3S, https://climate.copernicus.eu/).\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00145", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00145"}, "OCEANCOLOUR_MED_BGC_HR_L3_NRT_009_205": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-suspended-matter-in-sea-water,mediterranean-sea,near-real-time,oceancolour-med-bgc-hr-l3-nrt-009-205,oceanographic-geographical-features,satellite-observation,sea-water-turbidity,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea, Bio-Geo-Chemical, L3, daily observation", "missionStartDate": "2020-01-01T00:00:00Z", "abstract": "The High-Resolution Ocean Colour (HR-OC) Consortium (Brockmann Consult, Royal Belgian Institute of Natural Sciences, Flemish Institute for Technological Research) distributes Remote Sensing Reflectances (RRS, expressed in sr-1), Turbidity (TUR, expressed in FNU), Solid Particulate Matter Concentration (SPM, expressed in mg/l), spectral particulate backscattering (BBP, expressed in m-1) and chlorophyll-a concentration (CHL, expressed in \u00b5g/l) for the Sentinel 2/MSI sensor at 100m resolution for a 20km coastal zone. The products are delivered on a geographic lat-lon grid (EPSG:4326). To limit file size the products are provided in tiles of 600x800 km\u00b2. RRS and BBP are delivered at nominal central bands of 443, 492, 560, 665, 704, 740, 783, 865 nm. The primary variable from which it is virtually possible to derive all the geophysical and transparency products is the spectral RRS. This, together with the spectral BBP, constitute the category of the 'optics' products. The spectral BBP product is generated from the RRS products using a quasi-analytical algorithm (Lee et al. 2002). The 'transparency' products include TUR and SPM). They are retrieved through the application of automated switching algorithms to the RRS spectra adapted to varying water conditions (Novoa et al. 2017). The GEOPHYSICAL product consists of the Chlorophyll-a concentration (CHL) retrieved via a multi-algorithm approach with optimized quality flagging (O'Reilly et al. 2019, Gons et al. 2005, Lavigne et al. 2021). The NRT products are generally provided withing 24 hours up to 3 days after end of the day.The RRS product is accompanied by a relative uncertainty estimate (unitless) derived by direct comparison of the products to corresponding fiducial reference measurements provided through the AERONET-OC network. The current day data temporal consistency is evaluated as Quality Index (QI) for TUR, SPM and CHL: QI=(CurrentDataPixel-ClimatologyDataPixel)/STDDataPixel where QI is the difference between current data and the relevant climatological field as a signed multiple of climatological standard deviations (STDDataPixel).\n\n**Processing information:**\n\nThe HR-OC processing system is deployed on Creodias where Sentinel 2/MSI L1C data are available. The production control element is being hosted within the infrastructure of Brockmann Consult. The processing chain consists of:\n* Resampling to 60m and mosaic generation of the set of Sentinel-2 MSI L1C granules of a single overpass that cover a single UTM zone.\n* Application of a glint correction taking into account the detector viewing angles\n* Application of a coastal mask with 20km water + 20km land. The result is a L1C mosaic tile with data just in the coastal area optimized for compression.\n* Level 2 processing with pixel identification (IdePix), atmospheric correction (C2RCC and ACOLITE or iCOR), in-water processing and merging (HR-OC L2W processor). The result is a 60m product with the same extent as the L1C mosaic, with variables for optics, transparency, and geophysics, and with data filled in the water part of the coastal area.\n* invalid pixel identification takes into account corrupted (L1) pixels, clouds, cloud shadow, glint, dry-fallen intertidal flats, coastal mixed-pixels, sea ice, melting ice, floating vegetation, non-water objects, and bottom reflection.\n* Daily L3 aggregation merges all Level 2 mosaics of a day intersecting with a target tile. All valid water pixels are included in the 20km coastal stripes; all other values are set to NaN. There may be more than a single overpass a day, in particular in the northern regions. The main contribution usually is the mosaic of the zone, but also adjacent mosaics may overlap. This step comprises resampling to the 100m target grid. \n* Monthly L4 aggregation combines all Level 3 products of a month and a single tile. The output is a set of 3 NetCDF datasets for optics, transparency, and geophysics respectively, for the tile and month.\n* Gap filling combines all daily products of a period and generates (partially) gap-filled daily products again. The output of gap filling are 3 datasets for optics (BBP443 only), transparency, and geophysics per day.\n\n**Description of observation methods/instruments:**\n\nOcean colour technique exploits the emerging electromagnetic radiation from the sea surface in different wavelengths. The spectral variability of this signal defines the so-called ocean colour which is affected by the presence of phytoplankton.\n\n**Quality / Accuracy / Calibration information:**\n\nA detailed description of the calibration and validation activities performed over this product can be found on the CMEMS web portal and in CMEMS-BGP_HR-QUID-009-201to212.\n\n**Suitability, Expected type of users / uses:**\n\nThis product is meant for use for educational purposes and for the managing of the marine safety, marine resources, marine and coastal environment and for climate and seasonal studies.\n\n**Dataset names: **\n\n*cmems_obs_oc_ibi_bgc_geophy_nrt_l3-hr_P1D-v01\n*cmems_obs_oc_ibi_bgc_transp_nrt_l3-hr_P1D-v01\n*cmems_obs_oc_ibi_bgc_optics_nrt_l3-hr_P1D-v01\n\n**Files format:**\n*netCDF-4, CF-1.7\n*INSPIRE compliant.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00109\n\n**References:**\n\n* Lavigne, H., et al. (2021), Quality-control tests for OC4, OC5 and NIR-red satellite chlorophyll-a algorithms applied to coastal waters, Remote Sensing of Environment, in press.\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772.\n* Novoa, S., et al. (2017), Atmospheric corrections and multi-conditional algorithm for multi-sensor remote sensing of suspended particulate matter in low-to-high turbidity levels coastal waters. Remote Sens., v. 9, 61.\n* Gons, et al. (2005), Effect of a waveband shift on chlorophyll retrieval from MERIS imagery of inland and coastal waters, J. Plankton Res., v. 27, n. 1, p. 125-127.\n* O'Reilly, et al. (2019), Chlorophyll algorithms for ocean color sensors-OC4, OC5 & OC6. Remote Sensing of Environment. 229, 32\u201347.\n", "providers": [{"name": "BC (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00109"}, "OCEANCOLOUR_BLK_BGC_HR_L4_NRT_009_212": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "black-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-suspended-matter-in-sea-water,near-real-time,oceancolour-blk-bgc-hr-l4-nrt-009-212,oceanographic-geographical-features,satellite-observation,sea-water-turbidity,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea, Bio-Geo-Chemical, L4, monthly means and interpolated daily observation", "missionStartDate": "2020-01-02T00:00:00Z", "abstract": "The High-Resolution Ocean Colour (HR-OC) Consortium (Brockmann Consult, Royal Belgian Institute of Natural Sciences, Flemish Institute for Technological Research) distributes Level 4 (L4) Turbidity (TUR, expressed in FNU), Solid Particulate Matter Concentration (SPM, expressed in mg/l), particulate backscattering at 443nm (BBP443, expressed in m-1) and chlorophyll-a concentration (CHL, expressed in \u00b5g/l) for the Sentinel 2/MSI sensor at 100m resolution for a 20km coastal zone. The products are delivered on a geographic lat-lon grid (EPSG:4326). To limit file size the products are provided in tiles of 600x800 km\u00b2. BBP443, constitute the category of the 'optics' products. The BBP443 product is generated from the L3 RRS products using a quasi-analytical algorithm (Lee et al. 2002). The 'transparency' products include TUR and SPM). They are retrieved through the application of automated switching algorithms to the RRS spectra adapted to varying water conditions (Novoa et al. 2017). The GEOPHYSICAL product consists of the Chlorophyll-a concentration (CHL) retrieved via a multi-algorithm approach with optimized quality flagging (O'Reilly et al. 2019, Gons et al. 2005, Lavigne et al. 2021). Monthly products (P1M) are temporal aggregates of the daily L3 products. Daily products contain gaps in cloudy areas and where there is no overpass at the respective day. Aggregation collects the non-cloudy (and non-frozen) contributions to each pixel. Contributions are averaged per variable. While this does not guarantee data availability in all pixels in case of persistent clouds, it provides a more complete product compared to the sparsely filled daily products. The Monthly L4 products (P1M) are generally provided withing 4 days after the last acquisition date of the month. Daily gap filled L4 products (P1D) are generated using the DINEOF (Data Interpolating Empirical Orthogonal Functions) approach which reconstructs missing data in geophysical datasets by using a truncated Empirical Orthogonal Functions (EOF) basis in an iterative approach. DINEOF reconstructs missing data in a geophysical dataset by extracting the main patterns of temporal and spatial variability from the data. While originally designed for low resolution data products, recent research has resulted in the optimization of DINEOF to handle high resolution data provided by Sentinel-2 MSI, including cloud shadow detection (Alvera-Azc\u00e1rate et al., 2021). These types of L4 products are generated and delivered one month after the respective period.\n\n**Processing information:**\n\nThe HR-OC processing system is deployed on Creodias where Sentinel 2/MSI L1C data are available. The production control element is being hosted within the infrastructure of Brockmann Consult. The processing chain consists of:\n* Resampling to 60m and mosaic generation of the set of Sentinel-2 MSI L1C granules of a single overpass that cover a single UTM zone.\n* Application of a glint correction taking into account the detector viewing angles\n* Application of a coastal mask with 20km water + 20km land. The result is a L1C mosaic tile with data just in the coastal area optimized for compression.\n* Level 2 processing with pixel identification (IdePix), atmospheric correction (C2RCC and ACOLITE or iCOR), in-water processing and merging (HR-OC L2W processor). The result is a 60m product with the same extent as the L1C mosaic, with variables for optics, transparency, and geophysics, and with data filled in the water part of the coastal area.\n* invalid pixel identification takes into account corrupted (L1) pixels, clouds, cloud shadow, glint, dry-fallen intertidal flats, coastal mixed-pixels, sea ice, melting ice, floating vegetation, non-water objects, and bottom reflection.\n* invalid pixel identification takes into account corrupted (L1) pixels, clouds, cloud shadow, glint, dry-fallen intertidal flats, coastal mixed-pixels, sea ice, melting ice, floating vegetation, non-water objects, and bottom reflection. \n* Daily L3 aggregation merges all Level 2 mosaics of a day intersecting with a target tile. All valid water pixels are included in the 20km coastal stripes; all other values are set to NaN. There may be more than a single overpass a day, in particular in the northern regions. The main contribution usually is the mosaic of the zone, but also adjacent mosaics may overlap. This step comprises resampling to the 100m target grid. \n* Monthly L4 aggregation combines all Level 3 products of a month and a single tile. The output is a set of 3 NetCDF datasets for optics, transparency, and geophysics respectively, for the tile and month.\n* Gap filling combines all daily products of a period and generates (partially) gap-filled daily products again. The output of gap filling are 3 datasets for optics (BBP443 only), transparency, and geophysics per day.\n\n**Description of observation methods/instruments:**\n\nOcean colour technique exploits the emerging electromagnetic radiation from the sea surface in different wavelengths. The spectral variability of this signal defines the so-called ocean colour which is affected by the presence of phytoplankton.\n\n**Quality / Accuracy / Calibration information:**\n\nA detailed description of the calibration and validation activities performed over this product can be found on the CMEMS web portal and in CMEMS-BGP_HR-QUID-009-201_to_212.\n\n**Suitability, Expected type of users / uses:**\n\nThis product is meant for use for educational purposes and for the managing of the marine safety, marine resources, marine and coastal environment and for climate and seasonal studies.\n\n**Dataset names: **\n*cmems_obs_oc_blk_bgc_geophy_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_blk_bgc_transp_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_blk_bgc_optics_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_blk_bgc_geophy_nrt_l4-hr_P1D-v01\n*cmems_obs_oc_blk_bgc_transp_nrt_l4-hr_P1D-v01\n*cmems_obs_oc_blk_bgc_optics_nrt_l4-hr_P1D-v01\n\n**Files format:**\n*netCDF-4, CF-1.7\n*INSPIRE compliant.\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00087\n\n**References:**\n\n* Alvera-Azc\u00e1rate, Aida, et al. (2021), Detection of shadows in high spatial resolution ocean satellite data using DINEOF. Remote Sensing of Environment 253: 112229.\n* Lavigne, H., et al. (2021), Quality-control tests for OC4, OC5 and NIR-red satellite chlorophyll-a algorithms applied to coastal waters, Remote Sensing of Environment, in press.\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772.\n* Novoa, S., et al. (2017), Atmospheric corrections and multi-conditional algorithm for multi-sensor remote sensing of suspended particulate matter in low-to-high turbidity levels coastal waters. Remote Sens., v. 9, 61.\n* Gons, et al. (2005), Effect of a waveband shift on chlorophyll retrieval from MERIS imagery of inland and coastal waters, J. Plankton Res., v. 27, n. 1, p. 125-127.\n* O'Reilly, et al. (2019), Chlorophyll algorithms for ocean color sensors-OC4, OC5 & OC6. Remote Sensing of Environment. 229, 32\u201347.\n", "providers": [{"name": "BC (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00087"}, "INSITU_BAL_PHYBGCWAV_DISCRETE_MYNRT_013_032": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 2", "keywords": "baltic-sea,coastal-marine-environment,direction-of-sea-water-velocity,in-situ-observation,insitu-bal-phybgcwav-discrete-mynrt-013-032,level-2,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,moles-of-oxygen-per-unit-mass-in-sea-water,near-real-time,oceanographic-geographical-features,sea-surface-wave-from-direction,sea-surface-wave-mean-period,sea-surface-wave-significant-height,sea-water-practical-salinity,sea-water-speed,sea-water-temperature,water-surface-height-above-reference-datum,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea- In Situ Near Real Time Observations", "missionStartDate": "1860-05-24T07:00:00Z", "abstract": "Baltic Sea - near real-time (NRT) in situ quality controlled observations, hourly updated and distributed by INSTAC within 24-48 hours from acquisition in average\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00032", "providers": [{"name": "SMHI (Sweden)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00032"}, "INSITU_GLO_PHY_TS_DISCRETE_MY_013_001": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 2", "keywords": "coastal-marine-environment,global-ocean,in-situ-observation,insitu-glo-phy-ts-discrete-my-013-001,level-2,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,sea-water-salinity,sea-water-temperature,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean- CORA- In-situ Observations Yearly Delivery in Delayed Mode", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "For the Global Ocean- In-situ observation yearly delivery in delayed mode. The In Situ delayed mode product designed for reanalysis purposes integrates the best available version of in situ data for temperature and salinity measurements. These data are collected from main global networks (Argo, GOSUD, OceanSITES, World Ocean Database) completed by European data provided by EUROGOOS regional systems and national system by the regional INS TAC components. It is updated on a yearly basis. This version is a merged product between the previous verion of CORA and EN4 distributed by the Met Office for the period 1950-1990.\n\n**DOI (product):** \nhttps://doi.org/10.17882/46219", "providers": [{"name": "OceanScope (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.17882/46219"}, "OCEANCOLOUR_BLK_BGC_HR_L3_NRT_009_206": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "black-sea,coastal-marine-environment,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-suspended-matter-in-sea-water,near-real-time,oceancolour-blk-bgc-hr-l3-nrt-009-206,oceanographic-geographical-features,satellite-observation,sea-water-turbidity,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea, Bio-Geo-Chemical, L3, daily observation", "missionStartDate": "2020-01-01T00:00:00Z", "abstract": "The High-Resolution Ocean Colour (HR-OC) Consortium (Brockmann Consult, Royal Belgian Institute of Natural Sciences, Flemish Institute for Technological Research) distributes Remote Sensing Reflectances (RRS, expressed in sr-1), Turbidity (TUR, expressed in FNU), Solid Particulate Matter Concentration (SPM, expressed in mg/l), spectral particulate backscattering (BBP, expressed in m-1) and chlorophyll-a concentration (CHL, expressed in \u00b5g/l) for the Sentinel 2/MSI sensor at 100m resolution for a 20km coastal zone. The products are delivered on a geographic lat-lon grid (EPSG:4326). To limit file size the products are provided in tiles of 600x800 km\u00b2. RRS and BBP are delivered at nominal central bands of 443, 492, 560, 665, 704, 740, 783, 865 nm. The primary variable from which it is virtually possible to derive all the geophysical and transparency products is the spectral RRS. This, together with the spectral BBP, constitute the category of the 'optics' products. The spectral BBP product is generated from the RRS products using a quasi-analytical algorithm (Lee et al. 2002). The 'transparency' products include TUR and SPM). They are retrieved through the application of automated switching algorithms to the RRS spectra adapted to varying water conditions (Novoa et al. 2017). The GEOPHYSICAL product consists of the Chlorophyll-a concentration (CHL) retrieved via a multi-algorithm approach with optimized quality flagging (O'Reilly et al. 2019, Gons et al. 2005, Lavigne et al. 2021). The NRT products are generally provided within 24 hours up to 3 days after end of the day.The RRS product is accompanied by a relative uncertainty estimate (unitless) derived by direct comparison of the products to corresponding fiducial reference measurements provided through the AERONET-OC network. The current day data temporal consistency is evaluated as Quality Index (QI) for TUR, SPM and CHL: QI=(CurrentDataPixel-ClimatologyDataPixel)/STDDataPixel where QI is the difference between current data and the relevant climatological field as a signed multiple of climatological standard deviations (STDDataPixel).\n\n**Processing information:**\n\nThe HR-OC processing system is deployed on Creodias where Sentinel 2/MSI L1C data are available. The production control element is being hosted within the infrastructure of Brockmann Consult. The processing chain consists of:\n* Resampling to 60m and mosaic generation of the set of Sentinel-2 MSI L1C granules of a single overpass that cover a single UTM zone.\n* Application of a glint correction taking into account the detector viewing angles\n* Application of a coastal mask with 20km water + 20km land. The result is a L1C mosaic tile with data just in the coastal area optimized for compression.\n* Level 2 processing with pixel identification (IdePix), atmospheric correction (C2RCC and ACOLITE or iCOR), in-water processing and merging (HR-OC L2W processor). The result is a 60m product with the same extent as the L1C mosaic, with variables for optics, transparency, and geophysics, and with data filled in the water part of the coastal area.\n* invalid pixel identification takes into account corrupted (L1) pixels, clouds, cloud shadow, glint, dry-fallen intertidal flats, coastal mixed-pixels, sea ice, melting ice, floating vegetation, non-water objects, and bottom reflection.\n* Daily L3 aggregation merges all Level 2 mosaics of a day intersecting with a target tile. All valid water pixels are included in the 20km coastal stripes; all other values are set to NaN. There may be more than a single overpass a day, in particular in the northern regions. The main contribution usually is the mosaic of the zone, but also adjacent mosaics may overlap. This step comprises resampling to the 100m target grid. \n* Monthly L4 aggregation combines all Level 3 products of a month and a single tile. The output is a set of 3 NetCDF datasets for optics, transparency, and geophysics respectively, for the tile and month.\n* Gap filling combines all daily products of a period and generates (partially) gap-filled daily products again. The output of gap filling are 3 datasets for optics (BBP443 only), transparency, and geophysics per day.\n\n**Description of observation methods/instruments:**\n\nOcean colour technique exploits the emerging electromagnetic radiation from the sea surface in different wavelengths. The spectral variability of this signal defines the so-called ocean colour which is affected by the presence of phytoplankton.\n\n**Quality / Accuracy / Calibration information:**\n\nA detailed description of the calibration and validation activities performed over this product can be found on the CMEMS web portal and in CMEMS-BGP_HR-QUID-009-201to212.\n\n**Suitability, Expected type of users / uses:**\n\nThis product is meant for use for educational purposes and for the managing of the marine safety, marine resources, marine and coastal environment and for climate and seasonal studies.\n\n**Dataset names: **\n\n*cmems_obs_oc_blk_bgc_geophy_nrt_l3-hr_P1D-v01\n*cmems_obs_oc_blk_bgc_transp_nrt_l3-hr_P1D-v01\n*cmems_obs_oc_blk_bgc_optics_nrt_l3-hr_P1D-v01\n\n**Files format:**\n*netCDF-4, CF-1.7\n*INSPIRE compliant.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00086\n\n**References:**\n\n* Lavigne, H., et al. (2021), Quality-control tests for OC4, OC5 and NIR-red satellite chlorophyll-a algorithms applied to coastal waters, Remote Sensing of Environment, in press.\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772.\n* Novoa, S., et al. (2017), Atmospheric corrections and multi-conditional algorithm for multi-sensor remote sensing of suspended particulate matter in low-to-high turbidity levels coastal waters. Remote Sens., v. 9, 61.\n* Gons, et al. (2005), Effect of a waveband shift on chlorophyll retrieval from MERIS imagery of inland and coastal waters, J. Plankton Res., v. 27, n. 1, p. 125-127.\n* O'Reilly, et al. (2019), Chlorophyll algorithms for ocean color sensors-OC4, OC5 & OC6. Remote Sensing of Environment. 229, 32\u201347.\n", "providers": [{"name": "BC (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00086"}, "OCEANCOLOUR_BAL_BGC_HR_L3_NRT_009_202": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "baltic-sea,coastal-marine-environment,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-suspended-matter-in-sea-water,near-real-time,oceancolour-bal-bgc-hr-l3-nrt-009-202,oceanographic-geographical-features,satellite-observation,sea-water-turbidity,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea, Bio-Geo-Chemical, L3, daily observation", "missionStartDate": "2020-01-01T00:00:00Z", "abstract": "The High-Resolution Ocean Colour (HR-OC) Consortium (Brockmann Consult, Royal Belgian Institute of Natural Sciences, Flemish Institute for Technological Research) distributes Remote Sensing Reflectances (RRS, expressed in sr-1), Turbidity (TUR, expressed in FNU), Solid Particulate Matter Concentration (SPM, expressed in mg/l), spectral particulate backscattering (BBP, expressed in m-1) and chlorophyll-a concentration (CHL, expressed in \u00b5g/l) for the Sentinel 2/MSI sensor at 100m resolution for a 20km coastal zone. The products are delivered on a geographic lat-lon grid (EPSG:4326). To limit file size the products are provided in tiles of 600x800 km\u00b2. RRS and BBP are delivered at nominal central bands of 443, 492, 560, 665, 704, 740, 783, 865 nm. The primary variable from which it is virtually possible to derive all the geophysical and transparency products is the spectral RRS. This, together with the spectral BBP, constitute the category of the 'optics' products. The spectral BBP product is generated from the RRS products using a quasi-analytical algorithm (Lee et al. 2002). The 'transparency' products include TUR and SPM). They are retrieved through the application of automated switching algorithms to the RRS spectra adapted to varying water conditions (Novoa et al. 2017). The GEOPHYSICAL product consists of the Chlorophyll-a concentration (CHL) retrieved via a multi-algorithm approach with optimized quality flagging (O'Reilly et al. 2019, Gons et al. 2005, Lavigne et al. 2021). The NRT products are generally provided withing 24 hours up to 3 days after end of the day.The RRS product is accompanied by a relative uncertainty estimate (unitless) derived by direct comparison of the products to corresponding fiducial reference measurements provided through the AERONET-OC network. The current day data temporal consistency is evaluated as Quality Index (QI) for TUR, SPM and CHL: QI=(CurrentDataPixel-ClimatologyDataPixel)/STDDataPixel where QI is the difference between current data and the relevant climatological field as a signed multiple of climatological standard deviations (STDDataPixel).\n\n**Processing information:**\n\nThe HR-OC processing system is deployed on Creodias where Sentinel 2/MSI L1C data are available. The production control element is being hosted within the infrastructure of Brockmann Consult. The processing chain consists of:\n* Resampling to 60m and mosaic generation of the set of Sentinel-2 MSI L1C granules of a single overpass that cover a single UTM zone.\n* Application of a glint correction taking into account the detector viewing angles\n* Application of a coastal mask with 20km water + 20km land. The result is a L1C mosaic tile with data just in the coastal area optimized for compression.\n* Level 2 processing with pixel identification (IdePix), atmospheric correction (C2RCC and ACOLITE or iCOR), in-water processing and merging (HR-OC L2W processor). The result is a 60m product with the same extent as the L1C mosaic, with variables for optics, transparency, and geophysics, and with data filled in the water part of the coastal area.\n* invalid pixel identification takes into account corrupted (L1) pixels, clouds, cloud shadow, glint, dry-fallen intertidal flats, coastal mixed-pixels, sea ice, melting ice, floating vegetation, non-water objects, and bottom reflection.\n* Daily L3 aggregation merges all Level 2 mosaics of a day intersecting with a target tile. All valid water pixels are included in the 20km coastal stripes; all other values are set to NaN. There may be more than a single overpass a day, in particular in the northern regions. The main contribution usually is the mosaic of the zone, but also adjacent mosaics may overlap. This step comprises resampling to the 100m target grid. \n* Monthly L4 aggregation combines all Level 3 products of a month and a single tile. The output is a set of 3 NetCDF datasets for optics, transparency, and geophysics respectively, for the tile and month.\n* Gap filling combines all daily products of a period and generates (partially) gap-filled daily products again. The output of gap filling are 3 datasets for optics (BBP443 only), transparency, and geophysics per day.\n\n**Description of observation methods/instruments:**\n\nOcean colour technique exploits the emerging electromagnetic radiation from the sea surface in different wavelengths. The spectral variability of this signal defines the so-called ocean colour which is affected by the presence of phytoplankton.\n\n**Quality / Accuracy / Calibration information:**\n\nA detailed description of the calibration and validation activities performed over this product can be found on the CMEMS web portal and in CMEMS-BGP_HR-QUID-009-201to212.\n\n**Suitability, Expected type of users / uses:**\n\nThis product is meant for use for educational purposes and for the managing of the marine safety, marine resources, marine and coastal environment and for climate and seasonal studies.\n\n**Dataset names: **\n\n*cmems_obs_oc_bal_bgc_geophy_nrt_l3-hr_P1D-v01\n*cmems_obs_oc_bal_bgc_transp_nrt_l3-hr_P1D-v01\n*cmems_obs_oc_bal_bgc_optics_nrt_l3-hr_P1D-v01\n\n**Files format:**\n*netCDF-4, CF-1.7\n*INSPIRE compliant.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00079\n\n**References:**\n\n* Lavigne, H., et al. (2021), Quality-control tests for OC4, OC5 and NIR-red satellite chlorophyll-a algorithms applied to coastal waters, Remote Sensing of Environment, in press.\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772.\n* Novoa, S., et al. (2017), Atmospheric corrections and multi-conditional algorithm for multi-sensor remote sensing of suspended particulate matter in low-to-high turbidity levels coastal waters. Remote Sens., v. 9, 61.\n* Gons, et al. (2005), Effect of a waveband shift on chlorophyll retrieval from MERIS imagery of inland and coastal waters, J. Plankton Res., v. 27, n. 1, p. 125-127.\n* O'Reilly, et al. (2019), Chlorophyll algorithms for ocean color sensors-OC4, OC5 & OC6. Remote Sensing of Environment. 229, 32\u201347.\n", "providers": [{"name": "BC (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00079"}, "INSITU_GLO_PHYBGCWAV_DISCRETE_MYNRT_013_030": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 2", "keywords": "coastal-marine-environment,direction-of-sea-water-velocity,global-ocean,in-situ-observation,insitu-glo-phybgcwav-discrete-mynrt-013-030,level-2,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,moles-of-oxygen-per-unit-mass-in-sea-water,near-real-time,oceanographic-geographical-features,sea-surface-wave-from-direction,sea-surface-wave-mean-period,sea-surface-wave-significant-height,sea-water-practical-salinity,sea-water-speed,sea-water-temperature,water-surface-height-above-reference-datum,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean- In-Situ Near-Real-Time Observations", "missionStartDate": "2024-01-27T00:00:00Z", "abstract": "Global Ocean - near real-time (NRT) in situ quality controlled observations, hourly updated and distributed by INSTAC within 24-48 hours from acquisition in average. Data are collected mainly through global networks (Argo, OceanSites, GOSUD, EGO) and through the GTS\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00036", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00036"}, "OCEANCOLOUR_BAL_BGC_HR_L4_NRT_009_208": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-suspended-matter-in-sea-water,near-real-time,oceancolour-bal-bgc-hr-l4-nrt-009-208,oceanographic-geographical-features,satellite-observation,sea-water-turbidity,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea, Bio-Geo-Chemical, L4, monthly means and interpolated daily observation", "missionStartDate": "2020-01-08T00:00:00Z", "abstract": "The High-Resolution Ocean Colour (HR-OC) Consortium (Brockmann Consult, Royal Belgian Institute of Natural Sciences, Flemish Institute for Technological Research) distributes Level 4 (L4) Turbidity (TUR, expressed in FNU), Solid Particulate Matter Concentration (SPM, expressed in mg/l), particulate backscattering at 443nm (BBP443, expressed in m-1) and chlorophyll-a concentration (CHL, expressed in \u00b5g/l) for the Sentinel 2/MSI sensor at 100m resolution for a 20km coastal zone. The products are delivered on a geographic lat-lon grid (EPSG:4326). To limit file size the products are provided in tiles of 600x800 km\u00b2. BBP443, constitute the category of the 'optics' products. The BBP443 product is generated from the L3 RRS products using a quasi-analytical algorithm (Lee et al. 2002). The 'transparency' products include TUR and SPM). They are retrieved through the application of automated switching algorithms to the RRS spectra adapted to varying water conditions (Novoa et al. 2017). The GEOPHYSICAL product consists of the Chlorophyll-a concentration (CHL) retrieved via a multi-algorithm approach with optimized quality flagging (O'Reilly et al. 2019, Gons et al. 2005, Lavigne et al. 2021). Monthly products (P1M) are temporal aggregates of the daily L3 products. Daily products contain gaps in cloudy areas and where there is no overpass at the respective day. Aggregation collects the non-cloudy (and non-frozen) contributions to each pixel. Contributions are averaged per variable. While this does not guarantee data availability in all pixels in case of persistent clouds, it provides a more complete product compared to the sparsely filled daily products. The Monthly L4 products (P1M) are generally provided withing 4 days after the last acquisition date of the month. Daily gap filled L4 products (P1D) are generated using the DINEOF (Data Interpolating Empirical Orthogonal Functions) approach which reconstructs missing data in geophysical datasets by using a truncated Empirical Orthogonal Functions (EOF) basis in an iterative approach. DINEOF reconstructs missing data in a geophysical dataset by extracting the main patterns of temporal and spatial variability from the data. While originally designed for low resolution data products, recent research has resulted in the optimization of DINEOF to handle high resolution data provided by Sentinel-2 MSI, including cloud shadow detection (Alvera-Azc\u00e1rate et al., 2021). These types of L4 products are generated and delivered one month after the respective period.\n\n\n**Processing information:**\n\nThe HR-OC processing system is deployed on Creodias where Sentinel 2/MSI L1C data are available. The production control element is being hosted within the infrastructure of Brockmann Consult. The processing chain consists of:\n* Resampling to 60m and mosaic generation of the set of Sentinel-2 MSI L1C granules of a single overpass that cover a single UTM zone.\n* Application of a glint correction taking into account the detector viewing angles\n* Application of a coastal mask with 20km water + 20km land. The result is a L1C mosaic tile with data just in the coastal area optimized for compression.\n* Level 2 processing with pixel identification (IdePix), atmospheric correction (C2RCC and ACOLITE or iCOR), in-water processing and merging (HR-OC L2W processor). The result is a 60m product with the same extent as the L1C mosaic, with variables for optics, transparency, and geophysics, and with data filled in the water part of the coastal area.\n* invalid pixel identification takes into account corrupted (L1) pixels, clouds, cloud shadow, glint, dry-fallen intertidal flats, coastal mixed-pixels, sea ice, melting ice, floating vegetation, non-water objects, and bottom reflection.\n* Daily L3 aggregation merges all Level 2 mosaics of a day intersecting with a target tile. All valid water pixels are included in the 20km coastal stripes; all other values are set to NaN. There may be more than a single overpass a day, in particular in the northern regions. The main contribution usually is the mosaic of the zone, but also adjacent mosaics may overlap. This step comprises resampling to the 100m target grid. \n* Monthly L4 aggregation combines all Level 3 products of a month and a single tile. The output is a set of 3 NetCDF datasets for optics, transparency, and geophysics respectively, for the tile and month.\n* Gap filling combines all daily products of a period and generates (partially) gap-filled daily products again. The output of gap filling are 3 datasets for optics (BBP443 only), transparency, and geophysics per day.\n\n**Description of observation methods/instruments:**\n\nOcean colour technique exploits the emerging electromagnetic radiation from the sea surface in different wavelengths. The spectral variability of this signal defines the so-called ocean colour which is affected by the presence of phytoplankton.\n\n**Quality / Accuracy / Calibration information:**\n\nA detailed description of the calibration and validation activities performed over this product can be found on the CMEMS web portal and in CMEMS-BGP_HR-QUID-009-201_to_212.\n\n**Suitability, Expected type of users / uses:**\n\nThis product is meant for use for educational purposes and for the managing of the marine safety, marine resources, marine and coastal environment and for climate and seasonal studies.\n\n**Dataset names: **\n*cmems_obs_oc_bal_bgc_geophy_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_bal_bgc_transp_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_bal_bgc_optics_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_bal_bgc_geophy_nrt_l4-hr_P1D-v01\n*cmems_obs_oc_bal_bgc_transp_nrt_l4-hr_P1D-v01\n*cmems_obs_oc_bal_bgc_optics_nrt_l4-hr_P1D-v01\n\n**Files format:**\n*netCDF-4, CF-1.7\n*INSPIRE compliant.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00080\n\n**References:**\n\n* Alvera-Azc\u00e1rate, Aida, et al. (2021), Detection of shadows in high spatial resolution ocean satellite data using DINEOF. Remote Sensing of Environment 253: 112229.\n* Lavigne, H., et al. (2021), Quality-control tests for OC4, OC5 and NIR-red satellite chlorophyll-a algorithms applied to coastal waters, Remote Sensing of Environment, in press.\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772.\n* Novoa, S., et al. (2017), Atmospheric corrections and multi-conditional algorithm for multi-sensor remote sensing of suspended particulate matter in low-to-high turbidity levels coastal waters. Remote Sens., v. 9, 61.\n* Gons, et al. (2005), Effect of a waveband shift on chlorophyll retrieval from MERIS imagery of inland and coastal waters, J. Plankton Res., v. 27, n. 1, p. 125-127.\n* O'Reilly, et al. (2019), Chlorophyll algorithms for ocean color sensors-OC4, OC5 & OC6. Remote Sensing of Environment. 229, 32\u201347.\n", "providers": [{"name": "BC (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00080"}, "INSITU_BLK_PHYBGCWAV_DISCRETE_MYNRT_013_034": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 2", "keywords": "black-sea,coastal-marine-environment,direction-of-sea-water-velocity,in-situ-observation,insitu-blk-phybgcwav-discrete-mynrt-013-034,level-2,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,moles-of-oxygen-per-unit-mass-in-sea-water,near-real-time,oceanographic-geographical-features,sea-surface-wave-from-direction,sea-surface-wave-mean-period,sea-surface-wave-significant-height,sea-water-practical-salinity,sea-water-speed,sea-water-temperature,water-surface-height-above-reference-datum,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea- In-Situ Near Real Time Observations", "missionStartDate": "1864-01-11T00:00:00Z", "abstract": "Black Sea - near real-time (NRT) in situ quality controlled observations, hourly updated and distributed by INSTAC within 24-48 hours from acquisition in average\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00033", "providers": [{"name": "IO-BAS (Bulgaria)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00033"}, "INSITU_GLO_WAV_DISCRETE_MY_013_045": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 2", "keywords": "coastal-marine-environment,global-ocean,in-situ-observation,insitu-glo-wav-discrete-my-013-045,level-2,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,sea-surface-wave-mean-period,sea-surface-wave-significant-height,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean - Delayed Mode Wave product", "missionStartDate": "1970-04-27T18:00:00Z", "abstract": "These products integrate wave observations aggregated and validated from the Regional EuroGOOS consortium (Arctic-ROOS, BOOS, NOOS, IBI-ROOS, MONGOOS) and Black Sea GOOS as well as from National Data Centers (NODCs) and JCOMM global systems (OceanSITES, DBCP) and the Global telecommunication system (GTS) used by the Met Offices.\n\n**DOI (product):** \nhttps://doi.org/10.17882/70345", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.17882/70345"}, "OCEANCOLOUR_NWS_BGC_HR_L4_NRT_009_209": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-suspended-matter-in-sea-water,near-real-time,north-west-shelf-seas,oceancolour-nws-bgc-hr-l4-nrt-009-209,oceanographic-geographical-features,satellite-observation,sea-water-turbidity,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "North West Shelf Region, Bio-Geo-Chemical, L4, monthly means and interpolated daily observation", "missionStartDate": "2020-01-04T00:00:00Z", "abstract": "The High-Resolution Ocean Colour (HR-OC) Consortium (Brockmann Consult, Royal Belgian Institute of Natural Sciences, Flemish Institute for Technological Research) distributes Level 4 (L4) Turbidity (TUR, expressed in FNU), Solid Particulate Matter Concentration (SPM, expressed in mg/l), particulate backscattering at 443nm (BBP443, expressed in m-1) and chlorophyll-a concentration (CHL, expressed in \u00b5g/l) for the Sentinel 2/MSI sensor at 100m resolution for a 20km coastal zone. The products are delivered on a geographic lat-lon grid (EPSG:4326). To limit file size the products are provided in tiles of 600x800 km\u00b2. BBP443, constitute the category of the 'optics' products. The BBP443 product is generated from the L3 RRS products using a quasi-analytical algorithm (Lee et al. 2002). The 'transparency' products include TUR and SPM). They are retrieved through the application of automated switching algorithms to the RRS spectra adapted to varying water conditions (Novoa et al. 2017). The GEOPHYSICAL product consists of the Chlorophyll-a concentration (CHL) retrieved via a multi-algorithm approach with optimized quality flagging (O'Reilly et al. 2019, Gons et al. 2005, Lavigne et al. 2021). Monthly products (P1M) are temporal aggregates of the daily L3 products. Daily products contain gaps in cloudy areas and where there is no overpass at the respective day. Aggregation collects the non-cloudy (and non-frozen) contributions to each pixel. Contributions are averaged per variable. While this does not guarantee data availability in all pixels in case of persistent clouds, it provides a more complete product compared to the sparsely filled daily products. The Monthly L4 products (P1M) are generally provided withing 4 days after the last acquisition date of the month. Daily gap filled L4 products (P1D) are generated using the DINEOF (Data Interpolating Empirical Orthogonal Functions) approach which reconstructs missing data in geophysical datasets by using a truncated Empirical Orthogonal Functions (EOF) basis in an iterative approach. DINEOF reconstructs missing data in a geophysical dataset by extracting the main patterns of temporal and spatial variability from the data. While originally designed for low resolution data products, recent research has resulted in the optimization of DINEOF to handle high resolution data provided by Sentinel-2 MSI, including cloud shadow detection (Alvera-Azc\u00e1rate et al., 2021). These types of L4 products are generated and delivered one month after the respective period.\n\n**Processing information:**\n\nThe HR-OC processing system is deployed on Creodias where Sentinel 2/MSI L1C data are available. The production control element is being hosted within the infrastructure of Brockmann Consult. The processing chain consists of:\n* Resampling to 60m and mosaic generation of the set of Sentinel-2 MSI L1C granules of a single overpass that cover a single UTM zone.\n* Application of a glint correction taking into account the detector viewing angles\n* Application of a coastal mask with 20km water + 20km land. The result is a L1C mosaic tile with data just in the coastal area optimized for compression.\n* Level 2 processing with pixel identification (IdePix), atmospheric correction (C2RCC and ACOLITE or iCOR), in-water processing and merging (HR-OC L2W processor). The result is a 60m product with the same extent as the L1C mosaic, with variables for optics, transparency, and geophysics, and with data filled in the water part of the coastal area.\n* invalid pixel identification takes into account corrupted (L1) pixels, clouds, cloud shadow, glint, dry-fallen intertidal flats, coastal mixed-pixels, sea ice, melting ice, floating vegetation, non-water objects, and bottom reflection.\n* Daily L3 aggregation merges all Level 2 mosaics of a day intersecting with a target tile. All valid water pixels are included in the 20km coastal stripes; all other values are set to NaN. There may be more than a single overpass a day, in particular in the northern regions. The main contribution usually is the mosaic of the zone, but also adjacent mosaics may overlap. This step comprises resampling to the 100m target grid. \n* Monthly L4 aggregation combines all Level 3 products of a month and a single tile. The output is a set of 3 NetCDF datasets for optics, transparency, and geophysics respectively, for the tile and month.\n* Gap filling combines all daily products of a period and generates (partially) gap-filled daily products again. The output of gap filling are 3 datasets for optics (BBP443 only), transparency, and geophysics per day.\n\n**Description of observation methods/instruments:**\n\nOcean colour technique exploits the emerging electromagnetic radiation from the sea surface in different wavelengths. The spectral variability of this signal defines the so-called ocean colour which is affected by the presence of phytoplankton.\n\n**Quality / Accuracy / Calibration information:**\n\nA detailed description of the calibration and validation activities performed over this product can be found on the CMEMS web portal and in CMEMS-BGP_HR-QUID-009-201_to_212.\n\n**Suitability, Expected type of users / uses:**\n\nThis product is meant for use for educational purposes and for the managing of the marine safety, marine resources, marine and coastal environment and for climate and seasonal studies.\n\n**Dataset names: **\n*cmems_obs_oc_nws_bgc_geophy_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_nws_bgc_transp_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_nws_bgc_optics_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_nws_bgc_geophy_nrt_l4-hr_P1D-v01\n*cmems_obs_oc_nws_bgc_transp_nrt_l4-hr_P1D-v01\n*cmems_obs_oc_nws_bgc_optics_nrt_l4-hr_P1D-v01\n\n**Files format:**\n*netCDF-4, CF-1.7\n*INSPIRE compliant.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00119\n\n**References:**\n\n* Alvera-Azc\u00e1rate, Aida, et al. (2021), Detection of shadows in high spatial resolution ocean satellite data using DINEOF. Remote Sensing of Environment 253: 112229.\n* Lavigne, H., et al. (2021), Quality-control tests for OC4, OC5 and NIR-red satellite chlorophyll-a algorithms applied to coastal waters, Remote Sensing of Environment, in press.\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772.\n* Novoa, S., et al. (2017), Atmospheric corrections and multi-conditional algorithm for multi-sensor remote sensing of suspended particulate matter in low-to-high turbidity levels coastal waters. Remote Sens., v. 9, 61.\n* Gons, et al. (2005), Effect of a waveband shift on chlorophyll retrieval from MERIS imagery of inland and coastal waters, J. Plankton Res., v. 27, n. 1, p. 125-127.\n* O'Reilly, et al. (2019), Chlorophyll algorithms for ocean color sensors-OC4, OC5 & OC6. Remote Sensing of Environment. 229, 32\u201347.\n", "providers": [{"name": "BC (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00119"}, "OMI_CLIMATE_SST_BAL_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-sea,coastal-marine-environment,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-climate-sst-bal-area-averaged-anomalies,satellite-observation,sea-surface-foundation-temperature,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Surface Temperature anomaly time series and trend from Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe OMI_CLIMATE_SST_BAL_area_averaged_anomalies product includes time series of monthly mean SST anomalies over the period 1993-2022, relative to the 1993-2014 climatology, averaged for the Baltic Sea. The SST Level 4 analysis products that provide the input to the monthly averages are taken from the reprocessed product SST_BAL_SST_L4_REP_OBSERVATIONS_010_016 with a recent update to include 2022. The product has a spatial resolution of 0.02 in latitude and longitude.\nThe OMI time series runs from Jan 1, 1993 to December 31, 2022 and is constructed by calculating monthly averages from the daily level 4 SST analysis fields of the SST_BAL_SST_L4_REP_OBSERVATIONS_010_016 product from 1993 to 2022. See the Copernicus Marine Service Ocean State Reports (section 1.1 in Von Schuckmann et al., 2016; section 3 in Von Schuckmann et al., 2018) for more information on the OMI product. \n\n**CONTEXT**\n\nSea Surface Temperature (SST) is an Essential Climate Variable (GCOS) that is an important input for initialising numerical weather prediction models and fundamental for understanding air-sea interactions and monitoring climate change (GCOS 2010). The Baltic Sea is a region that requires special attention regarding the use of satellite SST records and the assessment of climatic variability (H\u00f8yer and She 2007; H\u00f8yer and Karagali 2016). The Baltic Sea is a semi-enclosed basin with natural variability and it is influenced by large-scale atmospheric processes and by the vicinity of land. In addition, the Baltic Sea is one of the largest brackish seas in the world. When analysing regional-scale climate variability, all these effects have to be considered, which requires dedicated regional and validated SST products. Satellite observations have previously been used to analyse the climatic SST signals in the North Sea and Baltic Sea (BACC II Author Team 2015; Lehmann et al. 2011). Recently, H\u00f8yer and Karagali (2016) demonstrated that the Baltic Sea had warmed 1-2 oC from 1982 to 2012 considering all months of the year and 3-5 oC when only July-September months were considered. This was corroborated in the Ocean State Reports (section 1.1 in Von Schuckmann et al., 2016; section 3 in Von Schuckmann et al., 2018). \n\n**CMEMS KEY FINDINGS**\n\nThe basin-average trend of SST anomalies for Baltic Sea region amounts to 0.048\u00b10.006\u00b0C/year over the period 1993-2022 which corresponds to an average warming of 1.44\u00b0C. Adding the North Sea area, the average trend amounts to 0.029\u00b10.003\u00b0C/year over the same period, which corresponds to an average warming of 0.87\u00b0C for the entire region since 1993. \n\n**Figure caption**\n\nTime series of monthly mean (turquoise line) and annual mean (blue line) of sea surface temperature anomalies for January 1993 to December 2022, relative to the 1993-2014 mean, combined for the Baltic Sea and North Sea SST (OMI_CLIMATE_SST_BAL_area_averaged_anomalies). The data are based on the multi-year Baltic Sea L4 satellite SST reprocessed product SST_BAL_SST_L4_REP_OBSERVATIONS_010_016.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00205\n\n**References:**\n\n* BACC II Author Team 2015. Second Assessment of Climate Change for the Baltic Sea Basin. Springer Science & Business Media, 501 pp., doi:10.1007/978-3-319-16006-1.\n* GCOS. Global Climate Observing System. 2010. Update of the Implementation Plan for the Global Observing System for Climate in Support of the UNFCCC (GCO-138).\n* H\u00f8yer JL, She J. 2007. Optimal interpolation of sea surface temperature for the North Sea and Baltic Sea. J. Mar. Syst., 65, 176\u2013189, doi:10.1016/j.jmarsys.2005.03.008.\n* Lehmann A, Getzlaff K, Harla\u00df J. 2011. Detailed assessment of climate variability of the Baltic Sea area for the period 1958\u20132009. Climate Res., 46, 185\u2013196, doi:10.3354/cr00876.\n* Karina von Schuckmann ((Editor)), Pierre-Yves Le Traon ((Editor)), Neville Smith ((Editor)), Ananda Pascual ((Editor)), Pierre Brasseur ((Editor)), Katja Fennel ((Editor)), Samy Djavidnia ((Editor)), Signe Aaboe, Enrique Alvarez Fanjul, Emmanuelle Autret, Lars Axell, Roland Aznar, Mario Benincasa, Abderahim Bentamy, Fredrik Boberg, Romain Bourdall\u00e9-Badie, Bruno Buongiorno Nardelli, Vittorio E. Brando, Cl\u00e9ment Bricaud, Lars-Anders Breivik, Robert J.W. Brewin, Arthur Capet, Adrien Ceschin, Stefania Ciliberti, Gianpiero Cossarini, Mar-ta de Alfonso, Alvaro de Pascual Collar, Jos de Kloe, Julie Deshayes, Charles Desportes, Marie Dr\u00e9villon, Yann Drillet, Riccardo Droghei, Clotilde Dubois, Owen Embury, H\u00e9l\u00e8ne Etienne, Claudia Fratianni, Jes\u00fas Garc\u00eda La-fuente, Marcos Garcia Sotillo, Gilles Garric, Florent Gasparin, Riccardo Gerin, Simon Good, J\u00e9rome Gourrion, Marilaure Gr\u00e9goire, Eric Greiner, St\u00e9phanie Guinehut, Elodie Gutknecht, Fabrice Hernandez, Olga Hernandez, Jacob H\u00f8yer, Laura Jackson, Simon Jandt, Simon Josey, M\u00e9lanie Juza, John Kennedy, Zoi Kokkini, Gerasimos Korres, Mariliis K\u00f5uts, Priidik Lagemaa, Thomas Lavergne, Bernard le Cann, Jean-Fran\u00e7ois Legeais, Benedicte Lemieux-Dudon, Bruno Levier, Vidar Lien, Ilja Maljutenko, Fernando Manzano, Marta Marcos, Veselka Mari-nova, Simona Masina, Elena Mauri, Michael Mayer, Angelique Melet, Fr\u00e9d\u00e9ric M\u00e9lin, Benoit Meyssignac, Maeva Monier, Malte M\u00fcller, Sandrine Mulet, Cristina Naranjo, Giulio Notarstefano, Aur\u00e9lien Paulmier, Bego\u00f1a P\u00e9rez Gomez, Irene P\u00e9rez Gonzalez, Elisaveta Peneva, Coralie Perruche, K. Andrew Peterson, Nadia Pinardi, Andrea Pisano, Silvia Pardo, Pierre-Marie Poulain, Roshin P. Raj, Urmas Raudsepp, Michaelis Ravdas, Rebecca Reid, Marie-H\u00e9l\u00e8ne Rio, Stefano Salon, Annette Samuelsen, Michela Sammartino, Simone Sammartino, Anne Britt Sand\u00f8, Rosalia Santoleri, Shubha Sathyendranath, Jun She, Simona Simoncelli, Cosimo Solidoro, Ad Stoffelen, Andrea Storto, Tanguy Szerkely, Susanne Tamm, Steffen Tietsche, Jonathan Tinker, Joaqu\u00edn Tintore, Ana Trindade, Daphne van Zanten, Luc Vandenbulcke, Anton Verhoef, Nathalie Verbrugge, Lena Viktorsson, Karina von Schuckmann, Sarah L. Wakelin, Anna Zacharioudaki & Hao Zuo (2018) Copernicus Marine Service Ocean State Report, Journal of Operational Oceanography, 11:sup1, S1-S142, DOI: 10.1080/1755876X.2018.1489208\n* Karina von Schuckmann, Pierre-Yves Le Traon, Enrique Alvarez-Fanjul, Lars Axell, Magdalena Balmaseda, Lars-Anders Breivik, Robert J. W. Brewin, Clement Bricaud, Marie Drevillon, Yann Drillet, Clotilde Dubois, Owen Embury, H\u00e9l\u00e8ne Etienne, Marcos Garc\u00eda Sotillo, Gilles Garric, Florent Gasparin, Elodie Gutknecht, St\u00e9phanie Guinehut, Fabrice Hernandez, Melanie Juza, Bengt Karlson, Gerasimos Korres, Jean-Fran\u00e7ois Legeais, Bruno Levier, Vidar S. Lien, Rosemary Morrow, Giulio Notarstefano, Laurent Parent, \u00c1lvaro Pascual, Bego\u00f1a P\u00e9rez-G\u00f3mez, Coralie Perruche, Nadia Pinardi, Andrea Pisano, Pierre-Marie Poulain, Isabelle M. Pujol, Roshin P. Raj, Urmas Raudsepp, Herv\u00e9 Roquet, Annette Samuelsen, Shubha Sathyendranath, Jun She, Simona Simoncelli, Cosimo Solidoro, Jonathan Tinker, Joaqu\u00edn Tintor\u00e9, Lena Viktorsson, Michael Ablain, Elin Almroth-Rosell, Antonio Bonaduce, Emanuela Clementi, Gianpiero Cossarini, Quentin Dagneaux, Charles Desportes, Stephen Dye, Claudia Fratianni, Simon Good, Eric Greiner, Jerome Gourrion, Mathieu Hamon, Jason Holt, Pat Hyder, John Kennedy, Fernando Manzano-Mu\u00f1oz, Ang\u00e9lique Melet, Benoit Meyssignac, Sandrine Mulet, Bruno Buongiorno Nardelli, Enda O\u2019Dea, Einar Olason, Aur\u00e9lien Paulmier, Irene P\u00e9rez-Gonz\u00e1lez, Rebecca Reid, Ma-rie-Fanny Racault, Dionysios E. Raitsos, Antonio Ramos, Peter Sykes, Tanguy Szekely & Nathalie Verbrugge (2016) The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography, 9:sup2, s235-s320, DOI: 10.1080/1755876X.2016.1273446\n* H\u00f8yer, JL, Karagali, I. 2016. Sea surface temperature climate data record for the North Sea and Baltic Sea. Journal of Climate, 29(7), 2529-2541.\n", "providers": [{"name": "DMI (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00205"}, "OMI_CLIMATE_SST_IST_ARCTIC_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,coastal-marine-environment,ice-surface-temperature,level-4,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-climate-sst-ist-arctic-area-averaged-anomalies,satellite-observation,sea-surface-temperature,target-application#seaiceinformation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Sea and Sea Ice Surface Temperature anomaly time series based on reprocessed observations", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION **\n\nThe OMI_CLIMATE_SST_IST_ARCTIC_sst_ist_area_averaged_anomalies product includes time series of monthly mean SST/IST anomalies over the period 1993-2022, relative to the 1993-2014 climatology, averaged for the Arctic Ocean. The SST/IST Level 4 analysis products that provide the input to the monthly averages are taken from the reprocessed product SEAICE_ARC_PHY_CLIMATE_L4_MY_011_016 with a recent update to include 2022. The product has a spatial resolution of 0.05 degrees in latitude and longitude. Since the SEAICE_ARC_PHY_CLIMATE_L4_MY_011_016 is currently only available until the 30th June 2022, an adjusted version of the SEAICE_ARC_SEAICE_L4_NRT_OBSERVATIONS_011_008 product has been used for the rest of 2022. The adjustment is based on the biases between the NRT and reprocessed product during the second half of 2021 and was made to ensure consistency in the OMIs\nThe OMI time series runs from Jan 1, 1993 to December 31, 2022 and is constructed by calculating monthly average anomalies from the reference climatology from 1993 to 2014, using the daily level 4 SST analysis fields of the SEAICE_ARC_PHY_CLIMATE_L4_MY_011_016 product. See the Copernicus Marine Service Ocean State Reports (section 1.1 in Von Schuckmann et al., 2016; section 3 in Von Schuckmann et al., 2018) for more information on the temperature OMI product. The times series of monthly anomalies have been used to calculate the trend in surface temperature (combined SST and IST) using Sen\u2019s method with confidence intervals from the Mann-Kendall test (section 3 in Von Schuckmann et al., 2018).\n\n**CONTEXT**\n\nSST and IST are essential climate variables that act as important input for initializing numerical weather prediction models and fundamental for understanding air-sea interactions and monitoring climate change. Especially in the Arctic, SST/IST feedbacks amplify climate change (AMAP, 2021). In the Arctic Ocean, the surface temperatures play a crucial role for the heat exchange between the ocean and atmosphere, sea ice growth and melt processes (Key et al, 1997) in addition to weather and sea ice forecasts through assimilation into ocean and atmospheric models (Rasmussen et al., 2018). \nThe Arctic Ocean is a region that requires special attention regarding the use of satellite SST and IST records and the assessment of climatic variability due to the presence of both seawater and ice, and the large seasonal and inter-annual fluctuations in the sea ice cover which lead to increased complexity in the SST mapping of the Arctic region. Combining SST and ice surface temperature (IST) is identified as the most appropriate method for determining the surface temperature of the Arctic (Minnett et al., 2020). \nPreviously, climate trends have been estimated individually for SST and IST records (Bulgin et al., 2020; Comiso and Hall, 2014). However, this is problematic in the Arctic region due to the large temporal variability in the sea ice cover including the overlying northward migration of the ice edge on decadal timescales, and thus, the resulting climate trends are not easy to interpret (Comiso, 2003). A combined surface temperature dataset of the ocean, sea ice and the marginal ice zone (MIZ) provides a consistent climate indicator, which is important for studying climate trends in the Arctic region. \n\n**CMEMS KEY FINDINGS**\n\nThe basin-average trend of SST/IST anomalies for the Arctic Ocean region amounts to 0.122\u00b10.008 \u00b0C/year over the period 1993-2022 which corresponds to an average warming of 3.66\u00b0C. Warming trends are highest for the Kara Sea and the Arctic Ocean region over Eurasia. The 2d map of Arctic anomalies reveals regional peak warmings exceeding 10\u00b0C. \n\n**Figure caption**\n\nTime series of monthly mean (turquoise line) and annual mean (blue line) of sea and ice surface temperature anomalies for January 1993 to December 2022, relative to the 1993-2014 mean, for the Arctic SST/IST product (OMI_CLIMATE_SST_IST_ARCTIC_area_averaged_anomalies). The data are based on the multi-year Arctic L4 satellite SST/IST reprocessed product SEAICE_ARC_PHY_CLIMATE_L4_MY_011_016.\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00323\n\n**References:**\n\n* AMAP, 2021. Arctic Climate Change Update 2021: Key Trends and Impacts. Summary for Policy-makers. Arctic Monitoring and Assessment Programme (AMAP), Troms\u00f8, Norway.\n* Bulgin, C.E., Merchant, C.J., Ferreira, D., 2020. Tendencies, variability and persistence of sea surface temperature anomalies. Sci Rep 10, 7986. https://doi.org/10.1038/s41598-020-64785-9\n* Comiso, J.C., 2003. Warming Trends in the Arctic from Clear Sky Satellite Observations. Journal of Climate. https://doi.org/10.1175/1520-0442(2003)016<3498:WTITAF>2.0.CO;2\n* Comiso, J.C., Hall, D.K., 2014. Climate trends in the Arctic as observed from space: Climate trends in the Arctic as observed from space. WIREs Clim Change 5, 389\u2013409. https://doi.org/10.1002/wcc.277\n* Kendall MG. 1975. Multivariate analysis. London: CharlesGriffin & Co; p. 210, 4\n* Key, J.R., Collins, J.B., Fowler, C., Stone, R.S., 1997. High-latitude surface temperature estimates from thermal satellite data. Remote Sensing of Environment 61, 302\u2013309. https://doi.org/10.1016/S0034-4257(97)89497-7\n* Minnett, P.J., Kilpatrick, K.A., Podest\u00e1, G.P., Evans, R.H., Szczodrak, M.D., Izaguirre, M.A., Williams, E.J., Walsh, S., Reynolds, R.M., Bailey, S.W., Armstrong, E.M., Vazquez-Cuervo, J., 2020. Skin Sea-Surface Temperature from VIIRS on Suomi-NPP\u2014NASA Continuity Retrievals. Remote Sensing 12, 3369. https://doi.org/10.3390/rs12203369\n* Rasmussen, T.A.S., H\u00f8yer, J.L., Ghent, D., Bulgin, C.E., Dybkjaer, G., Ribergaard, M.H., Nielsen-Englyst, P., Madsen, K.S., 2018. Impact of Assimilation of Sea-Ice Surface Temperatures on a Coupled Ocean and Sea-Ice Model. Journal of Geophysical Research: Oceans 123, 2440\u20132460. https://doi.org/10.1002/2017JC013481\n* Sen PK. 1968. Estimates of the regression coefficient based on Kendall\u2019s tau. J AmStatist Assoc. 63:1379\u20131389\n* von Schuckmann et al., 2016: The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography, Volume 9, 2016 - Issue sup2: The Copernicus Marine Environment Monitoring Service Ocean, http://dx.doi.org/10.1080/1755876X.2016.1273446.\n* von Schuckmann, K., Le Traon, P.-Y., Smith, N., Pascual, A., Brasseur, P., Fennel, K., Djavidnia, S., Aaboe, S., Fanjul, E. A., Autret, E., Axell, L., Aznar, R., Benincasa, M., Bentamy, A., Boberg, F., Bourdall\u00e9-Badie, R., Nardelli, B. B., Brando, V. E., Bricaud, C., \u2026 Zuo, H. (2018). Copernicus Marine Service Ocean State Report. Journal of Operational Oceanography, 11(sup1), S1\u2013S142. https://doi.org/10.1080/1755876X.2018.1489208\n", "providers": [{"name": "DMI (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00323"}, "OCEANCOLOUR_ARC_BGC_L4_NRT_009_122": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,near-real-time,oceancolour-arc-bgc-l4-nrt-009-122,oceanographic-geographical-features,satellite-observation,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean Colour Plankton and Transparency L4 NRT monthly observations", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "For the **Arctic** Ocean **Satellite Observations**, Italian National Research Council (CNR \u2013 Rome, Italy) is providing **Bio-Geo_Chemical (BGC)** products.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP, OLCI-S3A & OLCI-S3B for the **\"\"multi\"\"** products, and S3A & S3B only for the **\"\"olci\"\"** products.\n* Variables: Chlorophyll-a (**CHL**) and Diffuse Attenuation (**KD490**).\n\n* Temporal resolutions:**monthly**.\n* Spatial resolutions: **1 km** (multi) or **300 meters** (olci).\n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00291", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00291"}, "INSITU_NWS_PHYBGCWAV_DISCRETE_MYNRT_013_036": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 2", "keywords": "coastal-marine-environment,direction-of-sea-water-velocity,in-situ-observation,insitu-nws-phybgcwav-discrete-mynrt-013-036,level-2,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,moles-of-oxygen-per-unit-mass-in-sea-water,near-real-time,north-west-shelf-seas,oceanographic-geographical-features,sea-surface-wave-from-direction,sea-surface-wave-mean-period,sea-surface-wave-significant-height,sea-water-practical-salinity,sea-water-speed,sea-water-temperature,water-surface-height-above-reference-datum,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic- European North West Shelf- Ocean In-Situ Near Real Time observations", "missionStartDate": "2024-01-28T00:00:00Z", "abstract": "NorthWest Shelf area - near real-time (NRT) in situ quality controlled observations, hourly updated and distributed by INSTAC within 24-48 hours from acquisition in average\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00045", "providers": [{"name": "BSH (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00045"}, "OCEANCOLOUR_IBI_BGC_HR_L4_NRT_009_210": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-suspended-matter-in-sea-water,near-real-time,oceancolour-ibi-bgc-hr-l4-nrt-009-210,oceanographic-geographical-features,satellite-observation,sea-water-turbidity,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Iberic Sea, Bio-Geo-Chemical, L4, monthly means and interpolated daily observation", "missionStartDate": "2020-01-01T00:00:00Z", "abstract": "The High-Resolution Ocean Colour (HR-OC) Consortium (Brockmann Consult, Royal Belgian Institute of Natural Sciences, Flemish Institute for Technological Research) distributes Level 4 (L4) Turbidity (TUR, expressed in FNU), Solid Particulate Matter Concentration (SPM, expressed in mg/l), particulate backscattering at 443nm (BBP443, expressed in m-1) and chlorophyll-a concentration (CHL, expressed in \u00b5g/l) for the Sentinel 2/MSI sensor at 100m resolution for a 20km coastal zone. The products are delivered on a geographic lat-lon grid (EPSG:4326). To limit file size the products are provided in tiles of 600x800 km\u00b2. BBP443, constitute the category of the 'optics' products. The BBP443 product is generated from the L3 RRS products using a quasi-analytical algorithm (Lee et al. 2002). The 'transparency' products include TUR and SPM). They are retrieved through the application of automated switching algorithms to the RRS spectra adapted to varying water conditions (Novoa et al. 2017). The GEOPHYSICAL product consists of the Chlorophyll-a concentration (CHL) retrieved via a multi-algorithm approach with optimized quality flagging (O'Reilly et al. 2019, Gons et al. 2005, Lavigne et al. 2021). Monthly products (P1M) are temporal aggregates of the daily L3 products. Daily products contain gaps in cloudy areas and where there is no overpass at the respective day. Aggregation collects the non-cloudy (and non-frozen) contributions to each pixel. Contributions are averaged per variable. While this does not guarantee data availability in all pixels in case of persistent clouds, it provides a more complete product compared to the sparsely filled daily products. The Monthly L4 products (P1M) are generally provided withing 4 days after the last acquisition date of the month. Daily gap filled L4 products (P1D) are generated using the DINEOF (Data Interpolating Empirical Orthogonal Functions) approach which reconstructs missing data in geophysical datasets by using a truncated Empirical Orthogonal Functions (EOF) basis in an iterative approach. DINEOF reconstructs missing data in a geophysical dataset by extracting the main patterns of temporal and spatial variability from the data. While originally designed for low resolution data products, recent research has resulted in the optimization of DINEOF to handle high resolution data provided by Sentinel-2 MSI, including cloud shadow detection (Alvera-Azc\u00e1rate et al., 2021). These types of L4 products are generated and delivered one month after the respective period.\n\n**Processing information:**\n\nThe HR-OC processing system is deployed on Creodias where Sentinel 2/MSI L1C data are available. The production control element is being hosted within the infrastructure of Brockmann Consult. The processing chain consists of:\n* Resampling to 60m and mosaic generation of the set of Sentinel-2 MSI L1C granules of a single overpass that cover a single UTM zone.\n* Application of a glint correction taking into account the detector viewing angles\n* Application of a coastal mask with 20km water + 20km land. The result is a L1C mosaic tile with data just in the coastal area optimized for compression.\n* Level 2 processing with pixel identification (IdePix), atmospheric correction (C2RCC and ACOLITE or iCOR), in-water processing and merging (HR-OC L2W processor). The result is a 60m product with the same extent as the L1C mosaic, with variables for optics, transparency, and geophysics, and with data filled in the water part of the coastal area.\n* invalid pixel identification takes into account corrupted (L1) pixels, clouds, cloud shadow, glint, dry-fallen intertidal flats, coastal mixed-pixels, sea ice, melting ice, floating vegetation, non-water objects, and bottom reflection. \n* Daily L3 aggregation merges all Level 2 mosaics of a day intersecting with a target tile. All valid water pixels are included in the 20km coastal stripes; all other values are set to NaN. There may be more than a single overpass a day, in particular in the northern regions. The main contribution usually is the mosaic of the zone, but also adjacent mosaics may overlap. This step comprises resampling to the 100m target grid. \n* Monthly L4 aggregation combines all Level 3 products of a month and a single tile. The output is a set of 3 NetCDF datasets for optics, transparency, and geophysics respectively, for the tile and month.\n* Gap filling combines all daily products of a period and generates (partially) gap-filled daily products again. The output of gap filling are 3 datasets for optics (BBP443 only), transparency, and geophysics per day.\n\n**Description of observation methods/instruments:**\n\nOcean colour technique exploits the emerging electromagnetic radiation from the sea surface in different wavelengths. The spectral variability of this signal defines the so-called ocean colour which is affected by the presence of phytoplankton.\n\n**Quality / Accuracy / Calibration information:**\n\nA detailed description of the calibration and validation activities performed over this product can be found on the CMEMS web portal and in CMEMS-BGP_HR-QUID-009-201_to_212.\n\n**Suitability, Expected type of users / uses:**\n\nThis product is meant for use for educational purposes and for the managing of the marine safety, marine resources, marine and coastal environment and for climate and seasonal studies.\n\n**Dataset names: **\n*cmems_obs_oc_ibi_bgc_geophy_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_ibi_bgc_transp_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_ibi_bgc_optics_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_ibi_bgc_geophy_nrt_l4-hr_P1D-v01\n*cmems_obs_oc_ibi_bgc_transp_nrt_l4-hr_P1D-v01\n*cmems_obs_oc_ibi_bgc_optics_nrt_l4-hr_P1D-v01\n\n**Files format:**\n*netCDF-4, CF-1.7\n*INSPIRE compliant.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00108\n\n**References:**\n\n* Alvera-Azc\u00e1rate, Aida, et al. (2021), Detection of shadows in high spatial resolution ocean satellite data using DINEOF. Remote Sensing of Environment 253: 112229.\n* Lavigne, H., et al. (2021), Quality-control tests for OC4, OC5 and NIR-red satellite chlorophyll-a algorithms applied to coastal waters, Remote Sensing of Environment, in press.\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772.\n* Novoa, S., et al. (2017), Atmospheric corrections and multi-conditional algorithm for multi-sensor remote sensing of suspended particulate matter in low-to-high turbidity levels coastal waters. Remote Sens., v. 9, 61.\n* Gons, et al. (2005), Effect of a waveband shift on chlorophyll retrieval from MERIS imagery of inland and coastal waters, J. Plankton Res., v. 27, n. 1, p. 125-127.\n* O'Reilly, et al. (2019), Chlorophyll algorithms for ocean color sensors-OC4, OC5 & OC6. Remote Sensing of Environment. 229, 32\u201347.\n", "providers": [{"name": "BC (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00108"}, "OMI_CLIMATE_SL_GLOBAL_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-climate-sl-global-area-averaged-anomalies,satellite-observation,sea-surface-height-above-sea-level,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Mean Sea Level time series and trend from Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe ocean monitoring indicator on mean sea level is derived from the DUACS delayed-time (DT-2021 version, \u201cmy\u201d (multi-year) dataset used when available, \u201cmyint\u201d (multi-year interim) used after) sea level anomaly maps from satellite altimetry based on a stable number of altimeters (two) in the satellite constellation. These products are distributed by the Copernicus Climate Change Service and by the Copernicus Marine Service (SEALEVEL_GLO_PHY_CLIMATE_L4_MY_008_057).\nThe time series of area averaged anomalies correspond to the area average of the maps in the Global Ocean weighted by the cosine of the latitude (to consider the changing area in each grid with latitude) and by the proportion of ocean in each grid (to consider the coastal areas). The time series are corrected from global TOPEX-A instrumental drift (WCRP Global Sea Level Budget Group, 2018) and global GIA correction of -0.3mm/yr (common global GIA correction, see Spada, 2017). The time series are adjusted for seasonal annual and semi-annual signals and low-pass filtered at 6 months. Then, the trends/accelerations are estimated on the time series using ordinary least square fit.\nThe trend uncertainty of 0.3 mm/yr is provided at 90% confidence interval using altimeter error budget (Gu\u00e9rou et al., 2022). This estimate only considers errors related to the altimeter observation system (i.e., orbit determination errors, geophysical correction errors and inter-mission bias correction errors). The presence of the interannual signal can strongly influence the trend estimation depending on the period considered (Wang et al., 2021; Cazenave et al., 2014). The uncertainty linked to this effect is not considered. \n\n**CONTEXT**\n\nChange in mean sea level is an essential indicator of our evolving climate, as it reflects both the thermal expansion of the ocean in response to its warming and the increase in ocean mass due to the melting of ice sheets and glaciers(WCRP Global Sea Level Budget Group, 2018). According to the recent IPCC 6th assessment report (IPCC WGI, 2021), global mean sea level (GMSL) increased by 0.20 [0.15 to 0.25] m over the period 1901 to 2018 with a rate of rise that has accelerated since the 1960s to 3.7 [3.2 to 4.2] mm/yr for the period 2006\u20132018. Human activity was very likely the main driver of observed GMSL rise since 1970 (IPCC WGII, 2021). The weight of the different contributions evolves with time and in the recent decades the mass change has increased, contributing to the on-going acceleration of the GMSL trend (IPCC, 2022a; Legeais et al., 2020; Horwath et al., 2022). The adverse effects of floods, storms and tropical cyclones, and the resulting losses and damage, have increased as a result of rising sea levels, increasing people and infrastructure vulnerability and food security risks, particularly in low-lying areas and island states (IPCC, 2022b). Adaptation and mitigation measures such as the restoration of mangroves and coastal wetlands, reduce the risks from sea level rise (IPCC, 2022c).\n\n**KEY FINDINGS**\n\nOver the [1993/01/01, 2023/07/06] period, global mean sea level rises at a rate of 3.4 \u00b1 0.3 mm/year. This trend estimation is based on the altimeter measurements corrected from the Topex-A drift at the beginning of the time series (Legeais et al., 2020) and global GIA correction (Spada, 2017) to consider the ongoing movement of land. The observed global trend agrees with other recent estimates (Oppenheimer et al., 2019; IPCC WGI, 2021). About 30% of this rise can be attributed to ocean thermal expansion (WCRP Global Sea Level Budget Group, 2018; von Schuckmann et al., 2018), 60% is due to land ice melt from glaciers and from the Antarctic and Greenland ice sheets. The remaining 10% is attributed to changes in land water storage, such as soil moisture, surface water and groundwater. From year to year, the global mean sea level record shows significant variations related mainly to the El Ni\u00f1o Southern Oscillation (Cazenave and Cozannet, 2014).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00237\n\n**References:**\n\n* Cazenave, A., Dieng, H.-B., Meyssignac, B., von Schuckmann, K., Decharme, B., and Berthier, E.: The rate of sea-level rise, Nat. Clim. Change, 4, 358\u2013361, https://doi.org/10.1038/nclimate2159, 2014.\n* Horwath, M., Gutknecht, B. D., Cazenave, A., Palanisamy, H. K., Marti, F., Marzeion, B., Paul, F., Le Bris, R., Hogg, A. E., Otosaka, I., Shepherd, A., D\u00f6ll, P., C\u00e1ceres, D., M\u00fcller Schmied, H., Johannessen, J. A., Nilsen, J. E. \u00d8., Raj, R. P., Forsberg, R., Sandberg S\u00f8rensen, L., Barletta, V. R., Simonsen, S. B., Knudsen, P., Andersen, O. B., Ranndal, H., Rose, S. K., Merchant, C. J., Macintosh, C. R., von Schuckmann, K., Novotny, K., Groh, A., Restano, M., and Benveniste, J.: Global sea-level budget and ocean-mass budget, with a focus on advanced data products and uncertainty characterisation, Earth Syst. Sci. Data, 14, 411\u2013447, https://doi.org/10.5194/essd-14-411-2022, 2022.\n* IPCC: AR6 Synthesis Report: Climate Change 2022, 2022a.\n* IPCC: Summary for Policymakers [H.-O. P\u00f6rtner, D.C. Roberts, E.S. Poloczanska, K. Mintenbeck, M. Tignor, A. Alegr\u00eda, M. Craig, S. Langsdorf, S. L\u00f6schke, V. M\u00f6ller, A. Okem (eds.)]. In: Climate Change 2022: Impacts, Adaptation, and Vulnerability. Contribution of Working Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [H.-O. P\u00f6rtner, D.C. Roberts, M. Tignor, E.S. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Craig, S. Langsdorf, S. L\u00f6schke, V. M\u00f6ller, A. Okem, B. Rama (eds.)], 2022b.\n* IPCC: Summary for Policymakers. In: Climate Change 2022: Mitigation of Climate Change. Contribution of Working Group III to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [P.R. Shukla, J. Skea, R. Slade, A. Al Khourdajie, R. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, M. Belkacemi, A. Hasija, G. Lisboa, S. Luz, J. Malley, (eds.)], , https://doi.org/10.1017/9781009157926.001, 2022c.\n* IPCC WGI: Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change, 2021.\n* IPCC WGII: Climate Change 2021: Impacts, Adaptation and Vulnerability; Summary for Policemakers. Contribution of Working Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change, 2021.\n* Legeais, J. F., Llowel, W., Melet, A., and Meyssignac, B.: Evidence of the TOPEX-A altimeter instrumental anomaly and acceleration of the global mean sea level, Copernic. Mar. Serv. Ocean State Rep. Issue 4, 13, s77\u2013s82, https://doi.org/10.1080/1755876X.2021.1946240, 2020.\n* Oppenheimer, M., Glavovic, B. C., Hinkel, J., Van de Wal, R., Magnan, A. K., Abd-Elgaward, A., Cai, R., Cifuentes Jara, M., DeConto, R. M., Ghosh, T., Hay, J., Isla, F., Marzeion, B., Meyssignac, B., and Sebesvari, Z.: Sea Level Rise and Implications for Low-Lying Islands, Coasts and Communities \u2014 Special Report on the Ocean and Cryosphere in a Changing Climate: Chapter 4, 2019.\n* Wang, J., Church, J. A., Zhang, X., and Chen, X.: Reconciling global mean and regional sea level change in projections and observations, Nat. Commun., 12, 990, https://doi.org/10.1038/s41467-021-21265-6, 2021.\n* WCRP Global Sea Level Budget Group: Global sea-level budget 1993\u2013present, Earth Syst. Sci. Data, 10, 1551\u20131590, https://doi.org/10.5194/essd-10-1551-2018, 2018.\n* Gu\u00e9rou, A., Meyssignac, B., Prandi, P., Ablain, M., Ribes, A., and Bignalet-Cazalet, F.: Current observed global mean sea level rise and acceleration estimated from satellite altimetry and the associated uncertainty, EGUsphere, 1\u201343, https://doi.org/10.5194/egusphere-2022-330, 2022.\n* Cazenave, A. and Cozannet, G. L.: Sea level rise and its coastal impacts, Earths Future, 2, 15\u201334, https://doi.org/10.1002/2013EF000188, 2014.\n", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00237"}, "INSITU_GLO_BGC_CARBON_DISCRETE_MY_013_050": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,fugacity-of-carbon-dioxide-in-sea-water,global-ocean,in-situ-observation,insitu-glo-bgc-carbon-discrete-my-013-050,level-3,marine-resources,marine-safety,mole-concentration-of-dissolved-inorganic-carbon-in-sea-water,multi-year,oceanographic-geographical-features,sea-water-alkalinity-expressed-as-mole-equivalent,sea-water-ph-reported-on-total-scale,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean - In Situ reprocessed carbon observations - SOCATv2022 / GLODAPv2.2022", "missionStartDate": "1957-10-22T22:00:00Z", "abstract": "Global Ocean- in-situ reprocessed Carbon observations. This product contains observations and gridded files from two up-to-date carbon and biogeochemistry community data products: Surface Ocean Carbon ATlas SOCATv2021 and GLobal Ocean Data Analysis Project GLODAPv2.2021. \nThe SOCATv2022-OBS dataset contains >25 million observations of fugacity of CO2 of the surface global ocean from 1957 to early 2022. The quality control procedures are described in Bakker et al. (2016). These observations form the basis of the gridded products included in SOCATv2020-GRIDDED: monthly, yearly and decadal averages of fCO2 over a 1x1 degree grid over the global ocean, and a 0.25x0.25 degree, monthly average for the coastal ocean.\nGLODAPv2.2022-OBS contains >1 million observations from individual seawater samples of temperature, salinity, oxygen, nutrients, dissolved inorganic carbon, total alkalinity and pH from 1972 to 2020. These data were subjected to an extensive quality control and bias correction described in Olsen et al. (2020). GLODAPv2-GRIDDED contains global climatologies for temperature, salinity, oxygen, nitrate, phosphate, silicate, dissolved inorganic carbon, total alkalinity and pH over a 1x1 degree horizontal grid and 33 standard depths using the observations from the previous iteration of GLODAP, GLODAPv2. \nSOCAT and GLODAP are based on community, largely volunteer efforts, and the data providers will appreciate that those who use the data cite the corresponding articles (see References below) in order to support future sustainability of the data products.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00035\n\n**References:**\n\n* Bakker et al., 2016. A multi-decade record of high-quality fCO2 data in version 3 of the Surface Ocean CO2 Atlas (SOCAT). Earth Syst. Sci. Data, 8, 383\u2013413, https://doi.org/10.5194/essd-8-383-2016.\n* Olsen et al., 2020. GLODAPv2.2020 \u2013 the second update of GLODAPv2. . doi:10.5194/essd\u20112020\u2011165.\n* Lauvset et al., 2016. A new global interior ocean mapped climatology: t\u202f\u00d7\u2009\u202f1\u00b0 GLODAP version 2. Earth Syst. Sci. Data, 8, 325\u2013340, https://doi.org/10.5194/essd-8-325-2016.\n", "providers": [{"name": "IMR (Norway)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00035"}, "INSITU_GLO_PHY_UV_DISCRETE_MY_013_044": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 2", "keywords": "coastal-marine-environment,eastward-sea-water-velocity,global-ocean,in-situ-observation,insitu-glo-phy-uv-discrete-my-013-044,level-2,marine-resources,marine-safety,multi-year,northward-sea-water-velocity,oceanographic-geographical-features,sea-water-temperature,upward-sea-water-velocity,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean-Delayed Mode in-situ Observations of surface (drifters and HFR) and sub-surface (vessel-mounted ADCPs) water velocity", "missionStartDate": "1990-01-01T00:00:00Z", "abstract": "Global Ocean - This delayed mode product designed for reanalysis purposes integrates the best available version of in situ data for ocean surface currents and current vertical profiles. It concerns three delayed time datasets dedicated to near-surface currents measurements coming from two platforms (Lagrangian surface drifters and High Frequency radars) and velocity profiles within the water column coming from the Acoustic Doppler Current Profiler (ADCP, vessel mounted only) platform \n\n**DOI (product):**\nhttps://doi.org/10.17882/86236", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.17882/86236"}, "SEALEVEL_EUR_PHY_L4_NRT_008_060": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,black-sea,coastal-marine-environment,iberian-biscay-irish-seas,level-4,marine-resources,marine-safety,mediterranean-sea,near-real-time,north-west-shelf-seas,oceanographic-geographical-features,satellite-observation,sea-surface-height-above-geoid,sea-surface-height-above-sea-level,sealevel-eur-phy-l4-nrt-008-060,surface-geostrophic-eastward-sea-water-velocity,surface-geostrophic-eastward-sea-water-velocity-assuming-sea-level-for-geoid,surface-geostrophic-northward-sea-water-velocity,surface-geostrophic-northward-sea-water-velocity-assuming-sea-level-for-geoid,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "EUROPEAN SEAS GRIDDED L4 SEA SURFACE HEIGHTS AND DERIVED VARIABLES NRT", "missionStartDate": "2022-01-01T00:00:00Z", "abstract": "Altimeter satellite gridded Sea Level Anomalies (SLA) computed with respect to a twenty-year [1993, 2012] mean. The SLA is estimated by Optimal Interpolation, merging the L3 along-track measurement from the different altimeter missions available. Part of the processing is fitted to the European Sea area. (see QUID document or http://duacs.cls.fr [](http://duacs.cls.fr) pages for processing details). The product gives additional variables (i.e. Absolute Dynamic Topography and geostrophic currents (absolute and anomalies)). It serves in near-real time applications.\nThis product is processed by the DUACS multimission altimeter data processing system. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00142", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00142"}, "OCEANCOLOUR_ARC_BGC_HR_L3_NRT_009_201": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "arctic-ocean,coastal-marine-environment,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-suspended-matter-in-sea-water,near-real-time,oceancolour-arc-bgc-hr-l3-nrt-009-201,oceanographic-geographical-features,satellite-observation,sea-water-turbidity,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Region, Bio-Geo-Chemical, L3, daily observation", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "The High-Resolution Ocean Colour (HR-OC) Consortium (Brockmann Consult, Royal Belgian Institute of Natural Sciences, Flemish Institute for Technological Research) distributes Remote Sensing Reflectances (RRS, expressed in sr-1), Turbidity (TUR, expressed in FNU), Solid Particulate Matter Concentration (SPM, expressed in mg/l), spectral particulate backscattering (BBP, expressed in m-1) and chlorophyll-a concentration (CHL, expressed in \u00b5g/l) for the Sentinel 2/MSI sensor at 100m resolution for a 20km coastal zone. The products of region ARC are delivered in polar Lambertian Azimuthal Equal Area (LAEA) projection (EPSG:6931, EASE2). To limit file size the products are provided in tiles of 600x800 km\u00b2. RRS and BBP are delivered at nominal central bands of 443, 492, 560, 665, 704, 740, 783, 865 nm. The primary variable from which it is virtually possible to derive all the geophysical and transparency products is the spectral RRS. This, together with the spectral BBP, constitute the category of the 'optics' products. The spectral BBP product is generated from the RRS products using a quasi-analytical algorithm (Lee et al. 2002). The 'transparency' products include TUR and SPM). They are retrieved through the application of automated switching algorithms to the RRS spectra adapted to varying water conditions (Novoa et al. 2017). The GEOPHYSICAL product consists of the Chlorophyll-a concentration (CHL) retrieved via a multi-algorithm approach with optimized quality flagging (O'Reilly et al. 2019, Gons et al. 2005, Lavigne et al. 2021). The NRT products are generally provided withing 24 hours up to 3 days after end of the day.The RRS product is accompanied by a relative uncertainty estimate (unitless) derived by direct comparison of the products to corresponding fiducial reference measurements provided through the AERONET-OC network. The current day data temporal consistency is evaluated as Quality Index (QI) for TUR, SPM and CHL: QI=(CurrentDataPixel-ClimatologyDataPixel)/STDDataPixel where QI is the difference between current data and the relevant climatological field as a signed multiple of climatological standard deviations (STDDataPixel).\n\n**Processing information:**\n\nThe HR-OC processing system is deployed on Creodias where Sentinel 2/MSI L1C data are available. The production control element is being hosted within the infrastructure of Brockmann Consult. The processing chain consists of:\n* Resampling to 60m and mosaic generation of the set of Sentinel-2 MSI L1C granules of a single overpass that cover a single UTM zone.\n* Application of a glint correction taking into account the detector viewing angles\n* Application of a coastal mask with 20km water + 20km land. The result is a L1C mosaic tile with data just in the coastal area optimized for compression.\n* Level 2 processing with pixel identification (IdePix), atmospheric correction (C2RCC and ACOLITE or iCOR), in-water processing and merging (HR-OC L2W processor). The result is a 60m product with the same extent as the L1C mosaic, with variables for optics, transparency, and geophysics, and with data filled in the water part of the coastal area.\n* invalid pixel identification takes into account corrupted (L1) pixels, clouds, cloud shadow, glint, dry-fallen intertidal flats, coastal mixed-pixels, sea ice, melting ice, floating vegetation, non-water objects, and bottom reflection. \n* Daily L3 aggregation merges all Level 2 mosaics of a day intersecting with a target tile. All valid water pixels are included in the 20km coastal stripes; all other values are set to NaN. There may be more than a single overpass a day, in particular in the northern regions. The main contribution usually is the mosaic of the zone, but also adjacent mosaics may overlap. This step comprises resampling to the 100m target grid. \n* Monthly L4 aggregation combines all Level 3 products of a month and a single tile. The output is a set of 3 NetCDF datasets for optics, transparency, and geophysics respectively, for the tile and month.\n* Gap filling combines all daily products of a period and generates (partially) gap-filled daily products again. The output of gap filling are 3 datasets for optics (BBP443 only), transparency, and geophysics per day.\n\n\n**Description of observation methods/instruments:**\n\nOcean colour technique exploits the emerging electromagnetic radiation from the sea surface in different wavelengths. The spectral variability of this signal defines the so-called ocean colour which is affected by the presence of phytoplankton.\n\n\n**Quality / Accuracy / Calibration information:**\n\nA detailed description of the calibration and validation activities performed over this product can be found on the CMEMS web portal and in CMEMS-BGP_HR-QUID-009-201to212.\n\n\n**Suitability, Expected type of users / uses:**\n\nThis product is meant for use for educational purposes and for the managing of the marine safety, marine resources, marine and coastal environment and for climate and seasonal studies.\n\n**Dataset names: **\n\n*cmems_obs_oc_arc_bgc_geophy_nrt_l3-hr_P1D-m\n*cmems_obs_oc_arc_bgc_transp_nrt_l3-hr_P1D-m\n*cmems_obs_oc_arc_bgc_optics_nrt_l3-hr_P1D-m\n\n**Files format:**\n*netCDF-4, CF-1.7\n*INSPIRE compliant.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00061\n\n**References:**\n\n* Lavigne, H., et al. (2021), Quality-control tests for OC4, OC5 and NIR-red satellite chlorophyll-a algorithms applied to coastal waters, Remote Sensing of Environment, in press.\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772.\n* Novoa, S., et al. (2017), Atmospheric corrections and multi-conditional algorithm for multi-sensor remote sensing of suspended particulate matter in low-to-high turbidity levels coastal waters. Remote Sens., v. 9, 61.\n* Gons, et al. (2005), Effect of a waveband shift on chlorophyll retrieval from MERIS imagery of inland and coastal waters, J. Plankton Res., v. 27, n. 1, p. 125-127.\n* O'Reilly, et al. (2019), Chlorophyll algorithms for ocean color sensors-OC4, OC5 & OC6. Remote Sensing of Environment. 229, 32\u201347.\n", "providers": [{"name": "BC (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00061"}, "SEAICE_GLO_PHY_L4_MY_011_020": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-ice-x-displacement,sea-ice-y-displacement,seaice-glo-phy-l4-my-011-020,target-application#seaiceforecastingapplication,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean - High Resolution SAR Sea Ice Drift Time Series", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "The product contains a reprocessed multi year version of the daily composite dataset from SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_006 covering the Sentinel1 years from autumn 2014 until 1 year before present\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00328", "providers": [{"name": "DTU Space (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00328"}, "SEALEVEL_GLO_PHY_L4_NRT_008_046": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-surface-height-above-geoid,sea-surface-height-above-sea-level,sealevel-glo-phy-l4-nrt-008-046,surface-geostrophic-eastward-sea-water-velocity,surface-geostrophic-eastward-sea-water-velocity-assuming-sea-level-for-geoid,surface-geostrophic-northward-sea-water-velocity,surface-geostrophic-northward-sea-water-velocity-assuming-sea-level-for-geoid,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "GLOBAL OCEAN GRIDDED L4 SEA SURFACE HEIGHTS AND DERIVED VARIABLES NRT", "missionStartDate": "2022-01-01T00:00:00Z", "abstract": "Altimeter satellite gridded Sea Level Anomalies (SLA) computed with respect to a twenty-year [1993, 2012] mean. The SLA is estimated by Optimal Interpolation, merging the L3 along-track measurement from the different altimeter missions available. Part of the processing is fitted to the Global Ocean. (see QUID document or http://duacs.cls.fr [](http://duacs.cls.fr) pages for processing details). The product gives additional variables (i.e. Absolute Dynamic Topography and geostrophic currents (absolute and anomalies)). It serves in near-real time applications.\nThis product is processed by the DUACS multimission altimeter data processing system. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00149", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00149"}, "INSITU_IBI_PHYBGCWAV_DISCRETE_MYNRT_013_033": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 2", "keywords": "coastal-marine-environment,direction-of-sea-water-velocity,iberian-biscay-irish-seas,in-situ-observation,insitu-ibi-phybgcwav-discrete-mynrt-013-033,level-2,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,moles-of-oxygen-per-unit-mass-in-sea-water,near-real-time,oceanographic-geographical-features,sea-surface-wave-from-direction,sea-surface-wave-mean-period,sea-surface-wave-significant-height,sea-water-practical-salinity,sea-water-speed,sea-water-temperature,water-surface-height-above-reference-datum,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic Iberian Biscay Irish Ocean- In-Situ Near Real Time Observations", "missionStartDate": "2024-01-28T00:00:00Z", "abstract": "IBI Seas - near real-time (NRT) in situ quality controlled observations, hourly updated and distributed by INSTAC within 24-48 hours from acquisition in average\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00043", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00043"}, "OCEANCOLOUR_ARC_BGC_L3_MY_009_123": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "arctic-ocean,chl,coastal-marine-environment,kd490,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-suspended-particulate-matter-in-sea-water,multi-year,oceancolour-arc-bgc-l3-my-009-123,oceanographic-geographical-features,rrs400,rrs412,rrs443,rrs490,rrs510,rrs560,rrs620,rrs665,rrs674,rrs681,rrs709,satellite-observation,spm,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean Colour Plankton, Reflectance, Transparency and Optics MY L3 daily observations", "missionStartDate": "1997-09-04T00:00:00Z", "abstract": "For the **Arctic** Ocean **Satellite Observations**, Italian National Research Council (CNR \u2013 Rome, Italy) is providing **Bio-Geo_Chemical (BGC)** products.\n* Upstreams: OCEANCOLOUR_GLO_BGC_L3_MY_009_107 for the **\"multi\"** products and S3A & S3B only for the **\"OLCI\"** products.\n* Variables: Chlorophyll-a (**CHL**), Diffuse Attenuation (**KD490**) and Reflectance (**RRS**).\n\n* Temporal resolutions: **daily**.\n* Spatial resolutions: **4 km** (multi) or **300 m** (OLCI).\n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00292", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00292"}, "MULTIOBS_GLO_BGC_NUTRIENTS_CARBON_PROFILES_MYNRT_015_009": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,dissolved-inorganic-carbon-in-sea-water,global-ocean,in-situ-observation,level-3,marine-resources,marine-safety,moles-of-nitrate-per-unit-mass-in-sea-water,moles-of-oxygen-per-unit-mass-in-sea-water,moles-of-phosphate-per-unit-mass-in-sea-water,moles-of-silicate-per-unit-mass-in-sea-water,multi-year,multiobs-glo-bgc-nutrients-carbon-profiles-mynrt-015-009,none,oceanographic-geographical-features,partial-pressure-of-carbon-dioxide-in-sea-water,sea-water-ph-reported-on-total-scale,sea-water-pressure,sea-water-salinity,sea-water-temperature,total-alkalinity-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Nutrient and carbon profiles vertical distribution", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "This product consists of vertical profiles of the concentration of nutrients (nitrates, phosphates, and silicates) and carbonate system variables (total alkalinity, dissolved inorganic carbon, pH, and partial pressure of carbon dioxide), computed for each Argo float equipped with an oxygen sensor.\nThe method called CANYON (Carbonate system and Nutrients concentration from hYdrological properties and Oxygen using a Neural-network) is based on a neural network trained using high-quality nutrient data collected over the last 30 years (GLODAPv2 database, https://www.glodap.info/). The method is applied to each Argo float equipped with an oxygen sensor using as input the properties measured by the float (pressure, temperature, salinity, oxygen), and its date and position.\n\n**Product Citation:** Please refer to our Technical FAQ for citing products: http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169.\n\n**DOI (product):**\nhttps://doi.org/10.48670/moi-00048\n\n**References:**\n\n* Sauzede R., H. C. Bittig, H. Claustre, O. Pasqueron de Fommervault, J.-P. Gattuso, L. Legendre and K. S. Johnson, 2017: Estimates of Water-Column Nutrient Concentrations and Carbonate System Parameters in the Global Ocean: A novel Approach Based on Neural Networks. Front. Mar. Sci. 4:128. doi: 10.3389/fmars.2017.00128.\n* Bittig H. C., T. Steinhoff, H. Claustre, B. Fiedler, N. L. Williams, R. Sauz\u00e8de, A. K\u00f6rtzinger and J.-P. Gattuso,2018: An Alternative to Static Climatologies: Robust Estimation of Open Ocean CO2 Variables and Nutrient Concentrations From T, S, and O2 Data Using Bayesian Neural Networks. Front. Mar. Sci. 5:328. doi: 10.3389/fmars.2018.00328.\n", "providers": [{"name": "LOV (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00048"}, "GLOBAL_MULTIYEAR_PHY_ENS_001_031": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,eastward-sea-water-velocity,global-multiyear-phy-ens-001-031,global-ocean,in-situ-ts-profiles,level-4,marine-resources,marine-safety,multi-year,northward-sea-water-velocity,numerical-model,ocean-mixed-layer-thickness-defined-by-sigma-theta,oceanographic-geographical-features,sea-ice-concentration-and/or-thickness,sea-ice-fraction,sea-ice-thickness,sea-level,sea-surface-height,sea-water-potential-temperature,sea-water-salinity,sst,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Ensemble Physics Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "You can find here the CMEMS Global Ocean Ensemble Reanalysis product at \u00bc degree resolution: monthly means of Temperature, Salinity, Currents and Ice variables for 75 vertical levels, starting from 1993 onward.\n \nGlobal ocean reanalyses are homogeneous 3D gridded descriptions of the physical state of the ocean covering several decades, produced with a numerical ocean model constrained with data assimilation of satellite and in situ observations. These reanalyses are built to be as close as possible to the observations (i.e. realistic) and in agreement with the model physics The multi-model ensemble approach allows uncertainties or error bars in the ocean state to be estimated.\n\nThe ensemble mean may even provide for certain regions and/or periods a more reliable estimate than any individual reanalysis product.\n\nThe four reanalyses, used to create the ensemble, covering \u201caltimetric era\u201d period (starting from 1st of January 1993) during which altimeter altimetry data observations are available:\n * GLORYS2V4 from Mercator Ocean (Fr);\n * ORAS5 from ECMWF;\n * GloSea5 from Met Office (UK);\n * and C-GLORSv7 from CMCC (It);\n \nThese four products provided four different time series of global ocean simulations 3D monthly estimates. All numerical products available for users are monthly or daily mean averages describing the ocean.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00024", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00024"}, "SEAICE_BAL_SEAICE_L4_NRT_OBSERVATIONS_011_011": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-ice-area-fraction,sea-ice-thickness,sea-ice-x-displacement,sea-ice-y-displacement,seaice-bal-seaice-l4-nrt-observations-011-011,target-application#seaiceclimate,target-application#seaiceforecastingapplication,target-application#seaiceinformation,target-application#seaiceservices,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea - SAR Sea Ice Thickness and Drift, Multisensor Sea Ice Concentration", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "For the Baltic Sea - The operational sea ice service at FMI provides ice parameters over the Baltic Sea. The products are based on SAR images and are produced on pass-by-pass basis during the Baltic Sea ice season, and show the ice thickness and drift in a 500 m and 800m grid, respectively. The Baltic sea ice concentration product is based on data from SAR and microwave radiometer. The algorithm uses SENTINEL-1 SAR EW mode dual-polarized HH/HV data combined with AMSR2 radiometer data.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00133\n\n**References:**\n\n* J. Karvonen, Operational SAR-based sea ice drift monitoring over the Baltic Sea, Ocean Science, v. 8, pp. 473-483, (http://www.ocean-sci.net/8/473/2012/os-8-473-2012.html) 2012.\n", "providers": [{"name": "FMI (Finland)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00133"}, "OCEANCOLOUR_ARC_BGC_HR_L4_NRT_009_207": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-suspended-matter-in-sea-water,near-real-time,oceancolour-arc-bgc-hr-l4-nrt-009-207,oceanographic-geographical-features,satellite-observation,sea-water-turbidity,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Region, Bio-Geo-Chemical, L4, monthly means and interpolated daily observation", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "The High-Resolution Ocean Colour (HR-OC) Consortium (Brockmann Consult, Royal Belgian Institute of Natural Sciences, Flemish Institute for Technological Research) distributes Level 4 (L4) Turbidity (TUR, expressed in FNU), Solid Particulate Matter Concentration (SPM, expressed in mg/l), particulate backscattering at 443nm (BBP443, expressed in m-1) and chlorophyll-a concentration (CHL, expressed in \u00b5g/l) for the Sentinel 2/MSI sensor at 100m resolution for a 20km coastal zone. The products of region ARC are delivered in polar Lambertian Azimuthal Equal Area (LAEA) projection (EPSG:6931, EASE2). To limit file size the products are provided in tiles of 600x800 km\u00b2. BBP443, constitute the category of the 'optics' products. The BBP443 product is generated from the L3 RRS products using a quasi-analytical algorithm (Lee et al. 2002). The 'transparency' products include TUR and SPM). They are retrieved through the application of automated switching algorithms to the RRS spectra adapted to varying water conditions (Novoa et al. 2017). The GEOPHYSICAL product consists of the Chlorophyll-a concentration (CHL) retrieved via a multi-algorithm approach with optimized quality flagging (O'Reilly et al. 2019, Gons et al. 2005, Lavigne et al. 2021). Monthly products (P1M) are temporal aggregates of the daily L3 products. Daily products contain gaps in cloudy areas and where there is no overpass at the respective day. Aggregation collects the non-cloudy (and non-frozen) contributions to each pixel. Contributions are averaged per variable. While this does not guarantee data availability in all pixels in case of persistent clouds, it provides a more complete product compared to the sparsely filled daily products. The Monthly L4 products (P1M) are generally provided withing 4 days after the last acquisition date of the month. Daily gap filled L4 products (P1D) are generated using the DINEOF (Data Interpolating Empirical Orthogonal Functions) approach which reconstructs missing data in geophysical datasets by using a truncated Empirical Orthogonal Functions (EOF) basis in an iterative approach. DINEOF reconstructs missing data in a geophysical dataset by extracting the main patterns of temporal and spatial variability from the data. While originally designed for low resolution data products, recent research has resulted in the optimization of DINEOF to handle high resolution data provided by Sentinel-2 MSI, including cloud shadow detection (Alvera-Azc\u00e1rate et al., 2021). These types of L4 products are generated and delivered one month after the respective period.\n\n\n**Processing information:**\n\nThe HR-OC processing system is deployed on Creodias where Sentinel 2/MSI L1C data are available. The production control element is being hosted within the infrastructure of Brockmann Consult. The processing chain consists of:\n* Resampling to 60m and mosaic generation of the set of Sentinel-2 MSI L1C granules of a single overpass that cover a single UTM zone.\n* Application of a glint correction taking into account the detector viewing angles\n* Application of a coastal mask with 20km water + 20km land. The result is a L1C mosaic tile with data just in the coastal area optimized for compression.\n* Level 2 processing with pixel identification (IdePix), atmospheric correction (C2RCC and ACOLITE or iCOR), in-water processing and merging (HR-OC L2W processor). The result is a 60m product with the same extent as the L1C mosaic, with variables for optics, transparency, and geophysics, and with data filled in the water part of the coastal area.\n* invalid pixel identification takes into account corrupted (L1) pixels, clouds, cloud shadow, glint, dry-fallen intertidal flats, coastal mixed-pixels, sea ice, melting ice, floating vegetation, non-water objects, and bottom reflection.\n* Daily L3 aggregation merges all Level 2 mosaics of a day intersecting with a target tile. All valid water pixels are included in the 20km coastal stripes; all other values are set to NaN. There may be more than a single overpass a day, in particular in the northern regions. The main contribution usually is the mosaic of the zone, but also adjacent mosaics may overlap. This step comprises resampling to the 100m target grid. \n* Monthly L4 aggregation combines all Level 3 products of a month and a single tile. The output is a set of 3 NetCDF datasets for optics, transparency, and geophysics respectively, for the tile and month.\n* Gap filling combines all daily products of a period and generates (partially) gap-filled daily products again. The output of gap filling are 3 datasets for optics (BBP443 only), transparency, and geophysics per day.\n\n**Description of observation methods/instruments:**\n\nOcean colour technique exploits the emerging electromagnetic radiation from the sea surface in different wavelengths. The spectral variability of this signal defines the so-called ocean colour which is affected by the presence of phytoplankton.\n\n**Quality / Accuracy / Calibration information:**\n\nA detailed description of the calibration and validation activities performed over this product can be found on the CMEMS web portal and in CMEMS-BGP_HR-QUID-009-201_to_212.\n\n**Suitability, Expected type of users / uses:**\n\nThis product is meant for use for educational purposes and for the managing of the marine safety, marine resources, marine and coastal environment and for climate and seasonal studies.\n\n\n**Dataset names: **\n*cmems_obs_oc_arc_bgc_geophy_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_arc_bgc_transp_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_arc_bgc_optics_nrt_l4-hr_P1M-v01\n*cmems_obs_oc_arc_bgc_geophy_nrt_l4-hr_P1D-v01\n*cmems_obs_oc_arc_bgc_transp_nrt_l4-hr_P1D-v01\n*cmems_obs_oc_arc_bgc_optics_nrt_l4-hr_P1D-v01\n\n**Files format:**\n*netCDF-4, CF-1.7\n*INSPIRE compliant.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00062\n\n**References:**\n\n* Alvera-Azc\u00e1rate, Aida, et al. (2021), Detection of shadows in high spatial resolution ocean satellite data using DINEOF. Remote Sensing of Environment 253: 112229.\n* Lavigne, H., et al. (2021), Quality-control tests for OC4, OC5 and NIR-red satellite chlorophyll-a algorithms applied to coastal waters, Remote Sensing of Environment, in press.\n* Lee, Z. P., et al. (2002), Deriving inherent optical properties from water color: A multi- band quasi-analytical algorithm for optically deep waters, Applied Optics, 41, 5755-5772.\n* Novoa, S., et al. (2017), Atmospheric corrections and multi-conditional algorithm for multi-sensor remote sensing of suspended particulate matter in low-to-high turbidity levels coastal waters. Remote Sens., v. 9, 61.\n* Gons, et al. (2005), Effect of a waveband shift on chlorophyll retrieval from MERIS imagery of inland and coastal waters, J. Plankton Res., v. 27, n. 1, p. 125-127.\n* O'Reilly, et al. (2019), Chlorophyll algorithms for ocean color sensors-OC4, OC5 & OC6. Remote Sensing of Environment. 229, 32\u201347.\n", "providers": [{"name": "BC (Germany)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00062"}, "SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_006": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-ice-x-displacement,sea-ice-y-displacement,seaice-glo-seaice-l4-nrt-observations-011-006,target-application#seaiceforecastingapplication,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean - High Resolution SAR Sea Ice Drift", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "DTU Space produces polar covering Near Real Time gridded ice displacement fields obtained by MCC processing of Sentinel-1 SAR, Envisat ASAR WSM swath data or RADARSAT ScanSAR Wide mode data . The nominal temporal span between processed swaths is 24hours, the nominal product grid resolution is a 10km.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00135", "providers": [{"name": "DTU Space (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00135"}, "OCEANCOLOUR_ATL_BGC_L3_MY_009_113": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "bbp,cdm,chl,coastal-marine-environment,global-ocean,kd490,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-diatoms-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-dinophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-greenalgae-and-prochlorophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-haptophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-microphytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-nanophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prochlorococcus-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prokaryotes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-suspended-particulate-matter-in-sea-water,multi-year,oceancolour-atl-bgc-l3-my-009-113,oceanographic-geographical-features,pft,rr555,rr560,rrs400,rrs412,rrs443,rrs490,rrs510,rrs620,rrs665,rrs670,rrs674,rrs681,rrs709,satellite-observation,secchi-depth-of-sea-water,spm,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-absorption-coefficient-of-radiative-flux-in-sea-water-due-to-dissolved-organic-matter-and-non-algal-particles,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting,zsd", "license": "proprietary", "title": "North Atlantic Ocean Colour Plankton, Reflectance, Transparency and Optics MY L3 daily observations", "missionStartDate": "1997-09-04T00:00:00Z", "abstract": "For the **Global** Ocean **Satellite Observations**, ACRI-ST company (Sophia Antipolis, France) is providing **Bio-Geo-Chemical (BGC)** products based on the **Copernicus-GlobColour** processor.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **\"multi\"** products, and S3A & S3B only for the **\"olci\"** products.\n* Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional types and sizes (**PFT**), Suspended Matter (**SPM**), Secchi Transparency Depth (**ZSD**), Diffuse Attenuation (**KD490**), Particulate Backscattering (**BBP**), Absorption Coef. (**CDM**) and Reflectance (**RRS**).\n\n* Temporal resolutions: **daily**.\n* Spatial resolutions: **1 km** and a finer resolution based on olci **300 meters** inputs.\n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\nTo find the **Copernicus-GlobColour** products in the catalogue, use the search keyword **\"GlobColour\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00286", "providers": [{"name": "ACRI (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00286"}, "OCEANCOLOUR_BAL_BGC_L3_MY_009_133": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "baltic-sea,coastal-marine-environment,level-3,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-cryptophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-diatoms-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-dinophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-greenalgae-and-prochlorophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-microphytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-nanophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prokaryotes-expressed-as-chlorophyll-in-sea-water,multi-year,oceancolour-bal-bgc-l3-my-009-133,oceanographic-geographical-features,satellite-observation,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Multiyear Ocean Colour Plankton, Reflectances and Transparency L3 daily observations", "missionStartDate": "1997-09-04T00:00:00Z", "abstract": "For the **Baltic Sea** Ocean **Satellite Observations**, the Italian National Research Council (CNR \u2013 Rome, Italy), is providing multi-years **Bio-Geo_Chemical (BGC)** regional datasets:\n* **_plankton**_ with the phytoplankton chlorophyll concentration (CHL) evaluated via region-specific neural network (Brando et al. 2021) and Phytoplankton Functional Types (PFT) evaluated via region-specific algorithm \n* **_reflectance**_ with the spectral Remote Sensing Reflectance (RRS)\n* **_transparency**_ with the diffuse attenuation coefficient of light at 490 nm (KD490) \n\n**Upstreams**: SeaWiFS, MODIS, MERIS, VIIRS, OLCI-S3A (ESA OC-CCIv5) for the **\"\"multi\"\"** products, and OLCI-S3A & S3B for the **\"\"olci\"\"** products\n\n**Temporal resolution**: daily\n\n**Spatial resolution**: 1 km for **\"\"multi\"\"** and 300 meters for **\"\"olci\"\"**\n\nTo find this product in the catalogue, use the search keyword **\"\"OCEANCOLOUR_BAL_BGC_L3_MY\"\"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00296\n\n**References:**\n\n* Brando, V. E., Sammartino, M., Colella, S., Bracaglia, M., Di Cicco, A., D\u2019Alimonte, D., ... & Attila, J. (2021). Phytoplankton bloom dynamics in the Baltic sea using a consistently reprocessed time series of multi-sensor reflectance and novel chlorophyll-a retrievals. Remote Sensing, 13(16), 3071\n", "providers": [{"name": "CNR (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00296"}, "SST_ATL_SST_L4_NRT_OBSERVATIONS_010_025": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,level-4,marine-resources,marine-safety,near-real-time,north-west-shelf-seas,oceanographic-geographical-features,satellite-observation,sea-surface-temperature,sst-atl-sst-l4-nrt-observations-010-025,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "European North West Shelf/Iberia Biscay Irish Seas \u2013 High Resolution ODYSSEA L4 Sea Surface Temperature Analysis", "missionStartDate": "2018-01-01T00:00:00Z", "abstract": "For the Atlantic European North West Shelf Ocean-European North West Shelf/Iberia Biscay Irish Seas. The ODYSSEA NW+IBI Sea Surface Temperature analysis aims at providing daily gap-free maps of sea surface temperature, referred as L4 product, at 0.02deg x 0.02deg horizontal resolution, using satellite data from both infra-red and micro-wave radiometers. It is the sea surface temperature operational nominal product for the Northwest Shelf Sea and Iberia Biscay Irish Seas.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00152", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00152"}, "MULTIOBS_GLO_PHY_SSS_L4_MY_015_015": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,global-ocean,in-situ-observation,level-4,marine-resources,marine-safety,multi-year,multiobs-glo-phy-sss-l4-my-015-015,near-real-time,none,oceanographic-geographical-features,satellite-observation,sea-surface-density,sea-surface-salinity,sea-surface-temperature,sea-water-conservative-temperature,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "SSS SMOS/SMAP L4 OI - LOPS-v2023", "missionStartDate": "2010-06-03T00:00:00Z", "abstract": "The product MULTIOBS_GLO_PHY_SSS_L4_MY_015_015 is a reformatting and a simplified version of the CATDS L4 product called \u201cSMOS-OI\u201d. This product is obtained using optimal interpolation (OI) algorithm, that combine, ISAS in situ SSS OI analyses to reduce large scale and temporal variable bias, SMOS satellite image, SMAP satellite image, and satellite SST information.\n\nKolodziejczyk Nicolas, Hamon Michel, Boutin Jacqueline, Vergely Jean-Luc, Reverdin Gilles, Supply Alexandre, Reul Nicolas (2021). Objective analysis of SMOS and SMAP Sea Surface Salinity to reduce large scale and time dependent biases from low to high latitudes. Journal Of Atmospheric And Oceanic Technology, 38(3), 405-421. Publisher's official version: https://doi.org/10.1175/JTECH-D-20-0093.1, Open Access version: https://archimer.ifremer.fr/doc/00665/77702/\n\n**DOI (product):** \nhttps://doi.org/10.1175/JTECH-D-20-0093.1\n\n**References:**\n\n* Kolodziejczyk Nicolas, Hamon Michel, Boutin Jacqueline, Vergely Jean-Luc, Reverdin Gilles, Supply Alexandre, Reul Nicolas (2021). Objective analysis of SMOS and SMAP Sea Surface Salinity to reduce large scale and time dependent biases from low to high latitudes. Journal Of Atmospheric And Oceanic Technology, 38(3), 405-421. Publisher's official version : https://doi.org/10.1175/JTECH-D-20-0093.1, Open Access version : https://archimer.ifremer.fr/doc/00665/77702/\n", "providers": [{"name": "CATDS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.1175/JTECH-D-20-0093.1"}, "SEAICE_ARC_PHY_AUTO_L4_NRT_011_015": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-ice-area-fraction,sea-ice-classification,seaice-arc-phy-auto-l4-nrt-011-015,target-application#seaiceclimate,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean - High resolution Sea Ice Concentration and Sea Ice Type", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "For the European Arctic Sea - A sea ice concentration product based on SAR data and microwave radiometer. The algorithm uses SENTINEL-1 SAR EW mode dual-polarized HH/HV data combined with AMSR2 radiometer data. A sea ice type product covering the same area is produced from SENTINEL-1 SAR EW mode dual-polarized HH/HV data.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00122", "providers": [{"name": "MET Norway", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00122"}, "OCEANCOLOUR_GLO_BGC_L4_MY_009_104": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "chl,coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,mass-concentration-of-diatoms-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-dinophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-greenalgae-and-prochlorophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-haptophytes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-microphytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-nanophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-picophytoplankton-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prochlorococcus-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-prokaryotes-expressed-as-chlorophyll-in-sea-water,mass-concentration-of-suspended-particulate-matter-in-sea-water,multi-year,oceancolour-glo-bgc-l4-my-009-104,oceanographic-geographical-features,pft,primary-production-of-biomass-expressed-as-carbon,rr560,rrs400,rrs412,rrs443,rrs490,rrs510,rrs620,rrs665,rrs674,rrs681,rrs709,satellite-observation,secchi-depth-of-sea-water,surface-ratio-of-upwelling-radiance-emerging-from-sea-water-to-downwelling-radiative-flux-in-air,volume-absorption-coefficient-of-radiative-flux-in-sea-water-due-to-dissolved-organic-matter-and-non-algal-particles,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,volume-backwards-scattering-coefficient-of-radiative-flux-in-sea-water-due-to-particles,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Colour (Copernicus-GlobColour), Bio-Geo-Chemical, L4 (monthly and interpolated) from Satellite Observations (1997-ongoing)", "missionStartDate": "1997-09-01T00:00:00Z", "abstract": "For the **Global** Ocean **Satellite Observations**, ACRI-ST company (Sophia Antipolis, France) is providing **Bio-Geo-Chemical (BGC)** products based on the **Copernicus-GlobColour** processor.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the **\"\"multi\"\"** products, and S3A & S3B only for the **\"\"olci\"\"** products.\n* Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional types and sizes (**PFT**), Primary Production (**PP**), Suspended Matter (**SPM**), Secchi Transparency Depth (**ZSD**), Diffuse Attenuation (**KD490**), Particulate Backscattering (**BBP**), Absorption Coef. (**CDM**) and Reflectance (**RRS**).\n\n* Temporal resolutions: **monthly** plus, for some variables, **daily gap-free** based on a space-time interpolation to provide a \"\"cloud free\"\" product.\n* Spatial resolutions: **4 km** and a finer resolution based on olci **300 meters** inputs.\n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\nTo find the **Copernicus-GlobColour** products in the catalogue, use the search keyword **\"\"GlobColour\"\"**.\"\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00281", "providers": [{"name": "ACRI (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00281"}, "OMI_EXTREME_SST_BALTIC_sst_mean_and_anomaly_obs": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-sea,coastal-marine-environment,in-situ-observation,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-extreme-sst-baltic-sst-mean-and-anomaly-obs,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Surface Temperature extreme from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe OMI_EXTREME_SST_BALTIC_sst_mean_and_anomaly_obs indicator is based on the computation of the 99th and the 1st percentiles from in situ data (observations). It is computed for the variable sea surface temperature measured by in situ buoys at depths between 0 and 5 meters. The use of percentiles instead of annual maximum and minimum values, makes this extremes study less affected by individual data measurement errors. The percentiles are temporally averaged, and the spatial evolution is displayed, jointly with the anomaly in the target year. This study of extreme variability was first applied to sea level variable (P\u00e9rez G\u00f3mez et al 2016) and then extended to other essential variables, sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018).\n\n**CONTEXT**\n\nSea surface temperature (SST) is one of the essential ocean variables affected by climate change (mean SST trends, SST spatial and interannual variability, and extreme events). In Europe, several studies show warming trends in mean SST for the last years. An exception seems to be the North Atlantic, where, in contrast, anomalous cold conditions have been observed since 2014 (Mulet et al., 2018; Dubois et al. 2018). Extremes may have a stronger direct influence in population dynamics and biodiversity. According to Alexander et al. 2018 the observed warming trend will continue during the 21st Century and this can result in exceptionally large warm extremes. Monitoring the evolution of sea surface temperature extremes is, therefore, crucial.\nThe Baltic Sea has showed in the last two decades a warming trend across the whole basin. This trend is significantly higher when considering only the summer season, which would affect the high extremes (e.g. H\u00f8yer and Karagali, 2016).\n\n**CMEMS KEY FINDINGS**\n\nThe mean 99th percentiles showed in the area go from 18.7\u00baC in Slipshavn to 21.2\u00baC around the Zealand Region, and the standard deviation ranges between 1\u00baC and 2\u00baC.\nResults for this year show a slight positive anomaly in the central Baltic Sea below +0.5\u00baC, a moderate positive anomaly in Bomholm and Arkona Basins, reaching +2.8\u00baC in Slipshavn, and a negative anomaly in the Southwest of Zealand Region (Bay of Mecklenburg, Kiel Basin and South of Great Belt) between -1.5\u00baC and -2.5\u00baC. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00204\n\n**References:**\n\n* Alexander MA, Scott JD, Friedland KD, Mills KE, Nye JA, Pershing AJ, Thomas AC. 2018. Projected sea surface temperatures over the 21st century: Changes in the mean, variability and extremes for large marine ecosystem regions of Northern Oceans. Elem Sci Anth, 6(1), p.9. DOI: http://doi.org/10.1525/elementa.191.\n* Dubois C, von Schuckmann K, Josey S, Ceschin A. 2018. Changes in the North Atlantic. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, vol 11, sup1, s66\u2013s70. DOI: 10.1080/1755876X.2018.1489208\n* H\u00f8yer, JL, Karagali, I. 2016. Sea surface temperature climate data record for the North Sea and Baltic Sea. Journal of Climate, 29(7), 2529-2541. https://doi.org/10.1175/JCLI-D-15-0663.1\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B, De Alfonso M, Zacharioudaki A, P\u00e9rez Gonz\u00e1lez I, \u00c1lvarez Fanjul E, M\u00fcller M, Marcos M, Manzano F, Korres G, Ravdas M, Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00204"}, "OMI_EXTREME_WAVE_IBI_swh_mean_and_anomaly_obs": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,in-situ-observation,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-extreme-wave-ibi-swh-mean-and-anomaly-obs,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Iberia Biscay Ireland Significant Wave Height extreme from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe OMI_EXTREME_WAVE_IBI_swh_mean_and_anomaly_obs indicator is based on the computation of the 99th and the 1st percentiles from in situ data (observations). It is computed for the variable significant wave height (swh) measured by in situ buoys. The use of percentiles instead of annual maximum and minimum values, makes this extremes study less affected by individual data measurement errors. The percentiles are temporally averaged, and the spatial evolution is displayed, jointly with the anomaly in the target year. This study of extreme variability was first applied to sea level variable (P\u00e9rez G\u00f3mez et al 2016) and then extended to other essential variables, sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018). \n\n**CONTEXT**\n\nProjections on Climate Change foresee a future with a greater frequency of extreme sea states (Stott, 2016; Mitchell, 2006). The damages caused by severe wave storms can be considerable not only in infrastructure and buildings but also in the natural habitat, crops and ecosystems affected by erosion and flooding aggravated by the extreme wave heights. In addition, wave storms strongly hamper the maritime activities, especially in harbours. These extreme phenomena drive complex hydrodynamic processes, whose understanding is paramount for proper infrastructure management, design and maintenance (Goda, 2010).\n\n**CMEMS KEY FINDINGS**\n\nThe mean 99th percentiles showed in the area present a wide range from 2-3m in the Canary Island with 0.1-0.3 m of standard deviation (std), 3.5m in the Gulf of Cadiz with 0.5m of std, 4-6m in the English Channel 0.5-0.6m of std, 4-7m in the Bay of Biscay with 0.4-0.9m of std to 8m in the West of the British Isles with 0.7m of std. \nResults for this year show slight negative anomalies in the Canary Island (-0.1/-0.17m), moderate negative anomaly in the Gulf of Cadiz (-0.7m) and general positive anomaly in the rest of the area, with moderate values in the Bay of Biscay (+0.16/+1.1) and the English Channel (-0.6/+0.8m) and an appreciable positive value in the West of the British Isles over the standard deviation (+1.5m). Severe storms developed in the Atlantic during 2020 reached the West of the British Isles and the Bay of Biscay, like Storm Brendan in January, Storm Dennis in February or Storms Ernesto and Bella in December. These storms produced waves with significant wave height over 9 m recorded by the buoys in the area.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00250\n\n**References:**\n\n* Goda Y. 2010. Random seas and design of maritime structures. World scientific. https://doi.org/10.1142/7425.\n* Mitchell JF, Lowe J, Wood RA, & Vellinga M. 2006. Extreme events due to human-induced climate change. Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences, 364(1845), 2117-2133.\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B, De Alfonso M, Zacharioudaki A, P\u00e9rez Gonz\u00e1lez I, \u00c1lvarez Fanjul E, M\u00fcller M, Marcos M, Manzano F, Korres G, Ravdas M, Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208.\n* Stott P. 2016. How climate change affects extreme weather events. Science, 352(6293), 1517-1518.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00250"}, "OMI_EXTREME_SST_IBI_sst_mean_and_anomaly_obs": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,in-situ-observation,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-extreme-sst-ibi-sst-mean-and-anomaly-obs,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Iberia Biscay Ireland Sea Surface Temperature extreme from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe OMI_EXTREME_SST_IBI_sst_mean_and_anomaly_obs indicator is based on the computation of the 99th and the 1st percentiles from in situ data (observations). It is computed for the variable sea surface temperature measured by in situ buoys at depths between 0 and 5 meters. The use of percentiles instead of annual maximum and minimum values, makes this extremes study less affected by individual data measurement errors. The percentiles are temporally averaged, and the spatial evolution is displayed, jointly with the anomaly in the target year. This study of extreme variability was first applied to sea level variable (P\u00e9rez G\u00f3mez et al 2016) and then extended to other essential variables, sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018).\n\n**CONTEXT**\n\nSea surface temperature (SST) is one of the essential ocean variables affected by climate change (mean SST trends, SST spatial and interannual variability, and extreme events). In Europe, several studies show warming trends in mean SST for the last years. An exception seems to be the North Atlantic, where, in contrast, anomalous cold conditions have been observed since 2014 (Mulet et al., 2018; Dubois et al. 2018). Extremes may have a stronger direct influence in population dynamics and biodiversity. According to Alexander et al. 2018 the observed warming trend will continue during the 21st Century and this can result in exceptionally large warm extremes. Monitoring the evolution of sea surface temperature extremes is, therefore, crucial.\nThe Iberia Biscay Ireland area is characterized by a great complexity in terms of processes that take place in it. The sea surface temperature varies depending on the latitude with higher values to the South. In this area, the clear warming trend observed in other European Seas is not so evident. The northwest part is influenced by the refreshing trend in the North Atlantic, and a mild warming trend has been observed in the last decade (Pisano et al. 2020).\n\n**CMEMS KEY FINDINGS**\n\nThe mean 99th percentiles showed in the area present a range from 16-17\u00baC in the Southwest of the British Isles and English Channel, 19\u00baC in the West of Galician Coast, 21-23\u00baC in the south of Bay of Biscay, 23.5\u00baC in the Gulf of Cadiz to 24\u00baC in the Canary Island. The standard deviations are between 0.4\u00baC and 0.8\u00baC.\nResults for this year show a general slight positive anomaly in the South of the British Isles (+0.2/+0.8\u00baC). In the North of Spain, the anomaly is slightly or moderately positive between 0.3\u00baC and +1.2\u00baC. In the Gulf of Cadiz the anomaly is also positive (+0.9\u00baC) and in Canary Island is close to zero. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00255\n\n**References:**\n\n* Alexander MA, Scott JD, Friedland KD, Mills KE, Nye JA, Pershing AJ, Thomas AC. 2018. Projected sea surface temperatures over the 21st century: Changes in the mean, variability and extremes for large marine ecosystem regions of Northern Oceans. Elem Sci Anth, 6(1), p.9. DOI: http://doi.org/10.1525/elementa.191.\n* Dubois C, von Schuckmann K, Josey S, Ceschin A. 2018. Changes in the North Atlantic. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, vol 11, sup1, s66\u2013s70. DOI: 10.1080/1755876X.2018.1489208\n* Mulet S, Nardelli BB, Good S, Pisano A, Greiner E, Monier M, Autret E, Axell L, Boberg F, Ciliberti S, Dr\u00e9villon M, Droghei R, Embury O, Gourrion J, H\u00f8yer J, Juza M, Kennedy J, Lemieux-Dudon B, Peneva E, Reid R, Simoncelli S, Storto A, Tinker J, von Schuckmann K, Wakelin SL. 2018. Ocean temperature and salinity. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, vol 11, sup1, s5\u2013s13. DOI: 10.1080/1755876X.2018.1489208\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B, De Alfonso M, Zacharioudaki A, P\u00e9rez Gonz\u00e1lez I, \u00c1lvarez Fanjul E, M\u00fcller M, Marcos M, Manzano F, Korres G, Ravdas M, Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208.\n* Pisano A, Marullo S, Artale V, Falcini F, Yang C, Leonelli FE, Santoleri R, Nardelli BB. 2020. New Evidence of Mediterranean Climate Change and Variability from Sea Surface Temperature Observations. Remote Sensing 12(132). DOI: 10.3390/rs12010132.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00255"}, "SEAICE_ARC_PHY_L3M_NRT_011_017": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,global-ocean,level-3,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,seaice-arc-phy-l3m-nrt-011-017,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "ARCTIC Ocean and Sea-Ice Sigma-Nought", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "For the Arctic Ocean - multiple Sentinel-1 scenes, Sigma0 calibrated and noise-corrected, with individual geographical map projections over Svalbard and Greenland Sea regions.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00124", "providers": [{"name": "MET Norway", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00124"}, "WAVE_GLO_PHY_SWH_L3_NRT_014_001": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "arctic-ocean,baltic-sea,black-sea,coastal-marine-environment,global-ocean,iberian-biscay-irish-seas,level-3,marine-resources,marine-safety,mediterranean-sea,near-real-time,north-west-shelf-seas,oceanographic-geographical-features,satellite-observation,sea-surface-wave-significant-height,wave-glo-phy-swh-l3-nrt-014-001,weather-climate-and-seasonal-forecasting,wind-speed", "license": "proprietary", "title": "GLOBAL OCEAN L3 SIGNIFICANT WAVE HEIGHT FROM NRT SATELLITE MEASUREMENTS", "missionStartDate": "2021-01-01T00:00:00Z", "abstract": "Near-Real-Time mono-mission satellite-based along-track significant wave height. Only valid data are included, based on a rigorous editing combining various criteria such as quality flags (surface flag, presence of ice) and thresholds on parameter values. Such thresholds are applied on parameters linked to significant wave height determination from retracking (e.g. SWH, sigma0, range, off nadir angle\u2026). All the missions are homogenized with respect to a reference mission (Jason-3 until April 2022, Sentinel-6A afterwards) and calibrated on in-situ buoy measurements. Finally, an along-track filter is applied to reduce the measurement noise.\n\nAs a support of information to the significant wave height, wind speed measured by the altimeters is also processed and included in the files. Wind speed values are provided by upstream products (L2) for each mission and are based on different algorithms. Only valid data are included and all the missions are homogenized with respect to the reference mission.\n\nThis product is processed by the WAVE-TAC multi-mission altimeter data processing system. It serves in near-real time the main operational oceanography and climate forecasting centers in Europe and worldwide. It processes operational data (OGDR and NRT, produced in near-real-time) from the following altimeter missions: Sentinel-6A, Jason-3, Sentinel-3A, Sentinel-3B, Cryosat-2, SARAL/AltiKa, CFOSAT ; and interim data (IGDR, 1 to 2 days delay) from Hai Yang-2B mission.\n\nOne file containing valid SWH is produced for each mission and for a 3-hour time window. It contains the filtered SWH (VAVH), the unfiltered SWH (VAVH_UNFILTERED) and the wind speed (wind_speed).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00179", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00179"}, "SEAICE_ARC_SEAICE_L4_NRT_OBSERVATIONS_011_007": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,coastal-marine-environment,level-4,marine-resources,marine-safety,near-real-time,number-of-icebergs-per-unit-area,oceanographic-geographical-features,satellite-observation,seaice-arc-seaice-l4-nrt-observations-011-007,target-application#seaiceforecastingapplication,target-application#seaiceservices,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "SAR Sea Ice Berg Concentration and Individual Icebergs Observed with Sentinel-1", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "The iceberg product contains 4 datasets (IW and EW modes and mosaic for the two modes) describing iceberg concentration as number of icebergs counted within 10x10 km grid cells. The iceberg concentration is derived by applying a Constant False Alarm Rate (CFAR) algorithm on data from Synthetic Aperture Radar (SAR) satellite sensors.\n\nThe iceberg product also contains two additional datasets of individual iceberg positions in Greenland-Newfoundland-Labrador Waters. These datasets are in shapefile format to allow the best representation of the icebergs (the 1st dataset contains the iceberg point observations, the 2nd dataset contains the polygonized satellite coverage). These are also derived by applying a Constant False Alarm Rate (CFAR) algorithm on Sentinel-1 SAR imagery.\nDespite its precision (individual icebergs are proposed), this product is a generic and automated product and needs expertise to be correctly used. For all applications concerning marine navigation, please refer to the national Ice Service of the country concerned.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00129", "providers": [{"name": "DMI (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00129"}, "SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_001": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-ice-area-fraction,sea-ice-classification,sea-ice-x-displacement,sea-ice-y-displacement,seaice-glo-seaice-l4-nrt-observations-011-001,target-application#seaiceforecastingapplication,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean - Arctic and Antarctic - Sea Ice Concentration, Edge, Type and Drift (OSI-SAF)", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "For the Global - Arctic and Antarctic - Ocean. The OSI SAF delivers three global sea ice products in operational mode: sea ice concentration, sea ice edge, sea ice type (OSI-401 OSI-402 and OSI-403). These products are delivered daily at 10km resolution in a polar stereographic projection covering the Northern Hemisphere and the Southern Hemisphere. It is the Sea Ice operational nominal product for the Global Ocean. In addition, a sea ice drift product is delivered at 60km resolution in a polar stereographic projection covering the Northern and Southern Hemispheres. The sea ice motion vectors have a time-span of 2 days.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00134", "providers": [{"name": "MET Norway", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00134"}, "NWSHELF_ANALYSISFORECAST_WAV_004_014": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,forecast,level-4,marine-resources,marine-safety,near-real-time,none,north-west-shelf-seas,numerical-model,nwshelf-analysisforecast-wav-004-014,oceanographic-geographical-features,sea-surface-primary-swell-wave-from-direction,sea-surface-primary-swell-wave-mean-period,sea-surface-primary-swell-wave-significant-height,sea-surface-secondary-swell-wave-from-direction,sea-surface-secondary-swell-wave-mean-period,sea-surface-secondary-swell-wave-significant-height,sea-surface-wave-from-direction,sea-surface-wave-from-direction-at-variance-spectral-density-maximum,sea-surface-wave-mean-period-from-variance-spectral-density-inverse-frequency-moment,sea-surface-wave-mean-period-from-variance-spectral-density-second-frequency-moment,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,sea-surface-wave-stokes-drift-x-velocity,sea-surface-wave-stokes-drift-y-velocity,sea-surface-wind-wave-from-direction,sea-surface-wind-wave-mean-period,sea-surface-wind-wave-significant-height,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic - European North West Shelf - Ocean Wave Analysis and Forecast", "missionStartDate": "2022-10-06T00:00:00Z", "abstract": "The NWSHELF_ANALYSISFORECAST_WAV_004_014 is produced by a wave model system based on MFWAV, implemented over the North East Atlantic and Shelf Seas at 1/20 degrees of horizontal resolution forced by ECMWF wind data. The system assimilates significant wave height altimeter data and spectral data, and it is forced by currents provided by the [ ref t the physical system] ocean circulation system.\nThe product is updated twice a day, providing 10-day forecast of wave parameters integrated from the two-dimensional (frequency, direction) wave spectrum and describe wave height, period and directional characteristics for both the overall sea-state, and wind-state, and swell components. \nProducts are provided at hourly frequency \n\n**Product Citation**:\nPlease refer to our Technical FAQ for citing [products.](http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169)\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00055\n\n**References:**\n\n* The impact of ocean-wave coupling on the upper ocean circulation during storm events (Bruciaferri, D., Tonani, M., Lewis, H., Siddorn, J., Saulter, A., Castillo, J.M., Garcia Valiente, N., Conley, D., Sykes, P., Ascione, I., McConnell, N.) in Journal of Geophysical Research, Oceans, 2021, 126, 6. https://doi.org/10.1029/2021JC017343\n", "providers": [{"name": "NOLOGIN", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00055"}, "IBI_ANALYSISFORECAST_WAV_005_005": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,e1t,e2t,forecast,iberian-biscay-irish-seas,ibi-analysisforecast-wav-005-005,level-4,marine-resources,marine-safety,near-real-time,numerical-model,oceanographic-geographical-features,sea-binary-mask,sea-floor-depth-below-geoid,sea-surface-primary-swell-wave-from-direction,sea-surface-primary-swell-wave-mean-period,sea-surface-primary-swell-wave-significant-height,sea-surface-secondary-swell-wave-from-direction,sea-surface-secondary-swell-wave-mean-period,sea-surface-secondary-swell-wave-significant-height,sea-surface-wave-from-direction,sea-surface-wave-from-direction-at-spectral-peak,sea-surface-wave-maximum-crest-height,sea-surface-wave-maximum-height,sea-surface-wave-mean-period-from-variance-spectral-density-inverse-frequency-moment,sea-surface-wave-mean-period-from-variance-spectral-density-second-frequency-moment,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,sea-surface-wave-stokes-drift-x-velocity,sea-surface-wave-stokes-drift-y-velocity,sea-surface-wind-wave-from-direction,sea-surface-wind-wave-mean-period,sea-surface-wind-wave-significant-height,significant-wave-height-(swh),wave-spectra,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic-Iberian Biscay Irish- Ocean Wave Analysis and Forecast", "missionStartDate": "2021-11-27T00:00:00Z", "abstract": "The IBI-MFC provides a high-resolution wave analysis and forecast product (run twice a day by Nologin with the support of CESGA in terms of supercomputing resources), covering the European waters, and more specifically the Iberia\u2013Biscay\u2013Ireland (IBI) area. The last 2 years before now (historic best estimates), as well as hourly instantaneous forecasts with a horizon of up to 10 days (updated on a daily basis) are available on the catalogue.\nThe IBI wave model system is based on the MFWAM model and runs on a grid of 5 km of horizontal resolution forced with the ECMWF hourly wind data. The system assimilates significant wave height (SWH) altimeter data and CFOSAT wave spectral data (supplied by M\u00e9t\u00e9o-France), and it is forced by currents provided by the IBI ocean circulation system. \nThe product offers hourly instantaneous fields of different wave parameters, including Wave Height, Period and Direction for total spectrum; fields of Wind Wave (or wind sea), Primary Swell Wave and Secondary Swell for partitioned wave spectra; and the highest wave variables, such as maximum crest height and maximum crest-to-trough height. Additionally, the IBI wave system is set up to provide internally some key parameters adequate to be used as forcing in the IBI NEMO ocean model forecast run.\n\n**Product Citation**: \nPlease refer to our Technical FAQ for citing [products.](http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169)\n\n**DOI (Product)**: \nhttps://doi.org/10.48670/moi-00025\n\n**References:**\n\n* Toledano, C.; Ghantous, M.; Lorente, P.; Dalphinet, A.; Aouf, L.; Sotillo, M.G. Impacts of an Altimetric Wave Data Assimilation Scheme and Currents-Wave Coupling in an Operational Wave System: The New Copernicus Marine IBI Wave Forecast Service. J. Mar. Sci. Eng. 2022, 10, 457. https://doi.org/10.3390/jmse10040457\n", "providers": [{"name": "NOLOGIN", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00025"}, "SEAICE_GLO_SEAICE_L4_REP_OBSERVATIONS_011_009": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "antarctic-ocean,arctic-ocean,coastal-marine-environment,level-4,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-ice-area-fraction,seaice-glo-seaice-l4-rep-observations-011-009,target-application#seaiceclimate,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Sea Ice Concentration Time Series REPROCESSED (OSI-SAF)", "missionStartDate": "1978-10-25T00:00:00Z", "abstract": "The CDR and ICDR sea ice concentration dataset of the EUMETSAT OSI SAF (OSI-450-a and OSI-430-a), covering the period from October 1978 to present, with 16 days delay. It used passive microwave data from SMMR, SSM/I and SSMIS. Sea ice concentration is computed from atmospherically corrected PMW brightness temperatures, using a combination of state-of-the-art algorithms and dynamic tie points. It includes error bars for each grid cell (uncertainties). This version 3.0 of the CDR (OSI-450-a, 1978-2020) and ICDR (OSI-430-a, 2021-present with 16 days latency) was released in November 2022\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00136\n\n**References:**\n\n* [http://osisaf.met.no/docs/osisaf_cdop2_ss2_pum_sea-ice-conc-reproc_v2p2.pdf]\n", "providers": [{"name": "MET Norway", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00136"}, "OMI_CIRCULATION_BOUNDARY_PACIFIC_kuroshio_phase_area_averaged": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-circulation-boundary-pacific-kuroshio-phase-area-averaged,satellite-observation,specific-turbulent-kinetic-energy-of-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Kuroshio Phase from Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe indicator of the Kuroshio extension phase variations is based on the standardized high frequency altimeter Eddy Kinetic Energy (EKE) averaged in the area 142-149\u00b0E and 32-37\u00b0N and computed from the DUACS (https://duacs.cls.fr) delayed-time (reprocessed version DT-2021, CMEMS SEALEVEL_GLO_PHY_L4_MY_008_047, including \u201cmy\u201d (multi-year) & \u201cmyint\u201d (multi-year interim) datasets) and near real-time (CMEMS SEALEVEL_GLO_PHY_L4_NRT _008_046) altimeter sea level gridded products. The change in the reprocessed version (previously DT-2018) and the extension of the mean value of the EKE (now 27 years, previously 20 years) induce some slight changes not impacting the general variability of the Kuroshio extension (correlation coefficient of 0.988 for the total period, 0.994 for the delayed time period only). \n\n**CONTEXT**\n\nThe Kuroshio Extension is an eastward-flowing current in the subtropical western North Pacific after the Kuroshio separates from the coast of Japan at 35\u00b0N, 140\u00b0E. Being the extension of a wind-driven western boundary current, the Kuroshio Extension is characterized by a strong variability and is rich in large-amplitude meanders and energetic eddies (Niiler et al., 2003; Qiu, 2003, 2002). The Kuroshio Extension region has the largest sea surface height variability on sub-annual and decadal time scales in the extratropical North Pacific Ocean (Jayne et al., 2009; Qiu and Chen, 2010, 2005). Prediction and monitoring of the path of the Kuroshio are of huge importance for local economies as the position of the Kuroshio extension strongly determines the regions where phytoplankton and hence fish are located. Unstable (contracted) phase of the Kuroshio enhance the production of Chlorophyll (Lin et al., 2014).\n\n**CMEMS KEY FINDINGS**\n\nThe different states of the Kuroshio extension phase have been presented and validated by (Bessi\u00e8res et al., 2013) and further reported by Dr\u00e9villon et al. (2018) in the Copernicus Ocean State Report #2. Two rather different states of the Kuroshio extension are observed: an \u2018elongated state\u2019 (also called \u2018strong state\u2019) corresponding to a narrow strong steady jet, and a \u2018contracted state\u2019 (also called \u2018weak state\u2019) in which the jet is weaker and more unsteady, spreading on a wider latitudinal band. When the Kuroshio Extension jet is in a contracted (elongated) state, the upstream Kuroshio Extension path tends to become more (less) variable and regional eddy kinetic energy level tends to be higher (lower). In between these two opposite phases, the Kuroshio extension jet has many intermediate states of transition and presents either progressively weakening or strengthening trends. In 2018, the indicator reveals an elongated state followed by a weakening neutral phase since then.\n\n**Figure caption**\n\nStandardized Eddy Kinetic Energy over the Kuroshio region (following Bessi\u00e8res et al., 2013) Blue shaded areas correspond to well established strong elongated states periods, while orange shaded areas fit weak contracted states periods. The ocean monitoring indicator is derived from the DUACS delayed-time (reprocessed version DT-2021, \u201cmy\u201d (multi-year) dataset used when available, \u201cmyint\u201d (multi-year interim) used after) completed by DUACS near Real Time (\u201cnrt\u201d) sea level multi-mission gridded products. The vertical red line shows the date of the transition between \u201cmyint\u201d and \u201cnrt\u201d products used.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00222\n\n**References:**\n\n* Bessi\u00e8res, L., Rio, M.H., Dufau, C., Boone, C., Pujol, M.I., 2013. Ocean state indicators from MyOcean altimeter products. Ocean Sci. 9, 545\u2013560. https://doi.org/10.5194/os-9-545-2013\n* Dr\u00e9villon, M., Legeais, J.-F., Peterson, A., Zuo, H., Rio, M.-H., Drillet, Y., Greiner, E., 2018. Western boundary currents. J. Oper. Oceanogr., Copernicus Marine Service Ocean State Report Issue 2, s60\u2013s65. https://doi.org/10.1080/1755876X.2018.1489208\n* Jayne, S.R., Hogg, N.G., Waterman, S.N., Rainville, L., Donohue, K.A., Randolph Watts, D., Tracey, K.L., McClean, J.L., Maltrud, M.E., Qiu, B., Chen, S., Hacker, P., 2009. The Kuroshio Extension and its recirculation gyres. Deep Sea Res. Part Oceanogr. Res. Pap. 56, 2088\u20132099. https://doi.org/10.1016/j.dsr.2009.08.006\n* Kelly, K.A., Small, R.J., Samelson, R.M., Qiu, B., Joyce, T.M., Kwon, Y.-O., Cronin, M.F., 2010. Western Boundary Currents and Frontal Air\u2013Sea Interaction: Gulf Stream and Kuroshio Extension. J. Clim. 23, 5644\u20135667. https://doi.org/10.1175/2010JCLI3346.1\n* Niiler, P.P., Maximenko, N.A., Panteleev, G.G., Yamagata, T., Olson, D.B., 2003. Near-surface dynamical structure of the Kuroshio Extension. J. Geophys. Res. Oceans 108. https://doi.org/10.1029/2002JC001461\n* Qiu, B., 2003. Kuroshio Extension Variability and Forcing of the Pacific Decadal Oscillations: Responses and Potential Feedback. J. Phys. Oceanogr. 33, 2465\u20132482. https://doi.org/10.1175/2459.1\n* Qiu, B., 2002. The Kuroshio Extension System: Its Large-Scale Variability and Role in the Midlatitude Ocean-Atmosphere Interaction. J. Oceanogr. 58, 57\u201375. https://doi.org/10.1023/A:1015824717293\n* Qiu, B., Chen, S., 2010. Eddy-mean flow interaction in the decadally modulating Kuroshio Extension system. Deep Sea Res. Part II Top. Stud. Oceanogr., North Pacific Oceanography after WOCE: A Commemoration to Nobuo Suginohara 57, 1098\u20131110. https://doi.org/10.1016/j.dsr2.2008.11.036\n* Qiu, B., Chen, S., 2005. Variability of the Kuroshio Extension Jet, Recirculation Gyre, and Mesoscale Eddies on Decadal Time Scales. J. Phys. Oceanogr. 35, 2090\u20132103. https://doi.org/10.1175/JPO2807.1\n", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00222"}, "OMI_CLIMATE_OSC_MEDSEA_volume_mean": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,in-situ-ts-profiles,integral-wrt-depth-of-sea-water-salinity-expressed-as-salt-content,marine-resources,marine-safety,mediterranean-sea,multi-year,numerical-model,oceanographic-geographical-features,omi-climate-osc-medsea-volume-mean,sea-level,water-mass-formation-rate,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Ocean Salt Content (0-300m)", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nOcean salt content (OSC) is defined and represented here as the volume average of the integral of salinity in the Mediterranean Sea from z1 = 0 m to z2 = 300 m depth:\n\u00afS=1/V \u222bV S dV\nTime series of annual mean values area averaged ocean salt content are provided for the Mediterranean Sea (30\u00b0N, 46\u00b0N; 6\u00b0W, 36\u00b0E) and are evaluated in the upper 300m excluding the shelf areas close to the coast with a depth less than 300 m. The total estimated volume is approximately 5.7e+5 km3.\n\n**CONTEXT**\n\nThe freshwater input from the land (river runoff) and atmosphere (precipitation) and inflow from the Black Sea and the Atlantic Ocean are balanced by the evaporation in the Mediterranean Sea. Evolution of the salt content may have an impact in the ocean circulation and dynamics which possibly will have implication on the entire Earth climate system. Thus monitoring changes in the salinity content is essential considering its link \u2028to changes in: the hydrological cycle, the water masses formation, the regional halosteric sea level and salt/freshwater transport, as well as for their impact on marine biodiversity.\nThe OMI_CLIMATE_OSC_MEDSEA_volume_mean is based on the \u201cmulti-product\u201d approach introduced in the seventh issue of the Ocean State Report (contribution by Aydogdu et al., 2023). Note that the estimates in Aydogdu et al. (2023) are provided monthly while here we evaluate the results per year.\nSix global products and a regional (Mediterranean Sea) product have been used to build an ensemble mean, and its associated ensemble spread. The reference products are:\n\tThe Mediterranean Sea Reanalysis at 1/24\u00b0horizontal resolution (MEDSEA_MULTIYEAR_PHY_006_004, DOI: https://doi.org/10.25423/CMCC/MEDSEA_MULTIYEAR_PHY_006_004_E3R1, Escudier et al., 2020)\n\tFour global reanalyses at 1/4\u00b0horizontal resolution (GLOBAL_REANALYSIS_PHY_001_031, \nGLORYS, C-GLORS, ORAS5, FOAM, DOI: https://doi.org/10.48670/moi-00024, Desportes et al., 2022)\n\tTwo observation-based products: \nCORA (INSITU_GLO_TS_REP_OBSERVATIONS_013_001_b, DOI: https://doi.org/10.17882/46219, Szekely et al., 2022) and \nARMOR3D (MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012, DOI: https://doi.org/10.48670/moi-00052, Grenier et al., 2021). \nDetails on the products are delivered in the PUM and QUID of this OMI. \n\n**CMEMS KEY FINDINGS**\n\nThe Mediterranean Sea salt content shows a positive trend in the upper 300 m with a continuous increase over the period 1993-2019 at rate of 5.6*10-3 \u00b13.5*10-4 psu yr-1. \nThe overall ensemble mean of different products is 38.57 psu. During the early 1990s in the entire Mediterranean Sea there is a large spread in salinity with the observational based datasets showing a higher salinity, while the reanalysis products present relatively lower salinity. The maximum spread between the period 1993\u20132019 occurs in the 1990s with a value of 0.12 psu, and it decreases to as low as 0.02 psu by the end of the 2010s.\n\n**Figure caption**\n\nTime series of annual mean volume ocean salt content in the Mediterranean Sea (basin wide), integrated over the 0-300m depth layer during 1993-2019 (or longer according to data availability) including ensemble mean and ensemble spread (shaded area). The ensemble mean and associated ensemble spread are based on different data products, i.e., Mediterranean Sea Reanalysis (MED-REA), global ocean reanalysis (GLORYS, C-GLORS, ORAS5, and FOAM) and global observational based products (CORA and ARMOR3D). Details on the products are given in the corresponding PUM and QUID for this OMI.\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00325\n\n**References:**\n\n* Aydogdu, A., Miraglio, P., Escudier, R., Clementi, E., Masina, S.: The dynamical role of upper layer salinity in the Mediterranean Sea, State of the Planet, accepted, 2023.\n* Desportes, C., Garric, G., R\u00e9gnier, C., Dr\u00e9villon, M., Parent, L., Drillet, Y., Masina, S., Storto, A., Mirouze, I., Cipollone, A., Zuo, H., Balmaseda, M., Peterson, D., Wood, R., Jackson, L., Mulet, S., Grenier, E., and Gounou, A.: EU Copernicus Marine Service Quality Information Document for the Global Ocean Ensemble Physics Reanalysis, GLOBAL_REANALYSIS_PHY_001_031, Issue 1.1, Mercator Ocean International, https://catalogue.marine.copernicus.eu/documents/QUID/CMEMS-GLO-QUID-001-031.pdf (last access: 3 May 2023), 2022.\n* Escudier, R., Clementi, E., Omar, M., Cipollone, A., Pistoia, J., Aydogdu, A., Drudi, M., Grandi, A., Lyubartsev, V., Lecci, R., Cret\u00ed, S., Masina, S., Coppini, G., & Pinardi, N. (2020).\n* Mediterranean Sea Physical Reanalysis (CMEMS MED-Currents) (Version 1) [Data set]. Copernicus Monitoring Environment Marine Service (CMEMS). https://doi.org/10.25423/CMCC/MEDSEA_MULTIYEAR_PHY_006_004_E3R1\n* Grenier, E., Verbrugge, N., Mulet, S., and Guinehut, S.: EU Copernicus Marine Service Quality Information Document for the Multi Observation Global Ocean 3D Temperature Salinity Height Geostrophic Current and MLD, MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012, Issue 1.1, Mercator Ocean International, https: //catalogue.marine.copernicus.eu/documents/QUID/CMEMS-MOB-QUID-015-012.pdf (last access: 3 May 2023), 2021.\n* Szekely, T.: EU Copernicus Marine Service Quality Information Document for the Global Ocean-Delayed Mode gridded CORA \u2013 In-situ Observations objective analysis in Delayed Mode, INSITU_GLO_PHY_TS_OA_MY_013_052, issue 1.2, Mercator Ocean International, https://catalogue.marine.copernicus.eu/documents/QUID/CMEMS-INS-QUID-013-052.pdf (last access: 4 April 2023), 2022.\n", "providers": [{"name": "CMCC (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00325"}, "BALTIC_OMI_OHC_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-omi-ohc-area-averaged-anomalies,baltic-sea,coastal-marine-environment,in-situ-observation,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,ohc-balrean,satellite-observation,sea-water-salinity,sea-water-temperature,volume-fraction-of-oxygen-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Ocean Heat Content Anomaly (0-300m) from Reanalysis", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe method for calculating the ocean heat content anomaly is based on the daily mean sea water potential temperature fields (Tp) derived from the Baltic Sea reanalysis product BALTICSEA_MULTIYEAR_PHY_003_011. The total heat content is determined using the following formula:\n\nHC = \u03c1 * cp * ( Tp +273.15).\n\nHere, \u03c1 and cp represent spatially varying sea water density and specific heat, respectively, which are computed based on potential temperature, salinity and pressure using the UNESCO 1983 polynomial developed by Fofonoff and Millard (1983). The vertical integral is computed using the static cell vertical thicknesses sourced from the reanalysis product BALTICSEA_MULTIYEAR_PHY_003_011 dataset cmems_mod_bal_phy_my_static, spanning from the sea surface to the 300 m depth. Spatial averaging is performed over the Baltic Sea spatial domain, defined as the region between 13\u00b0 - 31\u00b0 E and 53\u00b0 - 66\u00b0 N. To obtain the OHC annual anomaly time series in (J/m2), the mean heat content over the reference period of 1993-2014 was subtracted from the annual mean total heat content.\n\nWe evaluate the uncertainty from the mean annual error of the potential temperature compared to the observations from the Baltic Sea (Giorgetti et al., 2020). The shade corresponds to the RMSD of the annual mean heat content biases (\u00b1 35.3 MJ/m\u00b2) evaluated from the observed temperatures and corresponding model values.\n\nLinear trend (W/m2) has been estimated from the annual anomalies with the uncertainty of 1.96-times standard error.\n\n**CONTEXT**\n\nOcean heat content is a key ocean climate change indicator. It accounts for the energy absorbed and stored by oceans. Ocean Heat Content in the upper 2,000 m of the World Ocean has increased with the rate of 0.35 \u00b1 0.08 W/m2 in the period 1955\u20132019, while during the last decade of 2010\u20132019 the warming rate was 0.70 \u00b1 0.07 W/m2 (Garcia-Soto et al., 2021). The high variability in the local climate of the Baltic Sea region is attributed to the interplay between a temperate marine zone and a subarctic continental zone. Therefore, the Ocean Heat Content of the Baltic Sea could exhibit strong interannual variability and the trend could be less pronounced than in the ocean.\n\n**CMEMS KEY FINDINGS**\n\nOcean heat content of the Baltic Sea has an increasing trend of 0.3\u00b10.1 W/m2 superimposed with multi-year oscillations. The OHC increase in the Baltic Sea is smaller than the global OHC trend (Holland et al. 2019; von Schuckmann et al. 2019) and in some other marginal seas (von Schuckmann et al. 2018; Lima et al. 2020). Trend values are low due to the shallowness of the Baltic Sea, which limits the accumulation of heat in the water. The highest ocean heat content anomaly was observed in 2020. During the last two years, the heat content anomaly has decreased from its peak value.\n\n**Figure caption**\n\nThe time series of horizontally averaged ocean heat content anomaly integrated over 0-300 m depth, for the period of 1993-2022. The temperature from Copernicus Marine Service regional reanalysis product (BALTICSEA_MULTIYEAR_PHY_003_011) have been averaged over the Baltic Sea domain (13 \u00b0E - 31 \u00b0E; 53 \u00b0N - 66 \u00b0N; excluding the Skagerrak strait). The shaded area shows the estimated RMSD interval of annual heat content biases.\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00322\n\n**References:**\n\n* Garcia-Soto C, Cheng L, Caesar L, Schmidtko S, Jewett EB, Cheripka A, Rigor I, Caballero A, Chiba S, B\u00e1ez JC, Zielinski T and Abraham JP (2021) An Overview of Ocean Climate Change Indicators: Sea Surface Temperature, Ocean Heat Content, Ocean pH, Dissolved Oxygen Concentration, Arctic Sea Ice Extent, Thickness and Volume, Sea Level and Strength of the AMOC (Atlantic Meridional Overturning Circulation). Front. Mar. Sci. 8:642372. doi: 10.3389/fmars.2021.642372\n* Fofonoff, P. and Millard, R.C. Jr UNESCO 1983. Algorithms for computation of fundamental properties of seawater. UNESCO Tech. Pap. in Mar. Sci., No. 44, 53 pp., p.39. http://unesdoc.unesco.org/images/0005/000598/059832eb.pdf\n* Giorgetti, A., Lipizer, M., Molina Jack, M.E., Holdsworth, N., Jensen, H.M., Buga, L., Sarbu, G., Iona, A., Gatti, J., Larsen, M. and Fyrberg, L., 2020. Aggregated and Validated Datasets for the European Seas: The Contribution of EMODnet Chemistry. Frontiers in Marine Science, 7, p.583657.\n* Holland E, von Schuckmann K, Monier M, Legeais J-F, Prado S, Sathyendranath S, Dupouy C. 2019. The use of Copernicus Marine Service products to describe the state of the tropical western Pacific Ocean around the islands: a case study. In: Copernicus Marine Service Ocean State Report, Issue 3. J Oper Oceanogr. 12(suppl. 1):s43\u2013s48. doi:10.1080/1755876X.2019.1633075\n* Lima L, Peneva E, Ciliberti S, Masina S, Lemieux B, Storto A, Chtirkova B. 2020. Ocean heat content in the Black Sea. In: Copernicus Marine Service Ocean State Report, Issue 4. J Oper Oceanogr. 13(suppl. 1):s41\u2013s48. doi:10.1080/1755876X.2020.1785097.\n* von Schuckmann K, Le Traon P-Y, Smith N, Pascual A, Djavidnia S, Gattuso J-P, Gr\u00e9goire M, Nolan G. 2019. Copernicus Marine Service Ocean State report. J Oper Oceanogr. 12(suppl. 1):s1\u2013s123. doi:10.1080/1755876X.2019.1633075.\n* von Schuckmann K, Storto A, Simoncelli S, Raj RP, Samuelsen A, Collar A, Sotillo MG, Szerkely T, Mayer M, Peterson KA, et al. 2018. Ocean heat content. In: Copernicus Marine Service Ocean State Report, issue 2. J Oper Oceanogr. 11 (Suppl. 1):s1\u2013s142. doi:10.1080/1755876X.2018.1489208.\n", "providers": [{"name": "SMHI (Sweden)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00322"}, "OMI_CLIMATE_SST_NORTHWESTSHELF_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,marine-resources,marine-safety,multi-year,north-west-shelf-seas,oceanographic-geographical-features,omi-climate-sst-northwestshelf-area-averaged-anomalies,satellite-observation,sea-surface-foundation-temperature,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "European North West Shelf Sea Surface Temperature time series and trend from Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe omi_climate_sst_northwestshelf_area_averaged_anomalies product for 2022 includes Sea Surface Temperature (SST) anomalies, given as monthly mean time series starting on 1993 and averaged over the European North West Shelf Seas. The NORTHWESTSHELF SST OMI is built from the CMEMS Reprocessed European North West Shelf Iberai-Biscay-Irish Seas (SST_MED_SST_L4_REP_OBSERVATIONS_010_026, see e.g. the OMI QUID, http://marine.copernicus.eu/documents/QUID/CMEMS-OMI-QUID-CLIMATE-SST- NORTHWESTSHELF_v2.1.pdf), which provided the SSTs used to compute the evolution of SST anomalies over the European North West Shelf Seas. This reprocessed product consists of daily (nighttime) interpolated 0.05\u00b0 grid resolution SST maps over the European North West Shelf Iberai-Biscay-Irish Seas built from the ESA Climate Change Initiative (CCI) (Merchant et al., 2019) and Copernicus Climate Change Service (C3S) initiatives. Anomalies are computed against the 1993-2014 reference period. \n\n**CONTEXT**\n\nSea surface temperature (SST) is a key climate variable since it deeply contributes in regulating climate and its variability (Deser et al., 2010). SST is then essential to monitor and characterise the state of the global climate system (GCOS 2010). Long-term SST variability, from interannual to (multi-)decadal timescales, provides insight into the slow variations/changes in SST, i.e. the temperature trend (e.g., Pezzulli et al., 2005). In addition, on shorter timescales, SST anomalies become an essential indicator for extreme events, as e.g. marine heatwaves (Hobday et al., 2018). \n\n**CMEMS KEY FINDINGS**\n\nThe overall trend in the SST anomalies in this region is 0.016 \u00b10.001 \u00b0C/year over the period 1993-2022. \n\n**Figure caption**\n\nTime series of monthly mean and 12-month filtered sea surface temperature anomalies in the European North West Shelf Seas during the period 1993-2022. Anomalies are relative to the climatological period 1993-2014 and built from the CMEMS SST_ATL_SST_L4_REP_OBSERVATIONS_010_026 satellite product (see e.g. the OMI QUID, http://marine.copernicus.eu/documents/QUID/CMEMS-OMI-QUID-NORTHWESTSHELF-SST.pdf). The sea surface temperature trend with its 95% confidence interval (shown in the box) is estimated by using the X-11 seasonal adjustment procedure (e.g. Pezzulli et al., 2005) and Sen\u2019s method (Sen 1968).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00275\n\n**References:**\n\n* Deser, C., Alexander, M. A., Xie, S.-P., Phillips, A. S., 2010. Sea Surface Temperature Variability: Patterns and Mechanisms. Annual Review of Marine Science 2010 2:1, 115-143. https://doi.org/10.1146/annurev-marine-120408-151453\n* GCOS. Global Climate Observing System. 2010. Update of the Implementation Plan for the Global Observing System for Climate in Support of the UNFCCC (GCO-138).\n* Hobday, A. J., Oliver, E. C., Gupta, A. S., Benthuysen, J. A., Burrows, M. T., Donat, M. G., ... & Smale, D. A. (2018). Categorizing and naming marine heatwaves. Oceanography, 31(2), 162-173.\n* Merchant, C. J., Embury, O., Bulgin, C. E., Block, T., Corlett, G. K., Fiedler, E., ... & Eastwood, S. (2019). Satellite-based time-series of sea-surface temperature since 1981 for climate applications. Scientific data, 6(1), 1-18.\n* Pezzulli, S., Stephenson, D. B., Hannachi, A., 2005. The Variability of Seasonality. J. Climate. 18:71\u201388. doi:10.1175/JCLI-3256.1.\n* Sen, P. K., 1968. Estimates of the regression coefficient based on Kendall\u2019s tau. J Am Statist Assoc. 63:1379\u20131389.\n", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00275"}, "WAVE_GLO_PHY_SPC_L3_MY_014_006": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "arctic-ocean,baltic-sea,black-sea,coastal-marine-environment,global-ocean,iberian-biscay-irish-seas,level-3,marine-resources,marine-safety,mediterranean-sea,multi-year,north-west-shelf-seas,oceanographic-geographical-features,satellite-observation,sea-surface-wave-from-direction-at-variance-spectral-density-maximum,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,wave-glo-phy-spc-l3-my-014-006,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "GLOBAL OCEAN L3 SPECTRAL PARAMETERS FROM REPROCESSED SATELLITE MEASUREMENTS", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "Multi-Year mono-mission satellite-based integral parameters derived from the directional wave spectra. Using linear propagation wave model, only wave observations that can be back-propagated to wave converging regions are considered. The dataset parameters includes partition significant wave height, partition peak period and partition peak or principal direction given along swell propagation path in space and time at a 3-hour timestep, from source to land. Validity flags are also included for each parameter and indicates the valid time steps along propagation (eg. no propagation for significant wave height close to the storm source or any integral parameter when reaching the land). The integral parameters at observation point are also available together with a quality flag based on the consistency between each propagated observation and the overall swell field.This product is processed by the WAVE-TAC multi-mission SAR data processing system. It processes data from the following SAR missions: Sentinel-1A and Sentinel-1B.One file is produced for each mission and is available in two formats: one gathering in one netcdf file all observations related to the same swell field, and for another all observations available in a 3-hour time range, and for both formats, propagated information from source to land.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00174", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00174"}, "WAVE_GLO_PHY_SPC_L4_NRT_014_004": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,baltic-sea,black-sea,coastal-marine-environment,global-ocean,iberian-biscay-irish-seas,level-4,marine-resources,marine-safety,mediterranean-sea,near-real-time,north-west-shelf-seas,oceanographic-geographical-features,satellite-observation,sea-surface-wave-from-direction-at-variance-spectral-density-maximum,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,wave-glo-phy-spc-l4-nrt-014-004,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "GLOBAL OCEAN L4 SPECTRAL PARAMETERS FROM NRT SATELLITE MEASUREMENTS", "missionStartDate": "2021-11-01T00:00:00Z", "abstract": "Near-Real-Time multi-mission global satellite-based spectral integral parameters. Only valid data are used, based on the L3 corresponding product. Included wave parameters are partition significant wave height, partition peak period and partition peak or principal direction. Those parameters are propagated in space and time at a 3-hour timestep and on a regular space grid, providing information of the swell propagation characteristics, from source to land. One file gathers one swell system, gathering observations originating from the same storm source. This product is processed by the WAVE-TAC multi-mission SAR data processing system to serve in near-real time the main operational oceanography and climate forecasting centers in Europe and worldwide. It processes data from the following SAR missions: Sentinel-1A and Sentinel-1B. All the spectral parameter measurements are optimally interpolated using swell observations belonging to the same swell field. The SAR data processing system produces wave integral parameters by partition (partition significant wave height, partition peak period and partition peak or principal direction) and the associated standard deviation and density of propagated observations. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00175", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00175"}, "INSITU_GLO_PHY_TS_OA_MY_013_052": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,global-ocean,in-situ-observation,insitu-glo-phy-ts-oa-my-013-052,level-4,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,sea-water-salinity,sea-water-temperature,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean- Delayed Mode gridded CORA- In-situ Observations objective analysis in Delayed Mode", "missionStartDate": "1960-01-01T00:00:00Z", "abstract": "Global Ocean- Gridded objective analysis fields of temperature and salinity using profiles from the reprocessed in-situ global product CORA (INSITU_GLO_TS_REP_OBSERVATIONS_013_001_b) using the ISAS software. Objective analysis is based on a statistical estimation method that allows presenting a synthesis and a validation of the dataset, providing a validation source for operational models, observing seasonal cycle and inter-annual variability.\n\n**DOI (product):** \nhttps://doi.org/10.17882/46219", "providers": [{"name": "OceanScope (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.17882/46219"}, "WAVE_GLO_WAV_L3_SPC_NRT_OBSERVATIONS_014_002": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "arctic-ocean,baltic-sea,black-sea,coastal-marine-environment,global-ocean,iberian-biscay-irish-seas,level-3,marine-resources,marine-safety,mediterranean-sea,near-real-time,north-west-shelf-seas,oceanographic-geographical-features,satellite-observation,sea-surface-wave-from-direction-at-variance-spectral-density-maximum,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,wave-glo-wav-l3-spc-nrt-observations-014-002,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "GLOBAL OCEAN L3 SPECTRAL PARAMETERS FROM NRT SATELLITE MEASUREMENTS", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "Near-Real-Time mono-mission satellite-based integral parameters derived from the directional wave spectra. Using linear propagation wave model, only wave observations that can be back-propagated to wave converging regions are considered. The dataset parameters includes partition significant wave height, partition peak period and partition peak or principal direction given along swell propagation path in space and time at a 3-hour timestep, from source to land. Validity flags are also included for each parameter and indicates the valid time steps along propagation (eg. no propagation for significant wave height close to the storm source or any integral parameter when reaching the land). The integral parameters at observation point are also available together with a quality flag based on the consistency between each propagated observation and the overall swell field.This product is processed by the WAVE-TAC multi-mission SAR data processing system. It serves in near-real time the main operational oceanography and climate forecasting centers in Europe and worldwide. It processes near-real-time data from the following SAR missions: Sentinel-1A and Sentinel-1B.One file is produced for each mission and is available in two formats: one gathering in one netcdf file all observations related to the same swell field, and for another all observations available in a 3-hour time range, and for both formats, propagated information from source to land.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00178", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00178"}, "SEALEVEL_GLO_PHY_L3_MY_008_062": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "arctic-ocean,coastal-marine-environment,global-ocean,level-3,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-surface-height-above-geoid,sea-surface-height-above-sea-level,sealevel-glo-phy-l3-my-008-062,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "GLOBAL OCEAN ALONG-TRACK L3 SEA SURFACE HEIGHTS REPROCESSED (1993-ONGOING) TAILORED FOR DATA ASSIMILATION", "missionStartDate": "1992-10-03T01:42:25Z", "abstract": "Altimeter satellite along-track sea surface heights anomalies (SLA) computed with respect to a twenty-year [1993, 2012] mean with a 1Hz (~7km) sampling. It serves in delayed-time applications.\nThis product is processed by the DUACS multimission altimeter data processing system. It processes data from all altimeter missions available (e.g. Sentinel-6A, Jason-3, Sentinel-3A, Sentinel-3B, Saral/AltiKa, Cryosat-2, Jason-1, Jason-2, Topex/Poseidon, ERS-1, ERS-2, Envisat, Geosat Follow-On, HY-2A, HY-2B, etc.). The system exploits the most recent datasets available based on the enhanced GDR/NTC production. All the missions are homogenized with respect to a reference mission. Part of the processing is fitted to the Global ocean. (see QUID document or http://duacs.cls.fr [](http://duacs.cls.fr) pages for processing details). \nThe product gives additional variables (e.g. Mean Dynamic Topography, Dynamic Atmospheric Correction, Ocean Tides, Long Wavelength Errors) that can be used to change the physical content for specific needs (see PUM document for details)\n\n**Associated products**\nA time invariant product https://resources.marine.copernicus.eu/product-detail/SEALEVEL_GLO_PHY_NOISE_L4_STATIC_008_033/INFORMATION describing the noise level of along-track measurements is available. It is associated to the sla_filtered variable. It is a gridded product. One file is provided for the global ocean and those values must be applied for Arctic and Europe products. For Mediterranean and Black seas, one value is given in the QUID document.\n\n**DOI (product)**:\nhttps://doi.org/10.48670/moi-00146", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00146"}, "SEALEVEL_EUR_PHY_L3_NRT_008_059": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "baltic-sea,black-sea,coastal-marine-environment,iberian-biscay-irish-seas,level-3,marine-resources,marine-safety,mediterranean-sea,near-real-time,north-west-shelf-seas,oceanographic-geographical-features,satellite-observation,sea-surface-height-above-geoid,sea-surface-height-above-sea-level,sealevel-eur-phy-l3-nrt-008-059,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "EUROPEAN SEAS ALONG-TRACK L3 SEA LEVEL ANOMALIES NRT", "missionStartDate": "2022-01-01T03:04:52Z", "abstract": "Altimeter satellite along-track sea surface heights anomalies (SLA) computed with respect to a twenty-year [1993, 2012] mean with a 1Hz (~7km) and 5Hz (~1km) sampling. It serves in near-real time applications.\nThis product is processed by the DUACS multimission altimeter data processing system. It processes data from all altimeter missions available (e.g. Sentinel-6A, Jason-3, Sentinel-3A, Sentinel-3B, Saral/AltiKa, Cryosat-2, HY-2B). The system exploits the most recent datasets available based on the enhanced OGDR/NRT+IGDR/STC production. All the missions are homogenized with respect to a reference mission. Part of the processing is fitted to the European Seas. (see QUID document or http://duacs.cls.fr [](http://duacs.cls.fr) pages for processing details). \nThe product gives additional variables (e.g. Mean Dynamic Topography, Dynamic Atmospheric Correction, Ocean Tides, Long Wavelength Errors) that can be used to change the physical content for specific needs (see PUM document for details)\n\n**Associated products**\n\nA time invariant product http://marine.copernicus.eu/services-portfolio/access-to-products/?option=com_csw&view=details&product_id=SEALEVEL_GLO_PHY_NOISE_L4_STATIC_008_033 [](http://marine.copernicus.eu/services-portfolio/access-to-products/?option=com_csw&view=details&product_id=SEALEVEL_GLO_PHY_NOISE_L4_STATIC_008_033) describing the noise level of along-track measurements is available. It is associated to the sla_filtered variable. It is a gridded product. One file is provided for the global ocean and those values must be applied for Arctic and Europe products. For Mediterranean and Black seas, one value is given in the QUID document.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00140", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00140"}, "WAVE_GLO_PHY_SWH_L3_MY_014_005": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "arctic-ocean,baltic-sea,black-sea,coastal-marine-environment,global-ocean,iberian-biscay-irish-seas,level-3,marine-resources,marine-safety,mediterranean-sea,multi-year,north-west-shelf-seas,oceanographic-geographical-features,satellite-observation,sea-surface-wave-significant-height,wave-glo-phy-swh-l3-my-014-005,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "GLOBAL OCEAN L3 SIGNIFICANT WAVE HEIGHT FROM REPROCESSED SATELLITE MEASUREMENTS", "missionStartDate": "2002-01-15T06:29:22Z", "abstract": "Multi-Year mono-mission satellite-based along-track significant wave height. Only valid data are included, based on a rigorous editing combining various criteria such as quality flags (surface flag, presence of ice) and thresholds on parameter values. Such thresholds are applied on parameters linked to significant wave height determination from retracking (e.g. SWH, sigma0, range, off nadir angle\u2026). All the missions are homogenized with respect to a reference mission and in-situ buoy measurements. Finally, an along-track filter is applied to reduce the measurement noise.\n\nThis product is based on the ESA Sea State Climate Change Initiative data Level 3 product (version 2) and is formatted by the WAVE-TAC to be homogeneous with the CMEMS Level 3 Near-real-time product. It is based on the reprocessing of GDR data from the following altimeter missions: Jason-1, Jason-2, Envisat, Cryosat-2, SARAL/AltiKa and Jason-3. CFOSAT Multi-Year dataset is based on the reprocessing of CFOSAT Level-2P products (CNES/CLS), inter-calibrated on Jason-3 reference mission issued from the CCI Sea State dataset.\n\nOne file containing valid SWH is produced for each mission and for a 3-hour time window. It contains the filtered SWH (VAVH) and the unfiltered SWH (VAVH_UNFILTERED).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00176", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00176"}, "WIND_GLO_PHY_CLIMATE_L4_MY_012_003": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,baltic-sea,black-sea,coastal-marine-environment,eastward-wind,global-ocean,iberian-biscay-irish-seas,level-4,marine-resources,marine-safety,mediterranean-sea,multi-year,north-west-shelf-seas,northward-wind,oceanographic-geographical-features,satellite-observation,surface-downward-eastward-stress,surface-downward-northward-stress,weather-climate-and-seasonal-forecasting,wind-glo-phy-climate-l4-my-012-003,wind-speed", "license": "proprietary", "title": "Global Ocean Monthly Mean Sea Surface Wind and Stress from Scatterometer and Model", "missionStartDate": "1999-08-01T00:00:00Z", "abstract": "For the Global Ocean - The product contains monthly Level-4 sea surface wind and stress fields at 0.25 degrees horizontal spatial resolution. The monthly averaged wind and stress fields are based on monthly average ECMWF ERA5 reanalysis fields, corrected for persistent biases using all available Level-3 scatterometer observations from the Metop-A, Metop-B and Metop-C ASCAT, QuikSCAT SeaWinds, ERS-1 and ERS-2 SCAT satellite instruments. The product provides monthly mean stress-equivalent wind and stress variables as well as their standard deviation. The number of observations used to calculate the monthly averages are included in the product.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00181", "providers": [{"name": "KNMI (The Netherlands)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00181"}, "MULTIOBS_GLO_PHY_MYNRT_015_003": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,eastward-sea-water-velocity,eastward-sea-water-velocity-due-to-ekman-drift,eastward-sea-water-velocity-due-to-ekman-drift-standard-error,eastward-sea-water-velocity-standard-error,global-ocean,in-situ-observation,level-4,marine-resources,marine-safety,multi-year,multiobs-glo-phy-mynrt-015-003,near-real-time,none,northward-sea-water-velocity,northward-sea-water-velocity-due-to-ekman-drift,northward-sea-water-velocity-due-to-ekman-drift-standard-error,northward-sea-water-velocity-standard-error,numerical-model,oceanographic-geographical-features,satellite-observation,surface-geostophic-eastward-sea-water-velocity-standard-error,surface-geostrophic-eastward-sea-water-velocity,surface-geostrophic-northward-sea-water-velocity,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Total (COPERNICUS-GLOBCURRENT), Ekman and Geostrophic currents at the Surface and 15m", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "This product is a L4 REP and NRT global total velocity field at 0m and 15m together wiht its individual components (geostrophy and Ekman) and related uncertainties. It consists of the zonal and meridional velocity at a 1h frequency and at 1/4 degree regular grid. The total velocity fields are obtained by combining CMEMS satellite Geostrophic surface currents and modelled Ekman currents at the surface and 15m depth (using ERA5 wind stress in REP and ERA5* in NRT). 1 hourly product, daily and monthly means are available. This product has been initiated in the frame of CNES/CLS projects. Then it has been consolidated during the Globcurrent project (funded by the ESA User Element Program).\n\n**Product Citation:**\nPlease refer to our Technical FAQ for citing products: http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169.\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00327\n\n**References:**\n\n* Rio, M.-H., S. Mulet, and N. Picot: Beyond GOCE for the ocean circulation estimate: Synergetic use of altimetry, gravimetry, and in situ data provides new insight into geostrophic and Ekman currents, Geophys. Res. Lett., 41, doi:10.1002/2014GL061773, 2014.\n", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00327"}, "NWSHELF_ANALYSISFORECAST_PHY_004_013": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,depth,deptho-lev-interp,eastward-sea-water-velocity,forecast,in-situ-ts-profiles,level-4,marine-resources,marine-safety,near-real-time,north-west-shelf-seas,northward-sea-water-velocity,numerical-model,nwshelf-analysisforecast-phy-004-013,ocean-mixed-layer-thickness-defined-by-sigma-theta,oceanographic-geographical-features,sea-binary-mask,sea-floor-depth-below-geoid,sea-level,sea-surface-height-above-geoid,sea-water-potential-temperature,sea-water-potential-temperature-at-sea-floor,sea-water-salinity,sst,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic - European North West Shelf - Ocean Physics Analysis and Forecast", "missionStartDate": "2021-09-01T00:00:00Z", "abstract": "The NWSHELF_ANALYSISFORECAST_PHY_004_013 is produced by a hydrodynamic model with tides, implemented over the North East Atlantic and Shelf Seas at 1/36 degrees of horizontal resolution and 50 vertical levels.\nThe product is updated daily, providing 5-day forecast for temperature, salinity, currents, sea level and mixed layer depth.\nProducts are provided at quarter-hourly, hourly, daily de-tided, and monthly frequency.\n\n**Product Citation**: \nPlease refer to our Technical FAQ for citing [products.](http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169)\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00054", "providers": [{"name": "NOLOGIN", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00054"}, "OMI_CLIMATE_SST_IBI_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,ibi-omi-tempsal-sst-trend,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-climate-sst-ibi-trend,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Iberia Biscay Ireland Sea Surface Temperature trend map from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe omi_climate_sst_ibi_trend product includes the Sea Surface Temperature (SST) trend for the Iberia-Biscay-Irish Seas over the period 1993-2022, i.e. the rate of change (\u00b0C/year). This OMI is derived from the CMEMS REP ATL L4 SST product (SST_ATL_SST_L4_REP_OBSERVATIONS_010_026), see e.g. the OMI QUID, http://marine.copernicus.eu/documents/QUID/CMEMS-OMI-QUID-CLIMATE-SST-IBI_v2.1.pdf), which provided the SSTs used to compute the SST trend over the Iberia-Biscay-Irish Seas. This reprocessed product consists of daily (nighttime) interpolated 0.05\u00b0 grid resolution SST maps built from the ESA Climate Change Initiative (CCI) (Merchant et al., 2019) and Copernicus Climate Change Service (C3S) initiatives. Trend analysis has been performed by using the X-11 seasonal adjustment procedure (see e.g. Pezzulli et al., 2005), which has the effect of filtering the input SST time series acting as a low bandpass filter for interannual variations. Mann-Kendall test and Sens\u2019s method (Sen 1968) were applied to assess whether there was a monotonic upward or downward trend and to estimate the slope of the trend and its 95% confidence interval. \n\n**CONTEXT**\n\nSea surface temperature (SST) is a key climate variable since it deeply contributes in regulating climate and its variability (Deser et al., 2010). SST is then essential to monitor and characterise the state of the global climate system (GCOS 2010). Long-term SST variability, from interannual to (multi-)decadal timescales, provides insight into the slow variations/changes in SST, i.e. the temperature trend (e.g., Pezzulli et al., 2005). In addition, on shorter timescales, SST anomalies become an essential indicator for extreme events, as e.g. marine heatwaves (Hobday et al., 2018). \n\n**CMEMS KEY FINDINGS**\n\nOver the period 1993-2022, the Iberia-Biscay-Irish Seas mean Sea Surface Temperature (SST) increased at a rate of 0.013 \u00b1 0.001 \u00b0C/Year.\n\n**Figure caption**\n\nSea surface temperature trend over the period 1993-2022 in the Iberia-Biscay-Irish Seas. The trend is the rate of change (\u00b0C/year).The trend map in sea surface temperature is derived from the CMEMS SST_ATL_SST_L4_REP_OBSERVATIONS_010_026 product (see e.g. the OMI QUID, http://marine.copernicus.eu/documents/QUID/CMEMS-OMI-QUID-ATL-SST.pdf). The trend is estimated by using the X-11 seasonal adjustment procedure (e.g. Pezzulli et al., 2005) and Sen\u2019s method (Sen 1968).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00257\n\n**References:**\n\n* Deser, C., Alexander, M. A., Xie, S.-P., Phillips, A. S., 2010. Sea Surface Temperature Variability: Patterns and Mechanisms. Annual Review of Marine Science 2010 2:1, 115-143. https://doi.org/10.1146/annurev-marine-120408-151453\n* GCOS. Global Climate Observing System. 2010. Update of the Implementation Plan for the Global Observing System for Climate in Support of the UNFCCC (GCO-138).\n* Hobday, A. J., Oliver, E. C., Gupta, A. S., Benthuysen, J. A., Burrows, M. T., Donat, M. G., ... & Smale, D. A. (2018). Categorizing and naming marine heatwaves. Oceanography, 31(2), 162-173.\n* Merchant, C. J., Embury, O., Bulgin, C. E., Block, T., Corlett, G. K., Fiedler, E., ... & Eastwood, S. (2019). Satellite-based time-series of sea-surface temperature since 1981 for climate applications. Scientific data, 6(1), 1-18.\n* Pezzulli, S., Stephenson, D. B., Hannachi, A., 2005. The Variability of Seasonality. J. Climate. 18:71\u201388. doi:10.1175/JCLI-3256.1.\n", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00257"}, "OMI_EXTREME_SST_NORTHWESTSHELF_sst_mean_and_anomaly_obs": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,in-situ-observation,marine-resources,marine-safety,multi-year,north-west-shelf-seas,oceanographic-geographical-features,omi-extreme-sst-northwestshelf-sst-mean-and-anomaly-obs,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "North West Shelf Sea Surface Temperature extreme from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe OMI_EXTREME_SST_NORTHWESTSHELF_sst_mean_and_anomaly_obs indicator is based on the computation of the 99th and the 1st percentiles from in situ data (observations). It is computed for the variable sea surface temperature measured by in situ buoys at depths between 0 and 5 meters. The use of percentiles instead of annual maximum and minimum values, makes this extremes study less affected by individual data measurement errors. The percentiles are temporally averaged, and the spatial evolution is displayed, jointly with the anomaly in the target year. This study of extreme variability was first applied to sea level variable (P\u00e9rez G\u00f3mez et al 2016) and then extended to other essential variables, sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018).\n\n**CONTEXT**\n\nSea surface temperature (SST) is one of the essential ocean variables affected by climate change (mean SST trends, SST spatial and interannual variability, and extreme events). In Europe, several studies show warming trends in mean SST for the last years. An exception seems to be the North Atlantic, where, in contrast, anomalous cold conditions have been observed since 2014 (Mulet et al., 2018; Dubois et al. 2018). Extremes may have a stronger direct influence in population dynamics and biodiversity. According to Alexander et al. 2018 the observed warming trend will continue during the 21st Century and this can result in exceptionally large warm extremes. Monitoring the evolution of sea surface temperature extremes is, therefore, crucial.\nThe North-West Self area comprises part of the North Atlantic, where this refreshing trend has been observed, and the North Sea, where a warming trend has been taking place in the last three decades (e.g. H\u00f8yer and Karagali, 2016).\n\n**CMEMS KEY FINDINGS**\n\nThe mean 99th percentiles showed in the area present a range from 14\u00baC in the Northwest of the British Isles, 15.6\u00baC in the North of the North Sea (Heimdal Station), 18\u00baC in the English Channel to 20-21\u00baC around Denmark (Helgoland Bight, Skagerrak and Kattegat Seas). The standard deviation ranges from 0.5\u00baC in the English Channel and 0.8/0.9\u00baC in the Northwest of the British Isles and Heimdal Station to 1.0/1.7\u00baC in the buoys around Denmark.\nResults for this year show either positive (+1.3\u00baC in Helgoland Bight) or negative (-0.6\u00baC in the North West of the British Isles) anomalies around their corresponding standard deviation in all the area, except in Aarhus station in the North East of Zealand Island where the negative anomaly reaches -2.0\u00baC in concordance with the negative anomalies found in the Zealand Region in the Baltic OMI.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00274\n\n**References:**\n\n* Alexander MA, Scott JD, Friedland KD, Mills KE, Nye JA, Pershing AJ, Thomas AC. 2018. Projected sea surface temperatures over the 21st century: Changes in the mean, variability and extremes for large marine ecosystem regions of Northern Oceans. Elem Sci Anth, 6(1), p.9. DOI: http://doi.org/10.1525/elementa.191.\n* Dubois C, von Schuckmann K, Josey S, Ceschin A. 2018. Changes in the North Atlantic. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, vol 11, sup1, s66\u2013s70. DOI: 10.1080/1755876X.2018.1489208\n* H\u00f8yer JL, Karagali I. 2016. Sea surface temperature climate data record for the North Sea and Baltic Sea. Journal of Climate, 29(7), 2529-2541. https://doi.org/10.1175/JCLI-D-15-0663.1\n* Mulet S, Nardelli BB, Good S, Pisano A, Greiner E, Monier M, Autret E, Axell L, Boberg F, Ciliberti S, Dr\u00e9villon M, Droghei R, Embury O, Gourrion J, H\u00f8yer J, Juza M, Kennedy J, Lemieux-Dudon B, Peneva E, Reid R, Simoncelli S, Storto A, Tinker J, von Schuckmann K, Wakelin SL. 2018. Ocean temperature and salinity. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, vol 11, sup1, s5\u2013s13. DOI: 10.1080/1755876X.2018.1489208\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B, De Alfonso M, Zacharioudaki A, P\u00e9rez Gonz\u00e1lez I, \u00c1lvarez Fanjul E, M\u00fcller M, Marcos M, Manzano F, Korres G, Ravdas M, Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00274"}, "OMI_EXTREME_CLIMVAR_PACIFIC_npgo_sla_eof_mode_projection": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-extreme-climvar-pacific-npgo-sla-eof-mode-projection,satellite-observation,tendency-of-sea-surface-height-above-sea-level,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "North Pacific Gyre Oscillation from Observations Reprocessing", "missionStartDate": "1950-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe North Pacific Gyre Oscillation (NPGO) is a climate pattern introduced by Di Lorenzo et al. (2008) and further reported by Tranchant et al. (2019) in the CMEMS Ocean State Report #3. The NPGO is defined as the second dominant mode of variability of Sea Surface Height (SSH) anomaly and SST anomaly in the Northeast Pacific (25\u00b0\u2013 62\u00b0N, 180\u00b0\u2013 250\u00b0E). The spatial and temporal pattern of the NPGO has been deduced over the [1950-2004] period using an empirical orthogonal function (EOF) decomposition on sea level and sea surface temperature fields produced by the Regional Ocean Modeling System (ROMS) (Di Lorenzo et al., 2008; Shchepetkin and McWilliams, 2005). Afterward, the sea level spatial pattern of the NPGO is used/projected with satellite altimeter delayed-time sea level anomalies to calculate and update the NPGO index.\nThe NPGO index disseminated on CMEMS was specifically updated from 2004 onward using up-to-date altimeter products (DT2021 version; SEALEVEL_GLO_PHY_L4_MY _008_047 CMEMS product, including \u201cmy\u201d & \u201cmyint\u201d datasets, and the near-real time SEALEVEL_GLO_PHY_L4_NRT _008_046 CMEMS product). Users that previously used the index disseminated on www.o3d.org/npgo/ web page will find slight differences induced by this update. The change in the reprocessed version (previously DT-2018) and the extension of the mean value of the SSH anomaly (now 27 years, previously 20 years) induce some slight changes not impacting the general variability of the NPGO. \n\n**CONTEXT**\n\nNPGO mode emerges as the leading mode of decadal variability for surface salinity and upper ocean nutrients (Di Lorenzo et al., 2009). The North Pacific Gyre Oscillation (NPGO) term is used because its fluctuations reflect changes in the intensity of the central and eastern branches of the North Pacific gyres circulations (Chhak et al., 2009). This index measures change in the North Pacific gyres circulation and explains key physical-biological ocean variables including temperature, salinity, sea level, nutrients, chlorophyll-a. A positive North Pacific Gyre Oscillation phase is a dipole pattern with negative SSH anomaly north of 40\u00b0N and the opposite south of 40\u00b0N. (Di Lorenzo et al., 2008) suggested that the North Pacific Gyre Oscillation is the oceanic expression of the atmospheric variability of the North Pacific Oscillation (Walker and Bliss, 1932), which has an expression in both the 2nd EOFs of SSH and Sea Surface Temperature (SST) anomalies (Ceballos et al., 2009). This finding is further supported by the recent work of (Yi et al., 2018) showing consistent pattern features between the atmospheric North Pacific Oscillation and the oceanic North Pacific Gyre Oscillation in the Coupled Model Intercomparison Project Phase 5 (CMIP5) database.\n\n**CMEMS KEY FINDINGS**\n\nThe NPGO index is presently in a negative phase, associated with a positive SSH anomaly north of 40\u00b0N and negative south of 40\u00b0N. This reflects a reduced amplitude of the central and eastern branches of the North Pacific gyre, corresponding to a reduced coastal upwelling and thus a lower sea surface salinity and concentration of nutrients. \n\n**Figure caption**\n\nNorth Pacific Gyre Oscillation (NPGO) index monthly averages. The NPGO index has been projected on normalized satellite altimeter sea level anomalies. The NPGO index is derived from (Di Lorenzo et al., 2008) before 2004, the DUACS delayed-time (reprocessed version DT-2021, \u201cmy\u201d (multi-year) dataset used when available, \u201cmyint\u201d (multi-year interim) used after) completed by DUACS near Real Time (\u201cnrt\u201d) sea level multi-mission gridded products. The vertical red lines show the date of the transition between the historical Di Lorenzo\u2019s series and the DUACS product, then between the DUACS \u201cmyint\u201d and \u201cnrt\u201d products used.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00221\n\n**References:**\n\n* Ceballos, L. I., E. Di Lorenzo, C. D. Hoyos, N. Schneider and B. Taguchi, 2009: North Pacific Gyre Oscillation Synchronizes Climate Fluctuations in the Eastern and Western Boundary Systems. Journal of Climate, 22(19) 5163-5174, doi:10.1175/2009jcli2848.1\n* Chhak, K. C., E. Di Lorenzo, N. Schneider and P. F. Cummins, 2009: Forcing of Low-Frequency Ocean Variability in the Northeast Pacific. Journal of Climate, 22(5) 1255-1276, doi:10.1175/2008jcli2639.1.\n* Di Lorenzo, E., N. Schneider, K.M. Cobb, K. Chhak, P.J.S. Franks, A.J. Miller, J.C. McWilliams, S.J. Bograd, H. Arango, E. Curchister, and others. 2008. North Pacific Gyre Oscillation links ocean climate and ecosystem change. Geophysical Research Letters 35, L08607, https://doi.org/10.1029/2007GL032838.\n* Di Lorenzo, E., J. Fiechter, N. Schneider, A. Bracco, A. J. Miller, P. J. S. Franks, S. J. Bograd, A. M. Moore, A. C. Thomas, W. Crawford, A. Pena and A. J. Hermann, 2009: Nutrient and salinity decadal variations in the central and eastern North Pacific. Geophysical Research Letters, 36, doi:10.1029/2009gl038261.\n* Di Lorenzo, E., K. M. Cobb, J. C. Furtado, N. Schneider, B. T. Anderson, A. Bracco, M. A. Alexander and D. J. Vimont, 2010: Central Pacific El Nino and decadal climate change in the North Pacific Ocean. Nature Geoscience, 3(11) 762-765, doi:10.1038/ngeo984\n* Tranchant, B. I. Pujol, E. Di Lorenzo and JF Legeais (2019). The North Pacific Gyre Oscillation. In: Copernicus Marine Service Ocean State Report, Issue 3, Journal of Operational Oceanography, 12:sup1, s26\u2013s30; DOI: 10.1080/ 1755876X.2019.1633075\n* Yi, D. L., Gan, B. Wu., L., A.J. Miller, 2018. The North Pacific Gyre Oscillation and Mechanisms of Its Decadal Variability in CMIP5 Models: Journal of Climate: Vol 31, No 6, 2487-2509.\n", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00221"}, "WIND_GLO_PHY_L3_NRT_012_002": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "air-density,arctic-ocean,baltic-sea,black-sea,coastal-marine-environment,eastward-wind,global-ocean,iberian-biscay-irish-seas,level-3,magnitude-of-surface-downward-stress,marine-resources,marine-safety,mediterranean-sea,near-real-time,north-west-shelf-seas,northward-wind,oceanographic-geographical-features,satellite-observation,status-flag,stress-curl,stress-divergence,surface-downward-eastward-stress,surface-downward-northward-stress,weather-climate-and-seasonal-forecasting,wind-glo-phy-l3-nrt-012-002,wind-speed,wind-to-direction,wvc-index,wvc-index-eastward-wind", "license": "proprietary", "title": "Global Ocean Daily Gridded Sea Surface Winds from Scatterometer", "missionStartDate": "2016-01-01T00:00:00Z", "abstract": "For the Global Ocean - The product contains daily L3 gridded sea surface wind observations from available scatterometers with resolutions corresponding to the L2 swath products:\n\n*0.5 degrees grid for the 50 km scatterometer L2 inputs,\n*0.25 degrees grid based on 25 km scatterometer swath observations,\n*and 0.125 degrees based on 12.5 km scatterometer swath observations, i.e., from the coastal products.\n\nData from ascending and descending passes are gridded separately.\nThe product provides stress-equivalent wind and stress variables as well as their divergence and curl. The NRT L3 products follow the NRT availability of the EUMETSAT OSI SAF L2 products and are available for:\n*The ASCAT scatterometers on Metop-A (discontinued on 15/11/2021), Metop-B and Metop-C at 0.125 and 0.25 degrees;\n*The OSCAT scatterometer on Scatsat-1 (discontinued on 28/02/2021) and Oceansat-3 at 0.25 and 0.5 degrees; \n*The HSCAT scatterometer on HY-2B, HY-2C and HY-2D at 0.25 and 0.5 degrees\n\nIn addition, the product includes European Centre for Medium-Range Weather Forecasts (ECMWF) operational model forecast wind and stress variables collocated with the scatterometer observations at L2 and processed to L3 in exactly the same way as the scatterometer observations.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00182", "providers": [{"name": "KNMI (The Netherlands)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00182"}, "GLOBAL_OMI_HEALTH_carbon_ph_area_averaged": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-health-carbon-ph-area-averaged,in-situ-observation,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,sea-water-ph-reported-on-total-scale,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean acidification - mean sea water pH time series and trend from Multi-Observations Reprocessing", "missionStartDate": "1985-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nOcean acidification is quantified by decreases in pH, which is a measure of acidity: a decrease in pH value means an increase in acidity, that is, acidification. The observed decrease in ocean pH resulting from increasing concentrations of CO2 is an important indicator of global change. The estimate of global mean pH builds on a reconstruction methodology, \n* Obtain values for alkalinity based on the so called \u201clocally interpolated alkalinity regression (LIAR)\u201d method after Carter et al., 2016; 2018. \n* Build on surface ocean partial pressure of carbon dioxide (CMEMS product: MULTIOBS_GLO_BIO_CARBON_SURFACE_REP_015_008) obtained from an ensemble of Feed-Forward Neural Networks (Chau et al. 2022) which exploit sampling data gathered in the Surface Ocean CO2 Atlas (SOCAT) (https://www.socat.info/)\n* Derive a gridded field of ocean surface pH based on the van Heuven et al., (2011) CO2 system calculations using reconstructed pCO2 (MULTIOBS_GLO_BIO_CARBON_SURFACE_REP_015_008) and alkalinity.\nThe global mean average of pH at yearly time steps is then calculated from the gridded ocean surface pH field. It is expressed in pH unit on total hydrogen ion scale. In the figure, the amplitude of the uncertainty (1\u03c3 ) of yearly mean surface sea water pH varies at a range of (0.0023, 0.0029) pH unit (see Quality Information Document for more details). The trend and uncertainty estimates amount to -0.0017\u00b10.0004e-1 pH units per year.\nThe indicator is derived from in situ observations of CO2 fugacity (SOCAT data base, www.socat.info, Bakker et al., 2016). These observations are still sparse in space and time. Monitoring pH at higher space and time resolutions, as well as in coastal regions will require a denser network of observations and preferably direct pH measurements. \nA full discussion regarding this OMI can be found in section 2.10 of the Ocean State Report 4 (Gehlen et al., 2020).\n\n**CONTEXT**\n\nThe decrease in surface ocean pH is a direct consequence of the uptake by the ocean of carbon dioxide. It is referred to as ocean acidification. The International Panel on Climate Change (IPCC) Workshop on Impacts of Ocean Acidification on Marine Biology and Ecosystems (2011) defined Ocean Acidification as \u201ca reduction in the pH of the ocean over an extended period, typically decades or longer, which is caused primarily by uptake of carbon dioxide from the atmosphere, but can also be caused by other chemical additions or subtractions from the ocean\u201d. The pH of contemporary surface ocean waters is already 0.1 lower than at pre-industrial times and an additional decrease by 0.33 pH units is projected over the 21st century in response to the high concentration pathway RCP8.5 (Bopp et al., 2013). Ocean acidification will put marine ecosystems at risk (e.g. Orr et al., 2005; Gehlen et al., 2011; Kroeker et al., 2013). The monitoring of surface ocean pH has become a focus of many international scientific initiatives (http://goa-on.org/) and constitutes one target for SDG14 (https://sustainabledevelopment.un.org/sdg14). \n\n**CMEMS KEY FINDINGS**\n\nSince the year 1985, global ocean surface pH is decreasing at a rate of -0.0017\u00b10.0004e-1 per year. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00224\n\n**References:**\n\n* Bakker, D. et al.: A multi-decade record of high-quality fCO2 data in version 3 of the Surface Ocean CO2 Atlas (SOCAT), Earth Syst. Sci. Data, 8, 383-413, https://doi.org/10.5194/essd-8-383-2016, 2016.\n* Bopp, L. et al.: Multiple stressors of ocean ecosystems in the 21st century: projections with CMIP5 models, Biogeosciences, 10, 6225\u20136245, doi: 10.5194/bg-10-6225-2013, 2013.\n* Carter, B.R., et al.: Updated methods for global locally interpolated estimation of alkalinity, pH, and nitrate, Limnol. Oceanogr.: Methods 16, 119\u2013131, 2018.\n* Carter, B. R., et al.: Locally interpolated alkalinity regression for global alkalinity estimation. Limnol. Oceanogr.: Methods 14: 268\u2013277. doi:10.1002/lom3.10087, 2016.\n* Chau, T. T. T., Gehlen, M., and Chevallier, F.: A seamless ensemble-based reconstruction of surface ocean pCO2 and air\u2013sea CO2 fluxes over the global coastal and open oceans, Biogeosciences, 19, 1087\u20131109, https://doi.org/10.5194/bg-19-1087-2022, 2022. Gehlen, M. et al.: Biogeochemical consequences of ocean acidification and feedback to the Earth system. p. 230, in: Gattuso J.-P. & Hansson L. (Eds.), Ocean acidification. Oxford: Oxford University Press., 2011.\n* Gehlen M., Thi Tuyet Trang Chau, Anna Conchon, Anna Denvil-Sommer, Fr\u00e9d\u00e9ric Chevallier, Mathieu Vrac, Carlos Mejia (2020). Ocean acidification. In: Copernicus Marine Service Ocean State Report, Issue 4, Journal of Operational Oceanography, 13:sup1, s88\u2013s91; DOI: 10.1080/1755876X.2020.1785097\n* IPCC, 2011: Workshop Report of the Intergovernmental Panel on Climate Change Workshop on Impacts of Ocean Acidification on Marine Biology and Ecosystems. [Field, C.B., V. Barros, T.F. Stocker, D. Qin, K.J. Mach, G.-K. Plattner, M.D. Mastrandrea, M. Tignor and K.L. Ebi (eds.)]. IPCC Working Group II Technical Support Unit, Carnegie Institution, Stanford, California, United States of America, pp.164.\n* Kroeker, K. J. et al.: Meta- analysis reveals negative yet variable effects of ocean acidifica- tion on marine organisms, Ecol. Lett., 13, 1419\u20131434, 2010.\n* Orr, J. C. et al.: Anthropogenic ocean acidification over the twenty-first century and its impact on cal- cifying organisms, Nature, 437, 681\u2013686, 2005.\n* van Heuven, S., et al.: MATLAB program developed for CO2 system calculations, ORNL/CDIAC-105b, Carbon Dioxide Inf. Anal. Cent., Oak Ridge Natl. Lab., US DOE, Oak Ridge, Tenn., 2011.\n", "providers": [{"name": "LSCE (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00224"}, "GLOBAL_OMI_HEALTH_carbon_co2_flux_integrated": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-health-carbon-co2-flux-integrated,in-situ-observation,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Yearly CO2 Sink from Multi-Observations Reprocessing", "missionStartDate": "1985-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe global yearly ocean CO2 sink represents the ocean uptake of CO2 from the atmosphere computed over the whole ocean. It is expressed in PgC per year. The ocean monitoring index is presented for the period 1985 to year-1. The yearly estimate of the ocean CO2 sink corresponds to the mean of a 100-member ensemble of CO2 flux estimates (Chau et al. 2022). The range of an estimate with the associated uncertainty is then defined by the empirical 68% interval computed from the ensemble.\n\n**CONTEXT**\n\nSince the onset of the industrial era in 1750, the atmospheric CO2 concentration has increased from about 277\u00b13 ppm (Joos and Spahni, 2008) to 412.44\u00b10.1 ppm in 2020 (Dlugokencky and Tans, 2020). By 2011, the ocean had absorbed approximately 28 \u00b1 5% of all anthropogenic CO2 emissions, thus providing negative feedback to global warming and climate change (Ciais et al., 2013). The ocean CO2 sink is evaluated every year as part of the Global Carbon Budget (Friedlingstein et al. 2022). The uptake of CO2 occurs primarily in response to increasing atmospheric levels. The global flux is characterized by a significant variability on interannual to decadal time scales largely in response to natural climate variability (e.g., ENSO) (Friedlingstein et al. 2022, Chau et al. 2022). \n\n**CMEMS KEY FINDINGS**\n\nThe rate of change of the integrated yearly surface downward flux has increased by 0.04\u00b10.03e-1 PgC/yr2 over the period 1985 to year-1. The yearly flux time series shows a plateau in the 90s followed by an increase since 2000 with a growth rate of 0.06\u00b10.04e-1 PgC/yr2. In 2021 (resp. 2020), the global ocean CO2 sink was 2.41\u00b10.13 (resp. 2.50\u00b10.12) PgC/yr. The average over the full period is 1.61\u00b10.10 PgC/yr with an interannual variability (temporal standard deviation) of 0.46 PgC/yr. In order to compare these fluxes to Friedlingstein et al. (2022), the estimate of preindustrial outgassing of riverine carbon of 0.61 PgC/yr, which is in between the estimate by Jacobson et al. (2007) (0.45\u00b10.18 PgC/yr) and the one by Resplandy et al. (2018) (0.78\u00b10.41 PgC/yr) needs to be added. A full discussion regarding this OMI can be found in section 2.10 of the Ocean State Report 4 (Gehlen et al., 2020) and in Chau et al. (2022).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00223\n\n**References:**\n\n* Chau, T. T. T., Gehlen, M., and Chevallier, F.: A seamless ensemble-based reconstruction of surface ocean pCO2 and air\u2013sea CO2 fluxes over the global coastal and open oceans, Biogeosciences, 19, 1087\u20131109, https://doi.org/10.5194/bg-19-1087-2022, 2022.\n* Ciais, P., Sabine, C., Govindasamy, B., Bopp, L., Brovkin, V., Canadell, J., Chhabra, A., DeFries, R., Galloway, J., Heimann, M., Jones, C., Le Que\u0301re\u0301, C., Myneni, R., Piao, S., and Thorn- ton, P.: Chapter 6: Carbon and Other Biogeochemical Cycles, in: Climate Change 2013 The Physical Science Basis, edited by: Stocker, T., Qin, D., and Platner, G.-K., Cambridge University Press, Cambridge, 2013.\n* Dlugokencky, E. and Tans, P.: Trends in atmospheric carbon dioxide, National Oceanic and Atmospheric Administration, Earth System Research Laboratory (NOAA/ESRL), http://www.esrl. noaa.gov/gmd/ccgg/trends/global.html, last access: 11 March 2022.\n* Joos, F. and Spahni, R.: Rates of change in natural and anthropogenic radiative forcing over the past 20,000 years, P. Natl. Acad. Sci. USA, 105, 1425\u20131430, https://doi.org/10.1073/pnas.0707386105, 2008.\n* Friedlingstein, P., Jones, M. W., O'Sullivan, M., Andrew, R. M., Bakker, D. C. E., Hauck, J., Le Qu\u00e9r\u00e9, C., Peters, G. P., Peters, W., Pongratz, J., Sitch, S., Canadell, J. G., Ciais, P., Jackson, R. B., Alin, S. R., Anthoni, P., Bates, N. R., Becker, M., Bellouin, N., Bopp, L., Chau, T. T. T., Chevallier, F., Chini, L. P., Cronin, M., Currie, K. I., Decharme, B., Djeutchouang, L. M., Dou, X., Evans, W., Feely, R. A., Feng, L., Gasser, T., Gilfillan, D., Gkritzalis, T., Grassi, G., Gregor, L., Gruber, N., G\u00fcrses, \u00d6., Harris, I., Houghton, R. A., Hurtt, G. C., Iida, Y., Ilyina, T., Luijkx, I. T., Jain, A., Jones, S. D., Kato, E., Kennedy, D., Klein Goldewijk, K., Knauer, J., Korsbakken, J. I., K\u00f6rtzinger, A., Landsch\u00fctzer, P., Lauvset, S. K., Lef\u00e8vre, N., Lienert, S., Liu, J., Marland, G., McGuire, P. C., Melton, J. R., Munro, D. R., Nabel, J. E. M. S., Nakaoka, S.-I., Niwa, Y., Ono, T., Pierrot, D., Poulter, B., Rehder, G., Resplandy, L., Robertson, E., R\u00f6denbeck, C., Rosan, T. M., Schwinger, J., Schwingshackl, C., S\u00e9f\u00e9rian, R., Sutton, A. J., Sweeney, C., Tanhua, T., Tans, P. P., Tian, H., Tilbrook, B., Tubiello, F., van der Werf, G. R., Vuichard, N., Wada, C., Wanninkhof, R., Watson, A. J., Willis, D., Wiltshire, A. J., Yuan, W., Yue, C., Yue, X., Zaehle, S., and Zeng, J.: Global Carbon Budget 2021, Earth Syst. Sci. Data, 14, 1917\u20132005, https://doi.org/10.5194/essd-14-1917-2022, 2022.\n* Jacobson, A. R., Mikaloff Fletcher, S. E., Gruber, N., Sarmiento, J. L., and Gloor, M. (2007), A joint atmosphere-ocean inversion for surface fluxes of carbon dioxide: 1. Methods and global-scale fluxes, Global Biogeochem. Cycles, 21, GB1019, doi:10.1029/2005GB002556.\n* Gehlen M., Thi Tuyet Trang Chau, Anna Conchon, Anna Denvil-Sommer, Fr\u00e9d\u00e9ric Chevallier, Mathieu Vrac, Carlos Mejia (2020). Ocean acidification. In: Copernicus Marine Service Ocean State Report, Issue 4, Journal of Operational Oceanography, 13:sup1, s88\u2013s91; DOI: 10.1080/1755876X.2020.1785097\n* Resplandy, L., Keeling, R. F., R\u00f6denbeck, C., Stephens, B. B., Khatiwala, S., Rodgers, K. B., Long, M. C., Bopp, L. and Tans, P. P.: Revision of global carbon fluxes based on a reassessment of oceanic and riverine carbon transport. Nature Geoscience, 11(7), p.504, 2018.\n", "providers": [{"name": "LSCE (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00223"}, "BLKSEA_MULTIYEAR_BGC_007_005": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "black-sea,blksea-multiyear-bgc-007-005,cell-thickness,coastal-marine-environment,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,model-level-number-at-sea-floor,mole-concentration-of-dissolved-inorganic-carbon-in-sea-water,mole-concentration-of-dissolved-molecular-oxygen-in-sea-water,mole-concentration-of-nitrate-in-sea-water,mole-concentration-of-phosphate-in-sea-water,mole-concentration-of-phytoplankton-expressed-as-carbon-in-sea-water,multi-year,net-primary-production-of-biomass-expressed-as-carbon-per-unit-volume-in-sea-water,numerical-model,oceanographic-geographical-features,satellite-chlorophyll,sea-binary-mask,sea-floor-depth-below-geoid,sea-surface-height-above-geoid,sea-water-alkalinity-expressed-as-mole-equivalent,sea-water-ph-reported-on-total-scale,surface-downward-mass-flux-of-carbon-dioxide-expressed-as-carbon,surface-partial-pressure-of-carbon-dioxide-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea Biogeochemistry Reanalysis", "missionStartDate": "1992-01-01T00:00:00Z", "abstract": "The biogeochemical reanalysis for the Black Sea is produced by the MAST/ULiege Production Unit by means of the BAMHBI biogeochemical model. The workflow runs on the CECI hpc infrastructure (Wallonia, Belgium).\n\n_Product Citation_: Please refer to our Technical FAQ for citing products.http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169\n\n_DOI (product)_: https://doi.org/10.25423/CMCC/BLKSEA_MULTIYEAR_BGC_007_005_BAMHBI\n\n**References:**\n\n* Gr\u00e9goire, M., Vandenbulcke, L., & Capet, A. (2020). Black Sea Biogeochemical Reanalysis (CMEMS BS-Biogeochemistry) (Version 1) [Data set]. Copernicus Monitoring Environment Marine Service (CMEMS). https://doi.org/10.25423/CMCC/BLKSEA_REANALYSIS_BIO_007_005_BAMHBI\n", "providers": [{"name": "ULi\u00e8ge (Belgium)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.25423/CMCC/BLKSEA_MULTIYEAR_BGC_007_005_BAMHBI"}, "WIND_GLO_PHY_L3_MY_012_005": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "air-density,coastal-marine-environment,eastward-wind,global-ocean,level-3,magnitude-of-surface-downward-stress,marine-resources,marine-safety,multi-year,northward-wind,oceanographic-geographical-features,satellite-observation,status-flag,stress-curl,stress-divergence,surface-downward-eastward-stress,surface-downward-northward-stress,weather-climate-and-seasonal-forecasting,wind-glo-phy-l3-my-012-005,wind-speed,wind-to-direction,wvc-index", "license": "proprietary", "title": "Global Ocean Daily Gridded Reprocessed L3 Sea Surface Winds from Scatterometer", "missionStartDate": "1991-08-01T00:00:00Z", "abstract": "For the Global Ocean - The product contains daily L3 gridded sea surface wind observations from available scatterometers with resolutions corresponding to the L2 swath products:\n*0.5 degrees grid for the 50 km scatterometer L2 inputs,\n*0.25 degrees grid based on 25 km scatterometer swath observations,\n*and 0.125 degrees based on 12.5 km scatterometer swath observations, i.e., from the coastal products. Data from ascending and descending passes are gridded separately. \n\nThe product provides stress-equivalent wind and stress variables as well as their divergence and curl. The MY L3 products follow the availability of the reprocessed EUMETSAT OSI SAF L2 products and are available for: The ASCAT scatterometer on MetOp-A and Metop-B at 0.125 and 0.25 degrees; The Seawinds scatterometer on QuikSCAT at 0.25 and 0.5 degrees; The AMI scatterometer on ERS-1 and ERS-2 at 0.25 degrees; The OSCAT scatterometer on Oceansat-2 at 0.25 and 0.5 degrees;\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00183", "providers": [{"name": "KNMI (The Netherlands)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00183"}, "OMI_CLIMATE_SL_BALTIC_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-sea,coastal-marine-environment,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-climate-sl-baltic-area-averaged-anomalies,satellite-observation,sea-surface-height-above-sea-level,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Mean Sea Level time series and trend from Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe sea level ocean monitoring indicator is derived from the DUACS delayed-time (DT-2021 version, \u201cmy\u201d (multi-year) dataset used when available, \u201cmyint\u201d (multi-year interim) used after) sea level anomaly maps from satellite altimetry based on a stable number of altimeters (two) in the satellite constellation. These products are distributed by the Copernicus Climate Change Service and the Copernicus Marine Service (SEALEVEL_GLO_PHY_CLIMATE_L4_MY_008_057).\nThe time series of area averaged anomalies correspond to the area average of the maps in the Baltic Sea weighted by the cosine of the latitude (to consider the changing area in each grid with latitude) and by the proportion of ocean in each grid (to consider the coastal areas). The time series are corrected from global TOPEX-A instrumental drift (WCRP Global Sea Level Budget Group, 2018) and regional mean GIA correction (weighted GIA mean of a 27 ensemble model following Spada et Melini, 2019). The time series are adjusted for seasonal annual and semi-annual signals and low-pass filtered at 6 months. Then, the trends/accelerations are estimated on the time series using ordinary least square fit.\nThe trend uncertainty is provided in a 90% confidence interval. It is calculated as the weighted mean uncertainties in the region from Prandi et al., 2021. This estimate only considers errors related to the altimeter observation system (i.e., orbit determination errors, geophysical correction errors and inter-mission bias correction errors). The presence of the interannual signal can strongly influence the trend estimation considering to the altimeter period considered (Wang et al., 2021; Cazenave et al., 2014). The uncertainty linked to this effect is not considered.\n\n**CONTEXT**\n\nChange in mean sea level is an essential indicator of our evolving climate, as it reflects both the thermal expansion of the ocean in response to its warming and the increase in ocean mass due to the melting of ice sheets and glaciers (WCRP Global Sea Level Budget Group, 2018). At regional scale, sea level does not change homogenously. It is influenced by various other processes, with different spatial and temporal scales, such as local ocean dynamic, atmospheric forcing, Earth gravity and vertical land motion changes (IPCC WGI, 2021). The adverse effects of floods, storms and tropical cyclones, and the resulting losses and damage, have increased as a result of rising sea levels, increasing people and infrastructure vulnerability and food security risks, particularly in low-lying areas and island states (IPCC, 2022a). Adaptation and mitigation measures such as the restoration of mangroves and coastal wetlands, reduce the risks from sea level rise (IPCC, 2022b). \nThe Baltic Sea is a relatively small semi-enclosed basin with shallow bathymetry. Different forcings have been discussed to trigger sea level variations in the Baltic Sea at different time scales. In addition to steric effects, decadal and longer sea level variability in the basin can be induced by sea water exchange with the North Sea, and in response to atmospheric forcing and climate variability (e.g., the North Atlantic Oscillation; Gr\u00e4we et al., 2019).\n\n**KEY FINDINGS**\n\nOver the [1993/01/01, 2023/07/06] period, the area-averaged sea level in the Baltic Sea rises at a rate of 4.1 \uf0b1 0.8 mm/year with an acceleration of 0.10 \uf0b1\uf0200.07 mm/year2. This trend estimation is based on the altimeter measurements corrected from the global Topex-A instrumental drift at the beginning of the time series (Legeais et al., 2020) and regional GIA correction (Spada et Melini, 2019) to consider the ongoing movement of land. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00202\n\n**References:**\n\n* Cazenave, A., Dieng, H.-B., Meyssignac, B., von Schuckmann, K., Decharme, B., and Berthier, E.: The rate of sea-level rise, Nat. Clim. Change, 4, 358\u2013361, https://doi.org/10.1038/nclimate2159, 2014.\n* Gr\u00e4we, U., Klingbeil, K., Kelln, J., and Dangendorf, S.: Decomposing Mean Sea Level Rise in a Semi-Enclosed Basin, the Baltic Sea, J. Clim., 32, 3089\u20133108, https://doi.org/10.1175/JCLI-D-18-0174.1, 2019.\n* Horwath, M., Gutknecht, B. D., Cazenave, A., Palanisamy, H. K., Marti, F., Marzeion, B., Paul, F., Le Bris, R., Hogg, A. E., Otosaka, I., Shepherd, A., D\u00f6ll, P., C\u00e1ceres, D., M\u00fcller Schmied, H., Johannessen, J. A., Nilsen, J. E. \u00d8., Raj, R. P., Forsberg, R., Sandberg S\u00f8rensen, L., Barletta, V. R., Simonsen, S. B., Knudsen, P., Andersen, O. B., Ranndal, H., Rose, S. K., Merchant, C. J., Macintosh, C. R., von Schuckmann, K., Novotny, K., Groh, A., Restano, M., and Benveniste, J.: Global sea-level budget and ocean-mass budget, with a focus on advanced data products and uncertainty characterisation, Earth Syst. Sci. Data, 14, 411\u2013447, https://doi.org/10.5194/essd-14-411-2022, 2022.\n* IPCC: Summary for Policymakers [H.-O. P\u00f6rtner, D.C. Roberts, E.S. Poloczanska, K. Mintenbeck, M. Tignor, A. Alegr\u00eda, M. Craig, S. Langsdorf, S. L\u00f6schke, V. M\u00f6ller, A. Okem (eds.)]. In: Climate Change 2022: Impacts, Adaptation, and Vulnerability. Contribution of Working Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [H.-O. P\u00f6rtner, D.C. Roberts, M. Tignor, E.S. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Craig, S. Langsdorf, S. L\u00f6schke, V. M\u00f6ller, A. Okem, B. Rama (eds.)], 2022a.\n* IPCC: Summary for Policymakers. In: Climate Change 2022: Mitigation of Climate Change. Contribution of Working Group III to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [P.R. Shukla, J. Skea, R. Slade, A. Al Khourdajie, R. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, M. Belkacemi, A. Hasija, G. Lisboa, S. Luz, J. Malley, (eds.)], , https://doi.org/10.1017/9781009157926.001, 2022b.\n* IPCC WGI: Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change, 2021.\n* Legeais, J. F., Llowel, W., Melet, A., and Meyssignac, B.: Evidence of the TOPEX-A altimeter instrumental anomaly and acceleration of the global mean sea level, Copernic. Mar. Serv. Ocean State Rep. Issue 4, 13, s77\u2013s82, https://doi.org/10.1080/1755876X.2021.1946240, 2020.\n* Peltier, W. R.: GLOBAL GLACIAL ISOSTASY AND THE SURFACE OF THE ICE-AGE EARTH: The ICE-5G (VM2) Model and GRACE, Annu. Rev. Earth Planet. Sci., 32, 111\u2013149, https://doi.org/10.1146/annurev.earth.32.082503.144359, 2004.\n* Prandi, P., Meyssignac, B., Ablain, M., Spada, G., Ribes, A., and Benveniste, J.: Local sea level trends, accelerations and uncertainties over 1993\u20132019, Sci. Data, 8, 1, https://doi.org/10.1038/s41597-020-00786-7, 2021.\n* Wang, J., Church, J. A., Zhang, X., and Chen, X.: Reconciling global mean and regional sea level change in projections and observations, Nat. Commun., 12, 990, https://doi.org/10.1038/s41467-021-21265-6, 2021.\n* WCRP Global Sea Level Budget Group: Global sea-level budget 1993\u2013present, Earth Syst. Sci. Data, 10, 1551\u20131590, https://doi.org/10.5194/essd-10-1551-2018, 2018.\n", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00202"}, "OMI_CLIMATE_SL_BLKSEA_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-sea,coastal-marine-environment,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-climate-sl-blksea-area-averaged-anomalies,satellite-observation,sea-surface-height-above-sea-level,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea Mean Sea Level time series and trend from Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe ocean monitoring indicator on mean sea level is derived from the DUACS delayed-time (DT-2021 version, \u201cmy\u201d (multi-year) dataset used when available, \u201cmyint\u201d (multi-year interim) used after) sea level anomaly maps from satellite altimetry based on a stable number of altimeters (two) in the satellite constellation. These products are distributed by the Copernicus Climate Change Service and the Copernicus Marine Service (SEALEVEL_GLO_PHY_CLIMATE_L4_MY_008_057).\nThe time series of area averaged anomalies correspond to the area average of the maps in the Black Sea weighted by the cosine of the latitude (to consider the changing area in each grid with latitude) and by the proportion of ocean in each grid (to consider the coastal areas). The time series are corrected from global TOPEX-A instrumental drift (WCRP Global Sea Level Budget Group, 2018) and regional mean GIA correction (weighted GIA mean of a 27 ensemble model following Spada et Melini, 2019). The time series are adjusted for seasonal annual and semi-annual signals and low-pass filtered at 6 months. Then, the trends/accelerations are estimated on the time series using ordinary least square fit.The trend uncertainty is provided in a 90% confidence interval. It is calculated as the weighted mean uncertainties in the region from Prandi et al., 2021. This estimate only considers errors related to the altimeter observation system (i.e., orbit determination errors, geophysical correction errors and inter-mission bias correction errors). The presence of the interannual signal can strongly influence the trend estimation considering to the altimeter period considered (Wang et al., 2021; Cazenave et al., 2014). The uncertainty linked to this effect is not considered.\n\n**CONTEXT**\n\nChange in mean sea level is an essential indicator of our evolving climate, as it reflects both the thermal expansion of the ocean in response to its warming and the increase in ocean mass due to the melting of ice sheets and glaciers (WCRP Global Sea Level Budget Group, 2018). At regional scale, sea level does not change homogenously. It is influenced by various other processes, with different spatial and temporal scales, such as local ocean dynamic, atmospheric forcing, Earth gravity and vertical land motion changes (IPCC WGI, 2021). The adverse effects of floods, storms and tropical cyclones, and the resulting losses and damage, have increased as a result of rising sea levels, increasing people and infrastructure vulnerability and food security risks, particularly in low-lying areas and island states (IPCC, 2022b). Adaptation and mitigation measures such as the restoration of mangroves and coastal wetlands, reduce the risks from sea level rise (IPCC, 2022c). \nIn the Black Sea, major drivers of change have been attributed to anthropogenic climate change (steric expansion), and mass changes induced by various water exchanges with the Mediterranean Sea, river discharge, and precipitation/evaporation changes (e.g. Volkov and Landerer, 2015). The sea level variation in the basin also shows an important interannual variability, with an increase observed before 1999 predominantly linked to steric effects, and comparable lower values afterward (Vigo et al., 2005).\n\n**KEY FINDINGS**\n\nOver the [1993/01/01, 2023/07/06] period, the area-averaged sea level in the Black Sea rises at a rate of 1.00 \u00b1 0.80 mm/year with an acceleration of -0.47 \u00b1 0.06 mm/year2. This trend estimation is based on the altimeter measurements corrected from the global Topex-A instrumental drift at the beginning of the time series (Legeais et al., 2020) and regional GIA correction (Spada et Melini, 2019) to consider the ongoing movement of land. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00215\n\n**References:**\n\n* Cazenave, A., Dieng, H.-B., Meyssignac, B., von Schuckmann, K., Decharme, B., and Berthier, E.: The rate of sea-level rise, Nat. Clim. Change, 4, 358\u2013361, https://doi.org/10.1038/nclimate2159, 2014.\n* Horwath, M., Gutknecht, B. D., Cazenave, A., Palanisamy, H. K., Marti, F., Marzeion, B., Paul, F., Le Bris, R., Hogg, A. E., Otosaka, I., Shepherd, A., D\u00f6ll, P., C\u00e1ceres, D., M\u00fcller Schmied, H., Johannessen, J. A., Nilsen, J. E. \u00d8., Raj, R. P., Forsberg, R., Sandberg S\u00f8rensen, L., Barletta, V. R., Simonsen, S. B., Knudsen, P., Andersen, O. B., Ranndal, H., Rose, S. K., Merchant, C. J., Macintosh, C. R., von Schuckmann, K., Novotny, K., Groh, A., Restano, M., and Benveniste, J.: Global sea-level budget and ocean-mass budget, with a focus on advanced data products and uncertainty characterisation, Earth Syst. Sci. Data, 14, 411\u2013447, https://doi.org/10.5194/essd-14-411-2022, 2022.\n* IPCC: AR6 Synthesis Report: Climate Change 2022, 2022a.\n* IPCC: Summary for Policymakers [H.-O. P\u00f6rtner, D.C. Roberts, E.S. Poloczanska, K. Mintenbeck, M. Tignor, A. Alegr\u00eda, M. Craig, S. Langsdorf, S. L\u00f6schke, V. M\u00f6ller, A. Okem (eds.)]. In: Climate Change 2022: Impacts, Adaptation, and Vulnerability. Contribution of Working Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [H.-O. P\u00f6rtner, D.C. Roberts, M. Tignor, E.S. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Craig, S. Langsdorf, S. L\u00f6schke, V. M\u00f6ller, A. Okem, B. Rama (eds.)], 2022b.\n* IPCC: Summary for Policymakers. In: Climate Change 2022: Mitigation of Climate Change. Contribution of Working Group III to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [P.R. Shukla, J. Skea, R. Slade, A. Al Khourdajie, R. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, M. Belkacemi, A. Hasija, G. Lisboa, S. Luz, J. Malley, (eds.)], , https://doi.org/10.1017/9781009157926.001, 2022c.\n* IPCC WGI: Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change, 2021.\n* Legeais, J. F., Llowel, W., Melet, A., and Meyssignac, B.: Evidence of the TOPEX-A altimeter instrumental anomaly and acceleration of the global mean sea level, Copernic. Mar. Serv. Ocean State Rep. Issue 4, 13, s77\u2013s82, https://doi.org/10.1080/1755876X.2021.1946240, 2020.\n* Peltier, W. R.: GLOBAL GLACIAL ISOSTASY AND THE SURFACE OF THE ICE-AGE EARTH: The ICE-5G (VM2) Model and GRACE, Annu. Rev. Earth Planet. Sci., 32, 111\u2013149, https://doi.org/10.1146/annurev.earth.32.082503.144359, 2004.\n* Prandi, P., Meyssignac, B., Ablain, M., Spada, G., Ribes, A., and Benveniste, J.: Local sea level trends, accelerations and uncertainties over 1993\u20132019, Sci. Data, 8, 1, https://doi.org/10.1038/s41597-020-00786-7, 2021.\n* Vigo, I., Garcia, D., and Chao, B. F.: Change of sea level trend in the Mediterranean and Black seas, J. Mar. Res., 63, 1085\u20131100, https://doi.org/10.1357/002224005775247607, 2005.\n* Volkov, D. L. and Landerer, F. W.: Internal and external forcing of sea level variability in the Black Sea, Clim. Dyn., 45, 2633\u20132646, https://doi.org/10.1007/s00382-015-2498-0, 2015.\n* Wang, J., Church, J. A., Zhang, X., and Chen, X.: Reconciling global mean and regional sea level change in projections and observations, Nat. Commun., 12, 990, https://doi.org/10.1038/s41467-021-21265-6, 2021.\n* WCRP Global Sea Level Budget Group: Global sea-level budget 1993\u2013present, Earth Syst. Sci. Data, 10, 1551\u20131590, https://doi.org/10.5194/essd-10-1551-2018, 2018.\n", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00215"}, "OMI_EXTREME_SL_IBI_slev_mean_and_anomaly_obs": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,in-situ-observation,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-extreme-sl-ibi-slev-mean-and-anomaly-obs,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Iberia Biscay Ireland Sea Level extreme from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe OMI_EXTREME_SL_IBI_slev_mean_and_anomaly_obs indicator is based on the computation of the 99th and the 1st percentiles from in situ data (observations). It is computed for the variable sea level measured by tide gauges along the coast. The use of percentiles instead of annual maximum and minimum values, makes this extremes study less affected by individual data measurement errors. The annual percentiles referred to annual mean sea level are temporally averaged and their spatial evolution is displayed in the dataset omi_var_extreme_sl_ibi_slev_mean_and_anomaly_obs, jointly with the anomaly in the target year. This study of extreme variability was first applied to sea level variable (P\u00e9rez G\u00f3mez et al 2016) and then extended to other essential variables, sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018).\n\n**CONTEXT**\n\nSea level is one of the Essential Ocean Variables most affected by climate change. Global mean sea level rise has accelerated since the 1990\u2019s (Abram et al., 2019, Legeais et al., 2020), due to the increase of ocean temperature and mass volume caused by land ice melting (WCRP, 2018). Basin scale oceanographic and meteorological features lead to regional variations of this trend that combined with changes in the frequency and intensity of storms could also rise extreme sea levels up to one metre by the end of the century (Vousdoukas et al., 2020). This will significantly increase coastal vulnerability to storms, with important consequences on the extent of flooding events, coastal erosion and damage to infrastructures caused by waves.\n\n**CMEMS KEY FINDINGS**\n\nThe completeness index criteria is fulfilled by 52 stations, a significant increase with respect to those available in 2019 (17). Most of these new stations belong to UK, Ireland and France, and their reprocessed timeseries are now provided in product INSITU_GLO_PHY_SSH_DISCRETE_MY_013_053. The mean 99th percentiles reflect the great tide spatial variability around the UK and the north of France. Minimum values are obseved in the Irish coast (e.g.: 0.66 m above mean sea level in Arklow Harbour), South of England (e.g.: 0.70 m above mean sea level in Bournemouth), and the Canary Islands (e.g.: 0.96 m above mean sea level in Hierro). Maximum values are observed in the Bristol and English Channels (e.g.: 6.25 m and 5.16 m above mean sea level in Newport and St. Helier, respectively). The standard deviation reflects the south-north increase of storminess, ranging between 2 cm in the Canary Islands to 12 cm in Newport. Positive anomalies of 2020 99th percentile are observed for most of the stations, increasing northwards from 1-2 cm in the Canary Islands to 16 cm in Workington (Irish Sea). A negative anomaly of -3 cm is observed in Bonanza (Gulf of Cadiz, Guadalquivir river mouth). \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00253\n\n**References:**\n\n* Abram, N., Gattuso, J.-P., Prakash, A., Cheng, L., Chidichimo, M. P., Crate, S., Enomoto, H., Garschagen, M., Gruber, N., Harper, S., Holland, E., Kudela, R. M., Rice, J., Steffen, K., & von Schuckmann, K. (2019). Framing and Context of the Report. In H. O. P\u00f6rtner, D. C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Nicolai, A. Okem, J. Petzold, B. Rama, & N. M. Weyer (Eds.), IPCC Special Report on the Ocean and Cryosphere in a Changing Climate (pp. 73\u2013129). in press. https://www.ipcc.ch/srocc/\n* Legeais J-F, W. Llowel, A. Melet and B. Meyssignac: Evidence of the TOPEX-A Altimeter Instrumental Anomaly and Acceleration of the Global Mean Sea Level, in Copernicus Marine Service Ocean State Report, Issue 4, Journal of Operational Oceanography, 2020, accepted.\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B, De Alfonso M, Zacharioudaki A, P\u00e9rez Gonz\u00e1lez I, \u00c1lvarez Fanjul E, M\u00fcller M, Marcos M, Manzano F, Korres G, Ravdas M, Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208.\n* WCRP Global Sea Level Budget Group: Global sea-level budget 1993\u2013present. 2018. Earth Syst. Sci. Data, 10, 1551-1590, https://doi.org/10.5194/essd-10-1551-2018.\n* Vousdoukas MI, Mentaschi L, Hinkel J, et al. 2020. Economic motivation for raising coastal flood defenses in Europe. Nat Commun 11, 2119 (2020). https://doi.org/10.1038/s41467-020-15665-3.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00253"}, "OMI_EXTREME_WAVE_MEDSEA_swh_mean_and_anomaly_obs": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,in-situ-observation,marine-resources,marine-safety,mediterranean-sea,multi-year,oceanographic-geographical-features,omi-extreme-wave-medsea-swh-mean-and-anomaly-obs,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea Significant Wave Height extreme from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe OMI_EXTREME_WAVE_MEDSEA_swh_mean_and_anomaly_obs indicator is based on the computation of the 99th and the 1st percentiles from in situ data (observations). It is computed for the variable significant wave height (swh) measured by in situ buoys. The use of percentiles instead of annual maximum and minimum values, makes this extremes study less affected by individual data measurement errors. The percentiles are temporally averaged, and the spatial evolution is displayed, jointly with the anomaly in the target year. This study of extreme variability was first applied to sea level variable (P\u00e9rez G\u00f3mez et al 2016) and then extended to other essential variables, sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018). \n\n**CONTEXT**\n\nProjections on Climate Change foresee a future with a greater frequency of extreme sea states (Stott, 2016; Mitchell, 2006). The damages caused by severe wave storms can be considerable not only in infrastructure and buildings but also in the natural habitat, crops and ecosystems affected by erosion and flooding aggravated by the extreme wave heights. In addition, wave storms strongly hamper the maritime activities, especially in harbours. These extreme phenomena drive complex hydrodynamic processes, whose understanding is paramount for proper infrastructure management, design and maintenance (Goda, 2010).\n\n**CMEMS KEY FINDINGS**\n\nThe mean 99th percentiles showed in the area present a range from 1.5-3.5 in the Gibraltar Strait and Alboran Sea with 0.25-0.6 of standard deviation (std), 2-4m in the East coast of the Iberian Peninsula and Balearic Islands with 0.2-0.4m of std, 3m in the Ligurian Sea with 0.2m of std to 3-5m in the Gulf of Lyon with 0.2-0.5m of std. \nResults for this year show slight either negative or positive anomalies in the whole area from -0.3m to +0.3m, all of them around the std range.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00263\n\n**References:**\n\n* Goda Y. 2010. Random seas and design of maritime structures. World scientific. https://doi.org/10.1142/7425.\n* Mitchell JF, Lowe J, Wood RA, & Vellinga M. 2006. Extreme events due to human-induced climate change. Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences, 364(1845), 2117-2133.\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B, De Alfonso M, Zacharioudaki A, P\u00e9rez Gonz\u00e1lez I, \u00c1lvarez Fanjul E, M\u00fcller M, Marcos M, Manzano F, Korres G, Ravdas M, Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208.\n* Stott P. 2016. How climate change affects extreme weather events. Science, 352(6293), 1517-1518.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00263"}, "OMI_CIRCULATION_BOUNDARY_BLKSEA_rim_current_index": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "black-sea,coastal-marine-environment,marine-resources,marine-safety,multi-year,numerical-model,oceanographic-geographical-features,omi-circulation-boundary-blksea-rim-current-index,rim-current-intensity-index,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Black Sea Rim Current Intensity Index", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe Black Sea Rim Current index (BSRCI) reflects the intensity of the Rim current, which is a main feature of the Black Sea circulation, a basin scale cyclonic current. The index was computed using sea surface current speed averaged over two areas of intense currents based on reanalysis data. The areas are confined between the 200 and 1800 m isobaths in the northern section 33-39E (from the Caucasus coast to the Crimea Peninsula), and in the southern section 31.5-35E (from Sakarya region to near Sinop Peninsula). Thus, three indices were defined: one for the northern section (BSRCIn), for the southern section (BSRCIs) and an average for the entire basin (BSRCI).\nBSRCI=(V \u0305_ann-V \u0305_cl)/V \u0305_cl \nwhere V \u0305 denotes the representative area average, the \u201cann\u201d denotes the annual mean for each individual year in the analysis, and \u201ccl\u201d indicates the long-term mean over the whole period 1993-2020. In general, BSRCI is defined as the relative annual anomaly from the long-term mean speed. An index close to zero means close to the average conditions a positive index indicates that the Rim current is more intense than average, or negative - if it is less intense than average. In other words, positive BSRCI would mean higher circumpolar speed, enhanced baroclinicity, enhanced dispersion of pollutants, less degree of exchange between open sea and coastal areas, intensification of the heat redistribution, etc.\nThe BSRCI is introduced in the fifth issue of the Ocean State Report (von Schuckmann et al., 2021). The Black Sea Physics Reanalysis (BLKSEA_REANALYSIS_PHYS_007_004) has been used as a data base to build the index. Details on the products are delivered in the PUM and QUID of this OMI.\n\n**CONTEXT**\n\nThe Black Sea circulation is driven by the regional winds and large freshwater river inflow in the north-western part (including the main European rivers Danube, Dnepr and Dnestr). The major cyclonic gyre encompasses the sea, referred to as Rim current. It is quasi-geostrophic and the Sverdrup balance approximately applies to it. \nThe Rim current position and speed experiences significant interannual variability (Stanev and Peneva, 2002), intensifying in winter due to the dominating severe northeastern winds in the region (Stanev et al., 2000). Consequently, this impacts the vertical stratification, Cold Intermediate Water formation, the biological activity distribution and the coastal mesoscale eddies\u2019 propagation along the current and their evolution. The higher circumpolar speed leads to enhanced dispersion of pollutants, less degree of exchange between open sea and coastal areas, enhanced baroclinicity, intensification of the heat redistribution which is important for the winter freezing in the northern zones (Simonov and Altman, 1991). Fach (2015) finds that the anchovy larval dispersal in the Black Sea is strongly controlled at the basin scale by the Rim Current and locally - by mesoscale eddies. \nSeveral recent studies of the Black Sea pollution claim that the understanding of the Rim Current behavior and how the mesoscale eddies evolve would help to predict the transport of various pollution such as oil spills (Korotenko, 2018) and floating marine litter (Stanev and Ricker, 2019) including microplastic debris (Miladinova et al., 2020) raising a serious environmental concern today. \nTo summarize, the intensity of the Black Sea Rim Current could give valuable integral measure for a great deal of physical and biogeochemical processes manifestation. Thus our objective is to develop a comprehensive index reflecting the annual mean state of the Black Sea general circulation to be used by policy makers and various end users. \n\n**CMEMS KEY FINDINGS**\n\nThe Black Sea Rim Current Index is defined as the relative annual anomaly of the long-term mean speed. The BSRCI value characterizes the annual circulation state: a value close to zero would mean close to average conditions, positive value indicates enhanced circulation, and negative value \u2013 weaker circulation than usual. The time-series of the BSRCI suggest that the Black Sea Rim current speed varies within ~30% in the period 1993-2020 with a positive trend of ~0.1 m/s/decade. In the years 2005 and 2014 there is evidently higher mean velocity, and on the opposite end are the years \u20132004, 2013 and 2016. The time series of the BSRCI gives possibility to check the relationship with the wind vorticity and validate the Sverdrup balance hypothesis. \n\n**Figure caption**\n\nTime series of the Black Sea Rim Current Index (BSRCI) at the north section (BSRCIn), south section (BSRCIs), the average (BSRCI) and its tendency for the period 1993-2020.\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00326\n\n**References:**\n\n* Capet, A., A. Barth, J.-M. Beckers, and M. Gr\u00e9goire (2012), Interannual variability of Black Sea\u2019s hydrodynamics and connection to atmospheric patterns, Deep-Sea Res. Pt. II, 77 \u2013 80, 128\u2013142, doi:10.1016/j.dsr2.2012.04.010\n* Fach, B., (2015), Modeling the Influence of Hydrodynamic Processes on Anchovy Distribution and Connectivity in the Black Sea, Turkish Journal of Fisheries and Aquatic Sciences 14: 1-2, doi: 10.4194/1303-2712-v14_2_06\n* Ivanov V.A., Belokopytov V.N. (2013) Oceanography of the Black Sea. Editorial publishing board of Marine Hydrophysical Institute, 210 p, Printed by ECOSY-Gidrofizika, Sevastopol Korotaev, G., T. Oguz, A. Nikiforov, and C. Koblinsky. Seasonal, interannual, and mesoscale variability of the Black Sea upper layer circulation derived from altimeter data. Journal of Geophysical Research (Oceans). 108. C4. doi: 10. 1029/2002JC001508, 2003\n* Korotenko KA. Effects of mesoscale eddies on behavior of an oil spill resulting from an accidental deepwater blowout in the Black Sea: an assessment of the environmental impacts. PeerJ. 2018 Aug 29;6:e5448. doi: 10.7717/peerj.5448. PMID: 30186680; PMCID: PMC6119461.\n* Kubryakov, A. A., and S.V. Stanichny (2015), Seasonal and interannual variability of the Black Sea eddies and its dependence on characteristics of the large-scale circulation, Deep-Sea Res. Pt. I, 97, 80-91, https://doi.org/10.1016/j.dsr.2014.12.002\n* Miladinova S., A. Stips, D. Macias Moy, E. Garcia-Gorriz, (2020a) Pathways and mixing of the north western river waters in the Black Sea Estuarine, Coastal and Shelf Science, Volume 236, 5 May 2020, https://doi\n", "providers": [{"name": "CMCC (Italy)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00326"}, "OMI_CLIMATE_SL_IBI_regional_trends": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-climate-sl-ibi-regional-trends,satellite-observation,sea-surface-height-above-sea-level,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Atlantic Iberian Biscay Mean Sea Level time series and trend from Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe ocean monitoring indicator on regional mean sea level is derived from the DUACS delayed-time (DT-2021 version, \u201cmy\u201d (multi-year) dataset used when available, \u201cmyint\u201d (multi-year interim) used after) sea level anomaly maps from satellite altimetry based on a stable number of altimeters (two) in the satellite constellation. These products are distributed by the Copernicus Climate Change Service and the Copernicus Marine Service (SEALEVEL_GLO_PHY_CLIMATE_L4_MY_008_057).\nThe mean sea level evolution estimated in the Irish-Biscay-Iberian (IBI) region is derived from the average of the gridded sea level maps weighted by the cosine of the latitude. The annual and semi-annual periodic signals are removed (least square fit of sinusoidal function) and the time series is low-pass filtered (175 days cut-off). The curve is corrected for the regional mean effect of the Glacial Isostatic Adjustment (GIA) using the ICE5G-VM2 GIA model (Peltier, 2004) to consider the ongoing movement of land due to post-glacial rebound.\nDuring 1993-1998, the Global men sea level (hereafter GMSL) has been known to be affected by a TOPEX-A instrumental drift (WCRP Global Sea Level Budget Group, 2018; Legeais et al., 2020). This drift led to overestimate the trend of the GMSL during the first 6 years of the altimetry record (about 0.04 mm/y at global scale over the whole altimeter period). A correction of the drift is proposed for the Global mean sea level (Legeais et al., 2020). Whereas this TOPEX-A instrumental drift should also affect the regional mean sea level (hereafter RMSL) trend estimation, currently this empirical correction is currently not applied to the altimeter sea level dataset and resulting estimated for RMSL. Indeed, the pertinence of the global correction applied at regional scale has not been demonstrated yet and there is no clear consensus achieved on the way to proceed at regional scale. Additionally, the estimation of such a correction at regional scale is not obvious, especially in areas where few accurate independent measurements (e.g. in situ)- necessary for this estimation - are available. The trend uncertainty is provided in a 90% confidence interval (Prandi et al., 2021). This estimate only considers errors related to the altimeter observation system (i.e., orbit determination errors, geophysical correction errors and inter-mission bias correction errors). The presence of the interannual signal can strongly influence the trend estimation considering to the altimeter period considered (Wang et al., 2021; Cazenave et al., 2014). The uncertainty linked to this effect is not taken into account.\n\n**CONTEXT**\n\nChange in mean sea level is an essential indicator of our evolving climate, as it reflects both the thermal expansion of the ocean in response to its warming and the increase in ocean mass due to the melting of ice sheets and glaciers (WCRP Global Sea Level Budget Group, 2018).. At regional scale, sea level does not change homogenously, and RMSL rise can also be influenced by various other processes, with different spatial and temporal scales, such as local ocean dynamic, atmospheric forcing, Earth gravity and vertical land motion changes (IPCC WGI, 2021). The adverse effects of floods, storms and tropical cyclones, and the resulting losses and damage, have increased as a result of rising sea levels, increasing people and infrastructure vulnerability and food security risks, particularly in low-lying areas and island states (IPCC, 2022a). Adaptation and mitigation measures such as the restoration of mangroves and coastal wetlands, reduce the risks from sea level rise (IPCC, 2022b). \nIn IBI region, the RMSL trend is modulated by decadal variations. As observed over the global ocean, the main actors of the long-term RMSL trend are associated with anthropogenic global/regional warming. Decadal variability is mainly linked to the strengthening or weakening of the Atlantic Meridional Overturning Circulation (AMOC) (e.g. Chafik et al., 2019). The latest is driven by the North Atlantic Oscillation (NAO) (e.g. Delworth and Zeng, 2016). Along the European coast, the NAO also influences the along-slope winds dynamic which in return significantly contributes to the local sea level variability observed (Chafik et al., 2019).\n\n**CMEMS KEY FINDINGS**\n\nOver the [1993/01/01, 2022/08/04] period, the basin-wide RMSL in the IBI area rises at a rate of 3.9 \uf0b1 0.82 mm/year.\n\n**Figure caption**\n\nRegional mean sea level daily evolution (in cm) over the [1993/01/01, 2022/08/04] period, from the satellite altimeter observations estimated in the Irish-Biscay-Iberian region, derived from the average of the gridded sea level maps weighted by the cosine of the latitude. The ocean monitoring indicator is derived from the DUACS delayed-time (reprocessed version DT-2021, \u201cmy\u201d (multi-year) dataset used when available, \u201cmyint\u201d (multi-year interim) used after) altimeter sea level gridded pr oducts distributed by the Copernicus Climate Change Service (C3S), and the Copernicus Marine Service (SEALEVEL_GLO_PHY_CLIMATE_L4_MY_008_057). The annual and semi-annual periodic signals are removed, the timeseries is low-pass filtered (175 days cut-off) and the curve is corrected for the GIA using the ICE5G-VM2 GIA model (Peltier, 2004).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00252\n\n**References:**\n\n* Cazenave, A., Dieng, H.-B., Meyssignac, B., von Schuckmann, K., Decharme, B., and Berthier, E.: The rate of sea-level rise, Nat. Clim. Change, 4, 358\u2013361, https://doi.org/10.1038/nclimate2159, 2014.\n* Chafik, L., Nilsen, J. E. \u00d8., Dangendorf, S., Reverdin, G., and Frederikse, T.: North Atlantic Ocean Circulation and Decadal Sea Level Change During the Altimetry Era, Sci. Rep., 9, 1041, https://doi.org/10.1038/s41598-018-37603-6, 2019.\n* Delworth, T. L. and Zeng, F.: The Impact of the North Atlantic Oscillation on Climate through Its Influence on the Atlantic Meridional Overturning Circulation, J. Clim., 29, 941\u2013962, https://doi.org/10.1175/JCLI-D-15-0396.1, 2016.\n* Horwath, M., Gutknecht, B. D., Cazenave, A., Palanisamy, H. K., Marti, F., Marzeion, B., Paul, F., Le Bris, R., Hogg, A. E., Otosaka, I., Shepherd, A., D\u00f6ll, P., C\u00e1ceres, D., M\u00fcller Schmied, H., Johannessen, J. A., Nilsen, J. E. \u00d8., Raj, R. P., Forsberg, R., Sandberg S\u00f8rensen, L., Barletta, V. R., Simonsen, S. B., Knudsen, P., Andersen, O. B., Ranndal, H., Rose, S. K., Merchant, C. J., Macintosh, C. R., von Schuckmann, K., Novotny, K., Groh, A., Restano, M., and Benveniste, J.: Global sea-level budget and ocean-mass budget, with a focus on advanced data products and uncertainty characterisation, Earth Syst. Sci. Data, 14, 411\u2013447, https://doi.org/10.5194/essd-14-411-2022, 2022.\n* IPCC: AR6 Synthesis Report: Climate Change 2022, 2022a.\n* IPCC: Summary for Policymakers [H.-O. P\u00f6rtner, D.C. Roberts, E.S. Poloczanska, K. Mintenbeck, M. Tignor, A. Alegr\u00eda, M. Craig, S. Langsdorf, S. L\u00f6schke, V. M\u00f6ller, A. Okem (eds.)]. In: Climate Change 2022: Impacts, Adaptation, and Vulnerability. Contribution of Working Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [H.-O. P\u00f6rtner, D.C. Roberts, M. Tignor, E.S. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Craig, S. Langsdorf, S. L\u00f6schke, V. M\u00f6ller, A. Okem, B. Rama (eds.)], 2022b.\n* IPCC: Summary for Policymakers. In: Climate Change 2022: Mitigation of Climate Change. Contribution of Working Group III to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [P.R. Shukla, J. Skea, R. Slade, A. Al Khourdajie, R. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, M. Belkacemi, A. Hasija, G. Lisboa, S. Luz, J. Malley, (eds.)], , https://doi.org/10.1017/9781009157926.001, 2022c.\n* IPCC WGI: Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change, 2021.\n* IPCC WGII: Climate Change 2021: Impacts, Adaptation and Vulnerability; Summary for Policemakers. Contribution of Working Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change, 2021.\n* Legeais, J. F., Llowel, W., Melet, A., and Meyssignac, B.: Evidence of the TOPEX-A altimeter instrumental anomaly and acceleration of the global mean sea level, Copernic. Mar. Serv. Ocean State Rep. Issue 4, 13, s77\u2013s82, https://doi.org/10.1080/1755876X.2021.1946240, 2020.\n* Peltier, W. R.: GLOBAL GLACIAL ISOSTASY AND THE SURFACE OF THE ICE-AGE EARTH: The ICE-5G (VM2) Model and GRACE, Annu. Rev. Earth Planet. Sci., 32, 111\u2013149, https://doi.org/10.1146/annurev.earth.32.082503.144359, 2004.\n* Prandi, P., Meyssignac, B., Ablain, M., Spada, G., Ribes, A., and Benveniste, J.: Local sea level trends, accelerations and uncertainties over 1993\u20132019, Sci. Data, 8, 1, https://doi.org/10.1038/s41597-020-00786-7, 2021.\n* Wang, J., Church, J. A., Zhang, X., and Chen, X.: Reconciling global mean and regional sea level change in projections and observations, Nat. Commun., 12, 990, https://doi.org/10.1038/s41467-021-21265-6, 2021.\n* WCRP Global Sea Level Budget Group: Global sea-level budget 1993\u2013present, Earth Syst. Sci. Data, 10, 1551\u20131590, https://doi.org/10.5194/essd-10-1551-2018, 2018.\n", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00252"}, "OMI_CLIMATE_SL_NORTHWESTSHELF_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-sea,coastal-marine-environment,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-climate-sl-northwestshelf-area-averaged-anomalies,satellite-observation,sea-surface-height-above-sea-level,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "North West Atlantic Shelf Mean Sea Level time series and trend from Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe ocean monitoring indicator on mean sea level is derived from the DUACS delayed-time (DT-2021 version, \u201cmy\u201d (multi-year) dataset used when available, \u201cmyint\u201d (multi-year interim) used after) sea level anomaly maps from satellite altimetry based on a stable number of altimeters (two) in the satellite constellation. These products are distributed by the Copernicus Climate Change Service and by the Copernicus Marine Service (SEALEVEL_GLO_PHY_CLIMATE_L4_MY_008_057).\nThe time series of area averaged anomalies correspond to the area average of the maps in the North-West Shelf Sea weighted by the cosine of the latitude (to consider the changing area in each grid with latitude) and by the proportion of ocean in each grid (to consider the coastal areas). The time series are corrected from global TOPEX-A instrumental drift (WCRP Global Sea Level Budget Group, 2018) and regional mean GIA correction (weighted GIA mean of a 27 ensemble model following Spada et Melini, 2019). The time series are adjusted for seasonal annual and semi-annual signals and low-pass filtered at 6 months. Then, the trends/accelerations are estimated on the time series using ordinary least square fit.The trend uncertainty is provided in a 90% confidence interval. It is calculated as the weighted mean uncertainties in the region from Prandi et al., 2021. This estimate only considers errors related to the altimeter observation system (i.e., orbit determination errors, geophysical correction errors and inter-mission bias correction errors). The presence of the interannual signal can strongly influence the trend estimation depending on the period considered (Wang et al., 2021; Cazenave et al., 2014). The uncertainty linked to this effect is not considered.\n\n**CONTEXT**\n\nChange in mean sea level is an essential indicator of our evolving climate, as it reflects both the thermal expansion of the ocean in response to its warming and the increase in ocean mass due to the melting of ice sheets and glaciers (WCRP Global Sea Level Budget Group, 2018). At regional scale, sea level does not change homogenously. It is influenced by various other processes, with different spatial and temporal scales, such as local ocean dynamic, atmospheric forcing, Earth gravity and vertical land motion changes (IPCC WGI, 2021). The adverse effects of floods, storms and tropical cyclones, and the resulting losses and damage, have increased as a result of rising sea levels, increasing people and infrastructure vulnerability and food security risks, particularly in low-lying areas and island states (IPCC, 2022a). Adaptation and mitigation measures such as the restoration of mangroves and coastal wetlands, reduce the risks from sea level rise (IPCC, 2022b). \nIn this region, the time series shows decadal variations. As observed over the global ocean, the main actors of the long-term sea level trend are associated with anthropogenic global/regional warming (IPCC WGII, 2021). Decadal variability is mainly linked to the Strengthening or weakening of the Atlantic Meridional Overturning Circulation (AMOC) (e.g. Chafik et al., 2019). The latest is driven by the North Atlantic Oscillation (NAO) for decadal (20-30y) timescales (e.g. Delworth and Zeng, 2016). Along the European coast, the NAO also influences the along-slope winds dynamic which in return significantly contributes to the local sea level variability observed (Chafik et al., 2019). Hermans et al., 2020 also reported the dominant influence of wind on interannual sea level variability in a large part of this area. They also underscored the influence of the inverse barometer forcing in some coastal regions.\n\n**KEY FINDINGS**\n\nOver the [1993/01/01, 2023/07/06] period, the area-averaged sea level in the NWS area rises at a rate of 3.2 \uf0b1 0.8 mm/year with an acceleration of 0.09 \uf0b1\uf0200.06 mm/year2. This trend estimation is based on the altimeter measurements corrected from the global Topex-A instrumental drift at the beginning of the time series (Legeais et al., 2020) and regional GIA correction (Spada et Melini, 2019) to consider the ongoing movement of land. \n\n**Figure caption**\n\nRegional mean sea level daily evolution (in cm) over the [1993/01/01, 2022/08/04] period, from the satellite altimeter observations estimated in the North-West Shelf region, derived from the average of the gridded sea level maps weighted by the cosine of the latitude. The ocean monitoring indicator is derived from the DUACS delayed-time (reprocessed version DT-2021, \u201cmy\u201d (multi-year) dataset used when available, \u201cmyint\u201d (multi-year interim) used after) altimeter sea level gridded products distributed by the Copernicus Climate Change Service (C3S), and by the Copernicus Marine Service (SEALEVEL_GLO_PHY_CLIMATE_L4_MY_008_057). The annual and semi-annual periodic signals are removed, the timeseries is low-pass filtered (175 days cut-off), and the curve is corrected for the GIA using the ICE5G-VM2 GIA model (Peltier, 2004).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00271\n\n**References:**\n\n* Cazenave, A., Dieng, H.-B., Meyssignac, B., von Schuckmann, K., Decharme, B., and Berthier, E.: The rate of sea-level rise, Nat. Clim. Change, 4, 358\u2013361, https://doi.org/10.1038/nclimate2159, 2014.\n* Chafik, L., Nilsen, J. E. \u00d8., Dangendorf, S., Reverdin, G., and Frederikse, T.: North Atlantic Ocean Circulation and Decadal Sea Level Change During the Altimetry Era, Sci. Rep., 9, 1041, https://doi.org/10.1038/s41598-018-37603-6, 2019.\n* Delworth, T. L. and Zeng, F.: The Impact of the North Atlantic Oscillation on Climate through Its Influence on the Atlantic Meridional Overturning Circulation, J. Clim., 29, 941\u2013962, https://doi.org/10.1175/JCLI-D-15-0396.1, 2016.\n* Hermans, T. H. J., Le Bars, D., Katsman, C. A., Camargo, C. M. L., Gerkema, T., Calafat, F. M., Tinker, J., and Slangen, A. B. A.: Drivers of Interannual Sea Level Variability on the Northwestern European Shelf, J. Geophys. Res. Oceans, 125, e2020JC016325, https://doi.org/10.1029/2020JC016325, 2020.\n* IPCC: AR6 Synthesis Report: Climate Change 2022, 2022a.\n* IPCC: Summary for Policymakers [H.-O. P\u00f6rtner, D.C. Roberts, E.S. Poloczanska, K. Mintenbeck, M. Tignor, A. Alegr\u00eda, M. Craig, S. Langsdorf, S. L\u00f6schke, V. M\u00f6ller, A. Okem (eds.)]. In: Climate Change 2022: Impacts, Adaptation, and Vulnerability. Contribution of Working Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [H.-O. P\u00f6rtner, D.C. Roberts, M. Tignor, E.S. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Craig, S. Langsdorf, S. L\u00f6schke, V. M\u00f6ller, A. Okem, B. Rama (eds.)], 2022b.\n* IPCC: Summary for Policymakers. In: Climate Change 2022: Mitigation of Climate Change. Contribution of Working Group III to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [P.R. Shukla, J. Skea, R. Slade, A. Al Khourdajie, R. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, M. Belkacemi, A. Hasija, G. Lisboa, S. Luz, J. Malley, (eds.)], , https://doi.org/10.1017/9781009157926.001, 2022c.\n* IPCC WGI: Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change, 2021.\n* IPCC WGII: Climate Change 2021: Impacts, Adaptation and Vulnerability; Summary for Policemakers. Contribution of Working Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change, 2021.\n* Legeais, J. F., Llowel, W., Melet, A., and Meyssignac, B.: Evidence of the TOPEX-A altimeter instrumental anomaly and acceleration of the global mean sea level, Copernic. Mar. Serv. Ocean State Rep. Issue 4, 13, s77\u2013s82, https://doi.org/10.1080/1755876X.2021.1946240, 2020.\n* Peltier, W. R.: GLOBAL GLACIAL ISOSTASY AND THE SURFACE OF THE ICE-AGE EARTH: The ICE-5G (VM2) Model and GRACE, Annu. Rev. Earth Planet. Sci., 32, 111\u2013149, https://doi.org/10.1146/annurev.earth.32.082503.144359, 2004.\n* Prandi, P., Meyssignac, B., Ablain, M., Spada, G., Ribes, A., and Benveniste, J.: Local sea level trends, accelerations and uncertainties over 1993\u20132019, Sci. Data, 8, 1, https://doi.org/10.1038/s41597-020-00786-7, 2021.\n* Wang, J., Church, J. A., Zhang, X., and Chen, X.: Reconciling global mean and regional sea level change in projections and observations, Nat. Commun., 12, 990, https://doi.org/10.1038/s41467-021-21265-6, 2021.\n* WCRP Global Sea Level Budget Group: Global sea-level budget 1993\u2013present, Earth Syst. Sci. Data, 10, 1551\u20131590, https://doi.org/10.5194/essd-10-1551-2018, 2018.\n", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00271"}, "OMI_CLIMATE_SL_MEDSEA_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-sea,coastal-marine-environment,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-climate-sl-medsea-area-averaged-anomalies,satellite-observation,sea-surface-height-above-sea-level,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea Mean Sea Level time series and trend from Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe ocean monitoring indicator of regional mean sea level is derived from the DUACS delayed-time (DT-2021 version, \u201cmy\u201d (multi-year) dataset used when available, \u201cmyint\u201d (multi-year interim) used after) sea level anomaly maps from satellite altimetry based on a stable number of altimeters (two) in the satellite constellation. These products are distributed by the Copernicus Climate Change Service and the Copernicus Marine Service (SEALEVEL_GLO_PHY_CLIMATE_L4_MY_008_057).\nThe time series of area averaged anomalies correspond to the area average of the maps in the Mediterranean Sea weighted by the cosine of the latitude (to consider the changing area in each grid with latitude) and by the proportion of ocean in each grid (to consider the coastal areas). The time series are corrected from global TOPEX-A instrumental drift (WCRP Global Sea Level Budget Group, 2018) and regional mean GIA correction (weighted GIA mean of a 27 ensemble model following Spada et Melini, 2019). The time series are adjusted for seasonal annual and semi-annual signals and low-pass filtered at 6 months. Then, the trends/accelerations are estimated on the time series using ordinary least square fit.The trend uncertainty is provided in a 90% confidence interval. It is calculated as the weighted mean uncertainties in the region from Prandi et al., 2021. This estimate only considers errors related to the altimeter observation system (i.e., orbit determination errors, geophysical correction errors and inter-mission bias correction errors). The presence of the interannual signal can strongly influence the trend estimation considering to the period considered (Wang et al., 2021; Cazenave et al., 2014). The uncertainty linked to this effect is not considered.\n\n**CONTEXT**\n\nChange in mean sea level is an essential indicator of our evolving climate, as it reflects both the thermal expansion of the ocean in response to its warming and the increase in ocean mass due to the melting of ice sheets and glaciers (WCRP Global Sea Level Budget Group, 2018). At regional scale, sea level does not change homogenously. It is influenced by various other processes, with different spatial and temporal scales, such as local ocean dynamic, atmospheric forcing, Earth gravity and vertical land motion changes (IPCC WGI, 2021). The adverse effects of floods, storms and tropical cyclones, and the resulting losses and damage, have increased as a result of rising sea levels, increasing people and infrastructure vulnerability and food security risks, particularly in low-lying areas and island states (IPCC, 2022a). Adaptation and mitigation measures such as the restoration of mangroves and coastal wetlands, reduce the risks from sea level rise (IPCC, 2022b). \nBeside a clear long-term trend, the regional mean sea level variation in the Mediterranean Sea shows an important interannual variability, with a high trend observed between 1993 and 1999 (nearly 8.4 mm/y) and relatively lower values afterward (nearly 2.4 mm/y between 2000 and 2022). This variability is associated with a variation of the different forcing. Steric effect has been the most important forcing before 1999 (Fenoglio-Marc, 2002; Vigo et al., 2005). Important change of the deep-water formation site also occurred in the 90\u2019s. Their influence contributed to change the temperature and salinity property of the intermediate and deep water masses. These changes in the water masses and distribution is also associated with sea surface circulation changes, as the one observed in the Ionian Sea in 1997-1998 (e.g. Ga\u010di\u0107 et al., 2011), under the influence of the North Atlantic Oscillation (NAO) and negative Atlantic Multidecadal Oscillation (AMO) phases (Incarbona et al., 2016). These circulation changes may also impact the sea level trend in the basin (Vigo et al., 2005). In 2010-2011, high regional mean sea level has been related to enhanced water mass exchange at Gibraltar, under the influence of wind forcing during the negative phase of NAO (Landerer and Volkov, 2013).The relatively high contribution of both sterodynamic (due to steric and circulation changes) and gravitational, rotational, and deformation (due to mass and water storage changes) after 2000 compared to the [1960, 1989] period is also underlined by (Calafat et al., 2022).\n\n**KEY FINDINGS**\n\nOver the [1993/01/01, 2023/07/06] period, the area-averaged sea level in the Mediterranean Sea rises at a rate of 2.5 \u00b1 0.8 mm/year with an acceleration of 0.01 \u00b1 0.06 mm/year2. This trend estimation is based on the altimeter measurements corrected from the global Topex-A instrumental drift at the beginning of the time series (Legeais et al., 2020) and regional GIA correction (Spada et Melini, 2019) to consider the ongoing movement of land. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00264\n\n**References:**\n\n* Cazenave, A., Dieng, H.-B., Meyssignac, B., von Schuckmann, K., Decharme, B., and Berthier, E.: The rate of sea-level rise, Nat. Clim. Change, 4, 358\u2013361, https://doi.org/10.1038/nclimate2159, 2014.\n* Fenoglio-Marc, L.: Long-term sea level change in the Mediterranean Sea from multi-satellite altimetry and tide gauges, Phys. Chem. Earth Parts ABC, 27, 1419\u20131431, https://doi.org/10.1016/S1474-7065(02)00084-0, 2002.\n* Cazenave, A., Dieng, H.-B., Meyssignac, B., von Schuckmann, K., Decharme, B., and Berthier, E.: The rate of sea-level rise, Nat. Clim. Change, 4, 358\u2013361, https://doi.org/10.1038/nclimate2159, 2014.\n* Fenoglio-Marc, L.: Long-term sea level change in the Mediterranean Sea from multi-satellite altimetry and tide gauges, Phys. Chem. Earth Parts ABC, 27, 1419\u20131431, https://doi.org/10.1016/S1474-7065(02)00084-0, 2002.\n* Ga\u010di\u0107, M., Civitarese, G., Eusebi Borzelli, G. L., Kova\u010devi\u0107, V., Poulain, P.-M., Theocharis, A., Menna, M., Catucci, A., and Zarokanellos, N.: On the relationship between the decadal oscillations of the northern Ionian Sea and the salinity distributions in the eastern Mediterranean, J. Geophys. Res. Oceans, 116, https://doi.org/10.1029/2011JC007280, 2011.\n* Incarbona, A., Martrat, B., Mortyn, P. G., Sprovieri, M., Ziveri, P., Gogou, A., Jord\u00e0, G., Xoplaki, E., Luterbacher, J., Langone, L., Marino, G., Rodr\u00edguez-Sanz, L., Triantaphyllou, M., Di Stefano, E., Grimalt, J. O., Tranchida, G., Sprovieri, R., and Mazzola, S.: Mediterranean circulation perturbations over the last five centuries: Relevance to past Eastern Mediterranean Transient-type events, Sci. Rep., 6, 29623, https://doi.org/10.1038/srep29623, 2016.\n* IPCC: Summary for Policymakers [H.-O. P\u00f6rtner, D.C. Roberts, E.S. Poloczanska, K. Mintenbeck, M. Tignor, A. Alegr\u00eda, M. Craig, S. Langsdorf, S. L\u00f6schke, V. M\u00f6ller, A. Okem (eds.)]. In: Climate Change 2022: Impacts, Adaptation, and Vulnerability. Contribution of Working Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [H.-O. P\u00f6rtner, D.C. Roberts, M. Tignor, E.S. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Craig, S. Langsdorf, S. L\u00f6schke, V. M\u00f6ller, A. Okem, B. Rama (eds.)], 2022a.\n* IPCC: Summary for Policymakers. In: Climate Change 2022: Mitigation of Climate Change. Contribution of Working Group III to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [P.R. Shukla, J. Skea, R. Slade, A. Al Khourdajie, R. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, M. Belkacemi, A. Hasija, G. Lisboa, S. Luz, J. Malley, (eds.)], , https://doi.org/10.1017/9781009157926.001, 2022b.\n* IPCC WGI: Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change, 2021.\n* Landerer, F. W. and Volkov, D. L.: The anatomy of recent large sea level fluctuations in the Mediterranean Sea, Geophys. Res. Lett., 40, 553\u2013557, https://doi.org/10.1002/grl.50140, 2013.\n* Legeais, J. F., Llowel, W., Melet, A., and Meyssignac, B.: Evidence of the TOPEX-A altimeter instrumental anomaly and acceleration of the global mean sea level, Copernic. Mar. Serv. Ocean State Rep. Issue 4, 13, s77\u2013s82, https://doi.org/10.1080/1755876X.2021.1946240, 2020.\n* Peltier, W. R.: GLOBAL GLACIAL ISOSTASY AND THE SURFACE OF THE ICE-AGE EARTH: The ICE-5G (VM2) Model and GRACE, Annu. Rev. Earth Planet. Sci., 32, 111\u2013149, https://doi.org/10.1146/annurev.earth.32.082503.144359, 2004.\n* Prandi, P., Meyssignac, B., Ablain, M., Spada, G., Ribes, A., and Benveniste, J.: Local sea level trends, accelerations and uncertainties over 1993\u20132019, Sci. Data, 8, 1, https://doi.org/10.1038/s41597-020-00786-7, 2021.\n* Vigo, I., Garcia, D., and Chao, B. F.: Change of sea level trend in the Mediterranean and Black seas, J. Mar. Res., 63, 1085\u20131100, https://doi.org/10.1357/002224005775247607, 2005.\n* Wang, J., Church, J. A., Zhang, X., and Chen, X.: Reconciling global mean and regional sea level change in projections and observations, Nat. Commun., 12, 990, https://doi.org/10.1038/s41467-021-21265-6, 2021.\n* WCRP Global Sea Level Budget Group: Global sea-level budget 1993\u2013present, Earth Syst. Sci. Data, 10, 1551\u20131590, https://doi.org/10.5194/essd-10-1551-2018, 2018.\n* Calafat, F. M., Frederikse, T., and Horsburgh, K.: The Sources of Sea-Level Changes in the Mediterranean Sea Since 1960, J. Geophys. Res. Oceans, 127, e2022JC019061, https://doi.org/10.1029/2022JC019061, 2022.\n", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00264"}, "OMI_CLIMATE_SST_IBI_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,iberian-biscay-irish-seas,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-climate-sst-ibi-area-averaged-anomalies,satellite-observation,sea-surface-foundation-temperature,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Iberia Biscay Ireland Sea Surface Temperature time series and trend from Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe omi_climate_sst_ibi_area_averaged_anomalies product for 2022 includes Sea Surface Temperature (SST) anomalies, given as monthly mean time series starting on 1993 and averaged over the Iberia-Biscay-Irish Seas. The IBI SST OMI is built from the CMEMS Reprocessed European North West Shelf Iberai-Biscay-Irish Seas (SST_MED_SST_L4_REP_OBSERVATIONS_010_026, see e.g. the OMI QUID, http://marine.copernicus.eu/documents/QUID/CMEMS-OMI-QUID-CLIMATE-SST-IBI_v2.1.pdf), which provided the SSTs used to compute the evolution of SST anomalies over the European North West Shelf Seas. This reprocessed product consists of daily (nighttime) interpolated 0.05\u00b0 grid resolution SST maps over the European North West Shelf Iberia-Biscay-Irish Seas built from the ESA Climate Change Initiative (CCI) (Merchant et al., 2019), Copernicus Climate Change Service (C3S) initiatives and Eumetsat data. Anomalies are computed against the 1993-2014 reference period.\n\n**CONTEXT**\n\nSea surface temperature (SST) is a key climate variable since it deeply contributes in regulating climate and its variability (Deser et al., 2010). SST is then essential to monitor and characterise the state of the global climate system (GCOS 2010). Long-term SST variability, from interannual to (multi-)decadal timescales, provides insight into the slow variations/changes in SST, i.e. the temperature trend (e.g., Pezzulli et al., 2005). In addition, on shorter timescales, SST anomalies become an essential indicator for extreme events, as e.g. marine heatwaves (Hobday et al., 2018).\n\n**CMEMS KEY FINDINGS**\n\nThe overall trend in the SST anomalies in this region is 0.013 \u00b10.001 \u00b0C/year over the period 1993-2022. \n\n**Figure caption**\n\nTime series of monthly mean and 12-month filtered sea surface temperature anomalies in the Iberia-Biscay-Irish Seas during the period 1993-2022. Anomalies are relative to the climatological period 1993-2014 and built from the CMEMS SST_ATL_SST_L4_REP_OBSERVATIONS_010_026 satellite product (see e.g. the OMI QUID, http://marine.copernicus.eu/documents/QUID/CMEMS-OMI-QUID-IBI-SST.pdf). The sea surface temperature trend with its 95% confidence interval (shown in the box) is estimated by using the X-11 seasonal adjustment procedure (e.g. Pezzulli et al., 2005) and Sen\u2019s method (Sen 1968).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00256\n\n**References:**\n\n* Deser, C., Alexander, M. A., Xie, S.-P., Phillips, A. S., 2010. Sea Surface Temperature Variability: Patterns and Mechanisms. Annual Review of Marine Science 2010 2:1, 115-143. https://doi.org/10.1146/annurev-marine-120408-151453\n* GCOS. Global Climate Observing System. 2010. Update of the Implementation Plan for the Global Observing System for Climate in Support of the UNFCCC (GCO-138).\n* Hobday, A. J., Oliver, E. C., Gupta, A. S., Benthuysen, J. A., Burrows, M. T., Donat, M. G., ... & Smale, D. A. (2018). Categorizing and naming marine heatwaves. Oceanography, 31(2), 162-173.\n* Merchant, C. J., Embury, O., Bulgin, C. E., Block, T., Corlett, G. K., Fiedler, E., ... & Eastwood, S. (2019). Satellite-based time-series of sea-surface temperature since 1981 for climate applications. Scientific data, 6(1), 1-18.\n* Pezzulli, S., Stephenson, D. B., Hannachi, A., 2005. The Variability of Seasonality. J. Climate. 18:71\u201388. doi:10.1175/JCLI-3256.1.\n* Sen, P. K., 1968. Estimates of the regression coefficient based on Kendall\u2019s tau. J Am Statist Assoc. 63:1379\u20131389.\n", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00256"}, "SST_GLO_PHY_L3S_MY_010_039": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "coastal-marine-environment,global-ocean,level-3,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-surface-foundation-temperature,sea-surface-temperature,sst-glo-phy-l3s-my-010-039,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global High Resolution ODYSSEA Sea Surface Temperature Multi-sensor L3 Observations", "missionStartDate": "1982-01-01T00:00:00Z", "abstract": "For the Global Ocean- Sea Surface Temperature L3 Observations . This product provides daily foundation sea surface temperature from multiple satellite sources. The data are intercalibrated. This product consists in a fusion of sea surface temperature observations from multiple satellite sensors, daily, over a 0.05\u00b0 resolution grid. It includes observations by polar orbiting from the ESA CCI / C3S archive . The L3S SST data are produced selecting only the highest quality input data from input L2P/L3P images within a strict temporal window (local nightime), to avoid diurnal cycle and cloud contamination. The observations of each sensor are intercalibrated prior to merging using a bias correction based on a multi-sensor median reference correcting the large-scale cross-sensor biases. \n\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00329", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00329"}, "OMI_EXTREME_SST_MEDSEA_sst_mean_and_anomaly_obs": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,in-situ-observation,marine-resources,marine-safety,mediterranean-sea,multi-year,oceanographic-geographical-features,omi-extreme-sst-medsea-sst-mean-and-anomaly-obs,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea Surface Temperature extreme from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe OMI_EXTREME_SST_MEDSEA_sst_mean_and_anomaly_obs indicator is based on the computation of the 99th and the 1st percentiles from in situ data (observations). It is computed for the variable sea surface temperature measured by in situ buoys at depths between 0 and 5 meters. The use of percentiles instead of annual maximum and minimum values, makes this extremes study less affected by individual data measurement errors. The percentiles are temporally averaged, and the spatial evolution is displayed, jointly with the anomaly in the target year. This study of extreme variability was first applied to sea level variable (P\u00e9rez G\u00f3mez et al 2016) and then extended to other essential variables, sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018). \n\n**CONTEXT**\n\nSea surface temperature (SST) is one of the essential ocean variables affected by climate change (mean SST trends, SST spatial and interannual variability, and extreme events). In Europe, several studies show warming trends in mean SST for the last years. An exception seems to be the North Atlantic, where, in contrast, anomalous cold conditions have been observed since 2014 (Mulet et al., 2018; Dubois et al. 2018). Extremes may have a stronger direct influence in population dynamics and biodiversity. According to Alexander et al. 2018 the observed warming trend will continue during the 21st Century and this can result in exceptionally large warm extremes. Monitoring the evolution of sea surface temperature extremes is, therefore, crucial.\nThe Mediterranean Sea has showed a constant increase of the SST in the last three decades across the whole basin. Deep analyses of the variations have displayed a non-uniform rate in space, being the warming trend more evident in the eastern Mediterranean Sea with respect to the western side. This variation rate is also changing in time over the three decades with differences between the seasons (e.g. Pastor et al. 2018; Pisano et al. 2020), being higher in Spring and Summer, which would affect the extreme values.\n\n**CMEMS KEY FINDINGS **\n\nThe mean 99th percentiles showed in the area present values from 26\u00ba in the Alboran sea, around 27\u00baC in the West of Iberian Peninsula to 28\u00baC in the Coast of Slovenia. The standard deviation ranges from 0.4 to 0.9\u00baC in the area.\nResults for this year show a slight positive anomaly in most of stations in the Spanish Coast (+0.4/+0.8\u00baC), negative, but close to zero, in the Coast of Slovenia (-0.13\u00baC) and only in one station in the North West of Spain (Barcelona) the anomaly is positive, slightly above the standard deviation (+1.4\u00baC).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00267\n\n**References:**\n\n* Alexander MA, Scott JD, Friedland KD, Mills KE, Nye JA, Pershing AJ, Thomas AC. 2018. Projected sea surface temperatures over the 21st century: Changes in the mean, variability and extremes for large marine ecosystem regions of Northern Oceans. Elem Sci Anth, 6(1), p.9. DOI: http://doi.org/10.1525/elementa.191.\n* Dubois C, von Schuckmann K, Josey S, Ceschin A. 2018. Changes in the North Atlantic. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, vol 11, sup1, s66\u2013s70. DOI: 10.1080/1755876X.2018.1489208\n* Mulet S, Nardelli BB, Good S, Pisano A, Greiner E, Monier M, Autret E, Axell L, Boberg F, Ciliberti S, Dr\u00e9villon M, Droghei R, Embury O, Gourrion J, H\u00f8yer J, Juza M, Kennedy J, Lemieux-Dudon B, Peneva E, Reid R, Simoncelli S, Storto A, Tinker J, von Schuckmann K, Wakelin SL. 2018. Ocean temperature and salinity. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, vol 11, sup1, s5\u2013s13. DOI: 10.1080/1755876X.2018.1489208\n* Pastor F, Valiente JA, Palau JL. 2018. Sea Surface Temperature in the Mediterranean: Trends and Spatial Patterns (1982\u20132016). Pure Appl. Geophys, 175: 4017. https://doi.org/10.1007/s00024-017-1739-z.\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B, De Alfonso M, Zacharioudaki A, P\u00e9rez Gonz\u00e1lez I, \u00c1lvarez Fanjul E, M\u00fcller M, Marcos M, Manzano F, Korres G, Ravdas M, Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208.\n* Pisano A, Marullo S, Artale V, Falcini F, Yang C, Leonelli FE, Santoleri R, Nardelli BB. 2020. New Evidence of Mediterranean Climate Change and Variability from Sea Surface Temperature Observations. Remote Sensing 12(132). DOI: 10.3390/rs12010132.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00267"}, "OMI_CLIMATE_SST_IST_ARCTIC_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "arctic-ocean,coastal-marine-environment,ice-surface-temperature,level-4,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-climate-sst-ist-arctic-trend,satellite-observation,sea-surface-temperature,target-application#seaiceinformation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Sea and Sea Ice Surface Temperature 2D trend from climatology based on reprocessed observations", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe OMI_CLIMATE_sst_ist_ARCTIC_sst_ist_trend product includes the cumulative/net trend in combined sea and ice surface temperature anomalies for the Arctic Ocean from 1993-2022. The cumulative trend is the rate of change (\u00b0C/year) scaled by the number of years (30 years). The SST/IST Level 4 analysis that provides the input to the trend calculations are taken from the reprocessed product SEAICE_ARC_PHY_CLIMATE_L4_MY_011_016 with a recent update to include 2022. The product has a spatial resolution of 0.05 degrees in latitude and longitude.\nSince the SEAICE_ARC_PHY_CLIMATE_L4_MY_011_016 is currently only available until the 30th June 2022, an adjusted version of the SEAICE_ARC_SEAICE_L4_NRT_OBSERVATIONS_011_008 product has been used for the rest of 2022. The adjustment is based on the biases between the NRT and reprocessed product during the second half of 2021 and was made to ensure consistency in the OMIs. \nThe OMI time series runs from Jan 1, 1993 to December 31, 2022 and is constructed by calculating monthly averages from the daily level 4 SST/IST analysis fields of the SEAICE_ARC_PHY_CLIMATE_L4_MY_011_016 product from 1993 to 2022. See the Copernicus Marine Service Ocean State Reports (section 1.1 in Von Schuckmann et al., 2016; section 3 in Von Schuckmann et al., 2018) for more information on the temperature OMI product. The times series of monthly anomalies have been used to calculate the trend in surface temperature (combined SST and IST) using Sen\u2019s method with confidence intervals from the Mann-Kendall test (section 3 in Von Schuckmann et al., 2018).\n\n**CONTEXT**\n\nSST and IST are essential climate variables that act as important input for initializing numerical weather prediction models and fundamental for understanding air-sea interactions and monitoring climate change. Especially in the Arctic, SST/IST feedbacks amplify climate change (AMAP, 2021). In the Arctic Ocean, the surface temperatures play a crucial role for the heat exchange between the ocean and atmosphere, sea ice growth and melt processes (Key et al., 1997) in addition to weather and sea ice forecasts through assimilation into ocean and atmospheric models (Rasmussen et al., 2018). \nThe Arctic Ocean is a region that requires special attention regarding the use of satellite SST and IST records and the assessment of climatic variability due to the presence of both seawater and ice, and the large seasonal and inter-annual fluctuations in the sea ice cover which lead to increased complexity in the SST mapping of the Arctic region. Combining SST and ice surface temperature (IST) is identified as the most appropriate method for determining the surface temperature of the Arctic (Minnett et al., 2020). \nPreviously, climate trends have been estimated individually for SST and IST records (Bulgin et al., 2020; Comiso and Hall, 2014). However, this is problematic in the Arctic region due to the large temporal variability in the sea ice cover including the overlying northward migration of the ice edge on decadal timescales, and thus, the resulting climate trends are not easy to interpret (Comiso, 2003). A combined surface temperature dataset of the ocean, sea ice and the marginal ice zone (MIZ) provides a consistent climate indicator, which is important for studying climate trends in the Arctic region.\n\n**CMEMS KEY FINDINGS**\n\nSST/IST trends were calculated for the Arctic Ocean over the period January 1993 to December 2022. The cumulative trends are upwards of 2\u00b0C for the greatest part of the Arctic Ocean, with the largest trends occur in the north Barents Sea, Kara Sea and the Eurasian part of the Arctic Ocean. Zero to slightly negative trends are found at the North Atlantic part of the Arctic Ocean. The combined sea and sea ice surface temperature trend is 0.122+/-0.008\u00b0C/yr, i.e. an increase by around 3.66\u00b0C between 1982 and 2022. The 2d map of Arctic anomalies reveals regional peak warmings exceeding 10\u00b0C. \n\n**Figure caption**\n\nCumulative trends in combined sea and sea-ice surface temperature anomalies calculated from 1993 to 2022 for the Arctic Ocean (OMI_CLIMATE_sst_ist_ARCTIC_sst_ist_trend). Trend calculations are based on the multi-year Arctic Ocean L4 SST/IST satellite product SEAICE_ARC_PHY_CLIMATE_L4_MY_011_016.\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00324\n\n**References:**\n\n* AMAP, 2021. Arctic Climate Change Update 2021: Key Trends and Impacts. Summary for Policy-makers. Arctic Monitoring and Assessment Programme (AMAP), Troms\u00f8, Norway.\n* Bulgin, C.E., Merchant, C.J., Ferreira, D., 2020. Tendencies, variability and persistence of sea surface temperature anomalies. Sci Rep 10, 7986. https://doi.org/10.1038/s41598-020-64785-9\n* Comiso, J.C., 2003. Warming Trends in the Arctic from Clear Sky Satellite Observations. Journal of Climate. https://doi.org/10.1175/1520-0442(2003)016<3498:WTITAF>2.0.CO;2\n* Comiso, J.C., Hall, D.K., 2014. Climate trends in the Arctic as observed from space: Climate trends in the Arctic as observed from space. WIREs Clim Change 5, 389\u2013409. https://doi.org/10.1002/wcc.277\n* Kendall MG. 1975. Multivariate analysis. London: CharlesGriffin & Co; p. 210, 4\n* Key, J.R., Collins, J.B., Fowler, C., Stone, R.S., 1997. High-latitude surface temperature estimates from thermal satellite data. Remote Sensing of Environment 61, 302\u2013309. https://doi.org/10.1016/S0034-4257(97)89497-7\n* Minnett, P.J., Kilpatrick, K.A., Podest\u00e1, G.P., Evans, R.H., Szczodrak, M.D., Izaguirre, M.A., Williams, E.J., Walsh, S., Reynolds, R.M., Bailey, S.W., Armstrong, E.M., Vazquez-Cuervo, J., 2020. Skin Sea-Surface Temperature from VIIRS on Suomi-NPP\u2014NASA Continuity Retrievals. Remote Sensing 12, 3369. https://doi.org/10.3390/rs12203369\n* Rasmussen, T.A.S., H\u00f8yer, J.L., Ghent, D., Bulgin, C.E., Dybkjaer, G., Ribergaard, M.H., Nielsen-Englyst, P., Madsen, K.S., 2018. Impact of Assimilation of Sea-Ice Surface Temperatures on a Coupled Ocean and Sea-Ice Model. Journal of Geophysical Research: Oceans 123, 2440\u20132460. https://doi.org/10.1002/2017JC013481\n* Sen PK. 1968. Estimates of the regression coefficient based on Kendall\u2019s tau. J AmStatist Assoc. 63:1379\u20131389\n* von Schuckmann et al., 2016: The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography, Volume 9, 2016 - Issue sup2: The Copernicus Marine Environment Monitoring Service Ocean, http://dx.doi.org/10.1080/1755876X.2016.1273446.\n* von Schuckmann, K., Le Traon, P.-Y., Smith, N., Pascual, A., Brasseur, P., Fennel, K., Djavidnia, S., Aaboe, S., Fanjul, E. A., Autret, E., Axell, L., Aznar, R., Benincasa, M., Bentamy, A., Boberg, F., Bourdall\u00e9-Badie, R., Nardelli, B. B., Brando, V. E., Bricaud, C., \u2026 Zuo, H. (2018). Copernicus Marine Service Ocean State Report. Journal of Operational Oceanography, 11(sup1), S1\u2013S142. https://doi.org/10.1080/1755876X.2018.1489208\n", "providers": [{"name": "MET Norway", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00324"}, "OMI_CLIMATE_SL_GLOBAL_regional_trends": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-climate-sl-global-regional-trends,satellite-observation,tendency-of-sea-surface-height-above-sea-level,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Mean Sea Level trend map from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe sea level ocean monitoring indicator is derived from the DUACS delayed-time (DT-2021 version, \u201cmy\u201d (multi-year) dataset used when available, \u201cmyint\u201d (multi-year interim) used after) sea level anomaly maps from satellite altimetry based on a stable number of altimeters (two) in the satellite constellation. The product is distributed by the Copernicus Climate Change Service and the Copernicus Marine Service (SEALEVEL_GLO_PHY_CLIMATE_L4_MY_008_057). At each grid point, the trends/accelerations are estimated on the time series corrected from global TOPEX-A instrumental drift (WCRP Global Sea Level Budget Group, 2018) and regional GIA correction (GIA map of a 27 ensemble model following Spada et Melini, 2019) and adjusted from annual and semi-annual signals. Regional uncertainties on the trends estimates can be found in Prandi et al., 2021.\n\n**CONTEXT**\n\nChange in mean sea level is an essential indicator of our evolving climate, as it reflects both the thermal expansion of the ocean in response to its warming and the increase in ocean mass due to the melting of ice sheets and glaciers(WCRP Global Sea Level Budget Group, 2018). According to the IPCC 6th assessment report (IPCC WGI, 2021), global mean sea level (GMSL) increased by 0.20 [0.15 to 0.25] m over the period 1901 to 2018 with a rate of rise that has accelerated since the 1960s to 3.7 [3.2 to 4.2] mm/yr for the period 2006\u20132018. Human activity was very likely the main driver of observed GMSL rise since 1970 (IPCC WGII, 2021). The weight of the different contributions evolves with time and in the recent decades the mass change has increased, contributing to the on-going acceleration of the GMSL trend (IPCC, 2022a; Legeais et al., 2020; Horwath et al., 2022). At regional scale, sea level does not change homogenously, and regional sea level change is also influenced by various other processes, with different spatial and temporal scales, such as local ocean dynamic, atmospheric forcing, Earth gravity and vertical land motion changes (IPCC WGI, 2021). The adverse effects of floods, storms and tropical cyclones, and the resulting losses and damage, have increased as a result of rising sea levels, increasing people and infrastructure vulnerability and food security risks, particularly in low-lying areas and island states (IPCC, 2019, 2022b). Adaptation and mitigation measures such as the restoration of mangroves and coastal wetlands, reduce the risks from sea level rise (IPCC, 2022c). \n\n**KEY FINDINGS**\n\nThe altimeter sea level trends over the [1993/01/01, 2023/07/06] period exhibit large-scale variations with trends up to +10 mm/yr in regions such as the western tropical Pacific Ocean. In this area, trends are mainly of thermosteric origin (Legeais et al., 2018; Meyssignac et al., 2017) in response to increased easterly winds during the last two decades associated with the decreasing Interdecadal Pacific Oscillation (IPO)/Pacific Decadal Oscillation (e.g., McGregor et al., 2012; Merrifield et al., 2012; Palanisamy et al., 2015; Rietbroek et al., 2016).\nPrandi et al. (2021) have estimated a regional altimeter sea level error budget from which they determine a regional error variance-covariance matrix and they provide uncertainties of the regional sea level trends. Over 1993-2019, the averaged local sea level trend uncertainty is around 0.83 mm/yr with local values ranging from 0.78 to 1.22 mm/yr. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00238\n\n**References:**\n\n* Cazenave, A., Dieng, H.-B., Meyssignac, B., von Schuckmann, K., Decharme, B., and Berthier, E.: The rate of sea-level rise, Nature Clim Change, 4, 358\u2013361, https://doi.org/10.1038/nclimate2159, 2014.\n* Horwath, M., Gutknecht, B. D., Cazenave, A., Palanisamy, H. K., Marti, F., Marzeion, B., Paul, F., Le Bris, R., Hogg, A. E., Otosaka, I., Shepherd, A., D\u00f6ll, P., C\u00e1ceres, D., M\u00fcller Schmied, H., Johannessen, J. A., Nilsen, J. E. \u00d8., Raj, R. P., Forsberg, R., Sandberg S\u00f8rensen, L., Barletta, V. R., Simonsen, S. B., Knudsen, P., Andersen, O. B., Ranndal, H., Rose, S. K., Merchant, C. J., Macintosh, C. R., von Schuckmann, K., Novotny, K., Groh, A., Restano, M., and Benveniste, J.: Global sea-level budget and ocean-mass budget, with a focus on advanced data products and uncertainty characterisation, Earth Syst. Sci. Data, 14, 411\u2013447, https://doi.org/10.5194/essd-14-411-2022, 2022.\n* IPCC: Summary for Policymakers. In: IPCC Special Report on the Ocean and Cryosphere in a Changing Climate [H.-O. P\u00f6rtner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Nicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. In press., 2019.\n* IPCC: AR6 Synthesis Report: Climate Change 2022, 2022a.\n* IPCC: Summary for Policymakers [H.-O. P\u00f6rtner, D.C. Roberts, E.S. Poloczanska, K. Mintenbeck, M. Tignor, A. Alegr\u00eda, M. Craig, S. Langsdorf, S. L\u00f6schke, V. M\u00f6ller, A. Okem (eds.)]. In: Climate Change 2022: Impacts, Adaptation, and Vulnerability. Contribution of Working Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [H.-O. P\u00f6rtner, D.C. Roberts, M. Tignor, E.S. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Craig, S. Langsdorf, S. L\u00f6schke, V. M\u00f6ller, A. Okem, B. Rama (eds.)], 2022b.\n* IPCC: Summary for Policymakers. In: Climate Change 2022: Mitigation of Climate Change. Contribution of Working Group III to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [P.R. Shukla, J. Skea, R. Slade, A. Al Khourdajie, R. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, M. Belkacemi, A. Hasija, G. Lisboa, S. Luz, J. Malley, (eds.)], , https://doi.org/10.1017/9781009157926.001, 2022c.\n* IPCC WGII: Climate Change 2021: Impacts, Adaptation and Vulnerability; Summary for Policemakers. Contribution of Working Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change, 2021.\n* Legeais, J. F., von Schuckmann, K., Melet, A., Storto, A., and Meyssignac, B.: Sea Level, Journal of Operational Oceanography, 11, s13\u2013s16, https://doi.org/10.1080/1755876X.2018.1489208, 2018.\n* Legeais, J. F., Llowel, W., Melet, A., and Meyssignac, B.: Evidence of the TOPEX-A altimeter instrumental anomaly and acceleration of the global mean sea level, Journal of Operational Oceanography, 13, s77\u2013s82, https://doi.org/10.1080/1755876X.2021.1946240, 2020.\n* McGregor, S., Gupta, A. S., and England, M. H.: Constraining Wind Stress Products with Sea Surface Height Observations and Implications for Pacific Ocean Sea Level Trend Attribution, 25, 8164\u20138176, https://doi.org/10.1175/JCLI-D-12-00105.1, 2012.\n* Merrifield, M. A., Thompson, P. R., and Lander, M.: Multidecadal sea level anomalies and trends in the western tropical Pacific, 39, https://doi.org/10.1029/2012GL052032, 2012.\n* Meyssignac, B., Piecuch, C. G., Merchant, C. J., Racault, M.-F., Palanisamy, H., MacIntosh, C., Sathyendranath, S., and Brewin, R.: Causes of the Regional Variability in Observed Sea Level, Sea Surface Temperature and Ocean Colour Over the Period 1993\u20132011, in: Integrative Study of the Mean Sea Level and Its Components, edited by: Cazenave, A., Champollion, N., Paul, F., and Benveniste, J., Springer International Publishing, Cham, 191\u2013219, https://doi.org/10.1007/978-3-319-56490-6_9, 2017.\n* Palanisamy, H., Cazenave, A., Delcroix, T., and Meyssignac, B.: Spatial trend patterns in the Pacific Ocean sea level during the altimetry era: the contribution of thermocline depth change and internal climate variability, Ocean Dynamics, 65, 341\u2013356, https://doi.org/10.1007/s10236-014-0805-7, 2015.\n* Prandi, P., Meyssignac, B., Ablain, M., Spada, G., Ribes, A., and Benveniste, J.: Local sea level trends, accelerations and uncertainties over 1993\u20132019, Sci Data, 8, 1, https://doi.org/10.1038/s41597-020-00786-7, 2021.\n* Rietbroek, R., Brunnabend, S.-E., Kusche, J., Schr\u00f6ter, J., and Dahle, C.: Revisiting the contemporary sea-level budget on global and regional scales, 113, 1504\u20131509, https://doi.org/10.1073/pnas.1519132113, 2016.\n* Wang, J., Church, J. A., Zhang, X., and Chen, X.: Reconciling global mean and regional sea level change in projections and observations, Nat Commun, 12, 990, https://doi.org/10.1038/s41467-021-21265-6, 2021.\n* WCRP Global Sea Level Budget Group: Global sea-level budget 1993\u2013present, 10, 1551\u20131590, https://doi.org/10.5194/essd-10-1551-2018, 2018.\n", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00238"}, "OMI_CLIMATE_SST_BAL_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-sea,change-over-time-in-sea-surface-foundation-temperature,coastal-marine-environment,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-climate-sst-bal-trend,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Surface Temperature cumulative trend map from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe OMI_CLIMATE_SST_BAL_trend product includes the cumulative/net trend in sea surface temperature anomalies for the Baltic Sea from 1993-2022. The cumulative trend is the rate of change (\u00b0C/year) scaled by the number of years (30 years). The SST Level 4 analysis products that provide the input to the trend calculations are taken from the reprocessed product SST_BAL_SST_L4_REP_OBSERVATIONS_010_016 with a recent update to include 2022. The product has a spatial resolution of 0.02 in latitude and longitude.\nThe OMI time series runs from Jan 1, 1993 to December 31, 2022 and is constructed by calculating monthly averages from the daily level 4 SST analysis fields of the SST_BAL_SST_L4_REP_OBSERVATIONS_010_016 from 1993 to 2022. See the Copernicus Marine Service Ocean State Reports for more information on the OMI product (section 1.1 in Von Schuckmann et al., 2016; section 3 in Von Schuckmann et al., 2018). The times series of monthly anomalies have been used to calculate the trend in SST using Sen\u2019s method with confidence intervals from the Mann-Kendall test (section 3 in Von Schuckmann et al., 2018).\n\n**CONTEXT**\n\nSST is an essential climate variable that is an important input for initialising numerical weather prediction models and fundamental for understanding air-sea interactions and monitoring climate change. The Baltic Sea is a region that requires special attention regarding the use of satellite SST records and the assessment of climatic variability (H\u00f8yer and She 2007; H\u00f8yer and Karagali 2016). The Baltic Sea is a semi-enclosed basin with natural variability and it is influenced by large-scale atmospheric processes and by the vicinity of land. In addition, the Baltic Sea is one of the largest brackish seas in the world. When analysing regional-scale climate variability, all these effects have to be considered, which requires dedicated regional and validated SST products. Satellite observations have previously been used to analyse the climatic SST signals in the North Sea and Baltic Sea (BACC II Author Team 2015; Lehmann et al. 2011). Recently, H\u00f8yer and Karagali (2016) demonstrated that the Baltic Sea had warmed 1-2oC from 1982 to 2012 considering all months of the year and 3-5oC when only July- September months were considered. This was corroborated in the Ocean State Reports (section 1.1 in Von Schuckmann et al., 2016; section 3 in Von Schuckmann et al., 2018). \n\n**CMEMS KEY FINDINGS**\n\nSST trends were calculated for the Baltic Sea area and the whole region including the North Sea, over the period January 1993 to December 2022. The average trend for the Baltic Sea domain (east of 9\u00b0E longitude) is 0.048\u00b0C/year, which represents an average warming of 1.44\u00b0C for the 1993-2022 period considered here. When the North Sea domain is included, the trend decreases to 0.029\u00b0C/year corresponding to an average warming of 0.87\u00b0C for the 1993-2022 period. Trends are highest for the Baltic Sea region and North Atlantic, especially offshore from Norway, compared to other regions. \n\n**Figure caption**\n\nCumulative trends in sea surface temperature anomalies calculated from 1993 to 2022 for the Baltic Sea (OMI_CLIMATE_SST_BAL_trend). Trend calculations are based on the multi-year Baltic Sea L4 SST satellite product SST_BAL_SST_L4_REP_OBSERVATIONS_010_016.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00206\n\n**References:**\n\n* BACC II Author Team 2015. Second Assessment of Climate Change for the Baltic Sea Basin. Springer Science & Business Media, 501 pp., doi:10.1007/978-3-319-16006-1.\n* H\u00f8yer, JL, Karagali, I. 2016. Sea surface temperature climate data record for the North Sea and Baltic Sea. Journal of Climate, 29(7), 2529-2541.\n* H\u00f8yer JL, She J. 2007. Optimal interpolation of sea surface temperature for the North Sea and Baltic Sea. J. Mar. Syst., 65, 176\u2013189, doi:10.1016/j.jmarsys.2005.03.008.\n* Lehmann A, Getzlaff K, Harla\u00df J. 2011. Detailed assessment of climate variability of the Baltic Sea area for the period 1958\u20132009. Climate Res., 46, 185\u2013196, doi:10.3354/cr00876.\n* Karina von Schuckmann ((Editor)), Pierre-Yves Le Traon ((Editor)), Neville Smith ((Editor)), Ananda Pascual ((Editor)), Pierre Brasseur ((Editor)), Katja Fennel ((Editor)), Samy Djavidnia ((Editor)), Signe Aaboe, Enrique Alvarez Fanjul, Emmanuelle Autret, Lars Axell, Roland Aznar, Mario Benincasa, Abderahim Bentamy, Fredrik Boberg, Romain Bourdall\u00e9-Badie, Bruno Buongiorno Nardelli, Vittorio E. Brando, Cl\u00e9ment Bricaud, Lars-Anders Breivik, Robert J.W. Brewin, Arthur Capet, Adrien Ceschin, Stefania Ciliberti, Gianpiero Cossarini, Marta de Alfonso, Alvaro de Pascual Collar, Jos de Kloe, Julie Deshayes, Charles Desportes, Marie Dr\u00e9villon, Yann Drillet, Riccardo Droghei, Clotilde Dubois, Owen Embury, H\u00e9l\u00e8ne Etienne, Claudia Fratianni, Jes\u00fas Garc\u00eda Lafuente, Marcos Garcia Sotillo, Gilles Garric, Florent Gasparin, Riccardo Gerin, Simon Good, J\u00e9rome Gourrion, Marilaure Gr\u00e9goire, Eric Greiner, St\u00e9phanie Guinehut, Elodie Gutknecht, Fabrice Hernandez, Olga Hernandez, Jacob H\u00f8yer, Laura Jackson, Simon Jandt, Simon Josey, M\u00e9lanie Juza, John Kennedy, Zoi Kokkini, Gerasimos Korres, Mariliis K\u00f5uts, Priidik Lagemaa, Thomas Lavergne, Bernard le Cann, Jean-Fran\u00e7ois Legeais, Benedicte Lemieux-Dudon, Bruno Levier, Vidar Lien, Ilja Maljutenko, Fernando Manzano, Marta Marcos, Veselka Marinova, Simona Masina, Elena Mauri, Michael Mayer, Angelique Melet, Fr\u00e9d\u00e9ric M\u00e9lin, Benoit Meyssignac, Maeva Monier, Malte M\u00fcller, Sandrine Mulet, Cristina Naranjo, Giulio Notarstefano, Aur\u00e9lien Paulmier, Bego\u00f1a P\u00e9rez Gomez, Irene P\u00e9rez Gonzalez, Elisaveta Peneva, Coralie Perruche, K. Andrew Peterson, Nadia Pinardi, Andrea Pisano, Silvia Pardo, Pierre-Marie Poulain, Roshin P. Raj, Urmas Raudsepp, Michaelis Ravdas, Rebecca Reid, Marie-H\u00e9l\u00e8ne Rio, Stefano Salon, Annette Samuelsen, Michela Sammartino, Simone Sammartino, Anne Britt Sand\u00f8, Rosalia Santoleri, Shubha Sathyendranath, Jun She, Simona Simoncelli, Cosimo Solidoro, Ad Stoffelen, Andrea Storto, Tanguy Szerkely, Susanne Tamm, Steffen Tietsche, Jonathan Tinker, Joaqu\u00edn Tintore, Ana Trindade, Daphne van Zanten, Luc Vandenbulcke, Anton Verhoef, Nathalie Verbrugge, Lena Viktorsson, Karina von Schuckmann, Sarah L. Wakelin, Anna Zacharioudaki & Hao Zuo (2018) Copernicus Marine Service Ocean State Report, Journal of Operational Oceanography, 11:sup1, S1-S142, DOI: 10.1080/1755876X.2018.1489208\n* Karina von Schuckmann, Pierre-Yves Le Traon, Enrique Alvarez-Fanjul, Lars Axell, Magdalena Balmaseda, Lars-Anders Breivik, Robert J. W. Brewin, Clement Bricaud, Marie Drevillon, Yann Drillet, Clotilde Dubois, Owen Embury, H\u00e9l\u00e8ne Etienne, Marcos Garc\u00eda Sotillo, Gilles Garric, Florent Gasparin, Elodie Gutknecht, St\u00e9phanie Guinehut, Fabrice Hernandez, Melanie Juza, Bengt Karlson, Gerasimos Korres, Jean-Fran\u00e7ois Legeais, Bruno Levier, Vidar S. Lien, Rosemary Morrow, Giulio Notarstefano, Laurent Parent, \u00c1lvaro Pascual, Bego\u00f1a P\u00e9rez-G\u00f3mez, Coralie Perruche, Nadia Pinardi, Andrea Pisano, Pierre-Marie Poulain, Isabelle M. Pujol, Roshin P. Raj, Urmas Raudsepp, Herv\u00e9 Roquet, Annette Samuelsen, Shubha Sathyendranath, Jun She, Simona Simoncelli, Cosimo Solidoro, Jonathan Tinker, Joaqu\u00edn Tintor\u00e9, Lena Viktorsson, Michael Ablain, Elin Almroth-Rosell, Antonio Bonaduce, Emanuela Clementi, Gianpiero Cossarini, Quentin Dagneaux, Charles Desportes, Stephen Dye, Claudia Fratianni, Simon Good, Eric Greiner, Jerome Gourrion, Mathieu Hamon, Jason Holt, Pat Hyder, John Kennedy, Fernando Manzano-Mu\u00f1oz, Ang\u00e9lique Melet, Benoit Meyssignac, Sandrine Mulet, Bruno Buongiorno Nardelli, Enda O\u2019Dea, Einar Olason, Aur\u00e9lien Paulmier, Irene P\u00e9rez-Gonz\u00e1lez, Rebecca Reid, Ma-rie-Fanny Racault, Dionysios E. Raitsos, Antonio Ramos, Peter Sykes, Tanguy Szekely & Nathalie Verbrugge (2016) The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography, 9:sup2, s235-s320, DOI: 10.1080/1755876X.2016.1273446\n", "providers": [{"name": "DMI (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00206"}, "GLOBAL_ANALYSISFORECAST_BGC_001_028": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "cell-height,cell-thickness,cell-width,coastal-marine-environment,forecast,global-analysisforecast-bgc-001-028,global-ocean,level-4,marine-resources,marine-safety,mass-concentration-of-chlorophyll-a-in-sea-water,model-level-number-at-sea-floor,mole-concentration-of-dissolved-inorganic-carbon-in-sea-water,mole-concentration-of-dissolved-iron-in-sea-water,mole-concentration-of-dissolved-molecular-oxygen-in-sea-water,mole-concentration-of-nitrate-in-sea-water,mole-concentration-of-phosphate-in-sea-water,mole-concentration-of-phytoplankton-expressed-as-carbon-in-sea-water,mole-concentration-of-silicate-in-sea-water,near-real-time,net-primary-production-of-biomass-expressed-as-carbon-per-unit-volume-in-sea-water,numerical-model,oceanographic-geographical-features,satellite-chlorophyll,sea-binary-mask,sea-floor-depth-below-geoid,sea-water-alkalinity-expressed-as-mole-equivalent,sea-water-ph-reported-on-total-scale,surface-partial-pressure-of-carbon-dioxide-in-sea-water,volume-attenuation-coefficient-of-downwelling-radiative-flux-in-sea-water,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global Ocean Biogeochemistry Analysis and Forecast", "missionStartDate": "2021-10-01T00:00:00Z", "abstract": "The Operational Mercator Ocean biogeochemical global ocean analysis and forecast system at 1/4 degree is providing 10 days of 3D global ocean forecasts updated weekly. The time series is aggregated in time, in order to reach a two full year\u2019s time series sliding window. This product includes daily and monthly mean files of biogeochemical parameters (chlorophyll, nitrate, phosphate, silicate, dissolved oxygen, dissolved iron, primary production, phytoplankton, PH, and surface partial pressure of carbon dioxyde) over the global ocean. The global ocean output files are displayed with a 1/4 degree horizontal resolution with regular longitude/latitude equirectangular projection. 50 vertical levels are ranging from 0 to 5700 meters.\n\n* NEMO version (v3.6_STABLE)\n* Forcings: GLOBAL_ANALYSIS_FORECAST_PHYS_001_024 at daily frequency. \n* Outputs mean fields are interpolated on a standard regular grid in NetCDF format.\n* Initial conditions: World Ocean Atlas 2013 for nitrate, phosphate, silicate and dissolved oxygen, GLODAPv2 for DIC and Alkalinity, and climatological model outputs for Iron and DOC \n* Quality/Accuracy/Calibration information: See the related [QuID](http://catalogue.marine.copernicus.eu/documents/QUID/CMEMS-GLO-QUID-001-028.pdf) \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00015", "providers": [{"name": "Mercator Oc\u00e9an International", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00015"}, "SEALEVEL_GLO_PHY_L3_NRT_008_044": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "arctic-ocean,coastal-marine-environment,global-ocean,level-3,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-surface-height-above-geoid,sea-surface-height-above-sea-level,sealevel-glo-phy-l3-nrt-008-044,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "GLOBAL OCEAN ALONG-TRACK L3 SEA SURFACE HEIGHTS NRT", "missionStartDate": "2022-01-01T00:00:00Z", "abstract": "Altimeter satellite along-track sea surface heights anomalies (SLA) computed with respect to a twenty-year [1993, 2012] mean with a 1Hz (~7km) and 5Hz (~1km) sampling. It serves in near-real time applications.\nThis product is processed by the DUACS multimission altimeter data processing system. It processes data from all altimeter missions available (e.g. Sentinel-6A, Jason-3, Sentinel-3A, Sentinel-3B, Saral/AltiKa, Cryosat-2, HY-2B). The system exploits the most recent datasets available based on the enhanced OGDR/NRT+IGDR/STC production. All the missions are homogenized with respect to a reference mission. Part of the processing is fitted to the Global Ocean. (see QUID document or http://duacs.cls.fr [](http://duacs.cls.fr) pages for processing details). \nThe product gives additional variables (e.g. Mean Dynamic Topography, Dynamic Atmospheric Correction, Ocean Tides, Long Wavelength Errors) that can be used to change the physical content for specific needs (see PUM document for details)\n\n**Associated products**\nA time invariant product http://marine.copernicus.eu/services-portfolio/access-to-products/?option=com_csw&view=details&product_id=SEALEVEL_GLO_PHY_NOISE_L4_STATIC_008_033 [](http://marine.copernicus.eu/services-portfolio/access-to-products/?option=com_csw&view=details&product_id=SEALEVEL_GLO_PHY_NOISE_L4_STATIC_008_033) describing the noise level of along-track measurements is available. It is associated to the sla_filtered variable. It is a gridded product. One file is provided for the global ocean and those values must be applied for Arctic and Europe products. For Mediterranean and Black seas, one value is given in the QUID document.\n\n**DOI (product)**:\nhttps://doi.org/10.48670/moi-00147", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00147"}, "OMI_CLIMATE_SST_NORTHWESTSHELF_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,marine-resources,marine-safety,multi-year,north-west-shelf-seas,oceanographic-geographical-features,omi-climate-sst-northwestshelf-trend,satellite-observation,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "European North West Shelf Sea Surface Temperature trend map from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe omi_climate_sst_northwestshelf_trend product includes the Sea Surface Temperature (SST) trend for the European North West Shelf Seas over the period 1993-2022, i.e. the rate of change (\u00b0C/year). This OMI is derived from the CMEMS REP ATL L4 SST product (SST_ATL_SST_L4_REP_OBSERVATIONS_010_026), see e.g. the OMI QUID, http://marine.copernicus.eu/documents/QUID/CMEMS-OMI-QUID-CLIMATE-SST-NORTHWESTSHELF_v2.1.pdf), which provided the SSTs used to compute the SST trend over the European North West Shelf Seas. This reprocessed product consists of daily (nighttime) interpolated 0.05\u00b0 grid resolution SST maps built from the ESA Climate Change Initiative (CCI) (Merchant et al., 2019) and Copernicus Climate Change Service (C3S) initiatives. Trend analysis has been performed by using the X-11 seasonal adjustment procedure (see e.g. Pezzulli et al., 2005), which has the effect of filtering the input SST time series acting as a low bandpass filter for interannual variations. Mann-Kendall test and Sens\u2019s method (Sen 1968) were applied to assess whether there was a monotonic upward or downward trend and to estimate the slope of the trend and its 95% confidence interval. \n\n**CONTEXT**\n\nSea surface temperature (SST) is a key climate variable since it deeply contributes in regulating climate and its variability (Deser et al., 2010). SST is then essential to monitor and characterise the state of the global climate system (GCOS 2010). Long-term SST variability, from interannual to (multi-)decadal timescales, provides insight into the slow variations/changes in SST, i.e. the temperature trend (e.g., Pezzulli et al., 2005). In addition, on shorter timescales, SST anomalies become an essential indicator for extreme events, as e.g. marine heatwaves (Hobday et al., 2018).\n\n**CMEMS KEY FINDINGS**\n\nOver the period 1993-2022, the European North West Shelf Seas mean Sea Surface Temperature (SST) increased at a rate of 0.016 \u00b1 0.001 \u00b0C/Year.\n\n**Figure caption**\n\nSea surface temperature trend over the period 1993-2022 in the European North West Shelf Seas. The trend is the rate of change (\u00b0C/year). The trend map in sea surface temperature is derived from the CMEMS SST_ATL_SST_L4_REP_OBSERVATIONS_010_026product (see e.g. the OMI QUID, http://marine.copernicus.eu/documents/QUID/CMEMS-OMI-QUID-ATL-SST.pdf). The trend is estimated by using the X-11 seasonal adjustment procedure (e.g. Pezzulli et al., 2005;) and Sen\u2019s method (Sen 1968).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00276\n\n**References:**\n\n* Deser, C., Alexander, M. A., Xie, S.-P., Phillips, A. S., 2010. Sea Surface Temperature Variability: Patterns and Mechanisms. Annual Review of Marine Science 2010 2:1, 115-143. https://doi.org/10.1146/annurev-marine-120408-151453\n* GCOS. Global Climate Observing System. 2010. Update of the Implementation Plan for the Global Observing System for Climate in Support of the UNFCCC (GCO-138).\n* Hobday, A. J., Oliver, E. C., Gupta, A. S., Benthuysen, J. A., Burrows, M. T., Donat, M. G., ... & Smale, D. A. (2018). Categorizing and naming marine heatwaves. Oceanography, 31(2), 162-173.\n* Merchant, C. J., Embury, O., Bulgin, C. E., Block, T., Corlett, G. K., Fiedler, E., ... & Eastwood, S. (2019). Satellite-based time-series of sea-surface temperature since 1981 for climate applications. Scientific data, 6(1), 1-18.\n* Pezzulli, S., Stephenson, D. B., Hannachi, A., 2005. The Variability of Seasonality. J. Climate. 18:71\u201388. doi:10.1175/JCLI-3256.1.\n* Sen, P. K., 1968. Estimates of the regression coefficient based on Kendall\u2019s tau. J Am Statist Assoc. 63:1379\u20131389.\n", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00276"}, "SEAICE_GLO_PHY_CLIMATE_L3_MY_011_013": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "arctic-ocean,coastal-marine-environment,level-3,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,satellite-observation,sea-ice-thickness,seaice-glo-phy-climate-l3-my-011-013,target-application#seaiceclimate,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Arctic Ocean - Sea Ice Thickness REPROCESSED", "missionStartDate": "2002-10-01T00:00:00Z", "abstract": "Arctic sea ice L3 data in separate monthly files. The time series is based on reprocessed radar altimeter satellite data from Envisat and CryoSat and is available in the freezing season between October and April. The product is brokered from the Copernicus Climate Change Service (C3S).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00127", "providers": [{"name": "MET Norway", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00127"}, "OMI_EXTREME_SL_BALTIC_slev_mean_and_anomaly_obs": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-sea,coastal-marine-environment,in-situ-observation,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-extreme-sl-baltic-slev-mean-and-anomaly-obs,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Level extreme from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe OMI_EXTREME_SL_BALTIC_slev_mean_and_anomaly_obs indicator is based on the computation of the 99th and the 1st percentiles from in situ data (observations). It is computed for the variable sea level measured by tide gauges along the coast. The use of percentiles instead of annual maximum and minimum values, makes this extremes study less affected by individual data measurement errors. The annual percentiles referred to annual mean sea level are temporally averaged and their spatial evolution is displayed in the dataset baltic_omi_sl_extreme_var_slev_mean_and_anomaly_obs, jointly with the anomaly in the target year. This study of extreme variability was first applied to sea level variable (P\u00e9rez G\u00f3mez et al 2016) and then extended to other essential variables, sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018).\n\n**CONTEXT**\n\nSea level (SLEV) is one of the Essential Ocean Variables most affected by climate change. Global mean sea level rise has accelerated since the 1990\u2019s (Abram et al., 2019, Legeais et al., 2020), due to the increase of ocean temperature and mass volume caused by land ice melting (WCRP, 2018). Basin scale oceanographic and meteorological features lead to regional variations of this trend that combined with changes in the frequency and intensity of storms could also rise extreme sea levels up to one meter by the end of the century (Vousdoukas et al., 2020). This will significantly increase coastal vulnerability to storms, with important consequences on the extent of flooding events, coastal erosion and damage to infrastructures caused by waves. \n \n\n**CMEMS KEY FINDINGS**\n\nUp to 51 stations fulfill the completeness index criteria in this region, a significant improvement with respect to 2019 (only 28 stations), due to new data providers and reprocessed timeseries availability in the new product INSITU_GLO_PHY_SSH_DISCRETE_MY_013_053. The spatial variation of the mean 99th percentiles follow the tidal range pattern, reaching its highest values in the northern end of the Gulf of Bothnia (e.g.: 0.81 m above mean sea level in Kemi) and the inner part of the Gulf of Finland (e.g.: 0.82 m above mean sea level in St. Petersburg). Smaller tides and therefore 99th percentiles are found along the southeastern coast of Sweden, between Stockholm and Gotland Island (e.g.: 0.42 m above mean sea level in Visby). Annual percentiles standard deviation ranges between 3-5 cm in the South (e.g.: 4 cm in Slipshavn) to 10-13 cm in the Gulf of Finland (e.g.: 13 cm in St. Petersburg). Positive anomalies of 2020 99th percentile are observed for most of the basin (up to 11 cm in St. Petersburg), except at the southern Danish stations, which show negative anomalies reaching -6 cm in Hesnaes and Rodby. This result contrasts with the remarkably negative anomaly observed in 2019.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00203\n\n**References:**\n\n* Abram, N., Gattuso, J.-P., Prakash, A., Cheng, L., Chidichimo, M. P., Crate, S., Enomoto, H., Garschagen, M., Gruber, N., Harper, S., Holland, E., Kudela, R. M., Rice, J., Steffen, K., & von Schuckmann, K. (2019). Framing and Context of the Report. In H. O. P\u00f6rtner, D. C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Nicolai, A. Okem, J. Petzold, B. Rama, & N. M. Weyer (Eds.), IPCC Special Report on the Ocean and Cryosphere in a Changing Climate (pp. 73\u2013129). in press. https://www.ipcc.ch/srocc/\n* Legeais J-F, W. Llowel, A. Melet and B. Meyssignac: Evidence of the TOPEX-A Altimeter Instrumental Anomaly and Acceleration of the Global Mean Sea Level, in Copernicus Marine Service Ocean State Report, Issue 4, Journal of Operational Oceanography, 2020, accepted.\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B, De Alfonso M, Zacharioudaki A, P\u00e9rez Gonz\u00e1lez I, \u00c1lvarez Fanjul E, M\u00fcller M, Marcos M, Manzano F, Korres G, Ravdas M, Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208.\n* WCRP Global Sea Level Budget Group: Global sea-level budget 1993\u2013present. 2018. Earth Syst. Sci. Data, 10, 1551-1590, https://doi.org/10.5194/essd-10-1551-2018.\n* Vousdoukas MI, Mentaschi L, Hinkel J, et al. 2020. Economic motivation for raising coastal flood defenses in Europe. Nat Commun 11, 2119 (2020). https://doi.org/10.1038/s41467-020-15665-3.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00203"}, "WIND_BAL_PHY_HR_L3_NRT_012_102": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "eastward-wind,level-3,near-real-time,northward-wind,oceanographic-geographical-features,quality-flag,quality-flag-wind-speed,status-flag,time,wind-bal-phy-hr-l3-nrt-012-102,wind-speed,wind-to-direction", "license": "proprietary", "title": "High-resolution L3 Sea Surface Wind from NRT Satellite Measurements over the Baltic Sea", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "For the Baltic Sea - The product contains daily Level-3 sea surface wind with a 1km horizontal pixel spacing using Near Real-Time Synthetic Aperture Radar (SAR) observations and their collocated European Centre for Medium-Range Weather Forecasts (ECMWF) model outputs. Products are updated several times daily to provide the best product timeliness.\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00332", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00332"}, "OMI_EXTREME_WAVE_BALTIC_swh_mean_and_anomaly_obs": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-sea,coastal-marine-environment,in-situ-observation,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,omi-extreme-wave-baltic-swh-mean-and-anomaly-obs,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea Significant Wave Height extreme from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe OMI_EXTREME_WAVE_BALTIC_swh_mean_and_anomaly_obs indicator is based on the computation of the 99th and the 1st percentiles from in situ data (observations). It is computed for the variable significant wave height (swh) measured by in situ buoys. The use of percentiles instead of annual maximum and minimum values, makes this extremes study less affected by individual data measurement errors. The percentiles are temporally averaged, and the spatial evolution is displayed, jointly with the anomaly in the target year. This study of extreme variability was first applied to sea level variable (P\u00e9rez G\u00f3mez et al 2016) and then extended to other essential variables, sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018). \n\n**CONTEXT**\n\nProjections on Climate Change foresee a future with a greater frequency of extreme sea states (Stott, 2016; Mitchell et al., 2006). The damages caused by severe wave storms can be considerable not only in infrastructure and buildings but also in the natural habitat, crops and ecosystems affected by erosion and flooding aggravated by the extreme wave heights. In addition, wave storms strongly hamper the maritime activities, especially in harbours. These extreme phenomena drive complex hydrodynamic processes, whose understanding is paramount for proper infrastructure management, design and maintenance (Goda, 2010).\n\n**CMEMS KEY FINDINGS**\n\nThe mean 99th percentiles showed in the area are around 3 meters in the two stations included this year (Arkona and FinngrundetWR), and the standard deviation ranges from 0.23 to 0.26 m.\nResults for this year show a slight negative anomaly in both stations, with -0.315 meters in Arkona, and less than -0.1 meter in FinngrundetWR, both around the standard deviation range in the area. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00199\n\n**References:**\n\n* Goda Y. 2010. Random seas and design of maritime structures. World scientific. https://doi.org/10.1142/7425. Mitchell JF, Lowe J, Wood RA, & Vellinga M. 2006. Extreme events due to human-induced climate change. Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences, 364(1845), 2117-2133.\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B, De Alfonso M, Zacharioudaki A, P\u00e9rez Gonz\u00e1lez I, \u00c1lvarez Fanjul E, M\u00fcller M, Marcos M, Manzano F, Korres G, Ravdas M, Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208.\n* Stott P. 2016. How climate change affects extreme weather events. Science, 352(6293), 1517-1518.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00199"}, "SST_GLO_PHY_L4_NRT_010_043": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "coastal-marine-environment,global-ocean,level-4,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-surface-temperature,sst-glo-phy-l4-nrt-010-043,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "ODYSSEA Global Sea Surface Temperature Gridded Level 4 Daily Multi-Sensor Observations", "missionStartDate": "2021-01-01T00:00:00Z", "abstract": "This dataset provide a times series of gap free map of Sea Surface Temperature (SST) foundation at high resolution on a 0.10 x 0.10 degree grid (approximately 10 x 10 km) for the Global Ocean, every 24 hours.\n\nWhereas along swath observation data essentially represent the skin or sub-skin SST, the Level 4 SST product is defined to represent the SST foundation (SSTfnd). SSTfnd is defined within GHRSST as the temperature at the base of the diurnal thermocline. It is so named because it represents the foundation temperature on which the diurnal thermocline develops during the day. SSTfnd changes only gradually along with the upper layer of the ocean, and by definition it is independent of skin SST fluctuations due to wind- and radiation-dependent diurnal stratification or skin layer response. It is therefore updated at intervals of 24 hrs. SSTfnd corresponds to the temperature of the upper mixed layer which is the part of the ocean represented by the top-most layer of grid cells in most numerical ocean models. It is never observed directly by satellites, but it comes closest to being detected by infrared and microwave radiometers during the night, when the previous day's diurnal stratification can be assumed to have decayed.\n\nThe processing combines the observations of multiple polar orbiting and geostationary satellites, embedding infrared of microwave radiometers. All these sources are intercalibrated with each other before merging. A ranking procedure is used to select the best sensor observation for each grid point. An optimal interpolation is used to fill in where observations are missing.\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00321", "providers": [{"name": "Ifremer (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00321"}, "OMI_EXTREME_SL_NORTHWESTSHELF_slev_mean_and_anomaly_obs": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,in-situ-observation,marine-resources,marine-safety,multi-year,north-west-shelf-seas,oceanographic-geographical-features,omi-extreme-sl-northwestshelf-slev-mean-and-anomaly-obs,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "North West Shelf Mean Sea Level extreme from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe OMI_EXTREME_SL_NORTHWESTSHELF_slev_mean_and_anomaly_obs indicator is based on the computation of the 99th and the 1st percentiles from in situ data (observations). It is computed for the variable sea level measured by tide gauges along the coast. The use of percentiles instead of annual maximum and minimum values, makes this extremes study less affected by individual data measurement errors. The annual percentiles referred to annual mean sea level are temporally averaged and their spatial evolution is displayed in the dataset northwestshelf_omi_sl_extreme_var_slev_mean_and_anomaly_obs, jointly with the anomaly in the target year. This study of extreme variability was first applied to sea level variable (P\u00e9rez G\u00f3mez et al 2016) and then extended to other essential variables, sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018).\n\n**CONTEXT**\n\nSea level is one of the Essential Ocean Variables most affected by climate change. Global mean sea level rise has accelerated since the 1990\u2019s (Abram et al., 2019, Legeais et al., 2020), due to the increase of ocean temperature and mass volume caused by land ice melting (WCRP, 2018). Basin scale oceanographic and meteorological features lead to regional variations of this trend that combined with changes in the frequency and intensity of storms could also rise extreme sea levels up to one metre by the end of the century (Vousdoukas et al., 2020). This will significantly increase coastal vulnerability to storms, with important consequences on the extent of flooding events, coastal erosion and damage to infrastructures caused by waves.\n\n**CMEMS KEY FINDINGS**\n\nThe completeness index criteria is fulfilled in this region by 23 stations, a significant increase with respect to those used in 2019 (only 6). Most of these new stations belong to UK and Denmark, and their reprocessed timeseries are now provided in product INSITU_GLO_PHY_SSH_DISCRETE_MY_013_053. The mean 99th percentiles present a large spatial variability related to the tidal pattern, ranging from the 3.08 m and 3.38 m above mean sea level in Immingan (East England) and Calais (France, English Channel) respectively, to 0.59 m above mean sea level in Aarhus (Denmark). The standard deviation ranges between 3 and 8 cm. There is a clear positive anomaly of 99th percentiles in 2020 for most of the stations, reaching 11 cm in Kungsvik (Sweden) and Ullapool (Scotland). Null or very small negative anomalies are only observed at two stations in the southeastern coast of England. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00272\n\n**References:**\n\n* Abram, N., Gattuso, J.-P., Prakash, A., Cheng, L., Chidichimo, M. P., Crate, S., Enomoto, H., Garschagen, M., Gruber, N., Harper, S., Holland, E., Kudela, R. M., Rice, J., Steffen, K., & von Schuckmann, K. (2019). Framing and Context of the Report. In H. O. P\u00f6rtner, D. C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Nicolai, A. Okem, J. Petzold, B. Rama, & N. M. Weyer (Eds.), IPCC Special Report on the Ocean and Cryosphere in a Changing Climate (pp. 73\u2013129). in press. https://www.ipcc.ch/srocc/\n* Legeais J-F, W. Llowel, A. Melet and B. Meyssignac: Evidence of the TOPEX-A Altimeter Instrumental Anomaly and Acceleration of the Global Mean Sea Level, in Copernicus Marine Service Ocean State Report, Issue 4, Journal of Operational Oceanography, 2020, accepted.\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B, De Alfonso M, Zacharioudaki A, P\u00e9rez Gonz\u00e1lez I, \u00c1lvarez Fanjul E, M\u00fcller M, Marcos M, Manzano F, Korres G, Ravdas M, Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208.\n* WCRP Global Sea Level Budget Group: Global sea-level budget 1993\u2013present. 2018. Earth Syst. Sci. Data, 10, 1551-1590, https://doi.org/10.5194/essd-10-1551-2018.\n* Vousdoukas MI, Mentaschi L, Hinkel J, et al. 2020. Economic motivation for raising coastal flood defenses in Europe. Nat Commun 11, 2119 (2020). https://doi.org/10.1038/s41467-020-15665-3.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00272"}, "GLOBAL_OMI_HEALTH_carbon_ph_trend": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,global-ocean,global-omi-health-carbon-ph-trend,in-situ-observation,marine-resources,marine-safety,multi-year,oceanographic-geographical-features,trend-of-surface-ocean-ph-reported-on-total-scale,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Global ocean acidification - mean sea water pH trend map from Multi-Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThis ocean monitoring indicator (OMI) consists of annual mean rates of changes in surface ocean pH (yr-1) computed at 0.25\u00b0\u00d70.25\u00b0 resolution from 1985 until the last year. This indicator is derived from monthly pH time series distributed with the Copernicus Marine product MULTIOBS_GLO_BIO_CARBON_SURFACE_REP_015_008 (Chau et al., 2022a). For each grid cell, a linear least-squares regression was used to fit a linear function of pH versus time, where the slope (\u03bc) and residual standard deviation (\u03c3) are defined as estimates of the long-term trend and associated uncertainty. Finally, the estimates of pH associated with the highest uncertainty, i.e., \u03c3-to-\u00b5 ratio over a threshold of 1 0%, are excluded from the global trend map (see QUID document for detailed description and method illustrations). This threshold is chosen at the 90th confidence level of all ratio values computed across the global ocean.\n\n**CONTEXT**\n\nA decrease in surface ocean pH (i.e., ocean acidification) is primarily a consequence of an increase in ocean uptake of atmospheric carbon dioxide (CO2) concentrations that have been augmented by anthropogenic emissions (Bates et al, 2014; Gattuso et al, 2015; P\u00e9rez et al, 2021). As projected in Gattuso et al (2015), \u201cunder our current rate of emissions, most marine organisms evaluated will have very high risk of impacts by 2100 and many by 2050\u201d. Ocean acidification is thus an ongoing source of concern due to its strong influence on marine ecosystems (e.g., Doney et al., 2009; Gehlen et al., 2011; P\u00f6rtner et al. 2019). Tracking changes in yearly mean values of surface ocean pH at the global scale has become an important indicator of both ocean acidification and global change (Gehlen et al., 2020; Chau et al., 2022b). In line with a sustained establishment of ocean measuring stations and thus a rapid increase in observations of ocean pH and other carbonate variables (e.g. dissolved inorganic carbon, total alkalinity, and CO2 fugacity) since the last decades (Bakker et al., 2016; Lauvset et al., 2021), recent studies including Bates et al (2014), Lauvset et al (2015), and P\u00e9rez et al (2021) put attention on analyzing secular trends of pH and their drivers from time-series stations to ocean basins. This OMI consists of the global maps of long-term pH trends and associated 1\u03c3-uncertainty derived from the Copernicus Marine data-based product of monthly surface water pH (Chau et al., 2022a) at 0.25\u00b0\u00d70.25\u00b0 grid cells over the global ocean.\n\n**CMEMS KEY FINDINGS**\n\nSince 1985, pH has been decreasing at a rate between -0.0008 yr-1 and -0.0022 yr-1 over most of the global ocean basins. Tropical and subtropical regions, the eastern equatorial Pacific excepted, show pH trends falling in the interquartile range of all the trend estimates (between -0.0012 yr-1 and -0.0018 yr-1). pH over the eastern equatorial Pacific decreases much faster, reaching a growth rate larger than -0.0024 yr-1. Such a high rate of change in pH is also observed over a sector south of the Indian Ocean. Part of the polar and subpolar North Atlantic and the Southern Ocean has no significant trend. \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00277\n\n**References:**\n\n* Bakker, D. C. E., Pfeil, B., Landa, C. S., Metzl, N., O'Brien, K. M., Olsen, A., Smith, K., Cosca, C., Harasawa, S., Jones, S. D., Nakaoka, S.-I. et al.: A multi-decade record of high-quality fCO2 data in version 3 of the Surface Ocean CO2 Atlas (SOCAT), Earth Syst. Sci. Data, 8, 383\u2013413, DOI:10.5194/essd-8-383- 2016, 2016.\n* Bates, N. R., Astor, Y. M., Church, M. J., Currie, K., Dore, J. E., Gonzalez-Davila, M., Lorenzoni, L., Muller-Karger, F., Olafsson, J., and Magdalena Santana-Casiano, J.: A Time-Series View of Changing Surface Ocean Chemistry Due to Ocean Uptake of Anthropogenic CO2 and Ocean Acidification, Oceanography, 27, 126\u2013141, 2014.\n* Chau, T. T. T., Gehlen, M., Chevallier, F. : Global Ocean Surface Carbon: MULTIOBS_GLO_BIO_CARBON_SURFACE_REP_015_008, E.U. Copernicus Marine Service Information, DOI:10.48670/moi-00047, 2022a.\n* Chau, T. T. T., Gehlen, M., Chevallier, F.: Global mean seawater pH (GLOBAL_OMI_HEALTH_carbon_ph_area_averaged), E.U. Copernicus Marine Service Information, DOI: 10.48670/moi-00224, 2022b.\n* Doney, S. C., Balch, W. M., Fabry, V. J., and Feely, R. A.: Ocean Acidification: A critical emerging problem for the ocean sciences, Oceanography, 22, 16\u201325, 2009.\n* Gattuso, J-P., Alexandre Magnan, Rapha\u00ebl Bill\u00e9, William WL Cheung, Ella L. Howes, Fortunat Joos, Denis Allemand et al. \"\"Contrasting futures for ocean and society from different anthropogenic CO2 emissions scenarios.\"\" Science 349, no. 6243 (2015).\n* Gehlen, M. et al.: Biogeochemical consequences of ocean acidification and feedback to the Earth system. p. 230, in: Gattuso J.-P. & Hansson L. (Eds.), Ocean acidification. Oxford: Oxford University Press., 2011.\n* Gehlen M., Chau T T T., Conchon A., Denvil-Sommer A., Chevallier F., Vrac M., Mejia C. : Ocean acidification. In: Copernicus Marine Service Ocean State Report, Issue 4, Journal of Operational Oceanography, 13:sup1, s88\u2013s91; DOI:10.1080/1755876X.2020.1785097, 2020.\n* Lauvset, S. K., Gruber, N., Landsch\u00fctzer, P., Olsen, A., and Tjiputra, J.: Trends and drivers in global surface ocean pH over the past 3 decades, Biogeosciences, 12, 1285\u20131298, DOI:10.5194/bg-12-1285-2015, 2015.\n* Lauvset, S. K., Lange, N., Tanhua, T., Bittig, H. C., Olsen, A., Kozyr, A., \u00c1lvarez, M., Becker, S., Brown, P. J., Carter, B. R., Cotrim da Cunha, L., Feely, R. A., van Heuven, S., Hoppema, M., Ishii, M., Jeansson, E., Jutterstr\u00f6m, S., Jones, S. D., Karlsen, M. K., Lo Monaco, C., Michaelis, P., Murata, A., P\u00e9rez, F. F., Pfeil, B., Schirnick, C., Steinfeldt, R., Suzuki, T., Tilbrook, B., Velo, A., Wanninkhof, R., Woosley, R. J., and Key, R. M.: An updated version of the global interior ocean biogeochemical data product, GLODAPv2.2021, Earth Syst. Sci. Data, 13, 5565\u20135589, DOI:10.5194/essd-13-5565-2021, 2021.\n* P\u00f6rtner, H. O. et al. IPCC Special Report on the Ocean and Cryosphere in a Changing Climate (Wiley IPCC Intergovernmental Panel on Climate Change, Geneva, 2019).\n* P\u00e9rez FF, Olafsson J, \u00d3lafsd\u00f3ttir SR, Fontela M, Takahashi T. Contrasting drivers and trends of ocean acidification in the subarctic Atlantic. Sci Rep 11, 13991, DOI:10.1038/s41598-021-93324-3, 2021.\n", "providers": [{"name": "LSCE (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00277"}, "WIND_MED_PHY_HR_L3_NRT_012_104": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "eastward-wind,level-3,near-real-time,northward-wind,oceanographic-geographical-features,quality-flag,quality-flag-wind-speed,status-flag,time,wind-med-phy-hr-l3-nrt-012-104,wind-speed,wind-to-direction", "license": "proprietary", "title": "High-resolution L3 Sea Surface Wind from NRT Satellite Measurements over the Mediterranean Sea", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "For the Mediterranean Sea - The product contains daily Level-3 sea surface wind with a 1km horizontal pixel spacing using Near Real-Time Synthetic Aperture Radar (SAR) observations and their collocated European Centre for Medium-Range Weather Forecasts (ECMWF) model outputs. Products are updated several times daily to provide the best product timeliness.\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00334", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00334"}, "OMI_EXTREME_SL_MEDSEA_slev_mean_and_anomaly_obs": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,in-situ-observation,marine-resources,marine-safety,mediterranean-sea,multi-year,oceanographic-geographical-features,omi-extreme-sl-medsea-slev-mean-and-anomaly-obs,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Mediterranean Sea Mean Sea Level extreme from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe OMI_EXTREME_SL_MEDSEA_slev_mean_and_anomaly_obs indicator is based on the computation of the 99th and the 1st percentiles from in situ data (observations). It is computed for the variable sea level measured by tide gauges along the coast. The use of percentiles instead of annual maximum and minimum values, makes this extremes study less affected by individual data measurement errors. The annual percentiles referred to annual mean sea level are temporally averaged and their spatial evolution is displayed in the dataset medsea_omi_sl_extreme_var_slev_mean_and_anomaly_obs, jointly with the anomaly in the target year. This study of extreme variability was first applied to sea level variable (P\u00e9rez G\u00f3mez et al 2016) and then extended to other essential variables, sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018).\n\n**CONTEXT**\n\nSea level is one of the Essential Ocean Variables most affected by climate change. Global mean sea level rise has accelerated since the 1990\u2019s (Abram et al., 2019, Legeais et al., 2020), due to the increase of ocean temperature and mass volume caused by land ice melting (WCRP, 2018). Basin scale oceanographic and meteorological features lead to regional variations of this trend that combined with changes in the frequency and intensity of storms could also rise extreme sea levels up to one metre by the end of the century (Vousdoukas et al., 2020). This will significantly increase coastal vulnerability to storms, with important consequences on the extent of flooding events, coastal erosion and damage to infrastructures caused by waves.\n\n**CMEMS KEY FINDINGS**\n\nThe completeness index criteria is fulfilled in this region by 11 stations, 3 more than in 2019, all of them in the Western Mediterranean. The mean 99th percentiles reflect the spatial variability of the tide, a microtidal regime, along the Spanish and French Mediterranean coasts, ranging from 0.23 m above mean sea level in Ibiza (Balearic Islands) to 0.39 m above mean sea level in M\u00e1laga, near the Strait of Gibraltar. The standard deviation ranges between 2 cm in M\u00e1laga and Motril (South of Spain) to 8 cm in Marseille. Most of the stations present clear negative anomalies of 2020 99th percentiles, increasing northwards in magnitude, up to -12 cm in Marseille. Small positive anomalies (around 2 cm) are observed however in Valencia and Ibiza (Spain).\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00265\n\n**References:**\n\n* Abram, N., Gattuso, J.-P., Prakash, A., Cheng, L., Chidichimo, M. P., Crate, S., Enomoto, H., Garschagen, M., Gruber, N., Harper, S., Holland, E., Kudela, R. M., Rice, J., Steffen, K., & von Schuckmann, K. (2019). Framing and Context of the Report. In H. O. P\u00f6rtner, D. C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Nicolai, A. Okem, J. Petzold, B. Rama, & N. M. Weyer (Eds.), IPCC Special Report on the Ocean and Cryosphere in a Changing Climate (pp. 73\u2013129). in press. https://www.ipcc.ch/srocc/\n* Legeais J-F, W. Llowel, A. Melet and B. Meyssignac: Evidence of the TOPEX-A Altimeter Instrumental Anomaly and Acceleration of the Global Mean Sea Level, in Copernicus Marine Service Ocean State Report, Issue 4, Journal of Operational Oceanography, 2020, accepted.\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B, De Alfonso M, Zacharioudaki A, P\u00e9rez Gonz\u00e1lez I, \u00c1lvarez Fanjul E, M\u00fcller M, Marcos M, Manzano F, Korres G, Ravdas M, Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208.\n* WCRP Global Sea Level Budget Group: Global sea-level budget 1993\u2013present. 2018. Earth Syst. Sci. Data, 10, 1551-1590, https://doi.org/10.5194/essd-10-1551-2018.\n* Vousdoukas MI, Mentaschi L, Hinkel J, et al. 2020. Economic motivation for raising coastal flood defenses in Europe. Nat Commun 11, 2119 (2020). https://doi.org/10.1038/s41467-020-15665-3.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00265"}, "OMI_CLIMATE_SL_IBI_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": ",omi-climate-sl-ibi-area-averaged-anomalies", "license": null, "title": null, "missionStartDate": "1993-01-01T00:00:00Z", "abstract": null, "providers": [], "doi": null}, "WIND_BLK_PHY_HR_L3_NRT_012_103": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "eastward-wind,level-3,near-real-time,northward-wind,oceanographic-geographical-features,quality-flag,quality-flag-wind-speed,status-flag,time,wind-blk-phy-hr-l3-nrt-012-103,wind-speed,wind-to-direction", "license": "proprietary", "title": "High-resolution L3 Sea Surface Wind from NRT Satellite Measurements over the Black Sea", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "For the Black Sea - The product contains daily Level-3 sea surface wind with a 1km horizontal pixel spacing using Near Real-Time Synthetic Aperture Radar (SAR) observations and their collocated European Centre for Medium-Range Weather Forecasts (ECMWF) model outputs. Products are updated several times daily to provide the best product timeliness.\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00333", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00333"}, "OMI_EXTREME_WAVE_NORTHWESTSHELF_swh_mean_and_anomaly_obs": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal-marine-environment,in-situ-observation,marine-resources,marine-safety,multi-year,north-west-shelf-seas,oceanographic-geographical-features,omi-extreme-wave-northwestshelf-swh-mean-and-anomaly-obs,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "North West Shelf Significant Wave Height extreme from Observations Reprocessing", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "**DEFINITION**\n\nThe OMI_EXTREME_WAVE_NORTHWESTSHELF_swh_mean_and_anomaly_obs indicator is based on the computation of the 99th and the 1st percentiles from in situ data (observations). It is computed for the variable significant wave height (swh) measured by in situ buoys. The use of percentiles instead of annual maximum and minimum values, makes this extremes study less affected by individual data measurement errors. The percentiles are temporally averaged, and the spatial evolution is displayed, jointly with the anomaly in the target year. This study of extreme variability was first applied to sea level variable (P\u00e9rez G\u00f3mez et al 2016) and then extended to other essential variables, sea surface temperature and significant wave height (P\u00e9rez G\u00f3mez et al 2018). \n\n**CONTEXT**\n\nProjections on Climate Change foresee a future with a greater frequency of extreme sea states (Stott, 2016; Mitchell, 2006). The damages caused by severe wave storms can be considerable not only in infrastructure and buildings but also in the natural habitat, crops and ecosystems affected by erosion and flooding aggravated by the extreme wave heights. In addition, wave storms strongly hamper the maritime activities, especially in harbours. These extreme phenomena drive complex hydrodynamic processes, whose understanding is paramount for proper infrastructure management, design and maintenance (Goda, 2010).\n\n**CMEMS KEY FINDINGS**\n\nThe mean 99th percentiles showed in the area present a wide range from 2.5 meters in the English Channel with 0.3m of standard deviation (std), 3-5m around Helgoland Bight with 0.3-0.5m of std, 4 meters in the Skagerrak Strait with 0.5m of std, 6m in the central North Sea with 0.3m of std to 8-9 meters in the North of the British Isles with 0.5-0.75m of std. \nResults for this year show a general trend of positive anomalies with slight or moderate values around the range of the std in all the area except in the North of the British Isles where the positive anomaly is appreciable, reaching +1m. Severe storms developed in the Atlantic during 2020 reached the British Isles, like Storm Brendan in January, Storm Dennis in February or Storm Bella in December. These storms produced waves with significant wave height over 10 m recorded by the buoys in the area.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00270\n\n**References:**\n\n* Goda Y. 2010. Random seas and design of maritime structures. World scientific. https://doi.org/10.1142/7425.\n* Mitchell JF, Lowe J, Wood RA, & Vellinga M. 2006. Extreme events due to human-induced climate change. Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences, 364(1845), 2117-2133.\n* P\u00e9rez-G\u00f3mez B, \u00c1lvarez-Fanjul E, She J, P\u00e9rez-Gonz\u00e1lez I, Manzano F. 2016. Extreme sea level events, Section 4.4, p:300. In: Von Schuckmann K, Le Traon PY, Alvarez-Fanjul E, Axell L, Balmaseda M, Breivik LA, Brewin RJW, Bricaud C, Drevillon M, Drillet Y, Dubois C , Embury O, Etienne H, Garc\u00eda-Sotillo M, Garric G, Gasparin F, Gutknecht E, Guinehut S, Hernandez F, Juza M, Karlson B, Korres G, Legeais JF, Levier B, Lien VS, Morrow R, Notarstefano G, Parent L, Pascual A, P\u00e9rez-G\u00f3mez B, Perruche C, Pinardi N, Pisano A, Poulain PM , Pujol IM, Raj RP, Raudsepp U, Roquet H, Samuelsen A, Sathyendranath S, She J, Simoncelli S, Solidoro C, Tinker J, Tintor\u00e9 J, Viktorsson L, Ablain M, Almroth-Rosell E, Bonaduce A, Clementi E, Cossarini G, Dagneaux Q, Desportes C, Dye S, Fratianni C, Good S, Greiner E, Gourrion J, Hamon M, Holt J, Hyder P, Kennedy J, Manzano-Mu\u00f1oz F, Melet A, Meyssignac B, Mulet S, Nardelli BB, O\u2019Dea E, Olason E, Paulmier A, P\u00e9rez-Gonz\u00e1lez I, Reid R, Racault MF, Raitsos DE, Ramos A, Sykes P, Szekely T, Verbrugge N. 2016. The Copernicus Marine Environment Monitoring Service Ocean State Report, Journal of Operational Oceanography. 9 (sup2): 235-320. http://dx.doi.org/10.1080/1755876X.2016.1273446\n* P\u00e9rez G\u00f3mez B, De Alfonso M, Zacharioudaki A, P\u00e9rez Gonz\u00e1lez I, \u00c1lvarez Fanjul E, M\u00fcller M, Marcos M, Manzano F, Korres G, Ravdas M, Tamm S. 2018. Sea level, SST and waves: extremes variability. In: Copernicus Marine Service Ocean State Report, Issue 2, Journal of Operational Oceanography, 11:sup1, Chap. 3.1, s79\u2013s88, DOI: https://doi.org/10.1080/1755876X.2018.1489208.\n* Stott P. 2016. How climate change affects extreme weather events. Science, 352(6293), 1517-1518.\n", "providers": [{"name": "Puertos del Estado (Spain)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00270"}, "SST_BAL_PHY_SUBSKIN_L4_NRT_010_034": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "baltic-sea,coastal-marine-environment,level-4,marine-resources,marine-safety,near-real-time,oceanographic-geographical-features,satellite-observation,sea-surface-temperature,sst-bal-phy-subskin-l4-nrt-010-034,target-application#seaiceforecastingapplication,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "Baltic Sea - Diurnal Subskin Sea Surface Temperature Analysis", "missionStartDate": "2022-05-01T00:00:00Z", "abstract": "For the Baltic Sea - the DMI Sea Surface Temperature Diurnal Subskin L4 aims at providing hourly analysis of the diurnal subskin signal at 0.02deg. x 0.02deg. horizontal resolution, using the BAL L4 NRT product as foundation temperature and satellite data from infra-red radiometers. Uses SST satellite products from the sensors: Metop B AVHRR, Sentinel-3 A/B SLSTR, VIIRS SUOMI NPP & NOAA20 \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00309\n\n**References:**\n\n* Karagali I. and H\u00f8yer, J. L. (2014). Characterisation and quantification of regional diurnal cycles from SEVIRI. Ocean Science, 10 (5), 745-758.\n* H\u00f8yer, J. L., Le Borgne, P. and Eastwood, S. 2014. A bias correction method for Arctic satellite sea surface temperature observations, Remote Sensing of Environment, https://doi.org/10.1016/j.rse.2013.04.020.\n* H\u00f8yer, J. L. and She, J., Optimal interpolation of sea surface temperature for the North Sea and Baltic Sea, J. Mar. Sys., Vol 65, 1-4, pp., 2007.H\u00f8yer, J. L. and She, J., Optimal interpolation of sea surface temperature for the North Sea and Baltic Sea, J. Mar. Sys., Vol 65, 1-4, pp., 2007.\n", "providers": [{"name": "DMI (Denmark)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/moi-00309"}, "WAVE_GLO_PHY_SPC_L3_NRT_014_009": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "arctic-ocean,baltic-sea,black-sea,global-ocean,iberian-biscay-irish-seas,level-3,mediterranean-sea,north-west-shelf-seas,oceanographic-geographical-features,sea-surface-wave-from-direction-at-variance-spectral-density-maximum,sea-surface-wave-period-at-variance-spectral-density-maximum,sea-surface-wave-significant-height,wave-glo-phy-spc-l3-nrt-014-009,wave-spectrum", "license": "proprietary", "title": "GLOBAL OCEAN L3 SPECTRAL PARAMETERS FROM NRT SATELLITE MEASUREMENTS", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "Near Real-Time mono-mission satellite-based 2D full wave spectral product. These very complete products enable to characterise spectrally the direction, wave length and multiple sea Sates along CFOSAT track (in boxes of 70km/90km left and right from the nadir pointing). The data format are 2D directionnal matrices. They also include integrated parameters (Hs, direction, wavelength) from the spectrum with and without partitions. \n\n**DOI (product):** \nN/A", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": null}, "WIND_ATL_PHY_HR_L3_NRT_012_101": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 3", "keywords": "eastward-wind,level-3,near-real-time,northward-wind,oceanographic-geographical-features,quality-flag,quality-flag-wind-speed,status-flag,time,wind-atl-phy-hr-l3-nrt-012-101,wind-speed,wind-to-direction", "license": "proprietary", "title": "High-resolution L3 Sea Surface Wind from NRT Satellite Measurements over the Atlantic Sea", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "For the Atlantic Ocean - The product contains daily Level-3 sea surface wind with a 1km horizontal pixel spacing using Near Real-Time Synthetic Aperture Radar (SAR) observations and their collocated European Centre for Medium-Range Weather Forecasts (ECMWF) model outputs. Products are updated several times daily to provide the best product timeliness.\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00331", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00331"}, "OMI_CLIMATE_SL_EUROPE_area_averaged_anomalies": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "baltic-sea,coastal-marine-environment,marine-resources,marine-safety,oceanographic-geographical-features,omi-climate-sl-europe-area-averaged-anomalies,sea-surface-height-above-sea-level,weather-climate-and-seasonal-forecasting", "license": "proprietary", "title": "European Seas Mean Sea Level time series and trend from Observations Reprocessing", "missionStartDate": "1993-01-01T00:00:00Z", "abstract": "**DEFINITION**\n\nThe ocean monitoring indicator on mean sea level is derived from the DUACS delayed-time (DT-2021 version, \u201cmy\u201d (multi-year) dataset used when available, \u201cmyint\u201d (multi-year interim) used after) sea level anomaly maps from satellite altimetry based on a stable number of altimeters (two) in the satellite constellation. These products are distributed by the Copernicus Climate Change Service and by the Copernicus Marine Service (SEALEVEL_GLO_PHY_CLIMATE_L4_MY_008_057).\nThe time series of area averaged anomalies correspond to the area average of the maps in the Northeast Atlantic Ocean and adjacent seas Sea weighted by the cosine of the latitude (to consider the changing area in each grid with latitude) and by the proportion of ocean in each grid (to consider the coastal areas). The time series are corrected from global TOPEX-A instrumental drift (WCRP Global Sea Level Budget Group, 2018) and regional mean GIA correction (weighted GIA mean of a 27 ensemble model following Spada et Melini, 2019). The time series are adjusted for seasonal annual and semi-annual signals and low-pass filtered at 6 months. Then, the trends/accelerations are estimated on the time series using ordinary least square fit.\nUncertainty is provided in a 90% confidence interval. It is calculated as the weighted mean uncertainties in the region from Prandi et al., 2021. This estimate only considers errors related to the altimeter observation system (i.e., orbit determination errors, geophysical correction errors and inter-mission bias correction errors). The presence of the interannual signal can strongly influence the trend estimation depending on the period considered (Wang et al., 2021; Cazenave et al., 2014). The uncertainty linked to this effect is not considered.\n\n**CONTEXT**\n\nChange in mean sea level is an essential indicator of our evolving climate, as it reflects both the thermal expansion of the ocean in response to its warming and the increase in ocean mass due to the melting of ice sheets and glaciers (WCRP Global Sea Level Budget Group, 2018). At regional scale, sea level does not change homogenously. It is influenced by various other processes, with different spatial and temporal scales, such as local ocean dynamic, atmospheric forcing, Earth gravity and vertical land motion changes (IPCC WGI, 2021). The adverse effects of floods, storms and tropical cyclones, and the resulting losses and damage, have increased as a result of rising sea levels, increasing people and infrastructure vulnerability and food security risks, particularly in low-lying areas and island states (IPCC, 2022a). Adaptation and mitigation measures such as the restoration of mangroves and coastal wetlands, reduce the risks from sea level rise (IPCC, 2022b). \nIn this region, sea level variations are influenced by the North Atlantic Oscillation (NAO) (e.g. Delworth and Zeng, 2016) and the Atlantic Meridional Overturning Circulation (AMOC) (e.g. Chafik et al., 2019). Hermans et al., 2020 also reported the dominant influence of wind on interannual sea level variability in a large part of this area. This region encompasses the Mediterranean, IBI, North-West shelf and Baltic regions with different sea level dynamics detailed in the regional indicators.\n\n**KEY FINDINGS**\n\nOver the [1993/01/01, 2023/07/06] period, the area-averaged sea level in the Northeast Atlantic Ocean and adjacent seas area rises at a rate of 3.2 \u00b1 0.80 mm/year with an acceleration of 0.10 \u00b1 0.06 mm/year2. This trend estimation is based on the altimeter measurements corrected from the global Topex-A instrumental drift at the beginning of the time series (Legeais et al., 2020) and regional GIA correction (Spada et Melini, 2019) to consider the ongoing movement of land. \n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00335\n\n**References:**\n\n* Cazenave, A., Dieng, H.-B., Meyssignac, B., von Schuckmann, K., Decharme, B., and Berthier, E.: The rate of sea-level rise, Nat. Clim. Change, 4, 358\u2013361, https://doi.org/10.1038/nclimate2159, 2014.\n* Chafik, L., Nilsen, J. E. \u00d8., Dangendorf, S., Reverdin, G., and Frederikse, T.: North Atlantic Ocean Circulation and Decadal Sea Level Change During the Altimetry Era, Sci. Rep., 9, 1041, https://doi.org/10.1038/s41598-018-37603-6, 2019.\n* Delworth, T. L. and Zeng, F.: The Impact of the North Atlantic Oscillation on Climate through Its Influence on the Atlantic Meridional Overturning Circulation, J. Clim., 29, 941\u2013962, https://doi.org/10.1175/JCLI-D-15-0396.1, 2016.\n* Hermans, T. H. J., Le Bars, D., Katsman, C. A., Camargo, C. M. L., Gerkema, T., Calafat, F. M., Tinker, J., and Slangen, A. B. A.: Drivers of Interannual Sea Level Variability on the Northwestern European Shelf, J. Geophys. Res. Oceans, 125, e2020JC016325, https://doi.org/10.1029/2020JC016325, 2020.\n* IPCC: Summary for Policymakers [H.-O. P\u00f6rtner, D.C. Roberts, E.S. Poloczanska, K. Mintenbeck, M. Tignor, A. Alegr\u00eda, M. Craig, S. Langsdorf, S. L\u00f6schke, V. M\u00f6ller, A. Okem (eds.)]. In: Climate Change 2022: Impacts, Adaptation, and Vulnerability. Contribution of Working Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [H.-O. P\u00f6rtner, D.C. Roberts, M. Tignor, E.S. Poloczanska, K. Mintenbeck, A. Alegr\u00eda, M. Craig, S. Langsdorf, S. L\u00f6schke, V. M\u00f6ller, A. Okem, B. Rama (eds.)], 2022a.\n* IPCC: Summary for Policymakers. In: Climate Change 2022: Mitigation of Climate Change. Contribution of Working Group III to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [P.R. Shukla, J. Skea, R. Slade, A. Al Khourdajie, R. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, M. Belkacemi, A. Hasija, G. Lisboa, S. Luz, J. Malley, (eds.)], , https://doi.org/10.1017/9781009157926.001, 2022b.\n* IPCC WGI: Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change, 2021.\n* IPCC WGII: Climate Change 2021: Impacts, Adaptation and Vulnerability; Summary for Policemakers. Contribution of Working Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change, 2021.\n* Legeais, J. F., Llowel, W., Melet, A., and Meyssignac, B.: Evidence of the TOPEX-A altimeter instrumental anomaly and acceleration of the global mean sea level, Copernic. Mar. Serv. Ocean State Rep. Issue 4, 13, s77\u2013s82, https://doi.org/10.1080/1755876X.2021.1946240, 2020.\n* Prandi, P., Meyssignac, B., Ablain, M., Spada, G., Ribes, A., and Benveniste, J.: Local sea level trends, accelerations and uncertainties over 1993\u20132019, Sci. Data, 8, 1, https://doi.org/10.1038/s41597-020-00786-7, 2021.\n* Spada, G. and Melini, D.: SELEN4 (SELEN version 4.0): a Fortran program for solving the gravitationally and topographically self-consistent sea-level equation in glacial isostatic adjustment modeling, Geosci. Model Dev., 12, 5055\u20135075, https://doi.org/10.5194/gmd-12-5055-2019, 2019.\n* Wang, J., Church, J. A., Zhang, X., and Chen, X.: Reconciling global mean and regional sea level change in projections and observations, Nat. Commun., 12, 990, https://doi.org/10.1038/s41467-021-21265-6, 2021.\n* WCRP Global Sea Level Budget Group: Global sea-level budget 1993\u2013present, Earth Syst. Sci. Data, 10, 1551\u20131590, https://doi.org/10.5194/essd-10-1551-2018, 2018.\n", "providers": [{"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00335"}, "WIND_ARC_PHY_HR_L3_NRT_012_100": {"instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": "Level 4", "keywords": "eastward-wind,level-4,northward-wind,oceanographic-geographical-features,quality-flag,quality-flag-wind-speed,status-flag,time,wind-arc-phy-hr-l3-nrt-012-100,wind-speed,wind-to-direction", "license": "proprietary", "title": "High-resolution L3 Sea Surface Wind from NRT Satellite Measurements over the Arctic Sea", "missionStartDate": "1970-01-01T00:00:00.000000Z", "abstract": "For the Arctic Ocean - The product contains daily Level-3 sea surface wind with a 1km horizontal pixel spacing using Near Real-Time Synthetic Aperture Radar (SAR) observations and their collocated European Centre for Medium-Range Weather Forecasts (ECMWF) model outputs. Products are updated several times daily to provide the best product timeliness.'\n\n**DOI (product):** \nhttps://doi.org/10.48670/mds-00330", "providers": [{"name": "CLS (France)", "roles": ["producer"]}, {"name": "Copernicus Marine Service", "roles": ["host", "processor"], "url": "https://marine.copernicus.eu"}], "doi": "10.48670/mds-00330"}}}, "creodias": null, "earth_search": {"providers_config": {"sentinel-2-pre-c1-l2a": {"productType": "sentinel-2-pre-c1-l2a"}, "cop-dem-glo-30": {"productType": "cop-dem-glo-30"}, "naip": {"productType": "naip"}, "cop-dem-glo-90": {"productType": "cop-dem-glo-90"}, "landsat-c2-l2": {"productType": "landsat-c2-l2"}, "sentinel-2-l2a": {"productType": "sentinel-2-l2a"}, "sentinel-2-l1c": {"productType": "sentinel-2-l1c"}, "sentinel-2-c1-l2a": {"productType": "sentinel-2-c1-l2a"}, "sentinel-1-grd": {"productType": "sentinel-1-grd"}}, "product_types_config": {"sentinel-2-pre-c1-l2a": {"abstract": "Sentinel-2 Pre-Collection 1 Level-2A (baseline < 05.00), with data and metadata matching collection sentinel-2-c1-l2a", "instrument": "msi", "platform": "sentinel-2", "platformSerialIdentifier": "sentinel-2a,sentinel-2b", "processingLevel": null, "keywords": "earth-observation,esa,msi,sentinel,sentinel-2,sentinel-2-pre-c1-l2a,sentinel-2a,sentinel-2b", "license": "proprietary", "title": "Sentinel-2 Pre-Collection 1 Level-2A ", "missionStartDate": "2015-06-27T10:25:31.456000Z"}, "cop-dem-glo-30": {"abstract": "The Copernicus DEM is a Digital Surface Model (DSM) which represents the surface of the Earth including buildings, infrastructure and vegetation. GLO-30 Public provides limited worldwide coverage at 30 meters because a small subset of tiles covering specific countries are not yet released to the public by the Copernicus Programme.", "instrument": null, "platform": null, "platformSerialIdentifier": "tandem-x", "processingLevel": null, "keywords": "cop-dem-glo-30,copernicus,dem,dsm,elevation,tandem-x", "license": "proprietary", "title": "Copernicus DEM GLO-30", "missionStartDate": "2021-04-22T00:00:00Z"}, "naip": {"abstract": "The [National Agriculture Imagery Program](https://www.fsa.usda.gov/programs-and-services/aerial-photography/imagery-programs/naip-imagery/) (NAIP) provides U.S.-wide, high-resolution aerial imagery, with four spectral bands (R, G, B, IR). NAIP is administered by the [Aerial Field Photography Office](https://www.fsa.usda.gov/programs-and-services/aerial-photography/) (AFPO) within the [US Department of Agriculture](https://www.usda.gov/) (USDA). Data are captured at least once every three years for each state. This dataset represents NAIP data from 2010-present, in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "aerial,afpo,agriculture,imagery,naip,united-states,usda", "license": "proprietary", "title": "NAIP: National Agriculture Imagery Program", "missionStartDate": "2010-01-01T00:00:00Z"}, "cop-dem-glo-90": {"abstract": "The Copernicus DEM is a Digital Surface Model (DSM) which represents the surface of the Earth including buildings, infrastructure and vegetation. GLO-90 provides worldwide coverage at 90 meters.", "instrument": null, "platform": null, "platformSerialIdentifier": "tandem-x", "processingLevel": null, "keywords": "cop-dem-glo-90,copernicus,dem,elevation,tandem-x", "license": "proprietary", "title": "Copernicus DEM GLO-90", "missionStartDate": "2021-04-22T00:00:00Z"}, "landsat-c2-l2": {"abstract": "Atmospherically corrected global Landsat Collection 2 Level-2 data from the Thematic Mapper (TM) onboard Landsat 4 and 5, the Enhanced Thematic Mapper Plus (ETM+) onboard Landsat 7, and the Operational Land Imager (OLI) and Thermal Infrared Sensor (TIRS) onboard Landsat 8 and 9.", "instrument": "tm,etm+,oli,tirs", "platform": null, "platformSerialIdentifier": "landsat-4,landsat-5,landsat-7,landsat-8,landsat-9", "processingLevel": null, "keywords": "etm+,global,imagery,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2-l2,nasa,oli,reflectance,satellite,temperature,tirs,tm,usgs", "license": "proprietary", "title": "Landsat Collection 2 Level-2", "missionStartDate": "1982-08-22T00:00:00Z"}, "sentinel-2-l2a": {"abstract": "Global Sentinel-2 data from the Multispectral Instrument (MSI) onboard Sentinel-2", "instrument": "msi", "platform": "sentinel-2", "platformSerialIdentifier": "sentinel-2a,sentinel-2b", "processingLevel": null, "keywords": "earth-observation,esa,msi,sentinel,sentinel-2,sentinel-2-l2a,sentinel-2a,sentinel-2b", "license": "proprietary", "title": "Sentinel-2 Level-2A", "missionStartDate": "2015-06-27T10:25:31.456000Z"}, "sentinel-2-l1c": {"abstract": "Global Sentinel-2 data from the Multispectral Instrument (MSI) onboard Sentinel-2", "instrument": "msi", "platform": "sentinel-2", "platformSerialIdentifier": "sentinel-2a,sentinel-2b", "processingLevel": null, "keywords": "earth-observation,esa,msi,sentinel,sentinel-2,sentinel-2-l1c,sentinel-2a,sentinel-2b", "license": "proprietary", "title": "Sentinel-2 Level-1C", "missionStartDate": "2015-06-27T10:25:31.456000Z"}, "sentinel-2-c1-l2a": {"abstract": "Sentinel-2 Collection 1 Level-2A, data from the Multispectral Instrument (MSI) onboard Sentinel-2", "instrument": "msi", "platform": "sentinel-2", "platformSerialIdentifier": "sentinel-2a,sentinel-2b", "processingLevel": null, "keywords": "earth-observation,esa,msi,sentinel,sentinel-2,sentinel-2-c1-l2a,sentinel-2a,sentinel-2b", "license": "proprietary", "title": "Sentinel-2 Collection 1 Level-2A", "missionStartDate": "2015-06-27T10:25:31.456000Z"}, "sentinel-1-grd": {"abstract": "Sentinel-1 is a pair of Synthetic Aperture Radar (SAR) imaging satellites launched in 2014 and 2016 by the European Space Agency (ESA). Their 6 day revisit cycle and ability to observe through clouds makes this dataset perfect for sea and land monitoring, emergency response due to environmental disasters, and economic applications. This dataset represents the global Sentinel-1 GRD archive, from beginning to the present, converted to cloud-optimized GeoTIFF format.", "instrument": null, "platform": "sentinel-1", "platformSerialIdentifier": "sentinel-1a,sentinel-1b", "processingLevel": null, "keywords": "c-band,copernicus,esa,grd,sar,sentinel,sentinel-1,sentinel-1-grd,sentinel-1a,sentinel-1b", "license": "proprietary", "title": "Sentinel-1 Level-1C Ground Range Detected (GRD)", "missionStartDate": "2014-10-10T00:28:21Z"}}}, "earth_search_cog": null, "earth_search_gcs": null, "eumetsat_ds": {"providers_config": {"EO:EUM:DAT:MSG:CLM-IODC": {"parentIdentifier": "EO:EUM:DAT:MSG:CLM-IODC"}, "EO:EUM:DAT:0394": {"parentIdentifier": "EO:EUM:DAT:0394"}, "EO:EUM:DAT:0412": {"parentIdentifier": "EO:EUM:DAT:0412"}, "EO:EUM:DAT:0237": {"parentIdentifier": "EO:EUM:DAT:0237"}, "EO:EUM:DAT:0241": {"parentIdentifier": "EO:EUM:DAT:0241"}, "EO:EUM:DAT:0857": {"parentIdentifier": "EO:EUM:DAT:0857"}, "EO:EUM:DAT:0862": {"parentIdentifier": "EO:EUM:DAT:0862"}, "EO:EUM:DAT:0882": {"parentIdentifier": "EO:EUM:DAT:0882"}, "EO:EUM:DAT:METOP:ASCSZF1B": {"parentIdentifier": "EO:EUM:DAT:METOP:ASCSZF1B"}, "EO:EUM:DAT:METOP:ASCSZR1B": {"parentIdentifier": "EO:EUM:DAT:METOP:ASCSZR1B"}, "EO:EUM:DAT:MSG:MSG15-RSS": {"parentIdentifier": "EO:EUM:DAT:MSG:MSG15-RSS"}, "EO:EUM:DAT:0855": {"parentIdentifier": "EO:EUM:DAT:0855"}, "EO:EUM:DAT:0836": {"parentIdentifier": "EO:EUM:DAT:0836"}, "EO:EUM:CM:METOP:ASCSZFR02": {"parentIdentifier": "EO:EUM:CM:METOP:ASCSZFR02"}, "EO:EUM:DAT:0081": {"parentIdentifier": "EO:EUM:DAT:0081"}, "EO:EUM:DAT:0398": {"parentIdentifier": "EO:EUM:DAT:0398"}, "EO:EUM:DAT:0405": {"parentIdentifier": "EO:EUM:DAT:0405"}, "EO:EUM:DAT:0406": {"parentIdentifier": "EO:EUM:DAT:0406"}, "EO:EUM:DAT:0410": {"parentIdentifier": "EO:EUM:DAT:0410"}, "EO:EUM:DAT:0413": {"parentIdentifier": "EO:EUM:DAT:0413"}, "EO:EUM:DAT:0415": {"parentIdentifier": "EO:EUM:DAT:0415"}, "EO:EUM:DAT:0416": {"parentIdentifier": "EO:EUM:DAT:0416"}, "EO:EUM:DAT:0239": {"parentIdentifier": "EO:EUM:DAT:0239"}, "EO:EUM:DAT:0301": {"parentIdentifier": "EO:EUM:DAT:0301"}, "EO:EUM:DAT:0617": {"parentIdentifier": "EO:EUM:DAT:0617"}, "EO:EUM:DAT:0880": {"parentIdentifier": "EO:EUM:DAT:0880"}, "EO:EUM:DAT:0856": {"parentIdentifier": "EO:EUM:DAT:0856"}, "EO:EUM:DAT:METOP:ASCSZO1B": {"parentIdentifier": "EO:EUM:DAT:METOP:ASCSZO1B"}, "EO:EUM:DAT:METOP:GOMEL1": {"parentIdentifier": "EO:EUM:DAT:METOP:GOMEL1"}, "EO:EUM:DAT:0647": {"parentIdentifier": "EO:EUM:DAT:0647"}, "EO:EUM:DAT:0851": {"parentIdentifier": "EO:EUM:DAT:0851"}, "EO:EUM:DAT:0835": {"parentIdentifier": "EO:EUM:DAT:0835"}, "EO:EUM:DAT:0833": {"parentIdentifier": "EO:EUM:DAT:0833"}, "EO:EUM:DAT:0858": {"parentIdentifier": "EO:EUM:DAT:0858"}, "EO:EUM:DAT:0859": {"parentIdentifier": "EO:EUM:DAT:0859"}, "EO:EUM:DAT:0839": {"parentIdentifier": "EO:EUM:DAT:0839"}, "EO:EUM:DAT:0841": {"parentIdentifier": "EO:EUM:DAT:0841"}, "EO:EUM:DAT:0834": {"parentIdentifier": "EO:EUM:DAT:0834"}, "EO:EUM:DAT:0142": {"parentIdentifier": "EO:EUM:DAT:0142"}, "EO:EUM:DAT:0238": {"parentIdentifier": "EO:EUM:DAT:0238"}, "EO:EUM:DAT:0374": {"parentIdentifier": "EO:EUM:DAT:0374"}, "EO:EUM:DAT:0601": {"parentIdentifier": "EO:EUM:DAT:0601"}, "EO:EUM:DAT:0556": {"parentIdentifier": "EO:EUM:DAT:0556"}, "EO:EUM:DAT:0557": {"parentIdentifier": "EO:EUM:DAT:0557"}, "EO:EUM:DAT:0576": {"parentIdentifier": "EO:EUM:DAT:0576"}, "EO:EUM:DAT:0579": {"parentIdentifier": "EO:EUM:DAT:0579"}, "EO:EUM:DAT:0581": {"parentIdentifier": "EO:EUM:DAT:0581"}, "EO:EUM:DAT:0583": {"parentIdentifier": "EO:EUM:DAT:0583"}, "EO:EUM:DAT:0300": {"parentIdentifier": "EO:EUM:DAT:0300"}, "EO:EUM:DAT:0407": {"parentIdentifier": "EO:EUM:DAT:0407"}, "EO:EUM:DAT:0411": {"parentIdentifier": "EO:EUM:DAT:0411"}, "EO:EUM:DAT:0417": {"parentIdentifier": "EO:EUM:DAT:0417"}, "EO:EUM:DAT:0082": {"parentIdentifier": "EO:EUM:DAT:0082"}, "EO:EUM:DAT:0584": {"parentIdentifier": "EO:EUM:DAT:0584"}, "EO:EUM:DAT:MULT:HIRSL1": {"parentIdentifier": "EO:EUM:DAT:MULT:HIRSL1"}, "EO:EUM:DAT:METOP:GLB-SST-NC": {"parentIdentifier": "EO:EUM:DAT:METOP:GLB-SST-NC"}, "EO:EUM:DAT:MSG:CLM": {"parentIdentifier": "EO:EUM:DAT:MSG:CLM"}, "EO:EUM:DAT:0302": {"parentIdentifier": "EO:EUM:DAT:0302"}, "EO:EUM:DAT:0236": {"parentIdentifier": "EO:EUM:DAT:0236"}, "EO:EUM:DAT:0408": {"parentIdentifier": "EO:EUM:DAT:0408"}, "EO:EUM:DAT:0409": {"parentIdentifier": "EO:EUM:DAT:0409"}, "EO:EUM:DAT:0558": {"parentIdentifier": "EO:EUM:DAT:0558"}, "EO:EUM:DAT:METOP:OSI-150-A": {"parentIdentifier": "EO:EUM:DAT:METOP:OSI-150-A"}, "EO:EUM:DAT:METOP:OSI-150-B": {"parentIdentifier": "EO:EUM:DAT:METOP:OSI-150-B"}, "EO:EUM:DAT:MSG:RSS-CLM": {"parentIdentifier": "EO:EUM:DAT:MSG:RSS-CLM"}, "EO:EUM:DAT:0615": {"parentIdentifier": "EO:EUM:DAT:0615"}, "EO:EUM:CM:METOP:ASCSZOR02": {"parentIdentifier": "EO:EUM:CM:METOP:ASCSZOR02"}, "EO:EUM:CM:METOP:ASCSZRR02": {"parentIdentifier": "EO:EUM:CM:METOP:ASCSZRR02"}, "EO:EUM:DAT:0088": {"parentIdentifier": "EO:EUM:DAT:0088"}, "EO:EUM:DAT:0143": {"parentIdentifier": "EO:EUM:DAT:0143"}, "EO:EUM:DAT:0881": {"parentIdentifier": "EO:EUM:DAT:0881"}, "EO:EUM:DAT:0853": {"parentIdentifier": "EO:EUM:DAT:0853"}, "EO:EUM:DAT:0854": {"parentIdentifier": "EO:EUM:DAT:0854"}, "EO:EUM:DAT:METOP:IASIL1C-ALL": {"parentIdentifier": "EO:EUM:DAT:METOP:IASIL1C-ALL"}, "EO:EUM:DAT:METOP:IASSND02": {"parentIdentifier": "EO:EUM:DAT:METOP:IASSND02"}, "EO:EUM:DAT:0837": {"parentIdentifier": "EO:EUM:DAT:0837"}, "EO:EUM:DAT:0838": {"parentIdentifier": "EO:EUM:DAT:0838"}, "EO:EUM:DAT:0840": {"parentIdentifier": "EO:EUM:DAT:0840"}, "EO:EUM:DAT:0585": {"parentIdentifier": "EO:EUM:DAT:0585"}, "EO:EUM:DAT:0758": {"parentIdentifier": "EO:EUM:DAT:0758"}, "EO:EUM:DAT:0080": {"parentIdentifier": "EO:EUM:DAT:0080"}, "EO:EUM:DAT:0240": {"parentIdentifier": "EO:EUM:DAT:0240"}, "EO:EUM:DAT:MSG:HRSEVIRI": {"parentIdentifier": "EO:EUM:DAT:MSG:HRSEVIRI"}, "EO:EUM:DAT:METOP:MHSL1": {"parentIdentifier": "EO:EUM:DAT:METOP:MHSL1"}, "EO:EUM:DAT:MSG:HRSEVIRI-IODC": {"parentIdentifier": "EO:EUM:DAT:MSG:HRSEVIRI-IODC"}, "EO:EUM:DAT:0850": {"parentIdentifier": "EO:EUM:DAT:0850"}, "EO:EUM:DAT:0852": {"parentIdentifier": "EO:EUM:DAT:0852"}, "EO:EUM:DAT:0842": {"parentIdentifier": "EO:EUM:DAT:0842"}, "EO:EUM:DAT:METOP:LSA-002": {"parentIdentifier": "EO:EUM:DAT:METOP:LSA-002"}, "EO:EUM:DAT:METOP:OSI-104": {"parentIdentifier": "EO:EUM:DAT:METOP:OSI-104"}, "EO:EUM:DAT:METOP:SOMO12": {"parentIdentifier": "EO:EUM:DAT:METOP:SOMO12"}, "EO:EUM:DAT:METOP:SOMO25": {"parentIdentifier": "EO:EUM:DAT:METOP:SOMO25"}, "EO:EUM:DAT:DMSP:OSI-401-B": {"parentIdentifier": "EO:EUM:DAT:DMSP:OSI-401-B"}, "EO:EUM:DAT:0414": {"parentIdentifier": "EO:EUM:DAT:0414"}, "EO:EUM:DAT:0577": {"parentIdentifier": "EO:EUM:DAT:0577"}, "EO:EUM:DAT:0578": {"parentIdentifier": "EO:EUM:DAT:0578"}, "EO:EUM:DAT:0582": {"parentIdentifier": "EO:EUM:DAT:0582"}, "EO:EUM:DAT:0586": {"parentIdentifier": "EO:EUM:DAT:0586"}, "EO:EUM:DAT:0533": {"parentIdentifier": "EO:EUM:DAT:0533"}, "EO:EUM:DAT:0645": {"parentIdentifier": "EO:EUM:DAT:0645"}, "EO:EUM:DAT:METOP:AMSUL1": {"parentIdentifier": "EO:EUM:DAT:METOP:AMSUL1"}, "EO:EUM:DAT:METOP:AVHRRL1": {"parentIdentifier": "EO:EUM:DAT:METOP:AVHRRL1"}, "EO:EUM:DAT:0274": {"parentIdentifier": "EO:EUM:DAT:0274"}}, "product_types_config": {"EO:EUM:DAT:MSG:CLM-IODC": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:msg:clm-iodc", "license": null, "title": "EO:EUM:DAT:MSG:CLM-IODC", "missionStartDate": null}, "EO:EUM:DAT:0394": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0394", "license": null, "title": "EO:EUM:DAT:0394", "missionStartDate": null}, "EO:EUM:DAT:0412": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0412", "license": null, "title": "EO:EUM:DAT:0412", "missionStartDate": null}, "EO:EUM:DAT:0237": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0237", "license": null, "title": "EO:EUM:DAT:0237", "missionStartDate": null}, "EO:EUM:DAT:0241": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0241", "license": null, "title": "EO:EUM:DAT:0241", "missionStartDate": null}, "EO:EUM:DAT:0857": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0857", "license": null, "title": "EO:EUM:DAT:0857", "missionStartDate": null}, "EO:EUM:DAT:0862": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0862", "license": null, "title": "EO:EUM:DAT:0862", "missionStartDate": null}, "EO:EUM:DAT:0882": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0882", "license": null, "title": "EO:EUM:DAT:0882", "missionStartDate": null}, "EO:EUM:DAT:METOP:ASCSZF1B": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:metop:ascszf1b", "license": null, "title": "EO:EUM:DAT:METOP:ASCSZF1B", "missionStartDate": null}, "EO:EUM:DAT:METOP:ASCSZR1B": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:metop:ascszr1b", "license": null, "title": "EO:EUM:DAT:METOP:ASCSZR1B", "missionStartDate": null}, "EO:EUM:DAT:MSG:MSG15-RSS": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:msg:msg15-rss", "license": null, "title": "EO:EUM:DAT:MSG:MSG15-RSS", "missionStartDate": null}, "EO:EUM:DAT:0855": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0855", "license": null, "title": "EO:EUM:DAT:0855", "missionStartDate": null}, "EO:EUM:DAT:0836": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0836", "license": null, "title": "EO:EUM:DAT:0836", "missionStartDate": null}, "EO:EUM:CM:METOP:ASCSZFR02": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:cm:metop:ascszfr02", "license": null, "title": "EO:EUM:CM:METOP:ASCSZFR02", "missionStartDate": null}, "EO:EUM:DAT:0081": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0081", "license": null, "title": "EO:EUM:DAT:0081", "missionStartDate": null}, "EO:EUM:DAT:0398": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0398", "license": null, "title": "EO:EUM:DAT:0398", "missionStartDate": null}, "EO:EUM:DAT:0405": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0405", "license": null, "title": "EO:EUM:DAT:0405", "missionStartDate": null}, "EO:EUM:DAT:0406": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0406", "license": null, "title": "EO:EUM:DAT:0406", "missionStartDate": null}, "EO:EUM:DAT:0410": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0410", "license": null, "title": "EO:EUM:DAT:0410", "missionStartDate": null}, "EO:EUM:DAT:0413": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0413", "license": null, "title": "EO:EUM:DAT:0413", "missionStartDate": null}, "EO:EUM:DAT:0415": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0415", "license": null, "title": "EO:EUM:DAT:0415", "missionStartDate": null}, "EO:EUM:DAT:0416": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0416", "license": null, "title": "EO:EUM:DAT:0416", "missionStartDate": null}, "EO:EUM:DAT:0239": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0239", "license": null, "title": "EO:EUM:DAT:0239", "missionStartDate": null}, "EO:EUM:DAT:0301": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0301", "license": null, "title": "EO:EUM:DAT:0301", "missionStartDate": null}, "EO:EUM:DAT:0617": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0617", "license": null, "title": "EO:EUM:DAT:0617", "missionStartDate": null}, "EO:EUM:DAT:0880": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0880", "license": null, "title": "EO:EUM:DAT:0880", "missionStartDate": null}, "EO:EUM:DAT:0856": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0856", "license": null, "title": "EO:EUM:DAT:0856", "missionStartDate": null}, "EO:EUM:DAT:METOP:ASCSZO1B": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:metop:ascszo1b", "license": null, "title": "EO:EUM:DAT:METOP:ASCSZO1B", "missionStartDate": null}, "EO:EUM:DAT:METOP:GOMEL1": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:metop:gomel1", "license": null, "title": "EO:EUM:DAT:METOP:GOMEL1", "missionStartDate": null}, "EO:EUM:DAT:0647": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0647", "license": null, "title": "EO:EUM:DAT:0647", "missionStartDate": null}, "EO:EUM:DAT:0851": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0851", "license": null, "title": "EO:EUM:DAT:0851", "missionStartDate": null}, "EO:EUM:DAT:0835": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0835", "license": null, "title": "EO:EUM:DAT:0835", "missionStartDate": null}, "EO:EUM:DAT:0833": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0833", "license": null, "title": "EO:EUM:DAT:0833", "missionStartDate": null}, "EO:EUM:DAT:0858": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0858", "license": null, "title": "EO:EUM:DAT:0858", "missionStartDate": null}, "EO:EUM:DAT:0859": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0859", "license": null, "title": "EO:EUM:DAT:0859", "missionStartDate": null}, "EO:EUM:DAT:0839": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0839", "license": null, "title": "EO:EUM:DAT:0839", "missionStartDate": null}, "EO:EUM:DAT:0841": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0841", "license": null, "title": "EO:EUM:DAT:0841", "missionStartDate": null}, "EO:EUM:DAT:0834": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0834", "license": null, "title": "EO:EUM:DAT:0834", "missionStartDate": null}, "EO:EUM:DAT:0142": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0142", "license": null, "title": "EO:EUM:DAT:0142", "missionStartDate": null}, "EO:EUM:DAT:0238": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0238", "license": null, "title": "EO:EUM:DAT:0238", "missionStartDate": null}, "EO:EUM:DAT:0374": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0374", "license": null, "title": "EO:EUM:DAT:0374", "missionStartDate": null}, "EO:EUM:DAT:0601": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0601", "license": null, "title": "EO:EUM:DAT:0601", "missionStartDate": null}, "EO:EUM:DAT:0556": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0556", "license": null, "title": "EO:EUM:DAT:0556", "missionStartDate": null}, "EO:EUM:DAT:0557": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0557", "license": null, "title": "EO:EUM:DAT:0557", "missionStartDate": null}, "EO:EUM:DAT:0576": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0576", "license": null, "title": "EO:EUM:DAT:0576", "missionStartDate": null}, "EO:EUM:DAT:0579": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0579", "license": null, "title": "EO:EUM:DAT:0579", "missionStartDate": null}, "EO:EUM:DAT:0581": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0581", "license": null, "title": "EO:EUM:DAT:0581", "missionStartDate": null}, "EO:EUM:DAT:0583": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0583", "license": null, "title": "EO:EUM:DAT:0583", "missionStartDate": null}, "EO:EUM:DAT:0300": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0300", "license": null, "title": "EO:EUM:DAT:0300", "missionStartDate": null}, "EO:EUM:DAT:0407": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0407", "license": null, "title": "EO:EUM:DAT:0407", "missionStartDate": null}, "EO:EUM:DAT:0411": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0411", "license": null, "title": "EO:EUM:DAT:0411", "missionStartDate": null}, "EO:EUM:DAT:0417": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0417", "license": null, "title": "EO:EUM:DAT:0417", "missionStartDate": null}, "EO:EUM:DAT:0082": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0082", "license": null, "title": "EO:EUM:DAT:0082", "missionStartDate": null}, "EO:EUM:DAT:0584": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0584", "license": null, "title": "EO:EUM:DAT:0584", "missionStartDate": null}, "EO:EUM:DAT:MULT:HIRSL1": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:mult:hirsl1", "license": null, "title": "EO:EUM:DAT:MULT:HIRSL1", "missionStartDate": null}, "EO:EUM:DAT:METOP:GLB-SST-NC": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:metop:glb-sst-nc", "license": null, "title": "EO:EUM:DAT:METOP:GLB-SST-NC", "missionStartDate": null}, "EO:EUM:DAT:MSG:CLM": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:msg:clm", "license": null, "title": "EO:EUM:DAT:MSG:CLM", "missionStartDate": null}, "EO:EUM:DAT:0302": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0302", "license": null, "title": "EO:EUM:DAT:0302", "missionStartDate": null}, "EO:EUM:DAT:0236": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0236", "license": null, "title": "EO:EUM:DAT:0236", "missionStartDate": null}, "EO:EUM:DAT:0408": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0408", "license": null, "title": "EO:EUM:DAT:0408", "missionStartDate": null}, "EO:EUM:DAT:0409": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0409", "license": null, "title": "EO:EUM:DAT:0409", "missionStartDate": null}, "EO:EUM:DAT:0558": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0558", "license": null, "title": "EO:EUM:DAT:0558", "missionStartDate": null}, "EO:EUM:DAT:METOP:OSI-150-A": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:metop:osi-150-a", "license": null, "title": "EO:EUM:DAT:METOP:OSI-150-A", "missionStartDate": null}, "EO:EUM:DAT:METOP:OSI-150-B": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:metop:osi-150-b", "license": null, "title": "EO:EUM:DAT:METOP:OSI-150-B", "missionStartDate": null}, "EO:EUM:DAT:MSG:RSS-CLM": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:msg:rss-clm", "license": null, "title": "EO:EUM:DAT:MSG:RSS-CLM", "missionStartDate": null}, "EO:EUM:DAT:0615": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0615", "license": null, "title": "EO:EUM:DAT:0615", "missionStartDate": null}, "EO:EUM:CM:METOP:ASCSZOR02": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:cm:metop:ascszor02", "license": null, "title": "EO:EUM:CM:METOP:ASCSZOR02", "missionStartDate": null}, "EO:EUM:CM:METOP:ASCSZRR02": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:cm:metop:ascszrr02", "license": null, "title": "EO:EUM:CM:METOP:ASCSZRR02", "missionStartDate": null}, "EO:EUM:DAT:0088": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0088", "license": null, "title": "EO:EUM:DAT:0088", "missionStartDate": null}, "EO:EUM:DAT:0143": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0143", "license": null, "title": "EO:EUM:DAT:0143", "missionStartDate": null}, "EO:EUM:DAT:0881": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0881", "license": null, "title": "EO:EUM:DAT:0881", "missionStartDate": null}, "EO:EUM:DAT:0853": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0853", "license": null, "title": "EO:EUM:DAT:0853", "missionStartDate": null}, "EO:EUM:DAT:0854": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0854", "license": null, "title": "EO:EUM:DAT:0854", "missionStartDate": null}, "EO:EUM:DAT:METOP:IASIL1C-ALL": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:metop:iasil1c-all", "license": null, "title": "EO:EUM:DAT:METOP:IASIL1C-ALL", "missionStartDate": null}, "EO:EUM:DAT:METOP:IASSND02": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:metop:iassnd02", "license": null, "title": "EO:EUM:DAT:METOP:IASSND02", "missionStartDate": null}, "EO:EUM:DAT:0837": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0837", "license": null, "title": "EO:EUM:DAT:0837", "missionStartDate": null}, "EO:EUM:DAT:0838": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0838", "license": null, "title": "EO:EUM:DAT:0838", "missionStartDate": null}, "EO:EUM:DAT:0840": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0840", "license": null, "title": "EO:EUM:DAT:0840", "missionStartDate": null}, "EO:EUM:DAT:0585": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0585", "license": null, "title": "EO:EUM:DAT:0585", "missionStartDate": null}, "EO:EUM:DAT:0758": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0758", "license": null, "title": "EO:EUM:DAT:0758", "missionStartDate": null}, "EO:EUM:DAT:0080": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0080", "license": null, "title": "EO:EUM:DAT:0080", "missionStartDate": null}, "EO:EUM:DAT:0240": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0240", "license": null, "title": "EO:EUM:DAT:0240", "missionStartDate": null}, "EO:EUM:DAT:MSG:HRSEVIRI": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:msg:hrseviri", "license": null, "title": "EO:EUM:DAT:MSG:HRSEVIRI", "missionStartDate": null}, "EO:EUM:DAT:METOP:MHSL1": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:metop:mhsl1", "license": null, "title": "EO:EUM:DAT:METOP:MHSL1", "missionStartDate": null}, "EO:EUM:DAT:MSG:HRSEVIRI-IODC": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:msg:hrseviri-iodc", "license": null, "title": "EO:EUM:DAT:MSG:HRSEVIRI-IODC", "missionStartDate": null}, "EO:EUM:DAT:0850": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0850", "license": null, "title": "EO:EUM:DAT:0850", "missionStartDate": null}, "EO:EUM:DAT:0852": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0852", "license": null, "title": "EO:EUM:DAT:0852", "missionStartDate": null}, "EO:EUM:DAT:0842": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0842", "license": null, "title": "EO:EUM:DAT:0842", "missionStartDate": null}, "EO:EUM:DAT:METOP:LSA-002": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:metop:lsa-002", "license": null, "title": "EO:EUM:DAT:METOP:LSA-002", "missionStartDate": null}, "EO:EUM:DAT:METOP:OSI-104": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:metop:osi-104", "license": null, "title": "EO:EUM:DAT:METOP:OSI-104", "missionStartDate": null}, "EO:EUM:DAT:METOP:SOMO12": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:metop:somo12", "license": null, "title": "EO:EUM:DAT:METOP:SOMO12", "missionStartDate": null}, "EO:EUM:DAT:METOP:SOMO25": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:metop:somo25", "license": null, "title": "EO:EUM:DAT:METOP:SOMO25", "missionStartDate": null}, "EO:EUM:DAT:DMSP:OSI-401-B": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:dmsp:osi-401-b", "license": null, "title": "EO:EUM:DAT:DMSP:OSI-401-B", "missionStartDate": null}, "EO:EUM:DAT:0414": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0414", "license": null, "title": "EO:EUM:DAT:0414", "missionStartDate": null}, "EO:EUM:DAT:0577": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0577", "license": null, "title": "EO:EUM:DAT:0577", "missionStartDate": null}, "EO:EUM:DAT:0578": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0578", "license": null, "title": "EO:EUM:DAT:0578", "missionStartDate": null}, "EO:EUM:DAT:0582": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0582", "license": null, "title": "EO:EUM:DAT:0582", "missionStartDate": null}, "EO:EUM:DAT:0586": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0586", "license": null, "title": "EO:EUM:DAT:0586", "missionStartDate": null}, "EO:EUM:DAT:0533": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0533", "license": null, "title": "EO:EUM:DAT:0533", "missionStartDate": null}, "EO:EUM:DAT:0645": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0645", "license": null, "title": "EO:EUM:DAT:0645", "missionStartDate": null}, "EO:EUM:DAT:METOP:AMSUL1": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:metop:amsul1", "license": null, "title": "EO:EUM:DAT:METOP:AMSUL1", "missionStartDate": null}, "EO:EUM:DAT:METOP:AVHRRL1": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:metop:avhrrl1", "license": null, "title": "EO:EUM:DAT:METOP:AVHRRL1", "missionStartDate": null}, "EO:EUM:DAT:0274": {"abstract": null, "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "eo:eum:dat:0274", "license": null, "title": "EO:EUM:DAT:0274", "missionStartDate": null}}}, "planetary_computer": {"providers_config": {"daymet-annual-pr": {"productType": "daymet-annual-pr"}, "daymet-daily-hi": {"productType": "daymet-daily-hi"}, "3dep-seamless": {"productType": "3dep-seamless"}, "3dep-lidar-dsm": {"productType": "3dep-lidar-dsm"}, "fia": {"productType": "fia"}, "sentinel-1-rtc": {"productType": "sentinel-1-rtc"}, "gridmet": {"productType": "gridmet"}, "daymet-annual-na": {"productType": "daymet-annual-na"}, "daymet-monthly-na": {"productType": "daymet-monthly-na"}, "daymet-annual-hi": {"productType": "daymet-annual-hi"}, "daymet-monthly-hi": {"productType": "daymet-monthly-hi"}, "daymet-monthly-pr": {"productType": "daymet-monthly-pr"}, "gnatsgo-tables": {"productType": "gnatsgo-tables"}, "hgb": {"productType": "hgb"}, "cop-dem-glo-30": {"productType": "cop-dem-glo-30"}, "cop-dem-glo-90": {"productType": "cop-dem-glo-90"}, "goes-cmi": {"productType": "goes-cmi"}, "terraclimate": {"productType": "terraclimate"}, "nasa-nex-gddp-cmip6": {"productType": "nasa-nex-gddp-cmip6"}, "gpm-imerg-hhr": {"productType": "gpm-imerg-hhr"}, "gnatsgo-rasters": {"productType": "gnatsgo-rasters"}, "3dep-lidar-hag": {"productType": "3dep-lidar-hag"}, "io-lulc-annual-v02": {"productType": "io-lulc-annual-v02"}, "3dep-lidar-intensity": {"productType": "3dep-lidar-intensity"}, "3dep-lidar-pointsourceid": {"productType": "3dep-lidar-pointsourceid"}, "mtbs": {"productType": "mtbs"}, "noaa-c-cap": {"productType": "noaa-c-cap"}, "3dep-lidar-copc": {"productType": "3dep-lidar-copc"}, "modis-64A1-061": {"productType": "modis-64A1-061"}, "alos-fnf-mosaic": {"productType": "alos-fnf-mosaic"}, "3dep-lidar-returns": {"productType": "3dep-lidar-returns"}, "mobi": {"productType": "mobi"}, "landsat-c2-l2": {"productType": "landsat-c2-l2"}, "era5-pds": {"productType": "era5-pds"}, "chloris-biomass": {"productType": "chloris-biomass"}, "kaza-hydroforecast": {"productType": "kaza-hydroforecast"}, "planet-nicfi-analytic": {"productType": "planet-nicfi-analytic"}, "modis-17A2H-061": {"productType": "modis-17A2H-061"}, "modis-11A2-061": {"productType": "modis-11A2-061"}, "daymet-daily-pr": {"productType": "daymet-daily-pr"}, "3dep-lidar-dtm-native": {"productType": "3dep-lidar-dtm-native"}, "3dep-lidar-classification": {"productType": "3dep-lidar-classification"}, "3dep-lidar-dtm": {"productType": "3dep-lidar-dtm"}, "gap": {"productType": "gap"}, "modis-17A2HGF-061": {"productType": "modis-17A2HGF-061"}, "planet-nicfi-visual": {"productType": "planet-nicfi-visual"}, "gbif": {"productType": "gbif"}, "modis-17A3HGF-061": {"productType": "modis-17A3HGF-061"}, "modis-09A1-061": {"productType": "modis-09A1-061"}, "alos-dem": {"productType": "alos-dem"}, "alos-palsar-mosaic": {"productType": "alos-palsar-mosaic"}, "deltares-water-availability": {"productType": "deltares-water-availability"}, "modis-16A3GF-061": {"productType": "modis-16A3GF-061"}, "modis-21A2-061": {"productType": "modis-21A2-061"}, "us-census": {"productType": "us-census"}, "jrc-gsw": {"productType": "jrc-gsw"}, "deltares-floods": {"productType": "deltares-floods"}, "modis-43A4-061": {"productType": "modis-43A4-061"}, "modis-09Q1-061": {"productType": "modis-09Q1-061"}, "modis-14A1-061": {"productType": "modis-14A1-061"}, "hrea": {"productType": "hrea"}, "modis-13Q1-061": {"productType": "modis-13Q1-061"}, "modis-14A2-061": {"productType": "modis-14A2-061"}, "sentinel-2-l2a": {"productType": "sentinel-2-l2a"}, "modis-15A2H-061": {"productType": "modis-15A2H-061"}, "modis-11A1-061": {"productType": "modis-11A1-061"}, "modis-15A3H-061": {"productType": "modis-15A3H-061"}, "ecmwf-forecast": {"productType": "ecmwf-forecast"}, "modis-13A1-061": {"productType": "modis-13A1-061"}, "daymet-daily-na": {"productType": "daymet-daily-na"}, "nrcan-landcover": {"productType": "nrcan-landcover"}, "modis-10A2-061": {"productType": "modis-10A2-061"}, "noaa-mrms-qpe-24h-pass2": {"productType": "noaa-mrms-qpe-24h-pass2"}, "sentinel-1-grd": {"productType": "sentinel-1-grd"}, "nasadem": {"productType": "nasadem"}, "io-lulc": {"productType": "io-lulc"}, "landsat-c2-l1": {"productType": "landsat-c2-l1"}, "drcog-lulc": {"productType": "drcog-lulc"}, "chesapeake-lc-7": {"productType": "chesapeake-lc-7"}, "chesapeake-lc-13": {"productType": "chesapeake-lc-13"}, "chesapeake-lu": {"productType": "chesapeake-lu"}, "noaa-mrms-qpe-1h-pass1": {"productType": "noaa-mrms-qpe-1h-pass1"}, "noaa-mrms-qpe-1h-pass2": {"productType": "noaa-mrms-qpe-1h-pass2"}, "noaa-nclimgrid-monthly": {"productType": "noaa-nclimgrid-monthly"}, "goes-glm": {"productType": "goes-glm"}, "usda-cdl": {"productType": "usda-cdl"}, "eclipse": {"productType": "eclipse"}, "esa-cci-lc": {"productType": "esa-cci-lc"}, "esa-cci-lc-netcdf": {"productType": "esa-cci-lc-netcdf"}, "fws-nwi": {"productType": "fws-nwi"}, "usgs-lcmap-conus-v13": {"productType": "usgs-lcmap-conus-v13"}, "usgs-lcmap-hawaii-v10": {"productType": "usgs-lcmap-hawaii-v10"}, "noaa-climate-normals-tabular": {"productType": "noaa-climate-normals-tabular"}, "noaa-climate-normals-netcdf": {"productType": "noaa-climate-normals-netcdf"}, "noaa-climate-normals-gridded": {"productType": "noaa-climate-normals-gridded"}, "aster-l1t": {"productType": "aster-l1t"}, "cil-gdpcir-cc-by-sa": {"productType": "cil-gdpcir-cc-by-sa"}, "naip": {"productType": "naip"}, "io-lulc-9-class": {"productType": "io-lulc-9-class"}, "io-biodiversity": {"productType": "io-biodiversity"}, "noaa-cdr-sea-surface-temperature-whoi": {"productType": "noaa-cdr-sea-surface-temperature-whoi"}, "noaa-cdr-ocean-heat-content": {"productType": "noaa-cdr-ocean-heat-content"}, "cil-gdpcir-cc0": {"productType": "cil-gdpcir-cc0"}, "cil-gdpcir-cc-by": {"productType": "cil-gdpcir-cc-by"}, "noaa-cdr-sea-surface-temperature-whoi-netcdf": {"productType": "noaa-cdr-sea-surface-temperature-whoi-netcdf"}, "noaa-cdr-sea-surface-temperature-optimum-interpolation": {"productType": "noaa-cdr-sea-surface-temperature-optimum-interpolation"}, "modis-10A1-061": {"productType": "modis-10A1-061"}, "sentinel-5p-l2-netcdf": {"productType": "sentinel-5p-l2-netcdf"}, "sentinel-3-olci-wfr-l2-netcdf": {"productType": "sentinel-3-olci-wfr-l2-netcdf"}, "noaa-cdr-ocean-heat-content-netcdf": {"productType": "noaa-cdr-ocean-heat-content-netcdf"}, "sentinel-3-synergy-aod-l2-netcdf": {"productType": "sentinel-3-synergy-aod-l2-netcdf"}, "sentinel-3-synergy-v10-l2-netcdf": {"productType": "sentinel-3-synergy-v10-l2-netcdf"}, "sentinel-3-olci-lfr-l2-netcdf": {"productType": "sentinel-3-olci-lfr-l2-netcdf"}, "sentinel-3-sral-lan-l2-netcdf": {"productType": "sentinel-3-sral-lan-l2-netcdf"}, "sentinel-3-slstr-lst-l2-netcdf": {"productType": "sentinel-3-slstr-lst-l2-netcdf"}, "sentinel-3-slstr-wst-l2-netcdf": {"productType": "sentinel-3-slstr-wst-l2-netcdf"}, "sentinel-3-sral-wat-l2-netcdf": {"productType": "sentinel-3-sral-wat-l2-netcdf"}, "ms-buildings": {"productType": "ms-buildings"}, "sentinel-3-slstr-frp-l2-netcdf": {"productType": "sentinel-3-slstr-frp-l2-netcdf"}, "sentinel-3-synergy-syn-l2-netcdf": {"productType": "sentinel-3-synergy-syn-l2-netcdf"}, "sentinel-3-synergy-vgp-l2-netcdf": {"productType": "sentinel-3-synergy-vgp-l2-netcdf"}, "sentinel-3-synergy-vg1-l2-netcdf": {"productType": "sentinel-3-synergy-vg1-l2-netcdf"}, "esa-worldcover": {"productType": "esa-worldcover"}}, "product_types_config": {"daymet-annual-pr": {"abstract": "Annual climate summaries derived from [Daymet](https://daymet.ornl.gov) Version 4 daily data at a 1 km x 1 km spatial resolution for five variables: minimum and maximum temperature, precipitation, vapor pressure, and snow water equivalent. Annual averages are provided for minimum and maximum temperature, vapor pressure, and snow water equivalent, and annual totals are provided for the precipitation variable.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1852](https://doi.org/10.3334/ORNLDAAC/1852) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#annual). \n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,daymet,daymet-annual-pr,precipitation,puerto-rico,temperature,vapor-pressure", "license": "proprietary", "title": "Daymet Annual Puerto Rico", "missionStartDate": "1980-07-01T12:00:00Z"}, "daymet-daily-hi": {"abstract": "Gridded estimates of daily weather parameters. [Daymet](https://daymet.ornl.gov) Version 4 variables include the following parameters: minimum temperature, maximum temperature, precipitation, shortwave radiation, vapor pressure, snow water equivalent, and day length.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1840](https://doi.org/10.3334/ORNLDAAC/1840) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#daily).\n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "daymet,daymet-daily-hi,hawaii,precipitation,temperature,vapor-pressure,weather", "license": "proprietary", "title": "Daymet Daily Hawaii", "missionStartDate": "1980-01-01T12:00:00Z"}, "3dep-seamless": {"abstract": "U.S.-wide digital elevation data at horizontal resolutions ranging from one to sixty meters.\n\nThe [USGS 3D Elevation Program (3DEP) Datasets](https://www.usgs.gov/core-science-systems/ngp/3dep) from the [National Map](https://www.usgs.gov/core-science-systems/national-geospatial-program/national-map) are the primary elevation data product produced and distributed by the USGS. The 3DEP program provides raster elevation data for the conterminous United States, Alaska, Hawaii, and the island territories, at a variety of spatial resolutions. The seamless DEM layers produced by the 3DEP program are updated frequently to integrate newly available, improved elevation source data. \n\nDEM layers are available nationally at grid spacings of 1 arc-second (approximately 30 meters) for the conterminous United States, and at approximately 1, 3, and 9 meters for parts of the United States. Most seamless DEM data for Alaska is available at a resolution of approximately 60 meters, where only lower resolution source data exist.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-seamless,dem,elevation,ned,usgs", "license": "PDDL-1.0", "title": "USGS 3DEP Seamless DEMs", "missionStartDate": "1925-01-01T00:00:00Z"}, "3dep-lidar-dsm": {"abstract": "This collection is derived from the [USGS 3DEP COPC collection](https://planetarycomputer.microsoft.com/dataset/3dep-lidar-copc). It creates a Digital Surface Model (DSM) using [`pdal.filters.range`](https://pdal.io/stages/filters.range.html#filters-range) to output a collection of Cloud Optimized GeoTIFFs, removing all points that have been classified as noise.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-dsm,cog,dsm,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Digital Surface Model", "missionStartDate": "2012-01-01T00:00:00Z"}, "fia": {"abstract": "Status and trends on U.S. forest location, health, growth, mortality, and production, from the U.S. Forest Service's [Forest Inventory and Analysis](https://www.fia.fs.fed.us/) (FIA) program.\n\nThe Forest Inventory and Analysis (FIA) dataset is a nationwide survey of the forest assets of the United States. The FIA research program has been in existence since 1928. FIA's primary objective is to determine the extent, condition, volume, growth, and use of trees on the nation's forest land.\n\nDomain: continental U.S., 1928-2018\n\nResolution: plot-level (irregular polygon)\n\nThis dataset was curated and brought to Azure by [CarbonPlan](https://carbonplan.org/).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "biomass,carbon,fia,forest,forest-service,species,usda", "license": "CC0-1.0", "title": "Forest Inventory and Analysis", "missionStartDate": "2020-06-01T00:00:00Z"}, "sentinel-1-rtc": {"abstract": "The [Sentinel-1](https://sentinel.esa.int/web/sentinel/missions/sentinel-1) mission is a constellation of two polar-orbiting satellites, operating day and night performing C-band synthetic aperture radar imaging. The Sentinel-1 Radiometrically Terrain Corrected (RTC) data in this collection is a radiometrically terrain corrected product derived from the [Ground Range Detected (GRD) Level-1](https://planetarycomputer.microsoft.com/dataset/sentinel-1-grd) products produced by the European Space Agency. The RTC processing is performed by [Catalyst](https://catalyst.earth/).\n\nRadiometric Terrain Correction accounts for terrain variations that affect both the position of a given point on the Earth's surface and the brightness of the radar return, as expressed in radar geometry. Without treatment, the hill-slope modulations of the radiometry threaten to overwhelm weaker thematic land cover-induced backscatter differences. Additionally, comparison of backscatter from multiple satellites, modes, or tracks loses meaning.\n\nA Planetary Computer account is required to retrieve SAS tokens to read the RTC data. See the [documentation](http://planetarycomputer.microsoft.com/docs/concepts/sas/#when-an-account-is-needed) for more information.\n\n### Methodology\n\nThe Sentinel-1 GRD product is converted to calibrated intensity using the conversion algorithm described in the ESA technical note ESA-EOPG-CSCOP-TN-0002, [Radiometric Calibration of S-1 Level-1 Products Generated by the S-1 IPF](https://ai4edatasetspublicassets.blob.core.windows.net/assets/pdfs/sentinel-1/S1-Radiometric-Calibration-V1.0.pdf). The flat earth calibration values for gamma correction (i.e. perpendicular to the radar line of sight) are extracted from the GRD metadata. The calibration coefficients are applied as a two-dimensional correction in range (by sample number) and azimuth (by time). All available polarizations are calibrated and written as separate layers of a single file. The calibrated SAR output is reprojected to nominal map orientation with north at the top and west to the left.\n\nThe data is then radiometrically terrain corrected using PlanetDEM as the elevation source. The correction algorithm is nominally based upon D. Small, [\u201cFlattening Gamma: Radiometric Terrain Correction for SAR Imagery\u201d](https://ai4edatasetspublicassets.blob.core.windows.net/assets/pdfs/sentinel-1/2011_Flattening_Gamma.pdf), IEEE Transactions on Geoscience and Remote Sensing, Vol 49, No 8., August 2011, pp 3081-3093. For each image scan line, the digital elevation model is interpolated to determine the elevation corresponding to the position associated with the known near slant range distance and arc length for each input pixel. The elevations at the four corners of each pixel are estimated using bilinear resampling. The four elevations are divided into two triangular facets and reprojected onto the plane perpendicular to the radar line of sight to provide an estimate of the area illuminated by the radar for each earth flattened pixel. The uncalibrated sum at each earth flattened pixel is normalized by dividing by the flat earth surface area. The adjustment for gamma intensity is given by dividing the normalized result by the cosine of the incident angle. Pixels which are not illuminated by the radar due to the viewing geometry are flagged as shadow.\n\nCalibrated data is then orthorectified to the appropriate UTM projection. The orthorectified output maintains the original sample sizes (in range and azimuth) and was not shifted to any specific grid.\n\nRTC data is processed only for the Interferometric Wide Swath (IW) mode, which is the main acquisition mode over land and satisfies the majority of service requirements.\n", "instrument": null, "platform": "Sentinel-1", "platformSerialIdentifier": "SENTINEL-1A,SENTINEL-1B", "processingLevel": null, "keywords": "c-band,copernicus,esa,rtc,sar,sentinel,sentinel-1,sentinel-1-rtc,sentinel-1a,sentinel-1b", "license": "CC-BY-4.0", "title": "Sentinel 1 Radiometrically Terrain Corrected (RTC)", "missionStartDate": "2014-10-10T00:28:21Z"}, "gridmet": {"abstract": "gridMET is a dataset of daily surface meteorological data at approximately four-kilometer resolution, covering the contiguous U.S. from 1979 to the present. These data can provide important inputs for ecological, agricultural, and hydrological models.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,gridmet,precipitation,temperature,vapor-pressure,water", "license": "CC0-1.0", "title": "gridMET", "missionStartDate": "1979-01-01T00:00:00Z"}, "daymet-annual-na": {"abstract": "Annual climate summaries derived from [Daymet](https://daymet.ornl.gov) Version 4 daily data at a 1 km x 1 km spatial resolution for five variables: minimum and maximum temperature, precipitation, vapor pressure, and snow water equivalent. Annual averages are provided for minimum and maximum temperature, vapor pressure, and snow water equivalent, and annual totals are provided for the precipitation variable.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1852](https://doi.org/10.3334/ORNLDAAC/1852) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#annual). \n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,daymet,daymet-annual-na,north-america,precipitation,temperature,vapor-pressure", "license": "proprietary", "title": "Daymet Annual North America", "missionStartDate": "1980-07-01T12:00:00Z"}, "daymet-monthly-na": {"abstract": "Monthly climate summaries derived from [Daymet](https://daymet.ornl.gov) Version 4 daily data at a 1 km x 1 km spatial resolution for five variables: minimum and maximum temperature, precipitation, vapor pressure, and snow water equivalent. Annual averages are provided for minimum and maximum temperature, vapor pressure, and snow water equivalent, and annual totals are provided for the precipitation variable.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1855](https://doi.org/10.3334/ORNLDAAC/1855) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#monthly).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,daymet,daymet-monthly-na,north-america,precipitation,temperature,vapor-pressure", "license": "proprietary", "title": "Daymet Monthly North America", "missionStartDate": "1980-01-16T12:00:00Z"}, "daymet-annual-hi": {"abstract": "Annual climate summaries derived from [Daymet](https://daymet.ornl.gov) Version 4 daily data at a 1 km x 1 km spatial resolution for five variables: minimum and maximum temperature, precipitation, vapor pressure, and snow water equivalent. Annual averages are provided for minimum and maximum temperature, vapor pressure, and snow water equivalent, and annual totals are provided for the precipitation variable.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1852](https://doi.org/10.3334/ORNLDAAC/1852) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#annual). \n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,daymet,daymet-annual-hi,hawaii,precipitation,temperature,vapor-pressure", "license": "proprietary", "title": "Daymet Annual Hawaii", "missionStartDate": "1980-07-01T12:00:00Z"}, "daymet-monthly-hi": {"abstract": "Monthly climate summaries derived from [Daymet](https://daymet.ornl.gov) Version 4 daily data at a 1 km x 1 km spatial resolution for five variables: minimum and maximum temperature, precipitation, vapor pressure, and snow water equivalent. Annual averages are provided for minimum and maximum temperature, vapor pressure, and snow water equivalent, and annual totals are provided for the precipitation variable.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1855](https://doi.org/10.3334/ORNLDAAC/1855) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#monthly).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,daymet,daymet-monthly-hi,hawaii,precipitation,temperature,vapor-pressure", "license": "proprietary", "title": "Daymet Monthly Hawaii", "missionStartDate": "1980-01-16T12:00:00Z"}, "daymet-monthly-pr": {"abstract": "Monthly climate summaries derived from [Daymet](https://daymet.ornl.gov) Version 4 daily data at a 1 km x 1 km spatial resolution for five variables: minimum and maximum temperature, precipitation, vapor pressure, and snow water equivalent. Annual averages are provided for minimum and maximum temperature, vapor pressure, and snow water equivalent, and annual totals are provided for the precipitation variable.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1855](https://doi.org/10.3334/ORNLDAAC/1855) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#monthly).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,daymet,daymet-monthly-pr,precipitation,puerto-rico,temperature,vapor-pressure", "license": "proprietary", "title": "Daymet Monthly Puerto Rico", "missionStartDate": "1980-01-16T12:00:00Z"}, "gnatsgo-tables": {"abstract": "This collection contains the table data for gNATSGO. This table data can be used to determine the values of raster data cells for Items in the [gNATSGO Rasters](https://planetarycomputer.microsoft.com/dataset/gnatsgo-rasters) Collection.\n\nThe gridded National Soil Survey Geographic Database (gNATSGO) is a USDA-NRCS Soil & Plant Science Division (SPSD) composite database that provides complete coverage of the best available soils information for all areas of the United States and Island Territories. It was created by combining data from the Soil Survey Geographic Database (SSURGO), State Soil Geographic Database (STATSGO2), and Raster Soil Survey Databases (RSS) into a single seamless ESRI file geodatabase.\n\nSSURGO is the SPSD flagship soils database that has over 100 years of field-validated detailed soil mapping data. SSURGO contains soils information for more than 90 percent of the United States and island territories, but unmapped land remains. STATSGO2 is a general soil map that has soils data for all of the United States and island territories, but the data is not as detailed as the SSURGO data. The Raster Soil Surveys (RSSs) are the next generation soil survey databases developed using advanced digital soil mapping methods.\n\nThe gNATSGO database is composed primarily of SSURGO data, but STATSGO2 data was used to fill in the gaps. The RSSs are newer product with relatively limited spatial extent. These RSSs were merged into the gNATSGO after combining the SSURGO and STATSGO2 data. The extent of RSS is expected to increase in the coming years.\n\nSee the [official documentation](https://www.nrcs.usda.gov/wps/portal/nrcs/detail/soils/survey/geo/?cid=nrcseprd1464625)", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "gnatsgo-tables,natsgo,rss,soils,ssurgo,statsgo2,united-states,usda", "license": "CC0-1.0", "title": "gNATSGO Soil Database - Tables", "missionStartDate": "2020-07-01T00:00:00Z"}, "hgb": {"abstract": "This dataset provides temporally consistent and harmonized global maps of aboveground and belowground biomass carbon density for the year 2010 at 300m resolution. The aboveground biomass map integrates land-cover-specific, remotely sensed maps of woody, grassland, cropland, and tundra biomass. Input maps were amassed from the published literature and, where necessary, updated to cover the focal extent or time period. The belowground biomass map similarly integrates matching maps derived from each aboveground biomass map and land-cover-specific empirical models. Aboveground and belowground maps were then integrated separately using ancillary maps of percent tree/land cover and a rule-based decision tree. Maps reporting the accumulated uncertainty of pixel-level estimates are also provided.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "biomass,carbon,hgb,ornl", "license": "proprietary", "title": "HGB: Harmonized Global Biomass for 2010", "missionStartDate": "2010-12-31T00:00:00Z"}, "cop-dem-glo-30": {"abstract": "The Copernicus DEM is a digital surface model (DSM), which represents the surface of the Earth including buildings, infrastructure, and vegetation. This DSM is based on radar satellite data acquired during the TanDEM-X Mission, which was funded by a public-private partnership between the German Aerospace Centre (DLR) and Airbus Defence and Space.\n\nCopernicus DEM is available at both 30-meter and 90-meter resolution; this dataset has a horizontal resolution of approximately 30 meters.\n\nSee the [Product Handbook](https://object.cloud.sdsc.edu/v1/AUTH_opentopography/www/metadata/Copernicus_metadata.pdf) for more information.\n\nSee the dataset page on OpenTopography: \n\n", "instrument": null, "platform": null, "platformSerialIdentifier": "tandem-x", "processingLevel": null, "keywords": "cop-dem-glo-30,copernicus,dem,dsm,elevation,tandem-x", "license": "proprietary", "title": "Copernicus DEM GLO-30", "missionStartDate": "2021-04-22T00:00:00Z"}, "cop-dem-glo-90": {"abstract": "The Copernicus DEM is a digital surface model (DSM), which represents the surface of the Earth including buildings, infrastructure, and vegetation. This DSM is based on radar satellite data acquired during the TanDEM-X Mission, which was funded by a public-private partnership between the German Aerospace Centre (DLR) and Airbus Defence and Space.\n\nCopernicus DEM is available at both 30-meter and 90-meter resolution; this dataset has a horizontal resolution of approximately 90 meters.\n\nSee the [Product Handbook](https://object.cloud.sdsc.edu/v1/AUTH_opentopography/www/metadata/Copernicus_metadata.pdf) for more information.\n\nSee the dataset page on OpenTopography: \n\n", "instrument": null, "platform": null, "platformSerialIdentifier": "tandem-x", "processingLevel": null, "keywords": "cop-dem-glo-90,copernicus,dem,elevation,tandem-x", "license": "proprietary", "title": "Copernicus DEM GLO-90", "missionStartDate": "2021-04-22T00:00:00Z"}, "goes-cmi": {"abstract": "The GOES-R Advanced Baseline Imager (ABI) L2 Cloud and Moisture Imagery product provides 16 reflective and emissive bands at high temporal cadence over the Western Hemisphere.\n\nThe GOES-R series is the latest in the Geostationary Operational Environmental Satellites (GOES) program, which has been operated in a collaborative effort by NOAA and NASA since 1975. The operational GOES-R Satellites, GOES-16, GOES-17, and GOES-18, capture 16-band imagery from geostationary orbits over the Western Hemisphere via the Advance Baseline Imager (ABI) radiometer. The ABI captures 2 visible, 4 near-infrared, and 10 infrared channels at resolutions between 0.5km and 2km.\n\n### Geographic coverage\n\nThe ABI captures three levels of coverage, each at a different temporal cadence depending on the modes described below. The geographic coverage for each image is described by the `goes:image-type` STAC Item property.\n\n- _FULL DISK_: a circular image depicting nearly full coverage of the Western Hemisphere.\n- _CONUS_: a 3,000 (lat) by 5,000 (lon) km rectangular image depicting the Continental U.S. (GOES-16) or the Pacific Ocean including Hawaii (GOES-17).\n- _MESOSCALE_: a 1,000 by 1,000 km rectangular image. GOES-16 and 17 both alternate between two different mesoscale geographic regions.\n\n### Modes\n\nThere are three standard scanning modes for the ABI instrument: Mode 3, Mode 4, and Mode 6.\n\n- Mode _3_ consists of one observation of the full disk scene of the Earth, three observations of the continental United States (CONUS), and thirty observations for each of two distinct mesoscale views every fifteen minutes.\n- Mode _4_ consists of the observation of the full disk scene every five minutes.\n- Mode _6_ consists of one observation of the full disk scene of the Earth, two observations of the continental United States (CONUS), and twenty observations for each of two distinct mesoscale views every ten minutes.\n\nThe mode that each image was captured with is described by the `goes:mode` STAC Item property.\n\nSee this [ABI Scan Mode Demonstration](https://youtu.be/_c5H6R-M0s8) video for an idea of how the ABI scans multiple geographic regions over time.\n\n### Cloud and Moisture Imagery\n\nThe Cloud and Moisture Imagery product contains one or more images with pixel values identifying \"brightness values\" that are scaled to support visual analysis. Cloud and Moisture Imagery product (CMIP) files are generated for each of the sixteen ABI reflective and emissive bands. In addition, there is a multi-band product file that includes the imagery at all bands (MCMIP).\n\nThe Planetary Computer STAC Collection `goes-cmi` captures both the CMIP and MCMIP product files into individual STAC Items for each observation from a GOES-R satellite. It contains the original CMIP and MCMIP NetCDF files, as well as cloud-optimized GeoTIFF (COG) exports of the data from each MCMIP band (2km); the full-resolution CMIP band for bands 1, 2, 3, and 5; and a Web Mercator COG of bands 1, 2 and 3, which are useful for rendering.\n\nThis product is not in a standard coordinate reference system (CRS), which can cause issues with some tooling that does not handle non-standard large geographic regions.\n\n### For more information\n- [Beginner\u2019s Guide to GOES-R Series Data](https://www.goes-r.gov/downloads/resources/documents/Beginners_Guide_to_GOES-R_Series_Data.pdf)\n- [GOES-R Series Product Definition and Users\u2019 Guide: Volume 5 (Level 2A+ Products)](https://www.goes-r.gov/products/docs/PUG-L2+-vol5.pdf) ([Spanish verison](https://github.com/NOAA-Big-Data-Program/bdp-data-docs/raw/main/GOES/QuickGuides/Spanish/Guia%20introductoria%20para%20datos%20de%20la%20serie%20GOES-R%20V1.1%20FINAL2%20-%20Copy.pdf))\n\n", "instrument": "ABI", "platform": null, "platformSerialIdentifier": "GOES-16,GOES-17,GOES-18", "processingLevel": null, "keywords": "abi,cloud,goes,goes-16,goes-17,goes-18,goes-cmi,moisture,nasa,noaa,satellite", "license": "proprietary", "title": "GOES-R Cloud & Moisture Imagery", "missionStartDate": "2017-02-28T00:16:52Z"}, "terraclimate": {"abstract": "[TerraClimate](http://www.climatologylab.org/terraclimate.html) is a dataset of monthly climate and climatic water balance for global terrestrial surfaces from 1958 to the present. These data provide important inputs for ecological and hydrological studies at global scales that require high spatial resolution and time-varying data. All data have monthly temporal resolution and a ~4-km (1/24th degree) spatial resolution. This dataset is provided in [Zarr](https://zarr.readthedocs.io/) format.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,precipitation,temperature,terraclimate,vapor-pressure,water", "license": "CC0-1.0", "title": "TerraClimate", "missionStartDate": "1958-01-01T00:00:00Z"}, "nasa-nex-gddp-cmip6": {"abstract": "The NEX-GDDP-CMIP6 dataset is comprised of global downscaled climate scenarios derived from the General Circulation Model (GCM) runs conducted under the Coupled Model Intercomparison Project Phase 6 (CMIP6) and across two of the four \u201cTier 1\u201d greenhouse gas emissions scenarios known as Shared Socioeconomic Pathways (SSPs). The CMIP6 GCM runs were developed in support of the Sixth Assessment Report of the Intergovernmental Panel on Climate Change (IPCC AR6). This dataset includes downscaled projections from ScenarioMIP model runs for which daily scenarios were produced and distributed through the Earth System Grid Federation. The purpose of this dataset is to provide a set of global, high resolution, bias-corrected climate change projections that can be used to evaluate climate change impacts on processes that are sensitive to finer-scale climate gradients and the effects of local topography on climate conditions.\n\nThe [NASA Center for Climate Simulation](https://www.nccs.nasa.gov/) maintains the [next-gddp-cmip6 product page](https://www.nccs.nasa.gov/services/data-collections/land-based-products/nex-gddp-cmip6) where you can find more information about these datasets. Users are encouraged to review the [technote](https://www.nccs.nasa.gov/sites/default/files/NEX-GDDP-CMIP6-Tech_Note.pdf), provided alongside the data set, where more detailed information, references and acknowledgements can be found.\n\nThis collection contains many NetCDF files. There is one NetCDF file per `(model, scenario, variable, year)` tuple.\n\n- **model** is the name of a modeling group (e.g. \"ACCESS-CM-2\"). See the `cmip6:model` summary in the STAC collection for a full list of models.\n- **scenario** is one of \"historical\", \"ssp245\" or \"ssp585\".\n- **variable** is one of \"hurs\", \"huss\", \"pr\", \"rlds\", \"rsds\", \"sfcWind\", \"tas\", \"tasmax\", \"tasmin\".\n- **year** depends on the value of *scenario*. For \"historical\", the values range from 1950 to 2014 (inclusive). For \"ssp245\" and \"ssp585\", the years range from 2015 to 2100 (inclusive).\n\nIn addition to the NetCDF files, we provide some *experimental* **reference files** as collection-level dataset assets. These are JSON files implementing the [references specification](https://fsspec.github.io/kerchunk/spec.html).\nThese files include the positions of data variables within the binary NetCDF files, which can speed up reading the metadata. See the example notebook for more.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,cmip6,humidity,nasa,nasa-nex-gddp-cmip6,precipitation,temperature", "license": "proprietary", "title": "Earth Exchange Global Daily Downscaled Projections (NEX-GDDP-CMIP6)", "missionStartDate": "1950-01-01T00:00:00Z"}, "gpm-imerg-hhr": {"abstract": "The Integrated Multi-satellitE Retrievals for GPM (IMERG) algorithm combines information from the [GPM satellite constellation](https://gpm.nasa.gov/missions/gpm/constellation) to estimate precipitation over the majority of the Earth's surface. This algorithm is particularly valuable over the majority of the Earth's surface that lacks precipitation-measuring instruments on the ground. Now in the latest Version 06 release of IMERG the algorithm fuses the early precipitation estimates collected during the operation of the TRMM satellite (2000 - 2015) with more recent precipitation estimates collected during operation of the GPM satellite (2014 - present). The longer the record, the more valuable it is, as researchers and application developers will attest. By being able to compare and contrast past and present data, researchers are better informed to make climate and weather models more accurate, better understand normal and extreme rain and snowfall around the world, and strengthen applications for current and future disasters, disease, resource management, energy production and food security.\n\nFor more, see the [IMERG homepage](https://gpm.nasa.gov/data/imerg) The [IMERG Technical documentation](https://gpm.nasa.gov/sites/default/files/2020-10/IMERG_doc_201006.pdf) provides more information on the algorithm, input datasets, and output products.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "gpm,gpm-imerg-hhr,imerg,precipitation", "license": "proprietary", "title": "GPM IMERG", "missionStartDate": "2000-06-01T00:00:00Z"}, "gnatsgo-rasters": {"abstract": "This collection contains the raster data for gNATSGO. In order to use the map unit values contained in the `mukey` raster asset, you'll need to join to tables represented as Items in the [gNATSGO Tables](https://planetarycomputer.microsoft.com/dataset/gnatsgo-tables) Collection. Many items have commonly used values encoded in additional raster assets.\n\nThe gridded National Soil Survey Geographic Database (gNATSGO) is a USDA-NRCS Soil & Plant Science Division (SPSD) composite database that provides complete coverage of the best available soils information for all areas of the United States and Island Territories. It was created by combining data from the Soil Survey Geographic Database (SSURGO), State Soil Geographic Database (STATSGO2), and Raster Soil Survey Databases (RSS) into a single seamless ESRI file geodatabase.\n\nSSURGO is the SPSD flagship soils database that has over 100 years of field-validated detailed soil mapping data. SSURGO contains soils information for more than 90 percent of the United States and island territories, but unmapped land remains. STATSGO2 is a general soil map that has soils data for all of the United States and island territories, but the data is not as detailed as the SSURGO data. The Raster Soil Surveys (RSSs) are the next generation soil survey databases developed using advanced digital soil mapping methods.\n\nThe gNATSGO database is composed primarily of SSURGO data, but STATSGO2 data was used to fill in the gaps. The RSSs are newer product with relatively limited spatial extent. These RSSs were merged into the gNATSGO after combining the SSURGO and STATSGO2 data. The extent of RSS is expected to increase in the coming years.\n\nSee the [official documentation](https://www.nrcs.usda.gov/wps/portal/nrcs/detail/soils/survey/geo/?cid=nrcseprd1464625)", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "gnatsgo-rasters,natsgo,rss,soils,ssurgo,statsgo2,united-states,usda", "license": "CC0-1.0", "title": "gNATSGO Soil Database - Rasters", "missionStartDate": "2020-07-01T00:00:00Z"}, "3dep-lidar-hag": {"abstract": "This COG type is generated using the Z dimension of the [COPC data](https://planetarycomputer.microsoft.com/dataset/3dep-lidar-copc) data and removes noise, water, and using [`pdal.filters.smrf`](https://pdal.io/stages/filters.smrf.html#filters-smrf) followed by [pdal.filters.hag_nn](https://pdal.io/stages/filters.hag_nn.html#filters-hag-nn).\n\nThe Height Above Ground Nearest Neighbor filter takes as input a point cloud with Classification set to 2 for ground points. It creates a new dimension, HeightAboveGround, that contains the normalized height values.\n\nGround points may be generated with [`pdal.filters.pmf`](https://pdal.io/stages/filters.pmf.html#filters-pmf) or [`pdal.filters.smrf`](https://pdal.io/stages/filters.smrf.html#filters-smrf), but you can use any method you choose, as long as the ground returns are marked.\n\nNormalized heights are a commonly used attribute of point cloud data. This can also be referred to as height above ground (HAG) or above ground level (AGL) heights. In the end, it is simply a measure of a point's relative height as opposed to its raw elevation value.\n\nThe filter finds the number of ground points nearest to the non-ground point under consideration. It calculates an average ground height weighted by the distance of each ground point from the non-ground point. The HeightAboveGround is the difference between the Z value of the non-ground point and the interpolated ground height.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-hag,cog,elevation,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Height above Ground", "missionStartDate": "2012-01-01T00:00:00Z"}, "io-lulc-annual-v02": {"abstract": "Time series of annual global maps of land use and land cover (LULC). It currently has data from 2017-2023. The maps are derived from ESA Sentinel-2 imagery at 10m resolution. Each map is a composite of LULC predictions for 9 classes throughout the year in order to generate a representative snapshot of each year.\n\nThis dataset, produced by [Impact Observatory](http://impactobservatory.com/), Microsoft, and Esri, displays a global map of land use and land cover (LULC) derived from ESA Sentinel-2 imagery at 10 meter resolution for the years 2017 - 2023. Each map is a composite of LULC predictions for 9 classes throughout the year in order to generate a representative snapshot of each year. This dataset was generated by Impact Observatory, which used billions of human-labeled pixels (curated by the National Geographic Society) to train a deep learning model for land classification. Each global map was produced by applying this model to the Sentinel-2 annual scene collections from the Mircosoft Planetary Computer. Each of the maps has an assessed average accuracy of over 75%.\n\nThese maps have been improved from Impact Observatory\u2019s [previous release](https://planetarycomputer.microsoft.com/dataset/io-lulc-9-class) and provide a relative reduction in the amount of anomalous change between classes, particularly between \u201cBare\u201d and any of the vegetative classes \u201cTrees,\u201d \u201cCrops,\u201d \u201cFlooded Vegetation,\u201d and \u201cRangeland\u201d. This updated time series of annual global maps is also re-aligned to match the ESA UTM tiling grid for Sentinel-2 imagery.\n\nAll years are available under a Creative Commons BY-4.0.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "global,io-lulc-annual-v02,land-cover,land-use,sentinel", "license": "CC-BY-4.0", "title": "10m Annual Land Use Land Cover (9-class) V2", "missionStartDate": "2017-01-01T00:00:00Z"}, "3dep-lidar-intensity": {"abstract": "This collection is derived from the [USGS 3DEP COPC collection](https://planetarycomputer.microsoft.com/dataset/3dep-lidar-copc). It is a collection of Cloud Optimized GeoTIFFs representing the pulse return magnitude.\n\nThe values are based on the Intensity [PDAL dimension](https://pdal.io/dimensions.html) and uses [`pdal.filters.outlier`](https://pdal.io/stages/filters.outlier.html#filters-outlier) and [`pdal.filters.range`](https://pdal.io/stages/filters.range.html#filters-range) to remove outliers and noise.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-intensity,cog,intensity,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Intensity", "missionStartDate": "2012-01-01T00:00:00Z"}, "3dep-lidar-pointsourceid": {"abstract": "This collection is derived from the [USGS 3DEP COPC collection](https://planetarycomputer.microsoft.com/dataset/3dep-lidar-copc). It is a collection of Cloud Optimized GeoTIFFs representing the file source ID from which the point originated. Zero indicates that the point originated in the current file.\n\nThis values are based on the PointSourceId [PDAL dimension](https://pdal.io/dimensions.html) and uses [`pdal.filters.outlier`](https://pdal.io/stages/filters.outlier.html#filters-outlier) and [`pdal.filters.range`](https://pdal.io/stages/filters.range.html#filters-range) to remove outliers and noise.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-pointsourceid,cog,pointsourceid,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Point Source", "missionStartDate": "2012-01-01T00:00:00Z"}, "mtbs": {"abstract": "[Monitoring Trends in Burn Severity](https://www.mtbs.gov/) (MTBS) is an inter-agency program whose goal is to consistently map the burn severity and extent of large fires across the United States from 1984 to the present. This includes all fires 1000 acres or greater in the Western United States and 500 acres or greater in the Eastern United States. The burn severity mosaics in this dataset consist of thematic raster images of MTBS burn severity classes for all currently completed MTBS fires for the continental United States and Alaska.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "fire,forest,mtbs,usda,usfs,usgs", "license": "proprietary", "title": "MTBS: Monitoring Trends in Burn Severity", "missionStartDate": "1984-12-31T00:00:00Z"}, "noaa-c-cap": {"abstract": "Nationally standardized, raster-based inventories of land cover for the coastal areas of the U.S. Data are derived, through the Coastal Change Analysis Program, from the analysis of multiple dates of remotely sensed imagery. Two file types are available: individual dates that supply a wall-to-wall map, and change files that compare one date to another. The use of standardized data and procedures assures consistency through time and across geographies. C-CAP data forms the coastal expression of the National Land Cover Database (NLCD) and the A-16 land cover theme of the National Spatial Data Infrastructure. The data are updated every 5 years.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "coastal,land-cover,land-use,noaa,noaa-c-cap", "license": "proprietary", "title": "C-CAP Regional Land Cover and Change", "missionStartDate": "1975-01-01T00:00:00Z"}, "3dep-lidar-copc": {"abstract": "This collection contains source data from the [USGS 3DEP program](https://www.usgs.gov/3d-elevation-program) reformatted into the [COPC](https://copc.io) format. A COPC file is a LAZ 1.4 file that stores point data organized in a clustered octree. It contains a VLR that describes the octree organization of data that are stored in LAZ 1.4 chunks. The end product is a one-to-one mapping of LAZ to UTM-reprojected COPC files.\n\nLAZ data is geospatial [LiDAR point cloud](https://en.wikipedia.org/wiki/Point_cloud) (LPC) content stored in the compressed [LASzip](https://laszip.org?) format. Data were reorganized and stored in LAZ-compatible [COPC](https://copc.io) organization for use in Planetary Computer, which supports incremental spatial access and cloud streaming.\n\nLPC can be summarized for construction of digital terrain models (DTM), filtered for extraction of features like vegetation and buildings, and visualized to provide a point cloud map of the physical spaces the laser scanner interacted with. LPC content from 3DEP is used to compute and extract a variety of landscape characterization products, and some of them are provided by Planetary Computer, including Height Above Ground, Relative Intensity Image, and DTM and Digital Surface Models.\n\nThe LAZ tiles represent a one-to-one mapping of original tiled content as provided by the [USGS 3DEP program](https://www.usgs.gov/3d-elevation-program), with the exception that the data were reprojected and normalized into appropriate UTM zones for their location without adjustment to the vertical datum. In some cases, vertical datum description may not match actual data values, especially for pre-2010 USGS 3DEP point cloud data.\n\nIn addition to these COPC files, various higher-level derived products are available as Cloud Optimized GeoTIFFs in [other collections](https://planetarycomputer.microsoft.com/dataset/group/3dep-lidar).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-copc,cog,point-cloud,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Point Cloud", "missionStartDate": "2012-01-01T00:00:00Z"}, "modis-64A1-061": {"abstract": "The Terra and Aqua combined MCD64A1 Version 6.1 Burned Area data product is a monthly, global gridded 500 meter (m) product containing per-pixel burned-area and quality information. The MCD64A1 burned-area mapping approach employs 500 m Moderate Resolution Imaging Spectroradiometer (MODIS) Surface Reflectance imagery coupled with 1 kilometer (km) MODIS active fire observations. The algorithm uses a burn sensitive Vegetation Index (VI) to create dynamic thresholds that are applied to the composite data. The VI is derived from MODIS shortwave infrared atmospherically corrected surface reflectance bands 5 and 7 with a measure of temporal texture. The algorithm identifies the date of burn for the 500 m grid cells within each individual MODIS tile. The date is encoded in a single data layer as the ordinal day of the calendar year on which the burn occurred with values assigned to unburned land pixels and additional special values reserved for missing data and water grid cells. The data layers provided in the MCD64A1 product include Burn Date, Burn Data Uncertainty, Quality Assurance, along with First Day and Last Day of reliable change detection of the year.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,fire,global,imagery,mcd64a1,modis,modis-64a1-061,nasa,satellite,terra", "license": "proprietary", "title": "MODIS Burned Area Monthly", "missionStartDate": "2000-11-01T00:00:00Z"}, "alos-fnf-mosaic": {"abstract": "The global 25m resolution SAR mosaics and forest/non-forest maps are free and open annual datasets generated by [JAXA](https://www.eorc.jaxa.jp/ALOS/en/dataset/fnf_e.htm) using the L-band Synthetic Aperture Radar sensors on the Advanced Land Observing Satellite-2 (ALOS-2 PALSAR-2), the Advanced Land Observing Satellite (ALOS PALSAR) and the Japanese Earth Resources Satellite-1 (JERS-1 SAR).\n\nThe global forest/non-forest maps (FNF) were generated by a Random Forest machine learning-based classification method, with the re-processed global 25m resolution [PALSAR-2 mosaic dataset](https://planetarycomputer.microsoft.com/dataset/alos-palsar-mosaic) (Ver. 2.0.0) as input. Here, the \"forest\" is defined as the tree covered land with an area larger than 0.5 ha and a canopy cover of over 10 %, in accordance with the FAO definition of forest. The classification results are presented in four categories, with two categories of forest areas: forests with a canopy cover of 90 % or more and forests with a canopy cover of 10 % to 90 %, depending on the density of the forest area.\n\nSee the [Product Description](https://www.eorc.jaxa.jp/ALOS/en/dataset/pdf/DatasetDescription_PALSAR2_FNF_V200.pdf) for more details.\n", "instrument": "PALSAR,PALSAR-2", "platform": null, "platformSerialIdentifier": "ALOS,ALOS-2", "processingLevel": null, "keywords": "alos,alos-2,alos-fnf-mosaic,forest,global,jaxa,land-cover,palsar,palsar-2", "license": "proprietary", "title": "ALOS Forest/Non-Forest Annual Mosaic", "missionStartDate": "2015-01-01T00:00:00Z"}, "3dep-lidar-returns": {"abstract": "This collection is derived from the [USGS 3DEP COPC collection](https://planetarycomputer.microsoft.com/dataset/3dep-lidar-copc). It is a collection of Cloud Optimized GeoTIFFs representing the number of returns for a given pulse.\n\nThis values are based on the PointSourceId [PDAL dimension](https://pdal.io/dimensions.html) and uses [`pdal.filters.outlier`](https://pdal.io/stages/filters.outlier.html#filters-outlier) and [`pdal.filters.range`](https://pdal.io/stages/filters.range.html#filters-range) to remove outliers and noise.\n\nThe values are based on the NumberOfReturns [PDAL dimension](https://pdal.io/dimensions.html) and uses [`pdal.filters.outlier`](https://pdal.io/stages/filters.outlier.html#filters-outlier) and [`pdal.filters.range`](https://pdal.io/stages/filters.range.html#filters-range) to remove outliers and noise.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-returns,cog,numberofreturns,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Returns", "missionStartDate": "2012-01-01T00:00:00Z"}, "mobi": {"abstract": "The [Map of Biodiversity Importance](https://www.natureserve.org/conservation-tools/projects/map-biodiversity-importance) (MoBI) consists of raster maps that combine habitat information for 2,216 imperiled species occurring in the conterminous United States, using weightings based on range size and degree of protection to identify areas of high importance for biodiversity conservation. Species included in the project are those which, as of September 2018, had a global conservation status of G1 (critical imperiled) or G2 (imperiled) or which are listed as threatened or endangered at the full species level under the United States Endangered Species Act. Taxonomic groups included in the project are vertebrates (birds, mammals, amphibians, reptiles, turtles, crocodilians, and freshwater and anadromous fishes), vascular plants, selected aquatic invertebrates (freshwater mussels and crayfish) and selected pollinators (bumblebees, butterflies, and skippers).\n\nThere are three types of spatial data provided, described in more detail below: species richness, range-size rarity, and protection-weighted range-size rarity. For each type, this data set includes five different layers – one for all species combined, and four additional layers that break the data down by taxonomic group (vertebrates, plants, freshwater invertebrates, and pollinators) – for a total of fifteen layers.\n\nThese data layers are intended to identify areas of high potential value for on-the-ground biodiversity protection efforts. As a synthesis of predictive models, they cannot guarantee either the presence or absence of imperiled species at a given location. For site-specific decision-making, these data should be used in conjunction with field surveys and/or documented occurrence data, such as is available from the [NatureServe Network](https://www.natureserve.org/natureserve-network).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "biodiversity,mobi,natureserve,united-states", "license": "proprietary", "title": "MoBI: Map of Biodiversity Importance", "missionStartDate": "2020-04-14T00:00:00Z"}, "landsat-c2-l2": {"abstract": "Landsat Collection 2 Level-2 [Science Products](https://www.usgs.gov/landsat-missions/landsat-collection-2-level-2-science-products), consisting of atmospherically corrected [surface reflectance](https://www.usgs.gov/landsat-missions/landsat-collection-2-surface-reflectance) and [surface temperature](https://www.usgs.gov/landsat-missions/landsat-collection-2-surface-temperature) image data. Collection 2 Level-2 Science Products are available from August 22, 1982 to present.\n\nThis dataset represents the global archive of Level-2 data from [Landsat Collection 2](https://www.usgs.gov/core-science-systems/nli/landsat/landsat-collection-2) acquired by the [Thematic Mapper](https://landsat.gsfc.nasa.gov/thematic-mapper/) onboard Landsat 4 and 5, the [Enhanced Thematic Mapper](https://landsat.gsfc.nasa.gov/the-enhanced-thematic-mapper-plus-etm/) onboard Landsat 7, and the [Operatational Land Imager](https://landsat.gsfc.nasa.gov/satellites/landsat-8/spacecraft-instruments/operational-land-imager/) and [Thermal Infrared Sensor](https://landsat.gsfc.nasa.gov/satellites/landsat-8/spacecraft-instruments/thermal-infrared-sensor/) onboard Landsat 8 and 9. Images are stored in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.\n", "instrument": "tm,etm+,oli,tirs", "platform": null, "platformSerialIdentifier": "landsat-4,landsat-5,landsat-7,landsat-8,landsat-9", "processingLevel": null, "keywords": "etm+,global,imagery,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2-l2,nasa,oli,reflectance,satellite,temperature,tirs,tm,usgs", "license": "proprietary", "title": "Landsat Collection 2 Level-2", "missionStartDate": "1982-08-22T00:00:00Z"}, "era5-pds": {"abstract": "ERA5 is the fifth generation ECMWF atmospheric reanalysis of the global climate\ncovering the period from January 1950 to present. ERA5 is produced by the\nCopernicus Climate Change Service (C3S) at ECMWF.\n\nReanalysis combines model data with observations from across the world into a\nglobally complete and consistent dataset using the laws of physics. This\nprinciple, called data assimilation, is based on the method used by numerical\nweather prediction centres, where every so many hours (12 hours at ECMWF) a\nprevious forecast is combined with newly available observations in an optimal\nway to produce a new best estimate of the state of the atmosphere, called\nanalysis, from which an updated, improved forecast is issued. Reanalysis works\nin the same way, but at reduced resolution to allow for the provision of a\ndataset spanning back several decades. Reanalysis does not have the constraint\nof issuing timely forecasts, so there is more time to collect observations, and\nwhen going further back in time, to allow for the ingestion of improved versions\nof the original observations, which all benefit the quality of the reanalysis\nproduct.\n\nThis dataset was converted to Zarr by [Planet OS](https://planetos.com/).\nSee [their documentation](https://github.com/planet-os/notebooks/blob/master/aws/era5-pds.md)\nfor more.\n\n## STAC Metadata\n\nTwo types of data variables are provided: \"forecast\" (`fc`) and \"analysis\" (`an`).\n\n* An **analysis**, of the atmospheric conditions, is a blend of observations\n with a previous forecast. An analysis can only provide\n [instantaneous](https://confluence.ecmwf.int/display/CKB/Model+grid+box+and+time+step)\n parameters (parameters valid at a specific time, e.g temperature at 12:00),\n but not accumulated parameters, mean rates or min/max parameters.\n* A **forecast** starts with an analysis at a specific time (the 'initialization\n time'), and a model computes the atmospheric conditions for a number of\n 'forecast steps', at increasing 'validity times', into the future. A forecast\n can provide\n [instantaneous](https://confluence.ecmwf.int/display/CKB/Model+grid+box+and+time+step)\n parameters, accumulated parameters, mean rates, and min/max parameters.\n\nEach [STAC](https://stacspec.org/) item in this collection covers a single month\nand the entire globe. There are two STAC items per month, one for each type of data\nvariable (`fc` and `an`). The STAC items include an `ecmwf:kind` properties to\nindicate which kind of variables that STAC item catalogs.\n\n## How to acknowledge, cite and refer to ERA5\n\nAll users of data on the Climate Data Store (CDS) disks (using either the web interface or the CDS API) must provide clear and visible attribution to the Copernicus programme and are asked to cite and reference the dataset provider:\n\nAcknowledge according to the [licence to use Copernicus Products](https://cds.climate.copernicus.eu/api/v2/terms/static/licence-to-use-copernicus-products.pdf).\n\nCite each dataset used as indicated on the relevant CDS entries (see link to \"Citation\" under References on the Overview page of the dataset entry).\n\nThroughout the content of your publication, the dataset used is referred to as Author (YYYY).\n\nThe 3-steps procedure above is illustrated with this example: [Use Case 2: ERA5 hourly data on single levels from 1979 to present](https://confluence.ecmwf.int/display/CKB/Use+Case+2%3A+ERA5+hourly+data+on+single+levels+from+1979+to+present).\n\nFor complete details, please refer to [How to acknowledge and cite a Climate Data Store (CDS) catalogue entry and the data published as part of it](https://confluence.ecmwf.int/display/CKB/How+to+acknowledge+and+cite+a+Climate+Data+Store+%28CDS%29+catalogue+entry+and+the+data+published+as+part+of+it).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "ecmwf,era5,era5-pds,precipitation,reanalysis,temperature,weather", "license": "proprietary", "title": "ERA5 - PDS", "missionStartDate": "1979-01-01T00:00:00Z"}, "chloris-biomass": {"abstract": "The Chloris Global Biomass 2003 - 2019 dataset provides estimates of stock and change in aboveground biomass for Earth's terrestrial woody vegetation ecosystems. It covers the period 2003 - 2019, at annual time steps. The global dataset has a circa 4.6 km spatial resolution.\n\nThe maps and data sets were generated by combining multiple remote sensing measurements from space borne satellites, processed using state-of-the-art machine learning and statistical methods, validated with field data from multiple countries. The dataset provides direct estimates of aboveground stock and change, and are not based on land use or land cover area change, and as such they include gains and losses of carbon stock in all types of woody vegetation - whether natural or plantations.\n\nAnnual stocks are expressed in units of tons of biomass. Annual changes in stocks are expressed in units of CO2 equivalent, i.e., the amount of CO2 released from or taken up by terrestrial ecosystems for that specific pixel.\n\nThe spatial data sets are available on [Microsoft\u2019s Planetary Computer](https://planetarycomputer.microsoft.com/dataset/chloris-biomass) under a Creative Common license of the type Attribution-Non Commercial-Share Alike [CC BY-NC-SA](https://spdx.org/licenses/CC-BY-NC-SA-4.0.html).\n\n[Chloris Geospatial](https://chloris.earth/) is a mission-driven technology company that develops software and data products on the state of natural capital for use by business, governments, and the social sector.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "biomass,carbon,chloris,chloris-biomass,modis", "license": "CC-BY-NC-SA-4.0", "title": "Chloris Biomass", "missionStartDate": "2003-07-31T00:00:00Z"}, "kaza-hydroforecast": {"abstract": "This dataset is a daily updated set of HydroForecast seasonal river flow forecasts at six locations in the Kwando and Upper Zambezi river basins. More details about the locations, project context, and to interactively view current and previous forecasts, visit our [public website](https://dashboard.hydroforecast.com/public/wwf-kaza).\n\n## Flow forecast dataset and model description\n\n[HydroForecast](https://www.upstream.tech/hydroforecast) is a theory-guided machine learning hydrologic model that predicts streamflow in basins across the world. For the Kwando and Upper Zambezi, HydroForecast makes daily predictions of streamflow rates using a [seasonal analog approach](https://support.upstream.tech/article/125-seasonal-analog-model-a-technical-overview). The model's output is probabilistic and the mean, median and a range of quantiles are available at each forecast step.\n\nThe underlying model has the following attributes: \n\n* Timestep: 10 days\n* Horizon: 10 to 180 days \n* Update frequency: daily\n* Units: cubic meters per second (m\u00b3/s)\n \n## Site details\n\nThe model produces output for six locations in the Kwando and Upper Zambezi river basins.\n\n* Upper Zambezi sites\n * Zambezi at Chavuma\n * Luanginga at Kalabo\n* Kwando basin sites\n * Kwando at Kongola -- total basin flows\n * Kwando Sub-basin 1\n * Kwando Sub-basin 2 \n * Kwando Sub-basin 3\n * Kwando Sub-basin 4\n * Kwando Kongola Sub-basin\n\n## STAC metadata\n\nThere is one STAC item per location. Each STAC item has a single asset linking to a Parquet file in Azure Blob Storage.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "hydroforecast,hydrology,kaza-hydroforecast,streamflow,upstream-tech,water", "license": "CDLA-Sharing-1.0", "title": "HydroForecast - Kwando & Upper Zambezi Rivers", "missionStartDate": "2022-01-01T00:00:00Z"}, "planet-nicfi-analytic": {"abstract": "*Note: Assets in this collection are only available to winners of the [GEO-Microsoft Planetary Computer RFP](https://www.earthobservations.org/geo_blog_obs.php?id=528). Others wishing to use the data can sign up and access it from Planet at [https://www.planet.com/nicfi/](https://www.planet.com/nicfi/) and email [planetarycomputer@microsoft.com](mailto:planetarycomputer@microsoft.com).*\n\nThrough Norway\u2019s International Climate & Forests Initiative (NICFI), users can access Planet\u2019s high-resolution, analysis-ready mosaics of the world\u2019s tropics in order to help reduce and reverse the loss of tropical forests, combat climate change, conserve biodiversity, and facilitate sustainable development.\n\nIn support of NICFI\u2019s mission, you can use this data for a number of projects including, but not limited to:\n\n* Advance scientific research about the world\u2019s tropical forests and the critical services they provide.\n* Implement and improve policies for sustainable forest management and land use in developing tropical forest countries and jurisdictions.\n* Increase transparency and accountability in the tropics.\n* Protect and improve the rights of indigenous peoples and local communities in tropical forest countries.\n* Innovate solutions towards reducing pressure on forests from global commodities and financial markets.\n* In short, the primary purpose of the NICFI Program is to support reducing and reversing the loss of tropical forests, contributing to combating climate change, conserving biodiversity, contributing to forest regrowth, restoration, and enhancement, and facilitating sustainable development, all of which must be Non-Commercial Use.\n\nTo learn how more about the NICFI program, streaming and downloading basemaps please read the [NICFI Data Program User Guide](https://assets.planet.com/docs/NICFI_UserGuidesFAQ.pdf).\n\nThis collection contains both monthly and biannual mosaics. Biannual mosaics are available from December 2015 - August 2020. Monthly mosaics are available from September 2020. The STAC items include a `planet-nicfi:cadence` field indicating the type of mosaic.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "imagery,nicfi,planet,planet-nicfi-analytic,satellite,tropics", "license": "proprietary", "title": "Planet-NICFI Basemaps (Analytic)", "missionStartDate": "2015-12-01T00:00:00Z"}, "modis-17A2H-061": {"abstract": "The Version 6.1 Gross Primary Productivity (GPP) product is a cumulative 8-day composite of values with 500 meter (m) pixel size based on the radiation use efficiency concept that can be potentially used as inputs to data models to calculate terrestrial energy, carbon, water cycle processes, and biogeochemistry of vegetation. The Moderate Resolution Imaging Spectroradiometer (MODIS) data product includes information about GPP and Net Photosynthesis (PSN). The PSN band values are the GPP less the Maintenance Respiration (MR). The data product also contains a PSN Quality Control (QC) layer. The quality layer contains quality information for both the GPP and the PSN.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod17a2h,modis,modis-17a2h-061,myd17a2h,nasa,satellite,terra,vegetation", "license": "proprietary", "title": "MODIS Gross Primary Productivity 8-Day", "missionStartDate": "2000-02-18T00:00:00Z"}, "modis-11A2-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) Land Surface Temperature/Emissivity 8-Day Version 6.1 product provides an average 8-day per-pixel Land Surface Temperature and Emissivity (LST&E) with a 1 kilometer (km) spatial resolution in a 1,200 by 1,200 km grid. Each pixel value in the MOD11A2 is a simple average of all the corresponding MOD11A1 LST pixels collected within that 8-day period. The 8-day compositing period was chosen because twice that period is the exact ground track repeat period of the Terra and Aqua platforms. Provided along with the daytime and nighttime surface temperature bands are associated quality control assessments, observation times, view zenith angles, and clear-sky coverages along with bands 31 and 32 emissivities from land cover types.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod11a2,modis,modis-11a2-061,myd11a2,nasa,satellite,temperature,terra", "license": "proprietary", "title": "MODIS Land Surface Temperature/Emissivity 8-Day", "missionStartDate": "2000-02-18T00:00:00Z"}, "daymet-daily-pr": {"abstract": "Gridded estimates of daily weather parameters. [Daymet](https://daymet.ornl.gov) Version 4 variables include the following parameters: minimum temperature, maximum temperature, precipitation, shortwave radiation, vapor pressure, snow water equivalent, and day length.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1840](https://doi.org/10.3334/ORNLDAAC/1840) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#daily).\n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "daymet,daymet-daily-pr,precipitation,puerto-rico,temperature,vapor-pressure,weather", "license": "proprietary", "title": "Daymet Daily Puerto Rico", "missionStartDate": "1980-01-01T12:00:00Z"}, "3dep-lidar-dtm-native": {"abstract": "This collection is derived from the [USGS 3DEP COPC collection](https://planetarycomputer.microsoft.com/dataset/3dep-lidar-copc). It creates a Digital Terrain Model (DTM) using the vendor provided (native) ground classification and [`pdal.filters.range`](https://pdal.io/stages/filters.range.html#filters-range) to output a collection of Cloud Optimized GeoTIFFs, removing all points that have been classified as noise.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-dtm-native,cog,dtm,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Digital Terrain Model (Native)", "missionStartDate": "2012-01-01T00:00:00Z"}, "3dep-lidar-classification": {"abstract": "This collection is derived from the [USGS 3DEP COPC collection](https://planetarycomputer.microsoft.com/dataset/3dep-lidar-copc). It uses the [ASPRS](https://www.asprs.org/) (American Society for Photogrammetry and Remote Sensing) [Lidar point classification](https://desktop.arcgis.com/en/arcmap/latest/manage-data/las-dataset/lidar-point-classification.htm). See [LAS specification](https://www.ogc.org/standards/LAS) for details.\n\nThis COG type is based on the Classification [PDAL dimension](https://pdal.io/dimensions.html) and uses [`pdal.filters.range`](https://pdal.io/stages/filters.range.html) to select a subset of interesting classifications. Do note that not all LiDAR collections contain a full compliment of classification labels.\nTo remove outliers, the PDAL pipeline uses a noise filter and then outputs the Classification dimension.\n\nThe STAC collection implements the [`item_assets`](https://github.com/stac-extensions/item-assets) and [`classification`](https://github.com/stac-extensions/classification) extensions. These classes are displayed in the \"Item assets\" below. You can programmatically access the full list of class values and descriptions using the `classification:classes` field form the `data` asset on the STAC collection.\n\nClassification rasters were produced as a subset of LiDAR classification categories:\n\n```\n0, Never Classified\n1, Unclassified\n2, Ground\n3, Low Vegetation\n4, Medium Vegetation\n5, High Vegetation\n6, Building\n9, Water\n10, Rail\n11, Road\n17, Bridge Deck\n```\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-classification,classification,cog,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Classification", "missionStartDate": "2012-01-01T00:00:00Z"}, "3dep-lidar-dtm": {"abstract": "This collection is derived from the [USGS 3DEP COPC collection](https://planetarycomputer.microsoft.com/dataset/3dep-lidar-copc). It creates a Digital Terrain Model (DTM) using [`pdal.filters.smrf`](https://pdal.io/stages/filters.smrf.html#filters-smrf) to output a collection of Cloud Optimized GeoTIFFs.\n\nThe Simple Morphological Filter (SMRF) classifies ground points based on the approach outlined in [Pingel2013](https://pdal.io/references.html#pingel2013).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "3dep,3dep-lidar-dtm,cog,dtm,usgs", "license": "proprietary", "title": "USGS 3DEP Lidar Digital Terrain Model", "missionStartDate": "2012-01-01T00:00:00Z"}, "gap": {"abstract": "The [USGS GAP/LANDFIRE National Terrestrial Ecosystems data](https://www.sciencebase.gov/catalog/item/573cc51be4b0dae0d5e4b0c5), based on the [NatureServe Terrestrial Ecological Systems](https://www.natureserve.org/products/terrestrial-ecological-systems-united-states), are the foundation of the most detailed, consistent map of vegetation available for the United States. These data facilitate planning and management for biological diversity on a regional and national scale.\n\nThis dataset includes the [land cover](https://www.usgs.gov/core-science-systems/science-analytics-and-synthesis/gap/science/land-cover) component of the GAP/LANDFIRE project.\n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "gap,land-cover,landfire,united-states,usgs", "license": "proprietary", "title": "USGS Gap Land Cover", "missionStartDate": "1999-01-01T00:00:00Z"}, "modis-17A2HGF-061": {"abstract": "The Version 6.1 Gross Primary Productivity (GPP) product is a cumulative 8-day composite of values with 500 meter (m) pixel size based on the radiation use efficiency concept that can be potentially used as inputs to data models to calculate terrestrial energy, carbon, water cycle processes, and biogeochemistry of vegetation. The Moderate Resolution Imaging Spectroradiometer (MODIS) data product includes information about GPP and Net Photosynthesis (PSN). The PSN band values are the GPP less the Maintenance Respiration (MR). The data product also contains a PSN Quality Control (QC) layer. The quality layer contains quality information for both the GPP and the PSN. This product will be generated at the end of each year when the entire yearly 8-day 15A2H is available. Hence, the gap-filled A2HGF is the improved 17, which has cleaned the poor-quality inputs from 8-day Leaf Area Index and Fraction of Photosynthetically Active Radiation (FPAR/LAI) based on the Quality Control (QC) label for every pixel. If any LAI/FPAR pixel did not meet the quality screening criteria, its value is determined through linear interpolation. However, users cannot get this product in near-real time because it will be generated only at the end of a given year.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod17a2hgf,modis,modis-17a2hgf-061,myd17a2hgf,nasa,satellite,terra,vegetation", "license": "proprietary", "title": "MODIS Gross Primary Productivity 8-Day Gap-Filled", "missionStartDate": "2000-02-18T00:00:00Z"}, "planet-nicfi-visual": {"abstract": "*Note: Assets in this collection are only available to winners of the [GEO-Microsoft Planetary Computer RFP](https://www.earthobservations.org/geo_blog_obs.php?id=528). Others wishing to use the data can sign up and access it from Planet at [https://www.planet.com/nicfi/](https://www.planet.com/nicfi/) and email [planetarycomputer@microsoft.com](mailto:planetarycomputer@microsoft.com).*\n\nThrough Norway\u2019s International Climate & Forests Initiative (NICFI), users can access Planet\u2019s high-resolution, analysis-ready mosaics of the world\u2019s tropics in order to help reduce and reverse the loss of tropical forests, combat climate change, conserve biodiversity, and facilitate sustainable development.\n\nIn support of NICFI\u2019s mission, you can use this data for a number of projects including, but not limited to:\n\n* Advance scientific research about the world\u2019s tropical forests and the critical services they provide.\n* Implement and improve policies for sustainable forest management and land use in developing tropical forest countries and jurisdictions.\n* Increase transparency and accountability in the tropics.\n* Protect and improve the rights of indigenous peoples and local communities in tropical forest countries.\n* Innovate solutions towards reducing pressure on forests from global commodities and financial markets.\n* In short, the primary purpose of the NICFI Program is to support reducing and reversing the loss of tropical forests, contributing to combating climate change, conserving biodiversity, contributing to forest regrowth, restoration, and enhancement, and facilitating sustainable development, all of which must be Non-Commercial Use.\n\nTo learn how more about the NICFI program, streaming and downloading basemaps please read the [NICFI Data Program User Guide](https://assets.planet.com/docs/NICFI_UserGuidesFAQ.pdf).\n\nThis collection contains both monthly and biannual mosaics. Biannual mosaics are available from December 2015 - August 2020. Monthly mosaics are available from September 2020. The STAC items include a `planet-nicfi:cadence` field indicating the type of mosaic.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "imagery,nicfi,planet,planet-nicfi-visual,satellite,tropics", "license": "proprietary", "title": "Planet-NICFI Basemaps (Visual)", "missionStartDate": "2015-12-01T00:00:00Z"}, "gbif": {"abstract": "The [Global Biodiversity Information Facility](https://www.gbif.org) (GBIF) is an international network and data infrastructure funded by the world's governments, providing global data that document the occurrence of species. GBIF currently integrates datasets documenting over 1.6 billion species occurrences.\n\nThe GBIF occurrence dataset combines data from a wide array of sources, including specimen-related data from natural history museums, observations from citizen science networks, and automated environmental surveys. While these data are constantly changing at [GBIF.org](https://www.gbif.org), periodic snapshots are taken and made available here. \n\nData are stored in [Parquet](https://parquet.apache.org/) format; the Parquet file schema is described below. Most field names correspond to [terms from the Darwin Core standard](https://dwc.tdwg.org/terms/), and have been interpreted by GBIF's systems to align taxonomy, location, dates, etc. Additional information may be retrieved using the [GBIF API](https://www.gbif.org/developer/summary).\n\nPlease refer to the GBIF [citation guidelines](https://www.gbif.org/citation-guidelines) for information about how to cite GBIF data in publications.. For analyses using the whole dataset, please use the following citation:\n\n> GBIF.org ([Date]) GBIF Occurrence Data [DOI of dataset]\n\nFor analyses where data are significantly filtered, please track the datasetKeys used and use a \"[derived dataset](https://www.gbif.org/citation-guidelines#derivedDatasets)\" record for citing the data.\n\nThe [GBIF data blog](https://data-blog.gbif.org/categories/gbif/) contains a number of articles that can help you analyze GBIF data.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "biodiversity,gbif,species", "license": "proprietary", "title": "Global Biodiversity Information Facility (GBIF)", "missionStartDate": "2021-04-13T00:00:00Z"}, "modis-17A3HGF-061": {"abstract": "The Version 6.1 product provides information about annual Net Primary Production (NPP) at 500 meter (m) pixel resolution. Annual Moderate Resolution Imaging Spectroradiometer (MODIS) NPP is derived from the sum of all 8-day Net Photosynthesis (PSN) products (MOD17A2H) from the given year. The PSN value is the difference of the Gross Primary Productivity (GPP) and the Maintenance Respiration (MR). The product will be generated at the end of each year when the entire yearly 8-day 15A2H is available. Hence, the gap-filled product is the improved 17, which has cleaned the poor-quality inputs from 8-day Leaf Area Index and Fraction of Photosynthetically Active Radiation (LAI/FPAR) based on the Quality Control (QC) label for every pixel. If any LAI/FPAR pixel did not meet the quality screening criteria, its value is determined through linear interpolation. However, users cannot get this product in near-real time because it will be generated only at the end of a given year.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod17a3hgf,modis,modis-17a3hgf-061,myd17a3hgf,nasa,satellite,terra,vegetation", "license": "proprietary", "title": "MODIS Net Primary Production Yearly Gap-Filled", "missionStartDate": "2000-02-18T00:00:00Z"}, "modis-09A1-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) 09A1 Version 6.1 product provides an estimate of the surface spectral reflectance of MODIS Bands 1 through 7 corrected for atmospheric conditions such as gasses, aerosols, and Rayleigh scattering. Along with the seven 500 meter (m) reflectance bands are two quality layers and four observation bands. For each pixel, a value is selected from all the acquisitions within the 8-day composite period. The criteria for the pixel choice include cloud and solar zenith. When several acquisitions meet the criteria the pixel with the minimum channel 3 (blue) value is used.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,imagery,mod09a1,modis,modis-09a1-061,myd09a1,nasa,reflectance,satellite,terra", "license": "proprietary", "title": "MODIS Surface Reflectance 8-Day (500m)", "missionStartDate": "2000-02-18T00:00:00Z"}, "alos-dem": {"abstract": "The \"ALOS World 3D-30m\" (AW3D30) dataset is a 30 meter resolution global digital surface model (DSM), developed by the Japan Aerospace Exploration Agency (JAXA). AWD30 was constructed from the Panchromatic Remote-sensing Instrument for Stereo Mapping (PRISM) on board Advanced Land Observing Satellite (ALOS), operated from 2006 to 2011.\n\nSee the [Product Description](https://www.eorc.jaxa.jp/ALOS/en/aw3d30/aw3d30v3.2_product_e_e1.2.pdf) for more details.\n", "instrument": "prism", "platform": null, "platformSerialIdentifier": "alos", "processingLevel": null, "keywords": "alos,alos-dem,dem,dsm,elevation,jaxa,prism", "license": "proprietary", "title": "ALOS World 3D-30m", "missionStartDate": "2016-12-07T00:00:00Z"}, "alos-palsar-mosaic": {"abstract": "Global 25 m Resolution PALSAR-2/PALSAR Mosaic (MOS)", "instrument": "PALSAR,PALSAR-2", "platform": null, "platformSerialIdentifier": "ALOS,ALOS-2", "processingLevel": null, "keywords": "alos,alos-2,alos-palsar-mosaic,global,jaxa,palsar,palsar-2,remote-sensing", "license": "proprietary", "title": "ALOS PALSAR Annual Mosaic", "missionStartDate": "2015-01-01T00:00:00Z"}, "deltares-water-availability": {"abstract": "[Deltares](https://www.deltares.nl/en/) has produced a hydrological model approach to simulate historical daily reservoir variations for 3,236 locations across the globe for the period 1970-2020 using the distributed [wflow_sbm](https://deltares.github.io/Wflow.jl/stable/model_docs/model_configurations/) model. The model outputs long-term daily information on reservoir volume, inflow and outflow dynamics, as well as information on upstream hydrological forcing.\n\nThey hydrological model was forced with 5 different precipitation products. Two products (ERA5 and CHIRPS) are available at the global scale, while for Europe, USA and Australia a regional product was use (i.e. EOBS, NLDAS and BOM, respectively). Using these different precipitation products, it becomes possible to assess the impact of uncertainty in the model forcing. A different number of basins upstream of reservoirs are simulated, given the spatial coverage of each precipitation product.\n\nSee the complete [methodology documentation](https://ai4edatasetspublicassets.blob.core.windows.net/assets/aod_docs/pc-deltares-water-availability-documentation.pdf) for more information.\n\n## Dataset coverages\n\n| Name | Scale | Period | Number of basins |\n|--------|--------------------------|-----------|------------------|\n| ERA5 | Global | 1967-2020 | 3236 |\n| CHIRPS | Global (+/- 50 latitude) | 1981-2020 | 2951 |\n| EOBS | Europe/North Africa | 1979-2020 | 682 |\n| NLDAS | USA | 1979-2020 | 1090 |\n| BOM | Australia | 1979-2020 | 116 |\n\n## STAC Metadata\n\nThis STAC collection includes one STAC item per dataset. The item includes a `deltares:reservoir` property that can be used to query for the URL of a specific dataset.\n\n## Contact\n\nFor questions about this dataset, contact [`aiforearthdatasets@microsoft.com`](mailto:aiforearthdatasets@microsoft.com?subject=deltares-floods%20question).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "deltares,deltares-water-availability,precipitation,reservoir,water,water-availability", "license": "CDLA-Permissive-1.0", "title": "Deltares Global Water Availability", "missionStartDate": "1970-01-01T00:00:00Z"}, "modis-16A3GF-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) MOD16A3GF Version 6.1 Evapotranspiration/Latent Heat Flux (ET/LE) product is a year-end gap-filled yearly composite dataset produced at 500 meter (m) pixel resolution. The algorithm used for the MOD16 data product collection is based on the logic of the Penman-Monteith equation, which includes inputs of daily meteorological reanalysis data along with MODIS remotely sensed data products such as vegetation property dynamics, albedo, and land cover. The product will be generated at the end of each year when the entire yearly 8-day MOD15A2H/MYD15A2H is available. Hence, the gap-filled product is the improved 16, which has cleaned the poor-quality inputs from yearly Leaf Area Index and Fraction of Photosynthetically Active Radiation (LAI/FPAR) based on the Quality Control (QC) label for every pixel. If any LAI/FPAR pixel did not meet the quality screening criteria, its value is determined through linear interpolation. However, users cannot get this product in near-real time because it will be generated only at the end of a given year. Provided in the product are layers for composited ET, LE, Potential ET (PET), and Potential LE (PLE) along with a quality control layer. Two low resolution browse images, ET and LE, are also available for each granule. The pixel values for the two Evapotranspiration layers (ET and PET) are the sum for all days within the defined year, and the pixel values for the two Latent Heat layers (LE and PLE) are the average of all days within the defined year.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod16a3gf,modis,modis-16a3gf-061,myd16a3gf,nasa,satellite,terra,vegetation", "license": "proprietary", "title": "MODIS Net Evapotranspiration Yearly Gap-Filled", "missionStartDate": "2001-01-01T00:00:00Z"}, "modis-21A2-061": {"abstract": "A suite of Moderate Resolution Imaging Spectroradiometer (MODIS) Land Surface Temperature and Emissivity (LST&E) products are available in Collection 6.1. The MOD21 Land Surface Temperatuer (LST) algorithm differs from the algorithm of the MOD11 LST products, in that the MOD21 algorithm is based on the ASTER Temperature/Emissivity Separation (TES) technique, whereas the MOD11 uses the split-window technique. The MOD21 TES algorithm uses a physics-based algorithm to dynamically retrieve both the LST and spectral emissivity simultaneously from the MODIS thermal infrared bands 29, 31, and 32. The TES algorithm is combined with an improved Water Vapor Scaling (WVS) atmospheric correction scheme to stabilize the retrieval during very warm and humid conditions. This dataset is an 8-day composite LST product at 1,000 meter spatial resolution that uses an algorithm based on a simple averaging method. The algorithm calculates the average from all the cloud free 21A1D and 21A1N daily acquisitions from the 8-day period. Unlike the 21A1 data sets where the daytime and nighttime acquisitions are separate products, the 21A2 contains both daytime and nighttime acquisitions as separate Science Dataset (SDS) layers within a single Hierarchical Data Format (HDF) file. The LST, Quality Control (QC), view zenith angle, and viewing time have separate day and night SDS layers, while the values for the MODIS emissivity bands 29, 31, and 32 are the average of both the nighttime and daytime acquisitions. Additional details regarding the method used to create this Level 3 (L3) product are available in the Algorithm Theoretical Basis Document (ATBD).", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod21a2,modis,modis-21a2-061,myd21a2,nasa,satellite,temperature,terra", "license": "proprietary", "title": "MODIS Land Surface Temperature/3-Band Emissivity 8-Day", "missionStartDate": "2000-02-16T00:00:00Z"}, "us-census": {"abstract": "The [2020 Census](https://www.census.gov/programs-surveys/decennial-census/decade/2020/2020-census-main.html) counted every person living in the United States and the five U.S. territories. It marked the 24th census in U.S. history and the first time that households were invited to respond to the census online.\n\nThe tables included on the Planetary Computer provide information on population and geographic boundaries at various levels of cartographic aggregation.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "administrative-boundaries,demographics,population,us-census,us-census-bureau", "license": "proprietary", "title": "US Census", "missionStartDate": "2021-08-01T00:00:00Z"}, "jrc-gsw": {"abstract": "Global surface water products from the European Commission Joint Research Centre, based on Landsat 5, 7, and 8 imagery. Layers in this collection describe the occurrence, change, and seasonality of surface water from 1984-2020. Complete documentation for each layer is available in the [Data Users Guide](https://storage.cloud.google.com/global-surface-water/downloads_ancillary/DataUsersGuidev2020.pdf).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "global,jrc-gsw,landsat,water", "license": "proprietary", "title": "JRC Global Surface Water", "missionStartDate": "1984-03-01T00:00:00Z"}, "deltares-floods": {"abstract": "[Deltares](https://www.deltares.nl/en/) has produced inundation maps of flood depth using a model that takes into account water level attenuation and is forced by sea level. At the coastline, the model is forced by extreme water levels containing surge and tide from GTSMip6. The water level at the coastline is extended landwards to all areas that are hydrodynamically connected to the coast following a \u2018bathtub\u2019 like approach and calculates the flood depth as the difference between the water level and the topography. Unlike a simple 'bathtub' model, this model attenuates the water level over land with a maximum attenuation factor of 0.5\u2009m\u2009km-1. The attenuation factor simulates the dampening of the flood levels due to the roughness over land.\n\nIn its current version, the model does not account for varying roughness over land and permanent water bodies such as rivers and lakes, and it does not account for the compound effects of waves, rainfall, and river discharge on coastal flooding. It also does not include the mitigating effect of coastal flood protection. Flood extents must thus be interpreted as the area that is potentially exposed to flooding without coastal protection.\n\nSee the complete [methodology documentation](https://ai4edatasetspublicassets.blob.core.windows.net/assets/aod_docs/11206409-003-ZWS-0003_v0.1-Planetary-Computer-Deltares-global-flood-docs.pdf) for more information.\n\n## Digital elevation models (DEMs)\n\nThis documentation will refer to three DEMs:\n\n* `NASADEM` is the SRTM-derived [NASADEM](https://planetarycomputer.microsoft.com/dataset/nasadem) product.\n* `MERITDEM` is the [Multi-Error-Removed Improved Terrain DEM](http://hydro.iis.u-tokyo.ac.jp/~yamadai/MERIT_DEM/), derived from SRTM and AW3D.\n* `LIDAR` is the [Global LiDAR Lowland DTM (GLL_DTM_v1)](https://data.mendeley.com/datasets/v5x4vpnzds/1).\n\n## Global datasets\n\nThis collection includes multiple global flood datasets derived from three different DEMs (`NASA`, `MERIT`, and `LIDAR`) and at different resolutions. Not all DEMs have all resolutions:\n\n* `NASADEM` and `MERITDEM` are available at `90m` and `1km` resolutions\n* `LIDAR` is available at `5km` resolution\n\n## Historic event datasets\n\nThis collection also includes historical storm event data files that follow similar DEM and resolution conventions. Not all storms events are available for each DEM and resolution combination, but generally follow the format of:\n\n`events/[DEM]_[resolution]-wm_final/[storm_name]_[event_year]_masked.nc`\n\nFor example, a flood map for the MERITDEM-derived 90m flood data for the \"Omar\" storm in 2008 is available at:\n\n\n\n## Contact\n\nFor questions about this dataset, contact [`aiforearthdatasets@microsoft.com`](mailto:aiforearthdatasets@microsoft.com?subject=deltares-floods%20question).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "deltares,deltares-floods,flood,global,sea-level-rise,water", "license": "CDLA-Permissive-1.0", "title": "Deltares Global Flood Maps", "missionStartDate": "2018-01-01T00:00:00Z"}, "modis-43A4-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) MCD43A4 Version 6.1 Nadir Bidirectional Reflectance Distribution Function (BRDF)-Adjusted Reflectance (NBAR) dataset is produced daily using 16 days of Terra and Aqua MODIS data at 500 meter (m) resolution. The view angle effects are removed from the directional reflectances, resulting in a stable and consistent NBAR product. Data are temporally weighted to the ninth day which is reflected in the Julian date in the file name. Users are urged to use the band specific quality flags to isolate the highest quality full inversion results for their own science applications as described in the User Guide. The MCD43A4 provides NBAR and simplified mandatory quality layers for MODIS bands 1 through 7. Essential quality information provided in the corresponding MCD43A2 data file should be consulted when using this product.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,imagery,mcd43a4,modis,modis-43a4-061,nasa,reflectance,satellite,terra", "license": "proprietary", "title": "MODIS Nadir BRDF-Adjusted Reflectance (NBAR) Daily", "missionStartDate": "2000-02-16T00:00:00Z"}, "modis-09Q1-061": {"abstract": "The 09Q1 Version 6.1 product provides an estimate of the surface spectral reflectance of Moderate Resolution Imaging Spectroradiometer (MODIS) Bands 1 and 2, corrected for atmospheric conditions such as gasses, aerosols, and Rayleigh scattering. Provided along with the 250 meter (m) surface reflectance bands are two quality layers. For each pixel, a value is selected from all the acquisitions within the 8-day composite period. The criteria for the pixel choice include cloud and solar zenith. When several acquisitions meet the criteria the pixel with the minimum channel 3 (blue) value is used.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,imagery,mod09q1,modis,modis-09q1-061,myd09q1,nasa,reflectance,satellite,terra", "license": "proprietary", "title": "MODIS Surface Reflectance 8-Day (250m)", "missionStartDate": "2000-02-18T00:00:00Z"}, "modis-14A1-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) Thermal Anomalies and Fire Daily Version 6.1 data are generated every eight days at 1 kilometer (km) spatial resolution as a Level 3 product. MOD14A1 contains eight consecutive days of fire data conveniently packaged into a single file. The Science Dataset (SDS) layers include the fire mask, pixel quality indicators, maximum fire radiative power (MaxFRP), and the position of the fire pixel within the scan. Each layer consists of daily per pixel information for each of the eight days of data acquisition.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,fire,global,mod14a1,modis,modis-14a1-061,myd14a1,nasa,satellite,terra", "license": "proprietary", "title": "MODIS Thermal Anomalies/Fire Daily", "missionStartDate": "2000-02-18T00:00:00Z"}, "hrea": {"abstract": "The [HREA](http://www-personal.umich.edu/~brianmin/HREA/index.html) project aims to provide open access to new indicators of electricity access and reliability across the world. Leveraging satellite imagery with computational methods, these high-resolution data provide new tools to track progress toward reliable and sustainable energy access across the world.\n\nThis dataset includes settlement-level measures of electricity access, reliability, and usage for 89 nations, derived from nightly VIIRS satellite imagery. Specifically, this dataset provides the following annual values at country-level granularity:\n\n1. **Access**: Predicted likelihood that a settlement is electrified, based on night-by-night comparisons of each settlement against matched uninhabited areas over a calendar year.\n\n2. **Reliability**: Proportion of nights a settlement is statistically brighter than matched uninhabited areas. Areas with more frequent power outages or service interruptions have lower rates.\n\n3. **Usage**: Higher levels of brightness indicate more robust usage of outdoor lighting, which is highly correlated with overall energy consumption.\n\n4. **Nighttime Lights**: Annual composites of VIIRS nighttime light output.\n\nFor more information and methodology, please visit the [HREA website](http://www-personal.umich.edu/~brianmin/HREA/index.html).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "electricity,hrea,viirs", "license": "CC-BY-4.0", "title": "HREA: High Resolution Electricity Access", "missionStartDate": "2012-12-31T00:00:00Z"}, "modis-13Q1-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) Vegetation Indices Version 6.1 data are generated every 16 days at 250 meter (m) spatial resolution as a Level 3 product. The MOD13Q1 product provides two primary vegetation layers. The first is the Normalized Difference Vegetation Index (NDVI) which is referred to as the continuity index to the existing National Oceanic and Atmospheric Administration-Advanced Very High Resolution Radiometer (NOAA-AVHRR) derived NDVI. The second vegetation layer is the Enhanced Vegetation Index (EVI), which has improved sensitivity over high biomass regions. The algorithm chooses the best available pixel value from all the acquisitions from the 16 day period. The criteria used is low clouds, low view angle, and the highest NDVI/EVI value. Along with the vegetation layers and the two quality layers, the HDF file will have MODIS reflectance bands 1 (red), 2 (near-infrared), 3 (blue), and 7 (mid-infrared), as well as four observation layers.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod13q1,modis,modis-13q1-061,myd13q1,nasa,satellite,terra,vegetation", "license": "proprietary", "title": "MODIS Vegetation Indices 16-Day (250m)", "missionStartDate": "2000-02-18T00:00:00Z"}, "modis-14A2-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) Thermal Anomalies and Fire 8-Day Version 6.1 data are generated at 1 kilometer (km) spatial resolution as a Level 3 product. The MOD14A2 gridded composite contains the maximum value of the individual fire pixel classes detected during the eight days of acquisition. The Science Dataset (SDS) layers include the fire mask and pixel quality indicators.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,fire,global,mod14a2,modis,modis-14a2-061,myd14a2,nasa,satellite,terra", "license": "proprietary", "title": "MODIS Thermal Anomalies/Fire 8-Day", "missionStartDate": "2000-02-18T00:00:00Z"}, "sentinel-2-l2a": {"abstract": "The [Sentinel-2](https://sentinel.esa.int/web/sentinel/missions/sentinel-2) program provides global imagery in thirteen spectral bands at 10m-60m resolution and a revisit time of approximately five days. This dataset represents the global Sentinel-2 archive, from 2016 to the present, processed to L2A (bottom-of-atmosphere) using [Sen2Cor](https://step.esa.int/main/snap-supported-plugins/sen2cor/) and converted to [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.", "instrument": "msi", "platform": "sentinel-2", "platformSerialIdentifier": "Sentinel-2A,Sentinel-2B", "processingLevel": null, "keywords": "copernicus,esa,global,imagery,msi,reflectance,satellite,sentinel,sentinel-2,sentinel-2-l2a,sentinel-2a,sentinel-2b", "license": "proprietary", "title": "Sentinel-2 Level-2A", "missionStartDate": "2015-06-27T10:25:31Z"}, "modis-15A2H-061": {"abstract": "The Version 6.1 Moderate Resolution Imaging Spectroradiometer (MODIS) Level 4, Combined Fraction of Photosynthetically Active Radiation (FPAR), and Leaf Area Index (LAI) product is an 8-day composite dataset with 500 meter pixel size. The algorithm chooses the best pixel available from within the 8-day period. LAI is defined as the one-sided green leaf area per unit ground area in broadleaf canopies and as one-half the total needle surface area per unit ground area in coniferous canopies. FPAR is defined as the fraction of incident photosynthetically active radiation (400-700 nm) absorbed by the green elements of a vegetation canopy.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mcd15a2h,mod15a2h,modis,modis-15a2h-061,myd15a2h,nasa,satellite,terra,vegetation", "license": "proprietary", "title": "MODIS Leaf Area Index/FPAR 8-Day", "missionStartDate": "2002-07-04T00:00:00Z"}, "modis-11A1-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) Land Surface Temperature/Emissivity Daily Version 6.1 product provides daily per-pixel Land Surface Temperature and Emissivity (LST&E) with 1 kilometer (km) spatial resolution in a 1,200 by 1,200 km grid. The pixel temperature value is derived from the MOD11_L2 swath product. Above 30 degrees latitude, some pixels may have multiple observations where the criteria for clear-sky are met. When this occurs, the pixel value is a result of the average of all qualifying observations. Provided along with the daytime and nighttime surface temperature bands are associated quality control assessments, observation times, view zenith angles, and clear-sky coverages along with bands 31 and 32 emissivities from land cover types", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod11a1,modis,modis-11a1-061,myd11a1,nasa,satellite,temperature,terra", "license": "proprietary", "title": "MODIS Land Surface Temperature/Emissivity Daily", "missionStartDate": "2000-02-24T00:00:00Z"}, "modis-15A3H-061": {"abstract": "The MCD15A3H Version 6.1 Moderate Resolution Imaging Spectroradiometer (MODIS) Level 4, Combined Fraction of Photosynthetically Active Radiation (FPAR), and Leaf Area Index (LAI) product is a 4-day composite data set with 500 meter pixel size. The algorithm chooses the best pixel available from all the acquisitions of both MODIS sensors located on NASA's Terra and Aqua satellites from within the 4-day period. LAI is defined as the one-sided green leaf area per unit ground area in broadleaf canopies and as one-half the total needle surface area per unit ground area in coniferous canopies. FPAR is defined as the fraction of incident photosynthetically active radiation (400-700 nm) absorbed by the green elements of a vegetation canopy.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mcd15a3h,modis,modis-15a3h-061,nasa,satellite,terra,vegetation", "license": "proprietary", "title": "MODIS Leaf Area Index/FPAR 4-Day", "missionStartDate": "2002-07-04T00:00:00Z"}, "ecmwf-forecast": {"abstract": "The [ECMWF catalog of real-time products](https://www.ecmwf.int/en/forecasts/datasets/catalogue-ecmwf-real-time-products) offers real-time meterological and oceanographic productions from the ECMWF forecast system. Users should consult the [ECMWF Forecast User Guide](https://confluence.ecmwf.int/display/FUG/1+Introduction) for detailed information on each of the products.\n\n## Overview of products\n\nThe following diagram shows the publishing schedule of the various products.\n\n\n\nThe vertical axis shows the various products, defined below, which are grouped by combinations of `stream`, `forecast type`, and `reference time`. The horizontal axis shows *forecast times* in 3-hour intervals out from the reference time. A black square over a particular forecast time, or step, indicates that a forecast is made for that forecast time, for that particular `stream`, `forecast type`, `reference time` combination.\n\n* **stream** is the forecasting system that produced the data. The values are available in the `ecmwf:stream` summary of the STAC collection. They are:\n * `enfo`: [ensemble forecast](https://confluence.ecmwf.int/display/FUG/ENS+-+Ensemble+Forecasts), atmospheric fields\n * `mmsf`: [multi-model seasonal forecasts](https://confluence.ecmwf.int/display/FUG/Long-Range+%28Seasonal%29+Forecast) fields from the ECMWF model only.\n * `oper`: [high-resolution forecast](https://confluence.ecmwf.int/display/FUG/HRES+-+High-Resolution+Forecast), atmospheric fields \n * `scda`: short cut-off high-resolution forecast, atmospheric fields (also known as \"high-frequency products\")\n * `scwv`: short cut-off high-resolution forecast, ocean wave fields (also known as \"high-frequency products\") and\n * `waef`: [ensemble forecast](https://confluence.ecmwf.int/display/FUG/ENS+-+Ensemble+Forecasts), ocean wave fields,\n * `wave`: wave model\n* **type** is the forecast type. The values are available in the `ecmwf:type` summary of the STAC collection. They are:\n * `fc`: forecast\n * `ef`: ensemble forecast\n * `pf`: ensemble probabilities\n * `tf`: trajectory forecast for tropical cyclone tracks\n* **reference time** is the hours after midnight when the model was run. Each stream / type will produce assets for different forecast times (steps from the reference datetime) depending on the reference time.\n\nVisit the [ECMWF's User Guide](https://confluence.ecmwf.int/display/UDOC/ECMWF+Open+Data+-+Real+Time) for more details on each of the various products.\n\nAssets are available for the previous 30 days.\n\n## Asset overview\n\nThe data are provided as [GRIB2 files](https://confluence.ecmwf.int/display/CKB/What+are+GRIB+files+and+how+can+I+read+them).\nAdditionally, [index files](https://confluence.ecmwf.int/display/UDOC/ECMWF+Open+Data+-+Real+Time#ECMWFOpenDataRealTime-IndexFilesIndexfiles) are provided, which can be used to read subsets of the data from Azure Blob Storage.\n\nWithin each `stream`, `forecast type`, `reference time`, the structure of the data are mostly consistent. Each GRIB2 file will have the\nsame data variables, coordinates (aside from `time` as the *reference time* changes and `step` as the *forecast time* changes). The exception\nis the `enfo-ep` and `waef-ep` products, which have more `step`s in the 240-hour forecast than in the 360-hour forecast. \n\nSee the example notebook for more on how to access the data.\n\n## STAC metadata\n\nThe Planetary Computer provides a single STAC item per GRIB2 file. Each GRIB2 file is global in extent, so every item has the same\n`bbox` and `geometry`.\n\nA few custom properties are available on each STAC item, which can be used in searches to narrow down the data to items of interest:\n\n* `ecmwf:stream`: The forecasting system (see above for definitions). The full set of values is available in the Collection's summaries.\n* `ecmwf:type`: The forecast type (see above for definitions). The full set of values is available in the Collection's summaries.\n* `ecmwf:step`: The offset from the reference datetime, expressed as ``, for example `\"3h\"` means \"3 hours from the reference datetime\". \n* `ecmwf:reference_datetime`: The datetime when the model was run. This indicates when the forecast *was made*, rather than when it's valid for.\n* `ecmwf:forecast_datetime`: The datetime for which the forecast is valid. This is also set as the item's `datetime`.\n\nSee the example notebook for more on how to use the STAC metadata to query for particular data.\n\n## Attribution\n\nThe products listed and described on this page are available to the public and their use is governed by the [Creative Commons CC-4.0-BY license and the ECMWF Terms of Use](https://apps.ecmwf.int/datasets/licences/general/). This means that the data may be redistributed and used commercially, subject to appropriate attribution.\n\nThe following wording should be attached to the use of this ECMWF dataset: \n\n1. Copyright statement: Copyright \"\u00a9 [year] European Centre for Medium-Range Weather Forecasts (ECMWF)\".\n2. Source [www.ecmwf.int](http://www.ecmwf.int/)\n3. License Statement: This data is published under a Creative Commons Attribution 4.0 International (CC BY 4.0). [https://creativecommons.org/licenses/by/4.0/](https://creativecommons.org/licenses/by/4.0/)\n4. Disclaimer: ECMWF does not accept any liability whatsoever for any error or omission in the data, their availability, or for any loss or damage arising from their use.\n5. Where applicable, an indication if the material has been modified and an indication of previous modifications.\n\nThe following wording shall be attached to services created with this ECMWF dataset:\n\n1. Copyright statement: Copyright \"This service is based on data and products of the European Centre for Medium-Range Weather Forecasts (ECMWF)\".\n2. Source www.ecmwf.int\n3. License Statement: This ECMWF data is published under a Creative Commons Attribution 4.0 International (CC BY 4.0). [https://creativecommons.org/licenses/by/4.0/](https://creativecommons.org/licenses/by/4.0/)\n4. Disclaimer: ECMWF does not accept any liability whatsoever for any error or omission in the data, their availability, or for any loss or damage arising from their use.\n5. Where applicable, an indication if the material has been modified and an indication of previous modifications\n\n## More information\n\nFor more, see the [ECMWF's User Guide](https://confluence.ecmwf.int/display/UDOC/ECMWF+Open+Data+-+Real+Time) and [example notebooks](https://github.com/ecmwf/notebook-examples/tree/master/opencharts).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "ecmwf,ecmwf-forecast,forecast,weather", "license": "CC-BY-4.0", "title": "ECMWF Open Data (real-time)", "missionStartDate": null}, "modis-13A1-061": {"abstract": "The Moderate Resolution Imaging Spectroradiometer (MODIS) Vegetation Indices 16-Day Version 6.1 product provides Vegetation Index (VI) values at a per pixel basis at 500 meter (m) spatial resolution. There are two primary vegetation layers. The first is the Normalized Difference Vegetation Index (NDVI), which is referred to as the continuity index to the existing National Oceanic and Atmospheric Administration-Advanced Very High Resolution Radiometer (NOAA-AVHRR) derived NDVI. The second vegetation layer is the Enhanced Vegetation Index (EVI), which has improved sensitivity over high biomass regions. The algorithm for this product chooses the best available pixel value from all the acquisitions from the 16 day period. The criteria used is low clouds, low view angle, and the highest NDVI/EVI value. Provided along with the vegetation layers and two quality assurance (QA) layers are reflectance bands 1 (red), 2 (near-infrared), 3 (blue), and 7 (mid-infrared), as well as four observation layers.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod13a1,modis,modis-13a1-061,myd13a1,nasa,satellite,terra,vegetation", "license": "proprietary", "title": "MODIS Vegetation Indices 16-Day (500m)", "missionStartDate": "2000-02-18T00:00:00Z"}, "daymet-daily-na": {"abstract": "Gridded estimates of daily weather parameters. [Daymet](https://daymet.ornl.gov) Version 4 variables include the following parameters: minimum temperature, maximum temperature, precipitation, shortwave radiation, vapor pressure, snow water equivalent, and day length.\n\n[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n\nUse the DOI at [https://doi.org/10.3334/ORNLDAAC/1840](https://doi.org/10.3334/ORNLDAAC/1840) to cite your usage of the data.\n\nThis dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#daily).\n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "daymet,daymet-daily-na,north-america,precipitation,temperature,vapor-pressure,weather", "license": "proprietary", "title": "Daymet Daily North America", "missionStartDate": "1980-01-01T12:00:00Z"}, "nrcan-landcover": {"abstract": "Collection of Land Cover products for Canada as produced by Natural Resources Canada using Landsat satellite imagery. This collection of cartographic products offers classified Land Cover of Canada at a 30 metre scale, updated on a 5 year basis.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "canada,land-cover,landsat,north-america,nrcan-landcover,remote-sensing", "license": "OGL-Canada-2.0", "title": "Land Cover of Canada", "missionStartDate": "2015-01-01T00:00:00Z"}, "modis-10A2-061": {"abstract": "This global Level-3 (L3) data set provides the maximum snow cover extent observed over an eight-day period within 10degx10deg MODIS sinusoidal grid tiles. Tiles are generated by compositing 500 m observations from the 'MODIS Snow Cover Daily L3 Global 500m Grid' data set. A bit flag index is used to track the eight-day snow/no-snow chronology for each 500 m cell.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod10a2,modis,modis-10a2-061,myd10a2,nasa,satellite,snow,terra", "license": "proprietary", "title": "MODIS Snow Cover 8-day", "missionStartDate": "2000-02-18T00:00:00Z"}, "noaa-mrms-qpe-24h-pass2": {"abstract": "The [Multi-Radar Multi-Sensor (MRMS) Quantitative Precipitation Estimation (QPE)](https://www.nssl.noaa.gov/projects/mrms/) products are seamless 1-km mosaics of precipitation accumulation covering the continental United States, Alaska, Hawaii, the Caribbean, and Guam. The products are automatically generated through integration of data from multiple radars and radar networks, surface and satellite observations, numerical weather prediction (NWP) models, and climatology. The products are updated hourly at the top of the hour.\n\nMRMS QPE is available as a \"Pass 1\" or \"Pass 2\" product. The Pass 1 product is available with a 60-minute latency and includes 60-65% of gauges. The Pass 2 product has a higher latency of 120 minutes, but includes 99% of gauges. The Pass 1 and Pass 2 products are broken into 1-, 3-, 6-, 12-, 24-, 48-, and 72-hour accumulation sub-products.\n\nThis Collection contains the **24-Hour Pass 2** sub-product, i.e., 24-hour cumulative precipitation accumulation with a 2-hour latency. The data are available in [Cloud Optimized GeoTIFF](https://www.cogeo.org/) format as well as the original source GRIB2 format files. The GRIB2 files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "caribbean,guam,mrms,noaa,noaa-mrms-qpe-24h-pass2,precipitation,qpe,united-states,weather", "license": "proprietary", "title": "NOAA MRMS QPE 24-Hour Pass 2", "missionStartDate": "2022-07-21T20:00:00Z"}, "sentinel-1-grd": {"abstract": "The [Sentinel-1](https://sentinel.esa.int/web/sentinel/missions/sentinel-1) mission is a constellation of two polar-orbiting satellites, operating day and night performing C-band synthetic aperture radar imaging. The Level-1 Ground Range Detected (GRD) products in this Collection consist of focused SAR data that has been detected, multi-looked and projected to ground range using the Earth ellipsoid model WGS84. The ellipsoid projection of the GRD products is corrected using the terrain height specified in the product general annotation. The terrain height used varies in azimuth but is constant in range (but can be different for each IW/EW sub-swath).\n\nGround range coordinates are the slant range coordinates projected onto the ellipsoid of the Earth. Pixel values represent detected amplitude. Phase information is lost. The resulting product has approximately square resolution pixels and square pixel spacing with reduced speckle at a cost of reduced spatial resolution.\n\nFor the IW and EW GRD products, multi-looking is performed on each burst individually. All bursts in all sub-swaths are then seamlessly merged to form a single, contiguous, ground range, detected image per polarization.\n\nFor more information see the [ESA documentation](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-1-sar/product-types-processing-levels/level-1)\n\n### Terrain Correction\n\nUsers might want to geometrically or radiometrically terrain correct the Sentinel-1 GRD data from this collection. The [Sentinel-1-RTC Collection](https://planetarycomputer.microsoft.com/dataset/sentinel-1-rtc) collection is a global radiometrically terrain corrected dataset derived from Sentinel-1 GRD. Additionally, users can terrain-correct on the fly using [any DEM available on the Planetary Computer](https://planetarycomputer.microsoft.com/catalog?tags=DEM). See [Customizable radiometric terrain correction](https://planetarycomputer.microsoft.com/docs/tutorials/customizable-rtc-sentinel1/) for more.", "instrument": null, "platform": "Sentinel-1", "platformSerialIdentifier": "SENTINEL-1A,SENTINEL-1B", "processingLevel": null, "keywords": "c-band,copernicus,esa,grd,sar,sentinel,sentinel-1,sentinel-1-grd,sentinel-1a,sentinel-1b", "license": "proprietary", "title": "Sentinel 1 Level-1 Ground Range Detected (GRD)", "missionStartDate": "2014-10-10T00:28:21Z"}, "nasadem": {"abstract": "[NASADEM](https://earthdata.nasa.gov/esds/competitive-programs/measures/nasadem) provides global topographic data at 1 arc-second (~30m) horizontal resolution, derived primarily from data captured via the [Shuttle Radar Topography Mission](https://www2.jpl.nasa.gov/srtm/) (SRTM).\n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "dem,elevation,jpl,nasa,nasadem,nga,srtm,usgs", "license": "proprietary", "title": "NASADEM HGT v001", "missionStartDate": "2000-02-20T00:00:00Z"}, "io-lulc": {"abstract": "__Note__: _A new version of this item is available for your use. This mature version of the map remains available for use in existing applications. This item will be retired in December 2024. There is 2020 data available in the newer [9-class dataset](https://planetarycomputer.microsoft.com/dataset/io-lulc-9-class)._\n\nGlobal estimates of 10-class land use/land cover (LULC) for 2020, derived from ESA Sentinel-2 imagery at 10m resolution. This dataset was generated by [Impact Observatory](http://impactobservatory.com/), who used billions of human-labeled pixels (curated by the National Geographic Society) to train a deep learning model for land classification. The global map was produced by applying this model to the relevant yearly Sentinel-2 scenes on the Planetary Computer.\n\nThis dataset is also available on the [ArcGIS Living Atlas of the World](https://livingatlas.arcgis.com/landcover/).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "global,io-lulc,land-cover,land-use,sentinel", "license": "CC-BY-4.0", "title": "Esri 10-Meter Land Cover (10-class)", "missionStartDate": "2017-01-01T00:00:00Z"}, "landsat-c2-l1": {"abstract": "Landsat Collection 2 Level-1 data, consisting of quantized and calibrated scaled Digital Numbers (DN) representing the multispectral image data. These [Level-1](https://www.usgs.gov/landsat-missions/landsat-collection-2-level-1-data) data can be [rescaled](https://www.usgs.gov/landsat-missions/using-usgs-landsat-level-1-data-product) to top of atmosphere (TOA) reflectance and/or radiance. Thermal band data can be rescaled to TOA brightness temperature.\n\nThis dataset represents the global archive of Level-1 data from [Landsat Collection 2](https://www.usgs.gov/core-science-systems/nli/landsat/landsat-collection-2) acquired by the [Multispectral Scanner System](https://landsat.gsfc.nasa.gov/multispectral-scanner-system/) onboard Landsat 1 through Landsat 5 from July 7, 1972 to January 7, 2013. Images are stored in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.\n", "instrument": "mss", "platform": null, "platformSerialIdentifier": "landsat-1,landsat-2,landsat-3,landsat-4,landsat-5", "processingLevel": null, "keywords": "global,imagery,landsat,landsat-1,landsat-2,landsat-3,landsat-4,landsat-5,landsat-c2-l1,mss,nasa,satellite,usgs", "license": "proprietary", "title": "Landsat Collection 2 Level-1", "missionStartDate": "1972-07-25T00:00:00Z"}, "drcog-lulc": {"abstract": "The [Denver Regional Council of Governments (DRCOG) Land Use/Land Cover (LULC)](https://drcog.org/services-and-resources/data-maps-and-modeling/regional-land-use-land-cover-project) datasets are developed in partnership with the [Babbit Center for Land and Water Policy](https://www.lincolninst.edu/our-work/babbitt-center-land-water-policy) and the [Chesapeake Conservancy](https://www.chesapeakeconservancy.org/)'s Conservation Innovation Center (CIC). DRCOG LULC includes 2018 data at 3.28ft (1m) resolution covering 1,000 square miles and 2020 data at 1ft resolution covering 6,000 square miles of the Denver, Colorado region. The classification data is derived from the USDA's 1m National Agricultural Imagery Program (NAIP) aerial imagery and leaf-off aerial ortho-imagery captured as part of the [Denver Regional Aerial Photography Project](https://drcog.org/services-and-resources/data-maps-and-modeling/denver-regional-aerial-photography-project) (6in resolution everywhere except the mountainous regions to the west, which are 1ft resolution).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "drcog-lulc,land-cover,land-use,naip,usda", "license": "proprietary", "title": "Denver Regional Council of Governments Land Use Land Cover", "missionStartDate": "2018-01-01T00:00:00Z"}, "chesapeake-lc-7": {"abstract": "A high-resolution 1-meter [land cover data product](https://www.chesapeakeconservancy.org/conservation-innovation-center/high-resolution-data/land-cover-data-project/) in raster format for the entire Chesapeake Bay watershed based on 2013-2014 imagery from the National Agriculture Imagery Program (NAIP). The product area encompasses over 250,000 square kilometers in New York, Pennsylvania, Maryland, Delaware, West Virginia, Virginia, and the District of Columbia. The dataset was created by the [Chesapeake Conservancy](https://www.chesapeakeconservancy.org/) [Conservation Innovation Center](https://www.chesapeakeconservancy.org/conservation-innovation-center/) for the [Chesapeake Bay Program](https://www.chesapeakebay.net/), which is a regional partnership of EPA, other federal, state, and local agencies and governments, nonprofits, and academic institutions, that leads and directs Chesapeake Bay restoration efforts. \n\nThe dataset is composed of a uniform set of 7 land cover classes. Additional information is available in a [User Guide](https://www.chesapeakeconservancy.org/wp-content/uploads/2020/06/Chesapeake_Conservancy_LandCover101Guide_June2020.pdf). Images are stored in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "chesapeake-bay-watershed,chesapeake-conservancy,chesapeake-lc-7,land-cover", "license": "proprietary", "title": "Chesapeake Land Cover (7-class)", "missionStartDate": "2013-01-01T00:00:00Z"}, "chesapeake-lc-13": {"abstract": "A high-resolution 1-meter [land cover data product](https://www.chesapeakeconservancy.org/conservation-innovation-center/high-resolution-data/land-cover-data-project/) in raster format for the entire Chesapeake Bay watershed based on 2013-2014 imagery from the National Agriculture Imagery Program (NAIP). The product area encompasses over 250,000 square kilometers in New York, Pennsylvania, Maryland, Delaware, West Virginia, Virginia, and the District of Columbia. The dataset was created by the [Chesapeake Conservancy](https://www.chesapeakeconservancy.org/) [Conservation Innovation Center](https://www.chesapeakeconservancy.org/conservation-innovation-center/) for the [Chesapeake Bay Program](https://www.chesapeakebay.net/), which is a regional partnership of EPA, other federal, state, and local agencies and governments, nonprofits, and academic institutions, that leads and directs Chesapeake Bay restoration efforts. \n\nThe dataset is composed of 13 land cover classes, although not all classes are used in all areas. Additional information is available in a [User Guide](https://www.chesapeakeconservancy.org/wp-content/uploads/2020/06/Chesapeake_Conservancy_LandCover101Guide_June2020.pdf) and [Class Description](https://www.chesapeakeconservancy.org/wp-content/uploads/2020/03/LC_Class_Descriptions.pdf) document. Images are stored in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "chesapeake-bay-watershed,chesapeake-conservancy,chesapeake-lc-13,land-cover", "license": "proprietary", "title": "Chesapeake Land Cover (13-class)", "missionStartDate": "2013-01-01T00:00:00Z"}, "chesapeake-lu": {"abstract": "A high-resolution 1-meter [land use data product](https://www.chesapeakeconservancy.org/conservation-innovation-center/high-resolution-data/land-use-data-project/) in raster format for the entire Chesapeake Bay watershed. The dataset was created by modifying the 2013-2014 high-resolution [land cover dataset](https://www.chesapeakeconservancy.org/conservation-innovation-center/high-resolution-data/land-cover-data-project/) using 13 ancillary datasets including data on zoning, land use, parcel boundaries, landfills, floodplains, and wetlands. The product area encompasses over 250,000 square kilometers in New York, Pennsylvania, Maryland, Delaware, West Virginia, Virginia, and the District of Columbia. The dataset was created by the [Chesapeake Conservancy](https://www.chesapeakeconservancy.org/) [Conservation Innovation Center](https://www.chesapeakeconservancy.org/conservation-innovation-center/) for the [Chesapeake Bay Program](https://www.chesapeakebay.net/), which is a regional partnership of EPA, other federal, state, and local agencies and governments, nonprofits, and academic institutions that leads and directs Chesapeake Bay restoration efforts.\n\nThe dataset is composed of 17 land use classes in Virginia and 16 classes in all other jurisdictions. Additional information is available in a land use [Class Description](https://www.chesapeakeconservancy.org/wp-content/uploads/2018/11/2013-Phase-6-Mapped-Land-Use-Definitions-Updated-PC-11302018.pdf) document. Images are stored in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "chesapeake-bay-watershed,chesapeake-conservancy,chesapeake-lu,land-use", "license": "proprietary", "title": "Chesapeake Land Use", "missionStartDate": "2013-01-01T00:00:00Z"}, "noaa-mrms-qpe-1h-pass1": {"abstract": "The [Multi-Radar Multi-Sensor (MRMS) Quantitative Precipitation Estimation (QPE)](https://www.nssl.noaa.gov/projects/mrms/) products are seamless 1-km mosaics of precipitation accumulation covering the continental United States, Alaska, Hawaii, the Caribbean, and Guam. The products are automatically generated through integration of data from multiple radars and radar networks, surface and satellite observations, numerical weather prediction (NWP) models, and climatology. The products are updated hourly at the top of the hour.\n\nMRMS QPE is available as a \"Pass 1\" or \"Pass 2\" product. The Pass 1 product is available with a 60-minute latency and includes 60-65% of gauges. The Pass 2 product has a higher latency of 120 minutes, but includes 99% of gauges. The Pass 1 and Pass 2 products are broken into 1-, 3-, 6-, 12-, 24-, 48-, and 72-hour accumulation sub-products.\n\nThis Collection contains the **1-Hour Pass 1** sub-product, i.e., 1-hour cumulative precipitation accumulation with a 1-hour latency. The data are available in [Cloud Optimized GeoTIFF](https://www.cogeo.org/) format as well as the original source GRIB2 format files. The GRIB2 files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "caribbean,guam,mrms,noaa,noaa-mrms-qpe-1h-pass1,precipitation,qpe,united-states,weather", "license": "proprietary", "title": "NOAA MRMS QPE 1-Hour Pass 1", "missionStartDate": "2022-07-21T20:00:00Z"}, "noaa-mrms-qpe-1h-pass2": {"abstract": "The [Multi-Radar Multi-Sensor (MRMS) Quantitative Precipitation Estimation (QPE)](https://www.nssl.noaa.gov/projects/mrms/) products are seamless 1-km mosaics of precipitation accumulation covering the continental United States, Alaska, Hawaii, the Caribbean, and Guam. The products are automatically generated through integration of data from multiple radars and radar networks, surface and satellite observations, numerical weather prediction (NWP) models, and climatology. The products are updated hourly at the top of the hour.\n\nMRMS QPE is available as a \"Pass 1\" or \"Pass 2\" product. The Pass 1 product is available with a 60-minute latency and includes 60-65% of gauges. The Pass 2 product has a higher latency of 120 minutes, but includes 99% of gauges. The Pass 1 and Pass 2 products are broken into 1-, 3-, 6-, 12-, 24-, 48-, and 72-hour accumulation sub-products.\n\nThis Collection contains the **1-Hour Pass 2** sub-product, i.e., 1-hour cumulative precipitation accumulation with a 2-hour latency. The data are available in [Cloud Optimized GeoTIFF](https://www.cogeo.org/) format as well as the original source GRIB2 format files. The GRIB2 files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "caribbean,guam,mrms,noaa,noaa-mrms-qpe-1h-pass2,precipitation,qpe,united-states,weather", "license": "proprietary", "title": "NOAA MRMS QPE 1-Hour Pass 2", "missionStartDate": "2022-07-21T20:00:00Z"}, "noaa-nclimgrid-monthly": {"abstract": "The [NOAA U.S. Climate Gridded Dataset (NClimGrid)](https://www.ncei.noaa.gov/access/metadata/landing-page/bin/iso?id=gov.noaa.ncdc:C00332) consists of four climate variables derived from the [Global Historical Climatology Network daily (GHCNd)](https://www.ncei.noaa.gov/products/land-based-station/global-historical-climatology-network-daily) dataset: maximum temperature, minimum temperature, average temperature, and precipitation. The data is provided in 1/24 degree lat/lon (nominal 5x5 kilometer) grids for the Continental United States (CONUS). \n\nNClimGrid data is available in monthly and daily temporal intervals, with the daily data further differentiated as \"prelim\" (preliminary) or \"scaled\". Preliminary daily data is available within approximately three days of collection. Once a calendar month of preliminary daily data has been collected, it is scaled to match the corresponding monthly value. Monthly data is available from 1895 to the present. Daily preliminary and daily scaled data is available from 1951 to the present. \n\nThis Collection contains **Monthly** data. See the journal publication [\"Improved Historical Temperature and Precipitation Time Series for U.S. Climate Divisions\"](https://journals.ametsoc.org/view/journals/apme/53/5/jamc-d-13-0248.1.xml) for more information about monthly gridded data.\n\nUsers of all NClimGrid data product should be aware that [NOAA advertises](https://www.ncei.noaa.gov/access/metadata/landing-page/bin/iso?id=gov.noaa.ncdc:C00332) that:\n>\"On an annual basis, approximately one year of 'final' NClimGrid data is submitted to replace the initially supplied 'preliminary' data for the same time period. Users should be sure to ascertain which level of data is required for their research.\"\n\nThe source NetCDF files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\n\n*Note*: The Planetary Computer currently has STAC metadata for just the monthly collection. We'll have STAC metadata for daily data in our next release. In the meantime, you can access the daily NetCDF data directly from Blob Storage using the storage container at `https://nclimgridwesteurope.blob.core.windows.net/nclimgrid`. See https://planetarycomputer.microsoft.com/docs/concepts/data-catalog/#access-patterns for more.*\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,nclimgrid,noaa,noaa-nclimgrid-monthly,precipitation,temperature,united-states", "license": "proprietary", "title": "Monthly NOAA U.S. Climate Gridded Dataset (NClimGrid)", "missionStartDate": "1895-01-01T00:00:00Z"}, "goes-glm": {"abstract": "The [Geostationary Lightning Mapper (GLM)](https://www.goes-r.gov/spacesegment/glm.html) is a single-channel, near-infrared optical transient detector that can detect the momentary changes in an optical scene, indicating the presence of lightning. GLM measures total lightning (in-cloud, cloud-to-cloud and cloud-to-ground) activity continuously over the Americas and adjacent ocean regions with near-uniform spatial resolution of approximately 10 km. GLM collects information such as the frequency, location and extent of lightning discharges to identify intensifying thunderstorms and tropical cyclones. Trends in total lightning available from the GLM provide critical information to forecasters, allowing them to focus on developing severe storms much earlier and before these storms produce damaging winds, hail or even tornadoes.\n\nThe GLM data product consists of a hierarchy of earth-located lightning radiant energy measures including events, groups, and flashes:\n\n- Lightning events are detected by the instrument.\n- Lightning groups are a collection of one or more lightning events that satisfy temporal and spatial coincidence thresholds.\n- Similarly, lightning flashes are a collection of one or more lightning groups that satisfy temporal and spatial coincidence thresholds.\n\nThe product includes the relationship among lightning events, groups, and flashes, and the area coverage of lightning groups and flashes. The product also includes processing and data quality metadata, and satellite state and location information. \n\nThis Collection contains GLM L2 data in tabular ([GeoParquet](https://github.com/opengeospatial/geoparquet)) format and the original source NetCDF format. The NetCDF files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).", "instrument": "FM1,FM2", "platform": "GOES", "platformSerialIdentifier": "GOES-16,GOES-17", "processingLevel": ["L2"], "keywords": "fm1,fm2,goes,goes-16,goes-17,goes-glm,l2,lightning,nasa,noaa,satellite,weather", "license": "proprietary", "title": "GOES-R Lightning Detection", "missionStartDate": "2018-02-13T16:10:00Z"}, "usda-cdl": {"abstract": "The Cropland Data Layer (CDL) is a product of the USDA National Agricultural Statistics Service (NASS) with the mission \"to provide timely, accurate and useful statistics in service to U.S. agriculture\" (Johnson and Mueller, 2010, p. 1204). The CDL is a crop-specific land cover classification product of more than 100 crop categories grown in the United States. CDLs are derived using a supervised land cover classification of satellite imagery. The supervised classification relies on first manually identifying pixels within certain images, often called training sites, which represent the same crop or land cover type. Using these training sites, a spectral signature is developed for each crop type that is then used by the analysis software to identify all other pixels in the satellite image representing the same crop. Using this method, a new CDL is compiled annually and released to the public a few months after the end of the growing season.\n\nThis collection includes Cropland, Confidence, Cultivated, and Frequency products.\n\n- Cropland: Crop-specific land cover data created annually. There are currently four individual crop frequency data layers that represent four major crops: corn, cotton, soybeans, and wheat.\n- Confidence: The predicted confidence associated with an output pixel. A value of zero indicates low confidence, while a value of 100 indicates high confidence.\n- Cultivated: cultivated and non-cultivated land cover for CONUS based on land cover information derived from the 2017 through 2021 Cropland products.\n- Frequency: crop specific planting frequency based on land cover information derived from the 2008 through 2021 Cropland products.\n\nFor more, visit the [Cropland Data Layer homepage](https://www.nass.usda.gov/Research_and_Science/Cropland/SARS1a.php).", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "agriculture,land-cover,land-use,united-states,usda,usda-cdl", "license": "proprietary", "title": "USDA Cropland Data Layers (CDLs)", "missionStartDate": "2008-01-01T00:00:00Z"}, "eclipse": {"abstract": "The [Project Eclipse](https://www.microsoft.com/en-us/research/project/project-eclipse/) Network is a low-cost air quality sensing network for cities and a research project led by the [Urban Innovation Group]( https://www.microsoft.com/en-us/research/urban-innovation-research/) at Microsoft Research.\n\nProject Eclipse currently includes over 100 locations in Chicago, Illinois, USA.\n\nThis network was deployed starting in July, 2021, through a collaboration with the City of Chicago, the Array of Things Project, JCDecaux Chicago, and the Environmental Law and Policy Center as well as local environmental justice organizations in the city. [This talk]( https://www.microsoft.com/en-us/research/video/technology-demo-project-eclipse-hyperlocal-air-quality-monitoring-for-cities/) documents the network design and data calibration strategy.\n\n## Storage resources\n\nData are stored in [Parquet](https://parquet.apache.org/) files in Azure Blob Storage in the West Europe Azure region, in the following blob container:\n\n`https://ai4edataeuwest.blob.core.windows.net/eclipse`\n\nWithin that container, the periodic occurrence snapshots are stored in `Chicago/YYYY-MM-DD`, where `YYYY-MM-DD` corresponds to the date of the snapshot.\nEach snapshot contains a sensor readings from the next 7-days in Parquet format starting with date on the folder name YYYY-MM-DD.\nTherefore, the data files for the first snapshot are at\n\n`https://ai4edataeuwest.blob.core.windows.net/eclipse/chicago/2022-01-01/data_*.parquet\n\nThe Parquet file schema is as described below. \n\n## Additional Documentation\n\nFor details on Calibration of Pm2.5, O3 and NO2, please see [this PDF](https://ai4edatasetspublicassets.blob.core.windows.net/assets/aod_docs/Calibration_Doc_v1.1.pdf).\n\n## License and attribution\nPlease cite: Daepp, Cabral, Ranganathan et al. (2022) [Eclipse: An End-to-End Platform for Low-Cost, Hyperlocal Environmental Sensing in Cities. ACM/IEEE Information Processing in Sensor Networks. Milan, Italy.](https://www.microsoft.com/en-us/research/uploads/prod/2022/05/ACM_2022-IPSN_FINAL_Eclipse.pdf)\n\n## Contact\n\nFor questions about this dataset, contact [`msrurbanops@microsoft.com`](mailto:msrurbanops@microsoft.com?subject=eclipse%20question) \n\n\n## Learn more\n\nThe [Eclipse Project](https://www.microsoft.com/en-us/research/urban-innovation-research/) contains an overview of the Project Eclipse at Microsoft Research.\n\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "air-pollution,eclipse,pm25", "license": "proprietary", "title": "Urban Innovation Eclipse Sensor Data", "missionStartDate": "2021-01-01T00:00:00Z"}, "esa-cci-lc": {"abstract": "The ESA Climate Change Initiative (CCI) [Land Cover dataset](https://cds.climate.copernicus.eu/cdsapp#!/dataset/satellite-land-cover?tab=overview) provides consistent global annual land cover maps at 300m spatial resolution from 1992 to 2020. The land cover classes are defined using the United Nations Food and Agriculture Organization's (UN FAO) [Land Cover Classification System](https://www.fao.org/land-water/land/land-governance/land-resources-planning-toolbox/category/details/en/c/1036361/) (LCCS). In addition to the land cover maps, four quality flags are produced to document the reliability of the classification and change detection. \n\nThe data in this Collection have been converted from the [original NetCDF data](https://planetarycomputer.microsoft.com/dataset/esa-cci-lc-netcdf) to a set of tiled [Cloud Optimized GeoTIFFs](https://www.cogeo.org/) (COGs).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "cci,esa,esa-cci-lc,global,land-cover", "license": "proprietary", "title": "ESA Climate Change Initiative Land Cover Maps (Cloud Optimized GeoTIFF)", "missionStartDate": "1992-01-01T00:00:00Z"}, "esa-cci-lc-netcdf": {"abstract": "The ESA Climate Change Initiative (CCI) [Land Cover dataset](https://cds.climate.copernicus.eu/cdsapp#!/dataset/satellite-land-cover?tab=overview) provides consistent global annual land cover maps at 300m spatial resolution from 1992 to 2020. The land cover classes are defined using the United Nations Food and Agriculture Organization's (UN FAO) [Land Cover Classification System](https://www.fao.org/land-water/land/land-governance/land-resources-planning-toolbox/category/details/en/c/1036361/) (LCCS). In addition to the land cover maps, four quality flags are produced to document the reliability of the classification and change detection. \n\nThe data in this Collection are the original NetCDF files accessed from the [Copernicus Climate Data Store](https://cds.climate.copernicus.eu/#!/home). We recommend users use the [`esa-cci-lc` Collection](planetarycomputer.microsoft.com/dataset/esa-cci-lc), which provides the data as Cloud Optimized GeoTIFFs.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "cci,esa,esa-cci-lc-netcdf,global,land-cover", "license": "proprietary", "title": "ESA Climate Change Initiative Land Cover Maps (NetCDF)", "missionStartDate": "1992-01-01T00:00:00Z"}, "fws-nwi": {"abstract": "The Wetlands Data Layer is the product of over 45 years of work by the National Wetlands Inventory (NWI) and its collaborators and currently contains more than 35 million wetland and deepwater features. This dataset, covering the conterminous United States, Hawaii, Puerto Rico, the Virgin Islands, Guam, the major Northern Mariana Islands and Alaska, continues to grow at a rate of 50 to 100 million acres annually as data are updated.\n\n**NOTE:** Due to the variation in use and analysis of this data by the end user, each state's wetlands data extends beyond the state boundary. Each state includes wetlands data that intersect the 1:24,000 quadrangles that contain part of that state (1:2,000,000 source data). This allows the user to clip the data to their specific analysis datasets. Beware that two adjacent states will contain some of the same data along their borders.\n\nFor more information, visit the National Wetlands Inventory [homepage](https://www.fws.gov/program/national-wetlands-inventory).\n\n## STAC Metadata\n\nIn addition to the `zip` asset in every STAC item, each item has its own assets unique to its wetlands. In general, each item will have several assets, each linking to a [geoparquet](https://github.com/opengeospatial/geoparquet) asset with data for the entire region or a sub-region within that state. Use the `cloud-optimized` [role](https://github.com/radiantearth/stac-spec/blob/master/item-spec/item-spec.md#asset-roles) to select just the geoparquet assets. See the Example Notebook for more.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "fws-nwi,united-states,usfws,wetlands", "license": "proprietary", "title": "FWS National Wetlands Inventory", "missionStartDate": "2022-10-01T00:00:00Z"}, "usgs-lcmap-conus-v13": {"abstract": "The [Land Change Monitoring, Assessment, and Projection](https://www.usgs.gov/special-topics/lcmap) (LCMAP) product provides land cover mapping and change monitoring from the U.S. Geological Survey's [Earth Resources Observation and Science](https://www.usgs.gov/centers/eros) (EROS) Center. LCMAP's Science Products are developed by applying time-series modeling on a per-pixel basis to [Landsat Analysis Ready Data](https://www.usgs.gov/landsat-missions/landsat-us-analysis-ready-data) (ARD) using an implementation of the [Continuous Change Detection and Classification](https://doi.org/10.1016/j.rse.2014.01.011) (CCDC) algorithm. All available clear (non-cloudy) U.S. Landsat ARD observations are fit to a harmonic model to predict future Landsat-like surface reflectance. Where Landsat surface reflectance observations differ significantly from those predictions, a change is identified. Attributes of the resulting model sequences (e.g., start/end dates, residuals, model coefficients) are then used to produce a set of land surface change products and as inputs to the subsequent classification to thematic land cover. \n\nThis [STAC](https://stacspec.org/en) Collection contains [LCMAP CONUS Collection 1.3](https://www.usgs.gov/special-topics/lcmap/collection-13-conus-science-products), which was released in August 2022 for years 1985-2021. The data are tiled according to the Landsat ARD tile grid and consist of [Cloud Optimized GeoTIFFs](https://www.cogeo.org/) (COGs) and corresponding metadata files. Note that the provided COGs differ slightly from those in the USGS source data. They have been reprocessed to add overviews, \"nodata\" values where appropriate, and an updated projection definition.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "conus,land-cover,land-cover-change,lcmap,usgs,usgs-lcmap-conus-v13", "license": "proprietary", "title": "USGS LCMAP CONUS Collection 1.3", "missionStartDate": "1985-01-01T00:00:00Z"}, "usgs-lcmap-hawaii-v10": {"abstract": "The [Land Change Monitoring, Assessment, and Projection](https://www.usgs.gov/special-topics/lcmap) (LCMAP) product provides land cover mapping and change monitoring from the U.S. Geological Survey's [Earth Resources Observation and Science](https://www.usgs.gov/centers/eros) (EROS) Center. LCMAP's Science Products are developed by applying time-series modeling on a per-pixel basis to [Landsat Analysis Ready Data](https://www.usgs.gov/landsat-missions/landsat-us-analysis-ready-data) (ARD) using an implementation of the [Continuous Change Detection and Classification](https://doi.org/10.1016/j.rse.2014.01.011) (CCDC) algorithm. All available clear (non-cloudy) U.S. Landsat ARD observations are fit to a harmonic model to predict future Landsat-like surface reflectance. Where Landsat surface reflectance observations differ significantly from those predictions, a change is identified. Attributes of the resulting model sequences (e.g., start/end dates, residuals, model coefficients) are then used to produce a set of land surface change products and as inputs to the subsequent classification to thematic land cover. \n\nThis [STAC](https://stacspec.org/en) Collection contains [LCMAP Hawaii Collection 1.0](https://www.usgs.gov/special-topics/lcmap/collection-1-hawaii-science-products), which was released in January 2022 for years 2000-2020. The data are tiled according to the Landsat ARD tile grid and consist of [Cloud Optimized GeoTIFFs](https://www.cogeo.org/) (COGs) and corresponding metadata files. Note that the provided COGs differ slightly from those in the USGS source data. They have been reprocessed to add overviews, \"nodata\" values where appropriate, and an updated projection definition.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "hawaii,land-cover,land-cover-change,lcmap,usgs,usgs-lcmap-hawaii-v10", "license": "proprietary", "title": "USGS LCMAP Hawaii Collection 1.0", "missionStartDate": "2000-01-01T00:00:00Z"}, "noaa-climate-normals-tabular": {"abstract": "The [NOAA United States Climate Normals](https://www.ncei.noaa.gov/products/land-based-station/us-climate-normals) provide information about typical climate conditions for thousands of weather station locations across the United States. Normals act both as a ruler to compare current weather and as a predictor of conditions in the near future. The official normals are calculated for a uniform 30 year period, and consist of annual/seasonal, monthly, daily, and hourly averages and statistics of temperature, precipitation, and other climatological variables for each weather station. \n\nNOAA produces Climate Normals in accordance with the [World Meteorological Organization](https://public.wmo.int/en) (WMO), of which the United States is a member. The WMO requires each member nation to compute 30-year meteorological quantity averages at least every 30 years, and recommends an update each decade, in part to incorporate newer weather stations. The 1991\u20132020 U.S. Climate Normals are the latest in a series of decadal normals first produced in the 1950s. \n\nThis Collection contains tabular weather variable data at weather station locations in GeoParquet format, converted from the source CSV files. The source NetCDF files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\n\nData are provided for annual/seasonal, monthly, daily, and hourly frequencies for the following time periods:\n\n- Legacy 30-year normals (1981\u20132010)\n- Supplemental 15-year normals (2006\u20132020)\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate-normals,climatology,conus,noaa,noaa-climate-normals-tabular,surface-observations,weather", "license": "proprietary", "title": "NOAA US Tabular Climate Normals", "missionStartDate": "1981-01-01T00:00:00Z"}, "noaa-climate-normals-netcdf": {"abstract": "The [NOAA Gridded United States Climate Normals](https://www.ncei.noaa.gov/products/land-based-station/us-climate-normals#tab-1027) provide a continuous grid of temperature and precipitation data across the contiguous United States (CONUS). The grids are derived from NOAA's [NClimGrid dataset](https://planetarycomputer.microsoft.com/dataset/group/noaa-nclimgrid), and resolutions (nominal 5x5 kilometer) and spatial extents (CONUS) therefore match that of NClimGrid. Monthly, seasonal, and annual gridded normals are computed from simple averages of the NClimGrid data and are provided for three time-periods: 1901\u20132020, 1991\u20132020, and 2006\u20132020. Daily gridded normals are smoothed for a smooth transition from one day to another and are provided for two time-periods: 1991\u20132020, and 2006\u20132020.\n\nNOAA produces Climate Normals in accordance with the [World Meteorological Organization](https://public.wmo.int/en) (WMO), of which the United States is a member. The WMO requires each member nation to compute 30-year meteorological quantity averages at least every 30 years, and recommends an update each decade, in part to incorporate newer weather stations. The 1991\u20132020 U.S. Climate Normals are the latest in a series of decadal normals first produced in the 1950s. \n\nThe data in this Collection are the original NetCDF files provided by NOAA's National Centers for Environmental Information. This Collection contains gridded data for the following frequencies and time periods:\n\n- Annual, seasonal, and monthly normals\n - 100-year (1901\u20132000)\n - 30-year (1991\u20132020)\n - 15-year (2006\u20132020)\n- Daily normals\n - 30-year (1991\u20132020)\n - 15-year (2006\u20132020)\n\nFor most use-cases, we recommend using the [`noaa-climate-normals-gridded`](https://planetarycomputer.microsoft.com/dataset/noaa-climate-normals-gridded) collection, which contains the same data in Cloud Optimized GeoTIFF format. The NetCDF files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate-normals,climatology,conus,noaa,noaa-climate-normals-netcdf,surface-observations,weather", "license": "proprietary", "title": "NOAA US Gridded Climate Normals (NetCDF)", "missionStartDate": "1901-01-01T00:00:00Z"}, "noaa-climate-normals-gridded": {"abstract": "The [NOAA Gridded United States Climate Normals](https://www.ncei.noaa.gov/products/land-based-station/us-climate-normals#tab-1027) provide a continuous grid of temperature and precipitation data across the contiguous United States (CONUS). The grids are derived from NOAA's [NClimGrid dataset](https://planetarycomputer.microsoft.com/dataset/group/noaa-nclimgrid), and resolutions (nominal 5x5 kilometer) and spatial extents (CONUS) therefore match that of NClimGrid. Monthly, seasonal, and annual gridded normals are computed from simple averages of the NClimGrid data and are provided for three time-periods: 1901\u20132020, 1991\u20132020, and 2006\u20132020. Daily gridded normals are smoothed for a smooth transition from one day to another and are provided for two time-periods: 1991\u20132020, and 2006\u20132020.\n\nNOAA produces Climate Normals in accordance with the [World Meteorological Organization](https://public.wmo.int/en) (WMO), of which the United States is a member. The WMO requires each member nation to compute 30-year meteorological quantity averages at least every 30 years, and recommends an update each decade, in part to incorporate newer weather stations. The 1991\u20132020 U.S. Climate Normals are the latest in a series of decadal normals first produced in the 1950s. \n\nThis Collection contains gridded data for the following frequencies and time periods:\n\n- Annual, seasonal, and monthly normals\n - 100-year (1901\u20132000)\n - 30-year (1991\u20132020)\n - 15-year (2006\u20132020)\n- Daily normals\n - 30-year (1991\u20132020)\n - 15-year (2006\u20132020)\n\nThe data in this Collection have been converted from the original NetCDF format to Cloud Optimized GeoTIFFs (COGs). The source NetCDF files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\n\n## STAC Metadata\n\nThe STAC items in this collection contain several custom fields that can be used to further filter the data.\n\n* `noaa_climate_normals:period`: Climate normal time period. This can be \"1901-2000\", \"1991-2020\", or \"2006-2020\".\n* `noaa_climate_normals:frequency`: Climate normal temporal interval (frequency). This can be \"daily\", \"monthly\", \"seasonal\" , or \"annual\"\n* `noaa_climate_normals:time_index`: Time step index, e.g., month of year (1-12).\n\nThe `description` field of the assets varies by frequency. Using `prcp_norm` as an example, the descriptions are\n\n* annual: \"Annual precipitation normals from monthly precipitation normal values\"\n* seasonal: \"Seasonal precipitation normals (WSSF) from monthly normals\"\n* monthly: \"Monthly precipitation normals from monthly precipitation values\"\n* daily: \"Precipitation normals from daily averages\"\n\nCheck the assets on individual items for the appropriate description.\n\nThe STAC keys for most assets consist of two abbreviations. A \"variable\":\n\n\n| Abbreviation | Description |\n| ------------ | ---------------------------------------- |\n| prcp | Precipitation over the time period |\n| tavg | Mean temperature over the time period |\n| tmax | Maximum temperature over the time period |\n| tmin | Minimum temperature over the time period |\n\nAnd an \"aggregation\":\n\n| Abbreviation | Description |\n| ------------ | ------------------------------------------------------------------------------ |\n| max | Maximum of the variable over the time period |\n| min | Minimum of the variable over the time period |\n| std | Standard deviation of the value over the time period |\n| flag | An count of the number of inputs (months, years, etc.) to calculate the normal |\n| norm | The normal for the variable over the time period |\n\nSo, for example, `prcp_max` for monthly data is the \"Maximum values of all input monthly precipitation normal values\".\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate-normals,climatology,conus,noaa,noaa-climate-normals-gridded,surface-observations,weather", "license": "proprietary", "title": "NOAA US Gridded Climate Normals (Cloud-Optimized GeoTIFF)", "missionStartDate": "1901-01-01T00:00:00Z"}, "aster-l1t": {"abstract": "The [ASTER](https://terra.nasa.gov/about/terra-instruments/aster) instrument, launched on-board NASA's [Terra](https://terra.nasa.gov/) satellite in 1999, provides multispectral images of the Earth at 15m-90m resolution. ASTER images provide information about land surface temperature, color, elevation, and mineral composition.\n\nThis dataset represents ASTER [L1T](https://lpdaac.usgs.gov/products/ast_l1tv003/) data from 2000-2006. L1T images have been terrain-corrected and rotated to a north-up UTM projection. Images are in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.\n", "instrument": "aster", "platform": null, "platformSerialIdentifier": "terra", "processingLevel": null, "keywords": "aster,aster-l1t,global,nasa,satellite,terra,usgs", "license": "proprietary", "title": "ASTER L1T", "missionStartDate": "2000-03-04T12:00:00Z"}, "cil-gdpcir-cc-by-sa": {"abstract": "The World Climate Research Programme's [6th Coupled Model Intercomparison Project (CMIP6)](https://www.wcrp-climate.org/wgcm-cmip/wgcm-cmip6) represents an enormous advance in the quality, detail, and scope of climate modeling.\n\nThe [Global Downscaled Projections for Climate Impacts Research](https://github.com/ClimateImpactLab/downscaleCMIP6) dataset makes this modeling more applicable to understanding the impacts of changes in the climate on humans and society with two key developments: trend-preserving bias correction and downscaling. In this dataset, the [Climate Impact Lab](https://impactlab.org) provides global, daily minimum and maximum air temperature at the surface (`tasmin` and `tasmax`) and daily cumulative surface precipitation (`pr`) corresponding to the CMIP6 historical, ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 scenarios for 25 global climate models on a 1/4-degree regular global grid.\n\n## Accessing the data\n\nGDPCIR data can be accessed on the Microsoft Planetary Computer. The dataset is made of of three collections, distinguished by data license:\n* [Public domain (CC0-1.0) collection](https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc0)\n* [Attribution (CC BY 4.0) collection](https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc-by)\n* [Attribution-ShareAlike (CC BY SA 4.0) collection](https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc-by-sa)\n\nEach modeling center with bias corrected and downscaled data in this collection falls into one of these license categories - see the [table below](/dataset/cil-gdpcir-cc-by-sa#available-institutions-models-and-scenarios-by-license-collection) to see which model is in each collection, and see the section below on [Citing, Licensing, and using data produced by this project](/dataset/cil-gdpcir-cc-by-sa#citing-licensing-and-using-data-produced-by-this-project) for citations and additional information about each license.\n\n## Data format & contents\n\nThe data is stored as partitioned zarr stores (see [https://zarr.readthedocs.io](https://zarr.readthedocs.io)), each of which includes thousands of data and metadata files covering the full time span of the experiment. Historical zarr stores contain just over 50 GB, while SSP zarr stores contain nearly 70GB. Each store is stored as a 32-bit float, with dimensions time (daily datetime), lat (float latitude), and lon (float longitude). The data is chunked at each interval of 365 days and 90 degree interval of latitude and longitude. Therefore, each chunk is `(365, 360, 360)`, with each chunk occupying approximately 179MB in memory.\n\nHistorical data is daily, excluding leap days, from Jan 1, 1950 to Dec 31, 2014; SSP data is daily, excluding leap days, from Jan 1, 2015 to either Dec 31, 2099 or Dec 31, 2100, depending on data availability in the source GCM.\n\nThe spatial domain covers all 0.25-degree grid cells, indexed by the grid center, with grid edges on the quarter-degree, using a -180 to 180 longitude convention. Thus, the \u201clon\u201d coordinate extends from -179.875 to 179.875, and the \u201clat\u201d coordinate extends from -89.875 to 89.875, with intermediate values at each 0.25-degree increment between (e.g. -179.875, -179.625, -179.375, etc).\n\n## Available institutions, models, and scenarios by license collection\n\n| Modeling institution | Source model | Available experiments | License collection |\n| -------------------- | ----------------- | ------------------------------------------ | ---------------------- |\n| CAS | FGOALS-g3 [^1] | SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| INM | INM-CM4-8 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| INM | INM-CM5-0 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| BCC | BCC-CSM2-MR | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40] |\n| CMCC | CMCC-CM2-SR5 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-40] |\n| CMCC | CMCC-ESM2 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-40] |\n| CSIRO-ARCCSS | ACCESS-CM2 | SSP2-4.5 and SSP3-7.0 | CC-BY-40] |\n| CSIRO | ACCESS-ESM1-5 | SSP1-2.6, SSP2-4.5, and SSP3-7.0 | CC-BY-40] |\n| MIROC | MIROC-ES2L | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40] |\n| MIROC | MIROC6 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40] |\n| MOHC | HadGEM3-GC31-LL | SSP1-2.6, SSP2-4.5, and SSP5-8.5 | CC-BY-40] |\n| MOHC | UKESM1-0-LL | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40] |\n| MPI-M | MPI-ESM1-2-LR | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40] |\n| MPI-M/DKRZ [^2] | MPI-ESM1-2-HR | SSP1-2.6 and SSP5-8.5 | CC-BY-40] |\n| NCC | NorESM2-LM | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40] |\n| NCC | NorESM2-MM | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40] |\n| NOAA-GFDL | GFDL-CM4 | SSP2-4.5 and SSP5-8.5 | CC-BY-40] |\n| NOAA-GFDL | GFDL-ESM4 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40] |\n| NUIST | NESM3 | SSP1-2.6, SSP2-4.5, and SSP5-8.5 | CC-BY-40] |\n| EC-Earth-Consortium | EC-Earth3 | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40] |\n| EC-Earth-Consortium | EC-Earth3-AerChem | ssp370 | CC-BY-40] |\n| EC-Earth-Consortium | EC-Earth3-CC | ssp245 and ssp585 | CC-BY-40] |\n| EC-Earth-Consortium | EC-Earth3-Veg | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40] |\n| EC-Earth-Consortium | EC-Earth3-Veg-LR | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40] |\n| CCCma | CanESM5 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-SA-40] |\n\n*Notes:*\n\n[^1]: At the time of running, no ssp1-2.6 precipitation data was available. Therefore, we provide `tasmin` and `tamax` for this model and experiment, but not `pr`. All other model/experiment combinations in the above table include all three variables.\n\n[^2]: The institution which ran MPI-ESM1-2-HR\u2019s historical (CMIP) simulations is `MPI-M`, while the future (ScenarioMIP) simulations were run by `DKRZ`. Therefore, the institution component of `MPI-ESM1-2-HR` filepaths differ between `historical` and `SSP` scenarios.\n\n## Project methods\n\nThis project makes use of statistical bias correction and downscaling algorithms, which are specifically designed to accurately represent changes in the extremes. For this reason, we selected Quantile Delta Mapping (QDM), following the method introduced by [Cannon et al. (2015)](https://doi.org/10.1175/JCLI-D-14-00754.1), which preserves quantile-specific trends from the GCM while fitting the full distribution for a given day-of-year to a reference dataset (ERA5).\n\nWe then introduce a similar method tailored to increase spatial resolution while preserving extreme behavior, Quantile-Preserving Localized-Analog Downscaling (QPLAD).\n\nTogether, these methods provide a robust means to handle both the central and tail behavior seen in climate model output, while aligning the full distribution to a state-of-the-art reanalysis dataset and providing the spatial granularity needed to study surface impacts.\n\nFor further documentation, see [Global downscaled projections for climate impacts research (GDPCIR): preserving extremes for modeling future climate impacts](https://egusphere.copernicus.org/preprints/2023/egusphere-2022-1513/) (EGUsphere, 2022 [preprint]).\n\n## Citing, licensing, and using data produced by this project\n\nProjects making use of the data produced as part of the Climate Impact Lab Global Downscaled Projections for Climate Impacts Research (CIL GDPCIR) project are requested to cite both this project and the source datasets from which these results are derived. Additionally, the use of data derived from some GCMs *requires* citations, and some modeling centers impose licensing restrictions & requirements on derived works. See each GCM's license info in the links below for more information.\n\n### CIL GDPCIR\n\nUsers are requested to cite this project in derived works. Our method documentation paper may be cited using the following:\n\n> Gergel, D. R., Malevich, S. B., McCusker, K. E., Tenezakis, E., Delgado, M. T., Fish, M. A., and Kopp, R. E.: Global downscaled projections for climate impacts research (GDPCIR): preserving extremes for modeling future climate impacts, EGUsphere [preprint], https://doi.org/10.5194/egusphere-2022-1513, 2023. \n\nThe code repository may be cited using the following:\n\n> Diana Gergel, Kelly McCusker, Brewster Malevich, Emile Tenezakis, Meredith Fish, Michael Delgado (2022). ClimateImpactLab/downscaleCMIP6: (v1.0.0). Zenodo. https://doi.org/10.5281/zenodo.6403794\n\n### ERA5\n\nAdditionally, we request you cite the historical dataset used in bias correction and downscaling, ERA5. See the [ECMWF guide to citing a dataset on the Climate Data Store](https://confluence.ecmwf.int/display/CKB/How+to+acknowledge+and+cite+a+Climate+Data+Store+%28CDS%29+catalogue+entry+and+the+data+published+as+part+of+it):\n\n> Hersbach, H, et al. The ERA5 global reanalysis. Q J R Meteorol Soc.2020; 146: 1999\u20132049. DOI: [10.1002/qj.3803](https://doi.org/10.1002/qj.3803)\n>\n> Mu\u00f1oz Sabater, J., (2019): ERA5-Land hourly data from 1981 to present. Copernicus Climate Change Service (C3S) Climate Data Store (CDS). (Accessed on June 4, 2021), DOI: [10.24381/cds.e2161bac](https://doi.org/10.24381/cds.e2161bac)\n>\n> Mu\u00f1oz Sabater, J., (2021): ERA5-Land hourly data from 1950 to 1980. Copernicus Climate Change Service (C3S) Climate Data Store (CDS). (Accessed on June 4, 2021), DOI: [10.24381/cds.e2161bac](https://doi.org/10.24381/cds.e2161bac)\n\n### GCM-specific citations & licenses\n\nThe CMIP6 simulation data made available through the Earth System Grid Federation (ESGF) are subject to Creative Commons [BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) or [BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) licenses. The Climate Impact Lab has reached out to each of the modeling institutions to request waivers from these terms so the outputs of this project may be used with fewer restrictions, and has been granted permission to release the data using the licenses listed here.\n\n#### Public Domain Datasets\n\nThe following bias corrected and downscaled model simulations are available in the public domain using a [CC0 1.0 Universal Public Domain Declaration](https://creativecommons.org/publicdomain/zero/1.0/). Access the collection on Planetary Computer at https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc0.\n\n* **FGOALS-g3**\n\n License description: [data_licenses/FGOALS-g3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/FGOALS-g3.txt)\n\n CMIP Citation:\n\n > Li, Lijuan **(2019)**. *CAS FGOALS-g3 model output prepared for CMIP6 CMIP*. Version 20190826. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1783\n\n ScenarioMIP Citation:\n\n > Li, Lijuan **(2019)**. *CAS FGOALS-g3 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190818; SSP2-4.5 version 20190818; SSP3-7.0 version 20190820; SSP5-8.5 tasmax version 20190819; SSP5-8.5 tasmin version 20190819; SSP5-8.5 pr version 20190818. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2056\n\n\n* **INM-CM4-8**\n\n License description: [data_licenses/INM-CM4-8.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/INM-CM4-8.txt)\n\n CMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM4-8 model output prepared for CMIP6 CMIP*. Version 20190530. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1422\n\n ScenarioMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM4-8 model output prepared for CMIP6 ScenarioMIP*. Version 20190603. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.12321\n\n\n* **INM-CM5-0**\n\n License description: [data_licenses/INM-CM5-0.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/INM-CM5-0.txt)\n\n CMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM5-0 model output prepared for CMIP6 CMIP*. Version 20190610. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1423\n\n ScenarioMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM5-0 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190619; SSP2-4.5 version 20190619; SSP3-7.0 version 20190618; SSP5-8.5 version 20190724. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.12322\n\n\n#### CC-BY-4.0\n\nThe following bias corrected and downscaled model simulations are licensed under a [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/). Note that this license requires citation of the source model output (included here). Please see https://creativecommons.org/licenses/by/4.0/ for more information. Access the collection on Planetary Computer at https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc-by.\n\n* **ACCESS-CM2**\n\n License description: [data_licenses/ACCESS-CM2.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/ACCESS-CM2.txt)\n\n CMIP Citation:\n\n > Dix, Martin; Bi, Doahua; Dobrohotoff, Peter; Fiedler, Russell; Harman, Ian; Law, Rachel; Mackallah, Chloe; Marsland, Simon; O'Farrell, Siobhan; Rashid, Harun; Srbinovsky, Jhan; Sullivan, Arnold; Trenham, Claire; Vohralik, Peter; Watterson, Ian; Williams, Gareth; Woodhouse, Matthew; Bodman, Roger; Dias, Fabio Boeira; Domingues, Catia; Hannah, Nicholas; Heerdegen, Aidan; Savita, Abhishek; Wales, Scott; Allen, Chris; Druken, Kelsey; Evans, Ben; Richards, Clare; Ridzwan, Syazwan Mohamed; Roberts, Dale; Smillie, Jon; Snow, Kate; Ward, Marshall; Yang, Rui **(2019)**. *CSIRO-ARCCSS ACCESS-CM2 model output prepared for CMIP6 CMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2281\n\n ScenarioMIP Citation:\n\n > Dix, Martin; Bi, Doahua; Dobrohotoff, Peter; Fiedler, Russell; Harman, Ian; Law, Rachel; Mackallah, Chloe; Marsland, Simon; O'Farrell, Siobhan; Rashid, Harun; Srbinovsky, Jhan; Sullivan, Arnold; Trenham, Claire; Vohralik, Peter; Watterson, Ian; Williams, Gareth; Woodhouse, Matthew; Bodman, Roger; Dias, Fabio Boeira; Domingues, Catia; Hannah, Nicholas; Heerdegen, Aidan; Savita, Abhishek; Wales, Scott; Allen, Chris; Druken, Kelsey; Evans, Ben; Richards, Clare; Ridzwan, Syazwan Mohamed; Roberts, Dale; Smillie, Jon; Snow, Kate; Ward, Marshall; Yang, Rui **(2019)**. *CSIRO-ARCCSS ACCESS-CM2 model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2285\n\n\n* **ACCESS-ESM1-5**\n\n License description: [data_licenses/ACCESS-ESM1-5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/ACCESS-ESM1-5.txt)\n\n CMIP Citation:\n\n > Ziehn, Tilo; Chamberlain, Matthew; Lenton, Andrew; Law, Rachel; Bodman, Roger; Dix, Martin; Wang, Yingping; Dobrohotoff, Peter; Srbinovsky, Jhan; Stevens, Lauren; Vohralik, Peter; Mackallah, Chloe; Sullivan, Arnold; O'Farrell, Siobhan; Druken, Kelsey **(2019)**. *CSIRO ACCESS-ESM1.5 model output prepared for CMIP6 CMIP*. Version 20191115. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2288\n\n ScenarioMIP Citation:\n\n > Ziehn, Tilo; Chamberlain, Matthew; Lenton, Andrew; Law, Rachel; Bodman, Roger; Dix, Martin; Wang, Yingping; Dobrohotoff, Peter; Srbinovsky, Jhan; Stevens, Lauren; Vohralik, Peter; Mackallah, Chloe; Sullivan, Arnold; O'Farrell, Siobhan; Druken, Kelsey **(2019)**. *CSIRO ACCESS-ESM1.5 model output prepared for CMIP6 ScenarioMIP*. Version 20191115. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2291\n\n\n* **BCC-CSM2-MR**\n\n License description: [data_licenses/BCC-CSM2-MR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/BCC-CSM2-MR.txt)\n\n CMIP Citation:\n\n > Xin, Xiaoge; Zhang, Jie; Zhang, Fang; Wu, Tongwen; Shi, Xueli; Li, Jianglong; Chu, Min; Liu, Qianxia; Yan, Jinghui; Ma, Qiang; Wei, Min **(2018)**. *BCC BCC-CSM2MR model output prepared for CMIP6 CMIP*. Version 20181126. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1725\n\n ScenarioMIP Citation:\n\n > Xin, Xiaoge; Wu, Tongwen; Shi, Xueli; Zhang, Fang; Li, Jianglong; Chu, Min; Liu, Qianxia; Yan, Jinghui; Ma, Qiang; Wei, Min **(2019)**. *BCC BCC-CSM2MR model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190315; SSP2-4.5 version 20190318; SSP3-7.0 version 20190318; SSP5-8.5 version 20190318. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1732\n\n\n* **CMCC-CM2-SR5**\n\n License description: [data_licenses/CMCC-CM2-SR5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CMCC-CM2-SR5.txt)\n\n CMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele **(2020)**. *CMCC CMCC-CM2-SR5 model output prepared for CMIP6 CMIP*. Version 20200616. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1362\n\n ScenarioMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele **(2020)**. *CMCC CMCC-CM2-SR5 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20200717; SSP2-4.5 version 20200617; SSP3-7.0 version 20200622; SSP5-8.5 version 20200622. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1365\n\n\n* **CMCC-ESM2**\n\n License description: [data_licenses/CMCC-ESM2.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CMCC-ESM2.txt)\n\n CMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele; Butensch\u00f6n, Momme **(2021)**. *CMCC CMCC-ESM2 model output prepared for CMIP6 CMIP*. Version 20210114. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.13164\n\n ScenarioMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele; Butensch\u00f6n, Momme **(2021)**. *CMCC CMCC-ESM2 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20210126; SSP2-4.5 version 20210129; SSP3-7.0 version 20210202; SSP5-8.5 version 20210126. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.13168\n\n\n* **EC-Earth3-AerChem**\n\n License description: [data_licenses/EC-Earth3-AerChem.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-AerChem.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-AerChem model output prepared for CMIP6 CMIP*. Version 20200624. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.639\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-AerChem model output prepared for CMIP6 ScenarioMIP*. Version 20200827. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.724\n\n\n* **EC-Earth3-CC**\n\n License description: [data_licenses/EC-Earth3-CC.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-CC.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth-3-CC model output prepared for CMIP6 CMIP*. Version 20210113. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.640\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2021)**. *EC-Earth-Consortium EC-Earth3-CC model output prepared for CMIP6 ScenarioMIP*. Version 20210113. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.15327\n\n\n* **EC-Earth3-Veg-LR**\n\n License description: [data_licenses/EC-Earth3-Veg-LR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-Veg-LR.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-Veg-LR model output prepared for CMIP6 CMIP*. Version 20200217. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.643\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-Veg-LR model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20201201; SSP2-4.5 version 20201123; SSP3-7.0 version 20201123; SSP5-8.5 version 20201201. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.728\n\n\n* **EC-Earth3-Veg**\n\n License description: [data_licenses/EC-Earth3-Veg.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-Veg.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3-Veg model output prepared for CMIP6 CMIP*. Version 20200225. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.642\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3-Veg model output prepared for CMIP6 ScenarioMIP*. Version 20200225. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.727\n\n\n* **EC-Earth3**\n\n License description: [data_licenses/EC-Earth3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3 model output prepared for CMIP6 CMIP*. Version 20200310. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.181\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3 model output prepared for CMIP6 ScenarioMIP*. Version 20200310. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.251\n\n\n* **GFDL-CM4**\n\n License description: [data_licenses/GFDL-CM4.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/GFDL-CM4.txt)\n\n CMIP Citation:\n\n > Guo, Huan; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Bushuk, Mitchell; Dunne, Krista A.; Dussin, Raphael; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Reichl, Brandon G; Schwarzkopf, Daniel M; Seman, Charles J; Shao, Andrew; Silvers, Levi; Wyman, Bruce; Yan, Xiaoqin; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Held, Isaac M; Krasting, John P.; Horowitz, Larry W.; Milly, P.C.D; Shevliakova, Elena; Winton, Michael; Zhao, Ming; Zhang, Rong **(2018)**. *NOAA-GFDL GFDL-CM4 model output*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1402\n\n ScenarioMIP Citation:\n\n > Guo, Huan; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Dunne, Krista A.; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Schwarzkopf, Daniel M; Seman, Charles J; Shao, Andrew; Silvers, Levi; Wyman, Bruce; Yan, Xiaoqin; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Held, Isaac M; Krasting, John P.; Horowitz, Larry W.; Milly, Chris; Shevliakova, Elena; Winton, Michael; Zhao, Ming; Zhang, Rong **(2018)**. *NOAA-GFDL GFDL-CM4 model output prepared for CMIP6 ScenarioMIP*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.9242\n\n\n* **GFDL-ESM4**\n\n License description: [data_licenses/GFDL-ESM4.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/GFDL-ESM4.txt)\n\n CMIP Citation:\n\n > Krasting, John P.; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Dunne, Krista A.; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Reichl, Brandon G; Schwarzkopf, Daniel M; Seman, Charles J; Silvers, Levi; Wyman, Bruce; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Dussin, Raphael; Guo, Huan; He, Jian; Held, Isaac M; Horowitz, Larry W.; Lin, Pu; Milly, P.C.D; Shevliakova, Elena; Stock, Charles; Winton, Michael; Wittenberg, Andrew T.; Xie, Yuanyu; Zhao, Ming **(2018)**. *NOAA-GFDL GFDL-ESM4 model output prepared for CMIP6 CMIP*. Version 20190726. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1407\n\n ScenarioMIP Citation:\n\n > John, Jasmin G; Blanton, Chris; McHugh, Colleen; Radhakrishnan, Aparna; Rand, Kristopher; Vahlenkamp, Hans; Wilson, Chandin; Zadeh, Niki T.; Dunne, John P.; Dussin, Raphael; Horowitz, Larry W.; Krasting, John P.; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Ploshay, Jeffrey; Shevliakova, Elena; Silvers, Levi; Stock, Charles; Winton, Michael; Zeng, Yujin **(2018)**. *NOAA-GFDL GFDL-ESM4 model output prepared for CMIP6 ScenarioMIP*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1414\n\n\n* **HadGEM3-GC31-LL**\n\n License description: [data_licenses/HadGEM3-GC31-LL.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/HadGEM3-GC31-LL.txt)\n\n CMIP Citation:\n\n > Ridley, Jeff; Menary, Matthew; Kuhlbrodt, Till; Andrews, Martin; Andrews, Tim **(2018)**. *MOHC HadGEM3-GC31-LL model output prepared for CMIP6 CMIP*. Version 20190624. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.419\n\n ScenarioMIP Citation:\n\n > Good, Peter **(2019)**. *MOHC HadGEM3-GC31-LL model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20200114; SSP2-4.5 version 20190908; SSP5-8.5 version 20200114. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.10845\n\n\n* **MIROC-ES2L**\n\n License description: [data_licenses/MIROC-ES2L.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MIROC-ES2L.txt)\n\n CMIP Citation:\n\n > Hajima, Tomohiro; Abe, Manabu; Arakawa, Osamu; Suzuki, Tatsuo; Komuro, Yoshiki; Ogura, Tomoo; Ogochi, Koji; Watanabe, Michio; Yamamoto, Akitomo; Tatebe, Hiroaki; Noguchi, Maki A.; Ohgaito, Rumi; Ito, Akinori; Yamazaki, Dai; Ito, Akihiko; Takata, Kumiko; Watanabe, Shingo; Kawamiya, Michio; Tachiiri, Kaoru **(2019)**. *MIROC MIROC-ES2L model output prepared for CMIP6 CMIP*. Version 20191129. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.902\n\n ScenarioMIP Citation:\n\n > Tachiiri, Kaoru; Abe, Manabu; Hajima, Tomohiro; Arakawa, Osamu; Suzuki, Tatsuo; Komuro, Yoshiki; Ogochi, Koji; Watanabe, Michio; Yamamoto, Akitomo; Tatebe, Hiroaki; Noguchi, Maki A.; Ohgaito, Rumi; Ito, Akinori; Yamazaki, Dai; Ito, Akihiko; Takata, Kumiko; Watanabe, Shingo; Kawamiya, Michio **(2019)**. *MIROC MIROC-ES2L model output prepared for CMIP6 ScenarioMIP*. Version 20200318. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.936\n\n\n* **MIROC6**\n\n License description: [data_licenses/MIROC6.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MIROC6.txt)\n\n CMIP Citation:\n\n > Tatebe, Hiroaki; Watanabe, Masahiro **(2018)**. *MIROC MIROC6 model output prepared for CMIP6 CMIP*. Version 20191016. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.881\n\n ScenarioMIP Citation:\n\n > Shiogama, Hideo; Abe, Manabu; Tatebe, Hiroaki **(2019)**. *MIROC MIROC6 model output prepared for CMIP6 ScenarioMIP*. Version 20191016. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.898\n\n\n* **MPI-ESM1-2-HR**\n\n License description: [data_licenses/MPI-ESM1-2-HR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MPI-ESM1-2-HR.txt)\n\n CMIP Citation:\n\n > Jungclaus, Johann; Bittner, Matthias; Wieners, Karl-Hermann; Wachsmann, Fabian; Schupfner, Martin; Legutke, Stephanie; Giorgetta, Marco; Reick, Christian; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Esch, Monika; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-HR model output prepared for CMIP6 CMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.741\n\n ScenarioMIP Citation:\n\n > Schupfner, Martin; Wieners, Karl-Hermann; Wachsmann, Fabian; Steger, Christian; Bittner, Matthias; Jungclaus, Johann; Fr\u00fch, Barbara; Pankatz, Klaus; Giorgetta, Marco; Reick, Christian; Legutke, Stephanie; Esch, Monika; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *DKRZ MPI-ESM1.2-HR model output prepared for CMIP6 ScenarioMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2450\n\n\n* **MPI-ESM1-2-LR**\n\n License description: [data_licenses/MPI-ESM1-2-LR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MPI-ESM1-2-LR.txt)\n\n CMIP Citation:\n\n > Wieners, Karl-Hermann; Giorgetta, Marco; Jungclaus, Johann; Reick, Christian; Esch, Monika; Bittner, Matthias; Legutke, Stephanie; Schupfner, Martin; Wachsmann, Fabian; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-LR model output prepared for CMIP6 CMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.742\n\n ScenarioMIP Citation:\n\n > Wieners, Karl-Hermann; Giorgetta, Marco; Jungclaus, Johann; Reick, Christian; Esch, Monika; Bittner, Matthias; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-LR model output prepared for CMIP6 ScenarioMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.793\n\n\n* **NESM3**\n\n License description: [data_licenses/NESM3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NESM3.txt)\n\n CMIP Citation:\n\n > Cao, Jian; Wang, Bin **(2019)**. *NUIST NESMv3 model output prepared for CMIP6 CMIP*. Version 20190812. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2021\n\n ScenarioMIP Citation:\n\n > Cao, Jian **(2019)**. *NUIST NESMv3 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190806; SSP2-4.5 version 20190805; SSP5-8.5 version 20190811. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2027\n\n\n* **NorESM2-LM**\n\n License description: [data_licenses/NorESM2-LM.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NorESM2-LM.txt)\n\n CMIP Citation:\n\n > Seland, \u00d8yvind; Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-LM model output prepared for CMIP6 CMIP*. Version 20190815. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.502\n\n ScenarioMIP Citation:\n\n > Seland, \u00d8yvind; Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-LM model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.604\n\n\n* **NorESM2-MM**\n\n License description: [data_licenses/NorESM2-MM.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NorESM2-MM.txt)\n\n CMIP Citation:\n\n > Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Seland, \u00d8yvind; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-MM model output prepared for CMIP6 CMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.506\n\n ScenarioMIP Citation:\n\n > Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Seland, \u00d8yvind; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-MM model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.608\n\n\n* **UKESM1-0-LL**\n\n License description: [data_licenses/UKESM1-0-LL.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/UKESM1-0-LL.txt)\n\n CMIP Citation:\n\n > Tang, Yongming; Rumbold, Steve; Ellis, Rich; Kelley, Douglas; Mulcahy, Jane; Sellar, Alistair; Walton, Jeremy; Jones, Colin **(2019)**. *MOHC UKESM1.0-LL model output prepared for CMIP6 CMIP*. Version 20190627. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1569\n\n ScenarioMIP Citation:\n\n > Good, Peter; Sellar, Alistair; Tang, Yongming; Rumbold, Steve; Ellis, Rich; Kelley, Douglas; Kuhlbrodt, Till; Walton, Jeremy **(2019)**. *MOHC UKESM1.0-LL model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190708; SSP2-4.5 version 20190715; SSP3-7.0 version 20190726; SSP5-8.5 version 20190726. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1567\n\n\n#### CC-BY-SA-4.0\n\nThe following bias corrected and downscaled model simulations are licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/). Note that this license requires citation of the source model output (included here) and requires that derived works be shared under the same license. Please see https://creativecommons.org/licenses/by-sa/4.0/ for more information. Access the collection on Planetary Computer at https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc-by-sa.\n\n* **CanESM5**\n\n License description: [data_licenses/CanESM5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CanESM5.txt)\n\n CMIP Citation:\n\n > Swart, Neil Cameron; Cole, Jason N.S.; Kharin, Viatcheslav V.; Lazare, Mike; Scinocca, John F.; Gillett, Nathan P.; Anstey, James; Arora, Vivek; Christian, James R.; Jiao, Yanjun; Lee, Warren G.; Majaess, Fouad; Saenko, Oleg A.; Seiler, Christian; Seinen, Clint; Shao, Andrew; Solheim, Larry; von Salzen, Knut; Yang, Duo; Winter, Barbara; Sigmond, Michael **(2019)**. *CCCma CanESM5 model output prepared for CMIP6 CMIP*. Version 20190429. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1303\n\n ScenarioMIP Citation:\n\n > Swart, Neil Cameron; Cole, Jason N.S.; Kharin, Viatcheslav V.; Lazare, Mike; Scinocca, John F.; Gillett, Nathan P.; Anstey, James; Arora, Vivek; Christian, James R.; Jiao, Yanjun; Lee, Warren G.; Majaess, Fouad; Saenko, Oleg A.; Seiler, Christian; Seinen, Clint; Shao, Andrew; Solheim, Larry; von Salzen, Knut; Yang, Duo; Winter, Barbara; Sigmond, Michael **(2019)**. *CCCma CanESM5 model output prepared for CMIP6 ScenarioMIP*. Version 20190429. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1317\n\n## Acknowledgements\n\nThis work is the result of many years worth of work by members of the [Climate Impact Lab](https://impactlab.org), but would not have been possible without many contributions from across the wider scientific and computing communities.\n\nSpecifically, we would like to acknowledge the World Climate Research Programme's Working Group on Coupled Modeling, which is responsible for CMIP, and we would like to thank the climate modeling groups for producing and making their model output available. We would particularly like to thank the modeling institutions whose results are included as an input to this repository (listed above) for their contributions to the CMIP6 project and for responding to and granting our requests for license waivers.\n\nWe would also like to thank Lamont-Doherty Earth Observatory, the [Pangeo Consortium](https://github.com/pangeo-data) (and especially the [ESGF Cloud Data Working Group](https://pangeo-data.github.io/pangeo-cmip6-cloud/#)) and Google Cloud and the Google Public Datasets program for making the [CMIP6 Google Cloud collection](https://console.cloud.google.com/marketplace/details/noaa-public/cmip6) possible. In particular we're extremely grateful to [Ryan Abernathey](https://github.com/rabernat), [Naomi Henderson](https://github.com/naomi-henderson), [Charles Blackmon-Luca](https://github.com/charlesbluca), [Aparna Radhakrishnan](https://github.com/aradhakrishnanGFDL), [Julius Busecke](https://github.com/jbusecke), and [Charles Stern](https://github.com/cisaacstern) for the huge amount of work they've done to translate the ESGF CMIP6 netCDF archives into consistently-formattted, analysis-ready zarr stores on Google Cloud.\n\nWe're also grateful to the [xclim developers](https://github.com/Ouranosinc/xclim/graphs/contributors) ([DOI: 10.5281/zenodo.2795043](https://doi.org/10.5281/zenodo.2795043)), in particular [Pascal Bourgault](https://github.com/aulemahal), [David Huard](https://github.com/huard), and [Travis Logan](https://github.com/tlogan2000), for implementing the QDM bias correction method in the xclim python package, supporting our QPLAD implementation into the package, and ongoing support in integrating dask into downscaling workflows. For method advice and useful conversations, we would like to thank Keith Dixon, Dennis Adams-Smith, and [Joe Hamman](https://github.com/jhamman).\n\n## Financial support\n\nThis research has been supported by The Rockefeller Foundation and the Microsoft AI for Earth Initiative.\n\n## Additional links:\n\n* CIL GDPCIR project homepage: [github.com/ClimateImpactLab/downscaleCMIP6](https://github.com/ClimateImpactLab/downscaleCMIP6)\n* Project listing on zenodo: https://doi.org/10.5281/zenodo.6403794\n* Climate Impact Lab homepage: [impactlab.org](https://impactlab.org)", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "cil-gdpcir-cc-by-sa,climate-impact-lab,cmip6,precipitation,rhodium-group,temperature", "license": "CC-BY-SA-4.0", "title": "CIL Global Downscaled Projections for Climate Impacts Research (CC-BY-SA-4.0)", "missionStartDate": "1950-01-01T00:00:00Z"}, "naip": {"abstract": "The [National Agriculture Imagery Program](https://www.fsa.usda.gov/programs-and-services/aerial-photography/imagery-programs/naip-imagery/) (NAIP) \nprovides U.S.-wide, high-resolution aerial imagery, with four spectral bands (R, G, B, IR). \nNAIP is administered by the [Aerial Field Photography Office](https://www.fsa.usda.gov/programs-and-services/aerial-photography/) (AFPO) \nwithin the [US Department of Agriculture](https://www.usda.gov/) (USDA). \nData are captured at least once every three years for each state. \nThis dataset represents NAIP data from 2010-present, in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.\nYou can visualize the coverage of current and past collections [here](https://naip-usdaonline.hub.arcgis.com/). \n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "aerial,afpo,agriculture,imagery,naip,united-states,usda", "license": "proprietary", "title": "NAIP: National Agriculture Imagery Program", "missionStartDate": "2010-01-01T00:00:00Z"}, "io-lulc-9-class": {"abstract": "__Note__: _A new version of this item is available for your use. This mature version of the map remains available for use in existing applications. This item will be retired in December 2024. There is 2023 data available in the newer [9-class v2 dataset](https://planetarycomputer.microsoft.com/dataset/io-lulc-annual-v02)._\n\nTime series of annual global maps of land use and land cover (LULC). It currently has data from 2017-2022. The maps are derived from ESA Sentinel-2 imagery at 10m resolution. Each map is a composite of LULC predictions for 9 classes throughout the year in order to generate a representative snapshot of each year.\n\nThis dataset was generated by [Impact Observatory](http://impactobservatory.com/), who used billions of human-labeled pixels (curated by the National Geographic Society) to train a deep learning model for land classification. The global map was produced by applying this model to the Sentinel-2 annual scene collections on the Planetary Computer. Each of the maps has an assessed average accuracy of over 75%.\n\nThis map uses an updated model from the [10-class model](https://planetarycomputer.microsoft.com/dataset/io-lulc) and combines Grass(formerly class 3) and Scrub (formerly class 6) into a single Rangeland class (class 11). The original Esri 2020 Land Cover collection uses 10 classes (Grass and Scrub separate) and an older version of the underlying deep learning model. The Esri 2020 Land Cover map was also produced by Impact Observatory. The map remains available for use in existing applications. New applications should use the updated version of 2020 once it is available in this collection, especially when using data from multiple years of this time series, to ensure consistent classification.\n\nAll years are available under a Creative Commons BY-4.0.", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "global,io-lulc-9-class,land-cover,land-use,sentinel", "license": "CC-BY-4.0", "title": "10m Annual Land Use Land Cover (9-class) V1", "missionStartDate": "2017-01-01T00:00:00Z"}, "io-biodiversity": {"abstract": "Generated by [Impact Observatory](https://www.impactobservatory.com/), in collaboration with [Vizzuality](https://www.vizzuality.com/), these datasets estimate terrestrial Biodiversity Intactness as 100-meter gridded maps for the years 2017-2020.\n\nMaps depicting the intactness of global biodiversity have become a critical tool for spatial planning and management, monitoring the extent of biodiversity across Earth, and identifying critical remaining intact habitat. Yet, these maps are often years out of date by the time they are available to scientists and policy-makers. The datasets in this STAC Collection build on past studies that map Biodiversity Intactness using the [PREDICTS database](https://onlinelibrary.wiley.com/doi/full/10.1002/ece3.2579) of spatially referenced observations of biodiversity across 32,000 sites from over 750 studies. The approach differs from previous work by modeling the relationship between observed biodiversity metrics and contemporary, global, geospatial layers of human pressures, with the intention of providing a high resolution monitoring product into the future.\n\nBiodiversity intactness is estimated as a combination of two metrics: Abundance, the quantity of individuals, and Compositional Similarity, how similar the composition of species is to an intact baseline. Linear mixed effects models are fit to estimate the predictive capacity of spatial datasets of human pressures on each of these metrics and project results spatially across the globe. These methods, as well as comparisons to other leading datasets and guidance on interpreting results, are further explained in a methods [white paper](https://ai4edatasetspublicassets.blob.core.windows.net/assets/pdfs/io-biodiversity/Biodiversity_Intactness_whitepaper.pdf) entitled \u201cGlobal 100m Projections of Biodiversity Intactness for the years 2017-2020.\u201d\n\nAll years are available under a Creative Commons BY-4.0 license.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "biodiversity,global,io-biodiversity", "license": "CC-BY-4.0", "title": "Biodiversity Intactness", "missionStartDate": "2017-01-01T00:00:00Z"}, "noaa-cdr-sea-surface-temperature-whoi": {"abstract": "The Sea Surface Temperature-Woods Hole Oceanographic Institution (WHOI) Climate Data Record (CDR) is one of three CDRs which combine to form the NOAA Ocean Surface Bundle (OSB) CDR. The resultant sea surface temperature (SST) data are produced through modeling the diurnal variability in combination with AVHRR SST observations. The final record is output to a 3-hourly 0.25\u00b0 resolution grid over the global ice-free oceans from January 1988\u2014present.\n\nThese Cloud Optimized GeoTIFFs (COGs) were created from NetCDF files which are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\nFor the NetCDF files, see collection `noaa-cdr-sea-surface-temperature-whoi-netcdf`.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,global,noaa,noaa-cdr-sea-surface-temperature-whoi,ocean,temperature", "license": "proprietary", "title": "Sea Surface Temperature - WHOI CDR", "missionStartDate": "1988-01-01T00:00:00Z"}, "noaa-cdr-ocean-heat-content": {"abstract": "The Ocean Heat Content Climate Data Record (CDR) is a set of ocean heat content anomaly (OHCA) time-series for 1955-present on 3-monthly, yearly, and pentadal (five-yearly) scales. This CDR quantifies ocean heat content change over time, which is an essential metric for understanding climate change and the Earth's energy budget. It provides time-series for multiple depth ranges in the global ocean and each of the major basins (Atlantic, Pacific, and Indian) divided by hemisphere (Northern, Southern).\n\nThese Cloud Optimized GeoTIFFs (COGs) were created from NetCDF files which are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\nFor the NetCDF files, see collection `noaa-cdr-ocean-heat-content-netcdf`.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,global,noaa,noaa-cdr-ocean-heat-content,ocean,temperature", "license": "proprietary", "title": "Global Ocean Heat Content CDR", "missionStartDate": "1972-03-01T00:00:00Z"}, "cil-gdpcir-cc0": {"abstract": "The World Climate Research Programme's [6th Coupled Model Intercomparison Project (CMIP6)](https://www.wcrp-climate.org/wgcm-cmip/wgcm-cmip6) represents an enormous advance in the quality, detail, and scope of climate modeling.\n\nThe [Global Downscaled Projections for Climate Impacts Research](https://github.com/ClimateImpactLab/downscaleCMIP6) dataset makes this modeling more applicable to understanding the impacts of changes in the climate on humans and society with two key developments: trend-preserving bias correction and downscaling. In this dataset, the [Climate Impact Lab](https://impactlab.org) provides global, daily minimum and maximum air temperature at the surface (`tasmin` and `tasmax`) and daily cumulative surface precipitation (`pr`) corresponding to the CMIP6 historical, ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 scenarios for 25 global climate models on a 1/4-degree regular global grid.\n\n## Accessing the data\n\nGDPCIR data can be accessed on the Microsoft Planetary Computer. The dataset is made of of three collections, distinguished by data license:\n* [Public domain (CC0-1.0) collection](https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc0)\n* [Attribution (CC BY 4.0) collection](https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc-by)\n\nEach modeling center with bias corrected and downscaled data in this collection falls into one of these license categories - see the [table below](/dataset/cil-gdpcir-cc0#available-institutions-models-and-scenarios-by-license-collection) to see which model is in each collection, and see the section below on [Citing, Licensing, and using data produced by this project](/dataset/cil-gdpcir-cc0#citing-licensing-and-using-data-produced-by-this-project) for citations and additional information about each license.\n\n## Data format & contents\n\nThe data is stored as partitioned zarr stores (see [https://zarr.readthedocs.io](https://zarr.readthedocs.io)), each of which includes thousands of data and metadata files covering the full time span of the experiment. Historical zarr stores contain just over 50 GB, while SSP zarr stores contain nearly 70GB. Each store is stored as a 32-bit float, with dimensions time (daily datetime), lat (float latitude), and lon (float longitude). The data is chunked at each interval of 365 days and 90 degree interval of latitude and longitude. Therefore, each chunk is `(365, 360, 360)`, with each chunk occupying approximately 180MB in memory.\n\nHistorical data is daily, excluding leap days, from Jan 1, 1950 to Dec 31, 2014; SSP data is daily, excluding leap days, from Jan 1, 2015 to either Dec 31, 2099 or Dec 31, 2100, depending on data availability in the source GCM.\n\nThe spatial domain covers all 0.25-degree grid cells, indexed by the grid center, with grid edges on the quarter-degree, using a -180 to 180 longitude convention. Thus, the \u201clon\u201d coordinate extends from -179.875 to 179.875, and the \u201clat\u201d coordinate extends from -89.875 to 89.875, with intermediate values at each 0.25-degree increment between (e.g. -179.875, -179.625, -179.375, etc).\n\n## Available institutions, models, and scenarios by license collection\n\n| Modeling institution | Source model | Available experiments | License collection |\n| -------------------- | ----------------- | ------------------------------------------ | ---------------------- |\n| CAS | FGOALS-g3 [^1] | SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| INM | INM-CM4-8 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| INM | INM-CM5-0 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| BCC | BCC-CSM2-MR | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| CMCC | CMCC-CM2-SR5 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-40 |\n| CMCC | CMCC-ESM2 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-40 |\n| CSIRO-ARCCSS | ACCESS-CM2 | SSP2-4.5 and SSP3-7.0 | CC-BY-40 |\n| CSIRO | ACCESS-ESM1-5 | SSP1-2.6, SSP2-4.5, and SSP3-7.0 | CC-BY-40 |\n| MIROC | MIROC-ES2L | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| MIROC | MIROC6 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| MOHC | HadGEM3-GC31-LL | SSP1-2.6, SSP2-4.5, and SSP5-8.5 | CC-BY-40 |\n| MOHC | UKESM1-0-LL | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| MPI-M | MPI-ESM1-2-LR | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| MPI-M/DKRZ [^2] | MPI-ESM1-2-HR | SSP1-2.6 and SSP5-8.5 | CC-BY-40 |\n| NCC | NorESM2-LM | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| NCC | NorESM2-MM | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| NOAA-GFDL | GFDL-CM4 | SSP2-4.5 and SSP5-8.5 | CC-BY-40 |\n| NOAA-GFDL | GFDL-ESM4 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| NUIST | NESM3 | SSP1-2.6, SSP2-4.5, and SSP5-8.5 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3 | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3-AerChem | ssp370 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3-CC | ssp245 and ssp585 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3-Veg | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3-Veg-LR | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40 |\n| CCCma | CanESM5 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-40[^3] |\n\n*Notes:*\n\n[^1]: At the time of running, no ssp1-2.6 precipitation data was available. Therefore, we provide `tasmin` and `tamax` for this model and experiment, but not `pr`. All other model/experiment combinations in the above table include all three variables.\n\n[^2]: The institution which ran MPI-ESM1-2-HR\u2019s historical (CMIP) simulations is `MPI-M`, while the future (ScenarioMIP) simulations were run by `DKRZ`. Therefore, the institution component of `MPI-ESM1-2-HR` filepaths differ between `historical` and `SSP` scenarios.\n\n[^3]: This dataset was previously licensed as [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/), but was relicensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) in March, 2023. \n\n## Project methods\n\nThis project makes use of statistical bias correction and downscaling algorithms, which are specifically designed to accurately represent changes in the extremes. For this reason, we selected Quantile Delta Mapping (QDM), following the method introduced by [Cannon et al. (2015)](https://doi.org/10.1175/JCLI-D-14-00754.1), which preserves quantile-specific trends from the GCM while fitting the full distribution for a given day-of-year to a reference dataset (ERA5).\n\nWe then introduce a similar method tailored to increase spatial resolution while preserving extreme behavior, Quantile-Preserving Localized-Analog Downscaling (QPLAD).\n\nTogether, these methods provide a robust means to handle both the central and tail behavior seen in climate model output, while aligning the full distribution to a state-of-the-art reanalysis dataset and providing the spatial granularity needed to study surface impacts.\n\nFor further documentation, see [Global downscaled projections for climate impacts research (GDPCIR): preserving extremes for modeling future climate impacts](https://egusphere.copernicus.org/preprints/2023/egusphere-2022-1513/) (EGUsphere, 2022 [preprint]).\n\n\n## Citing, licensing, and using data produced by this project\n\nProjects making use of the data produced as part of the Climate Impact Lab Global Downscaled Projections for Climate Impacts Research (CIL GDPCIR) project are requested to cite both this project and the source datasets from which these results are derived. Additionally, the use of data derived from some GCMs *requires* citations, and some modeling centers impose licensing restrictions & requirements on derived works. See each GCM's license info in the links below for more information.\n\n### CIL GDPCIR\n\nUsers are requested to cite this project in derived works. Our method documentation paper may be cited using the following:\n\n> Gergel, D. R., Malevich, S. B., McCusker, K. E., Tenezakis, E., Delgado, M. T., Fish, M. A., and Kopp, R. E.: Global downscaled projections for climate impacts research (GDPCIR): preserving extremes for modeling future climate impacts, EGUsphere [preprint], https://doi.org/10.5194/egusphere-2022-1513, 2023. \n\nThe code repository may be cited using the following:\n\n> Diana Gergel, Kelly McCusker, Brewster Malevich, Emile Tenezakis, Meredith Fish, Michael Delgado (2022). ClimateImpactLab/downscaleCMIP6: (v1.0.0). Zenodo. https://doi.org/10.5281/zenodo.6403794\n\n### ERA5\n\nAdditionally, we request you cite the historical dataset used in bias correction and downscaling, ERA5. See the [ECMWF guide to citing a dataset on the Climate Data Store](https://confluence.ecmwf.int/display/CKB/How+to+acknowledge+and+cite+a+Climate+Data+Store+%28CDS%29+catalogue+entry+and+the+data+published+as+part+of+it):\n\n> Hersbach, H, et al. The ERA5 global reanalysis. Q J R Meteorol Soc.2020; 146: 1999\u20132049. DOI: [10.1002/qj.3803](https://doi.org/10.1002/qj.3803)\n>\n> Mu\u00f1oz Sabater, J., (2019): ERA5-Land hourly data from 1981 to present. Copernicus Climate Change Service (C3S) Climate Data Store (CDS). (Accessed on June 4, 2021), DOI: [10.24381/cds.e2161bac](https://doi.org/10.24381/cds.e2161bac)\n>\n> Mu\u00f1oz Sabater, J., (2021): ERA5-Land hourly data from 1950 to 1980. Copernicus Climate Change Service (C3S) Climate Data Store (CDS). (Accessed on June 4, 2021), DOI: [10.24381/cds.e2161bac](https://doi.org/10.24381/cds.e2161bac)\n\n### GCM-specific citations & licenses\n\nThe CMIP6 simulation data made available through the Earth System Grid Federation (ESGF) are subject to Creative Commons [BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) or [BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) licenses. The Climate Impact Lab has reached out to each of the modeling institutions to request waivers from these terms so the outputs of this project may be used with fewer restrictions, and has been granted permission to release the data using the licenses listed here.\n\n#### Public Domain Datasets\n\nThe following bias corrected and downscaled model simulations are available in the public domain using a [CC0 1.0 Universal Public Domain Declaration](https://creativecommons.org/publicdomain/zero/1.0/). Access the collection on Planetary Computer at https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc0.\n\n* **FGOALS-g3**\n\n License description: [data_licenses/FGOALS-g3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/FGOALS-g3.txt)\n\n CMIP Citation:\n\n > Li, Lijuan **(2019)**. *CAS FGOALS-g3 model output prepared for CMIP6 CMIP*. Version 20190826. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1783\n\n ScenarioMIP Citation:\n\n > Li, Lijuan **(2019)**. *CAS FGOALS-g3 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190818; SSP2-4.5 version 20190818; SSP3-7.0 version 20190820; SSP5-8.5 tasmax version 20190819; SSP5-8.5 tasmin version 20190819; SSP5-8.5 pr version 20190818. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2056\n\n\n* **INM-CM4-8**\n\n License description: [data_licenses/INM-CM4-8.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/INM-CM4-8.txt)\n\n CMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM4-8 model output prepared for CMIP6 CMIP*. Version 20190530. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1422\n\n ScenarioMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM4-8 model output prepared for CMIP6 ScenarioMIP*. Version 20190603. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.12321\n\n\n* **INM-CM5-0**\n\n License description: [data_licenses/INM-CM5-0.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/INM-CM5-0.txt)\n\n CMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM5-0 model output prepared for CMIP6 CMIP*. Version 20190610. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1423\n\n ScenarioMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM5-0 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190619; SSP2-4.5 version 20190619; SSP3-7.0 version 20190618; SSP5-8.5 version 20190724. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.12322\n\n\n#### CC-BY-4.0\n\nThe following bias corrected and downscaled model simulations are licensed under a [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/). Note that this license requires citation of the source model output (included here). Please see https://creativecommons.org/licenses/by/4.0/ for more information. Access the collection on Planetary Computer at https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc-by.\n\n* **ACCESS-CM2**\n\n License description: [data_licenses/ACCESS-CM2.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/ACCESS-CM2.txt)\n\n CMIP Citation:\n\n > Dix, Martin; Bi, Doahua; Dobrohotoff, Peter; Fiedler, Russell; Harman, Ian; Law, Rachel; Mackallah, Chloe; Marsland, Simon; O'Farrell, Siobhan; Rashid, Harun; Srbinovsky, Jhan; Sullivan, Arnold; Trenham, Claire; Vohralik, Peter; Watterson, Ian; Williams, Gareth; Woodhouse, Matthew; Bodman, Roger; Dias, Fabio Boeira; Domingues, Catia; Hannah, Nicholas; Heerdegen, Aidan; Savita, Abhishek; Wales, Scott; Allen, Chris; Druken, Kelsey; Evans, Ben; Richards, Clare; Ridzwan, Syazwan Mohamed; Roberts, Dale; Smillie, Jon; Snow, Kate; Ward, Marshall; Yang, Rui **(2019)**. *CSIRO-ARCCSS ACCESS-CM2 model output prepared for CMIP6 CMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2281\n\n ScenarioMIP Citation:\n\n > Dix, Martin; Bi, Doahua; Dobrohotoff, Peter; Fiedler, Russell; Harman, Ian; Law, Rachel; Mackallah, Chloe; Marsland, Simon; O'Farrell, Siobhan; Rashid, Harun; Srbinovsky, Jhan; Sullivan, Arnold; Trenham, Claire; Vohralik, Peter; Watterson, Ian; Williams, Gareth; Woodhouse, Matthew; Bodman, Roger; Dias, Fabio Boeira; Domingues, Catia; Hannah, Nicholas; Heerdegen, Aidan; Savita, Abhishek; Wales, Scott; Allen, Chris; Druken, Kelsey; Evans, Ben; Richards, Clare; Ridzwan, Syazwan Mohamed; Roberts, Dale; Smillie, Jon; Snow, Kate; Ward, Marshall; Yang, Rui **(2019)**. *CSIRO-ARCCSS ACCESS-CM2 model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2285\n\n\n* **ACCESS-ESM1-5**\n\n License description: [data_licenses/ACCESS-ESM1-5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/ACCESS-ESM1-5.txt)\n\n CMIP Citation:\n\n > Ziehn, Tilo; Chamberlain, Matthew; Lenton, Andrew; Law, Rachel; Bodman, Roger; Dix, Martin; Wang, Yingping; Dobrohotoff, Peter; Srbinovsky, Jhan; Stevens, Lauren; Vohralik, Peter; Mackallah, Chloe; Sullivan, Arnold; O'Farrell, Siobhan; Druken, Kelsey **(2019)**. *CSIRO ACCESS-ESM1.5 model output prepared for CMIP6 CMIP*. Version 20191115. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2288\n\n ScenarioMIP Citation:\n\n > Ziehn, Tilo; Chamberlain, Matthew; Lenton, Andrew; Law, Rachel; Bodman, Roger; Dix, Martin; Wang, Yingping; Dobrohotoff, Peter; Srbinovsky, Jhan; Stevens, Lauren; Vohralik, Peter; Mackallah, Chloe; Sullivan, Arnold; O'Farrell, Siobhan; Druken, Kelsey **(2019)**. *CSIRO ACCESS-ESM1.5 model output prepared for CMIP6 ScenarioMIP*. Version 20191115. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2291\n\n\n* **BCC-CSM2-MR**\n\n License description: [data_licenses/BCC-CSM2-MR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/BCC-CSM2-MR.txt)\n\n CMIP Citation:\n\n > Xin, Xiaoge; Zhang, Jie; Zhang, Fang; Wu, Tongwen; Shi, Xueli; Li, Jianglong; Chu, Min; Liu, Qianxia; Yan, Jinghui; Ma, Qiang; Wei, Min **(2018)**. *BCC BCC-CSM2MR model output prepared for CMIP6 CMIP*. Version 20181126. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1725\n\n ScenarioMIP Citation:\n\n > Xin, Xiaoge; Wu, Tongwen; Shi, Xueli; Zhang, Fang; Li, Jianglong; Chu, Min; Liu, Qianxia; Yan, Jinghui; Ma, Qiang; Wei, Min **(2019)**. *BCC BCC-CSM2MR model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190315; SSP2-4.5 version 20190318; SSP3-7.0 version 20190318; SSP5-8.5 version 20190318. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1732\n\n\n* **CMCC-CM2-SR5**\n\n License description: [data_licenses/CMCC-CM2-SR5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CMCC-CM2-SR5.txt)\n\n CMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele **(2020)**. *CMCC CMCC-CM2-SR5 model output prepared for CMIP6 CMIP*. Version 20200616. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1362\n\n ScenarioMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele **(2020)**. *CMCC CMCC-CM2-SR5 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20200717; SSP2-4.5 version 20200617; SSP3-7.0 version 20200622; SSP5-8.5 version 20200622. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1365\n\n\n* **CMCC-ESM2**\n\n License description: [data_licenses/CMCC-ESM2.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CMCC-ESM2.txt)\n\n CMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele; Butensch\u00f6n, Momme **(2021)**. *CMCC CMCC-ESM2 model output prepared for CMIP6 CMIP*. Version 20210114. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.13164\n\n ScenarioMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele; Butensch\u00f6n, Momme **(2021)**. *CMCC CMCC-ESM2 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20210126; SSP2-4.5 version 20210129; SSP3-7.0 version 20210202; SSP5-8.5 version 20210126. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.13168\n\n\n* **EC-Earth3-AerChem**\n\n License description: [data_licenses/EC-Earth3-AerChem.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-AerChem.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-AerChem model output prepared for CMIP6 CMIP*. Version 20200624. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.639\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-AerChem model output prepared for CMIP6 ScenarioMIP*. Version 20200827. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.724\n\n\n* **EC-Earth3-CC**\n\n License description: [data_licenses/EC-Earth3-CC.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-CC.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth-3-CC model output prepared for CMIP6 CMIP*. Version 20210113. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.640\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2021)**. *EC-Earth-Consortium EC-Earth3-CC model output prepared for CMIP6 ScenarioMIP*. Version 20210113. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.15327\n\n\n* **EC-Earth3-Veg-LR**\n\n License description: [data_licenses/EC-Earth3-Veg-LR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-Veg-LR.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-Veg-LR model output prepared for CMIP6 CMIP*. Version 20200217. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.643\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-Veg-LR model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20201201; SSP2-4.5 version 20201123; SSP3-7.0 version 20201123; SSP5-8.5 version 20201201. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.728\n\n\n* **EC-Earth3-Veg**\n\n License description: [data_licenses/EC-Earth3-Veg.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-Veg.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3-Veg model output prepared for CMIP6 CMIP*. Version 20200225. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.642\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3-Veg model output prepared for CMIP6 ScenarioMIP*. Version 20200225. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.727\n\n\n* **EC-Earth3**\n\n License description: [data_licenses/EC-Earth3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3 model output prepared for CMIP6 CMIP*. Version 20200310. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.181\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3 model output prepared for CMIP6 ScenarioMIP*. Version 20200310. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.251\n\n\n* **GFDL-CM4**\n\n License description: [data_licenses/GFDL-CM4.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/GFDL-CM4.txt)\n\n CMIP Citation:\n\n > Guo, Huan; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Bushuk, Mitchell; Dunne, Krista A.; Dussin, Raphael; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Reichl, Brandon G; Schwarzkopf, Daniel M; Seman, Charles J; Shao, Andrew; Silvers, Levi; Wyman, Bruce; Yan, Xiaoqin; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Held, Isaac M; Krasting, John P.; Horowitz, Larry W.; Milly, P.C.D; Shevliakova, Elena; Winton, Michael; Zhao, Ming; Zhang, Rong **(2018)**. *NOAA-GFDL GFDL-CM4 model output*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1402\n\n ScenarioMIP Citation:\n\n > Guo, Huan; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Dunne, Krista A.; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Schwarzkopf, Daniel M; Seman, Charles J; Shao, Andrew; Silvers, Levi; Wyman, Bruce; Yan, Xiaoqin; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Held, Isaac M; Krasting, John P.; Horowitz, Larry W.; Milly, Chris; Shevliakova, Elena; Winton, Michael; Zhao, Ming; Zhang, Rong **(2018)**. *NOAA-GFDL GFDL-CM4 model output prepared for CMIP6 ScenarioMIP*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.9242\n\n\n* **GFDL-ESM4**\n\n License description: [data_licenses/GFDL-ESM4.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/GFDL-ESM4.txt)\n\n CMIP Citation:\n\n > Krasting, John P.; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Dunne, Krista A.; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Reichl, Brandon G; Schwarzkopf, Daniel M; Seman, Charles J; Silvers, Levi; Wyman, Bruce; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Dussin, Raphael; Guo, Huan; He, Jian; Held, Isaac M; Horowitz, Larry W.; Lin, Pu; Milly, P.C.D; Shevliakova, Elena; Stock, Charles; Winton, Michael; Wittenberg, Andrew T.; Xie, Yuanyu; Zhao, Ming **(2018)**. *NOAA-GFDL GFDL-ESM4 model output prepared for CMIP6 CMIP*. Version 20190726. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1407\n\n ScenarioMIP Citation:\n\n > John, Jasmin G; Blanton, Chris; McHugh, Colleen; Radhakrishnan, Aparna; Rand, Kristopher; Vahlenkamp, Hans; Wilson, Chandin; Zadeh, Niki T.; Dunne, John P.; Dussin, Raphael; Horowitz, Larry W.; Krasting, John P.; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Ploshay, Jeffrey; Shevliakova, Elena; Silvers, Levi; Stock, Charles; Winton, Michael; Zeng, Yujin **(2018)**. *NOAA-GFDL GFDL-ESM4 model output prepared for CMIP6 ScenarioMIP*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1414\n\n\n* **HadGEM3-GC31-LL**\n\n License description: [data_licenses/HadGEM3-GC31-LL.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/HadGEM3-GC31-LL.txt)\n\n CMIP Citation:\n\n > Ridley, Jeff; Menary, Matthew; Kuhlbrodt, Till; Andrews, Martin; Andrews, Tim **(2018)**. *MOHC HadGEM3-GC31-LL model output prepared for CMIP6 CMIP*. Version 20190624. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.419\n\n ScenarioMIP Citation:\n\n > Good, Peter **(2019)**. *MOHC HadGEM3-GC31-LL model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20200114; SSP2-4.5 version 20190908; SSP5-8.5 version 20200114. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.10845\n\n\n* **MIROC-ES2L**\n\n License description: [data_licenses/MIROC-ES2L.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MIROC-ES2L.txt)\n\n CMIP Citation:\n\n > Hajima, Tomohiro; Abe, Manabu; Arakawa, Osamu; Suzuki, Tatsuo; Komuro, Yoshiki; Ogura, Tomoo; Ogochi, Koji; Watanabe, Michio; Yamamoto, Akitomo; Tatebe, Hiroaki; Noguchi, Maki A.; Ohgaito, Rumi; Ito, Akinori; Yamazaki, Dai; Ito, Akihiko; Takata, Kumiko; Watanabe, Shingo; Kawamiya, Michio; Tachiiri, Kaoru **(2019)**. *MIROC MIROC-ES2L model output prepared for CMIP6 CMIP*. Version 20191129. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.902\n\n ScenarioMIP Citation:\n\n > Tachiiri, Kaoru; Abe, Manabu; Hajima, Tomohiro; Arakawa, Osamu; Suzuki, Tatsuo; Komuro, Yoshiki; Ogochi, Koji; Watanabe, Michio; Yamamoto, Akitomo; Tatebe, Hiroaki; Noguchi, Maki A.; Ohgaito, Rumi; Ito, Akinori; Yamazaki, Dai; Ito, Akihiko; Takata, Kumiko; Watanabe, Shingo; Kawamiya, Michio **(2019)**. *MIROC MIROC-ES2L model output prepared for CMIP6 ScenarioMIP*. Version 20200318. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.936\n\n\n* **MIROC6**\n\n License description: [data_licenses/MIROC6.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MIROC6.txt)\n\n CMIP Citation:\n\n > Tatebe, Hiroaki; Watanabe, Masahiro **(2018)**. *MIROC MIROC6 model output prepared for CMIP6 CMIP*. Version 20191016. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.881\n\n ScenarioMIP Citation:\n\n > Shiogama, Hideo; Abe, Manabu; Tatebe, Hiroaki **(2019)**. *MIROC MIROC6 model output prepared for CMIP6 ScenarioMIP*. Version 20191016. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.898\n\n\n* **MPI-ESM1-2-HR**\n\n License description: [data_licenses/MPI-ESM1-2-HR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MPI-ESM1-2-HR.txt)\n\n CMIP Citation:\n\n > Jungclaus, Johann; Bittner, Matthias; Wieners, Karl-Hermann; Wachsmann, Fabian; Schupfner, Martin; Legutke, Stephanie; Giorgetta, Marco; Reick, Christian; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Esch, Monika; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-HR model output prepared for CMIP6 CMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.741\n\n ScenarioMIP Citation:\n\n > Schupfner, Martin; Wieners, Karl-Hermann; Wachsmann, Fabian; Steger, Christian; Bittner, Matthias; Jungclaus, Johann; Fr\u00fch, Barbara; Pankatz, Klaus; Giorgetta, Marco; Reick, Christian; Legutke, Stephanie; Esch, Monika; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *DKRZ MPI-ESM1.2-HR model output prepared for CMIP6 ScenarioMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2450\n\n\n* **MPI-ESM1-2-LR**\n\n License description: [data_licenses/MPI-ESM1-2-LR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MPI-ESM1-2-LR.txt)\n\n CMIP Citation:\n\n > Wieners, Karl-Hermann; Giorgetta, Marco; Jungclaus, Johann; Reick, Christian; Esch, Monika; Bittner, Matthias; Legutke, Stephanie; Schupfner, Martin; Wachsmann, Fabian; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-LR model output prepared for CMIP6 CMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.742\n\n ScenarioMIP Citation:\n\n > Wieners, Karl-Hermann; Giorgetta, Marco; Jungclaus, Johann; Reick, Christian; Esch, Monika; Bittner, Matthias; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-LR model output prepared for CMIP6 ScenarioMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.793\n\n\n* **NESM3**\n\n License description: [data_licenses/NESM3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NESM3.txt)\n\n CMIP Citation:\n\n > Cao, Jian; Wang, Bin **(2019)**. *NUIST NESMv3 model output prepared for CMIP6 CMIP*. Version 20190812. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2021\n\n ScenarioMIP Citation:\n\n > Cao, Jian **(2019)**. *NUIST NESMv3 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190806; SSP2-4.5 version 20190805; SSP5-8.5 version 20190811. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2027\n\n\n* **NorESM2-LM**\n\n License description: [data_licenses/NorESM2-LM.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NorESM2-LM.txt)\n\n CMIP Citation:\n\n > Seland, \u00d8yvind; Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-LM model output prepared for CMIP6 CMIP*. Version 20190815. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.502\n\n ScenarioMIP Citation:\n\n > Seland, \u00d8yvind; Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-LM model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.604\n\n\n* **NorESM2-MM**\n\n License description: [data_licenses/NorESM2-MM.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NorESM2-MM.txt)\n\n CMIP Citation:\n\n > Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Seland, \u00d8yvind; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-MM model output prepared for CMIP6 CMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.506\n\n ScenarioMIP Citation:\n\n > Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Seland, \u00d8yvind; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-MM model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.608\n\n\n* **UKESM1-0-LL**\n\n License description: [data_licenses/UKESM1-0-LL.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/UKESM1-0-LL.txt)\n\n CMIP Citation:\n\n > Tang, Yongming; Rumbold, Steve; Ellis, Rich; Kelley, Douglas; Mulcahy, Jane; Sellar, Alistair; Walton, Jeremy; Jones, Colin **(2019)**. *MOHC UKESM1.0-LL model output prepared for CMIP6 CMIP*. Version 20190627. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1569\n\n ScenarioMIP Citation:\n\n > Good, Peter; Sellar, Alistair; Tang, Yongming; Rumbold, Steve; Ellis, Rich; Kelley, Douglas; Kuhlbrodt, Till; Walton, Jeremy **(2019)**. *MOHC UKESM1.0-LL model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190708; SSP2-4.5 version 20190715; SSP3-7.0 version 20190726; SSP5-8.5 version 20190726. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1567\n\n\n* **CanESM5**\n\n License description: [data_licenses/CanESM5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CanESM5.txt). Note: this dataset was previously licensed\n under CC BY-SA 4.0, but was relicensed as CC BY 4.0 in March, 2023.\n\n CMIP Citation:\n\n > Swart, Neil Cameron; Cole, Jason N.S.; Kharin, Viatcheslav V.; Lazare, Mike; Scinocca, John F.; Gillett, Nathan P.; Anstey, James; Arora, Vivek; Christian, James R.; Jiao, Yanjun; Lee, Warren G.; Majaess, Fouad; Saenko, Oleg A.; Seiler, Christian; Seinen, Clint; Shao, Andrew; Solheim, Larry; von Salzen, Knut; Yang, Duo; Winter, Barbara; Sigmond, Michael **(2019)**. *CCCma CanESM5 model output prepared for CMIP6 CMIP*. Version 20190429. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1303\n\n ScenarioMIP Citation:\n\n > Swart, Neil Cameron; Cole, Jason N.S.; Kharin, Viatcheslav V.; Lazare, Mike; Scinocca, John F.; Gillett, Nathan P.; Anstey, James; Arora, Vivek; Christian, James R.; Jiao, Yanjun; Lee, Warren G.; Majaess, Fouad; Saenko, Oleg A.; Seiler, Christian; Seinen, Clint; Shao, Andrew; Solheim, Larry; von Salzen, Knut; Yang, Duo; Winter, Barbara; Sigmond, Michael **(2019)**. *CCCma CanESM5 model output prepared for CMIP6 ScenarioMIP*. Version 20190429. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1317\n\n## Acknowledgements\n\nThis work is the result of many years worth of work by members of the [Climate Impact Lab](https://impactlab.org), but would not have been possible without many contributions from across the wider scientific and computing communities.\n\nSpecifically, we would like to acknowledge the World Climate Research Programme's Working Group on Coupled Modeling, which is responsible for CMIP, and we would like to thank the climate modeling groups for producing and making their model output available. We would particularly like to thank the modeling institutions whose results are included as an input to this repository (listed above) for their contributions to the CMIP6 project and for responding to and granting our requests for license waivers.\n\nWe would also like to thank Lamont-Doherty Earth Observatory, the [Pangeo Consortium](https://github.com/pangeo-data) (and especially the [ESGF Cloud Data Working Group](https://pangeo-data.github.io/pangeo-cmip6-cloud/#)) and Google Cloud and the Google Public Datasets program for making the [CMIP6 Google Cloud collection](https://console.cloud.google.com/marketplace/details/noaa-public/cmip6) possible. In particular we're extremely grateful to [Ryan Abernathey](https://github.com/rabernat), [Naomi Henderson](https://github.com/naomi-henderson), [Charles Blackmon-Luca](https://github.com/charlesbluca), [Aparna Radhakrishnan](https://github.com/aradhakrishnanGFDL), [Julius Busecke](https://github.com/jbusecke), and [Charles Stern](https://github.com/cisaacstern) for the huge amount of work they've done to translate the ESGF CMIP6 netCDF archives into consistently-formattted, analysis-ready zarr stores on Google Cloud.\n\nWe're also grateful to the [xclim developers](https://github.com/Ouranosinc/xclim/graphs/contributors) ([DOI: 10.5281/zenodo.2795043](https://doi.org/10.5281/zenodo.2795043)), in particular [Pascal Bourgault](https://github.com/aulemahal), [David Huard](https://github.com/huard), and [Travis Logan](https://github.com/tlogan2000), for implementing the QDM bias correction method in the xclim python package, supporting our QPLAD implementation into the package, and ongoing support in integrating dask into downscaling workflows. For method advice and useful conversations, we would like to thank Keith Dixon, Dennis Adams-Smith, and [Joe Hamman](https://github.com/jhamman).\n\n## Financial support\n\nThis research has been supported by The Rockefeller Foundation and the Microsoft AI for Earth Initiative.\n\n## Additional links:\n\n* CIL GDPCIR project homepage: [github.com/ClimateImpactLab/downscaleCMIP6](https://github.com/ClimateImpactLab/downscaleCMIP6)\n* Project listing on zenodo: https://doi.org/10.5281/zenodo.6403794\n* Climate Impact Lab homepage: [impactlab.org](https://impactlab.org)", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "cil-gdpcir-cc0,climate-impact-lab,cmip6,precipitation,rhodium-group,temperature", "license": "CC0-1.0", "title": "CIL Global Downscaled Projections for Climate Impacts Research (CC0-1.0)", "missionStartDate": "1950-01-01T00:00:00Z"}, "cil-gdpcir-cc-by": {"abstract": "The World Climate Research Programme's [6th Coupled Model Intercomparison Project (CMIP6)](https://www.wcrp-climate.org/wgcm-cmip/wgcm-cmip6) represents an enormous advance in the quality, detail, and scope of climate modeling.\n\nThe [Global Downscaled Projections for Climate Impacts Research](https://github.com/ClimateImpactLab/downscaleCMIP6) dataset makes this modeling more applicable to understanding the impacts of changes in the climate on humans and society with two key developments: trend-preserving bias correction and downscaling. In this dataset, the [Climate Impact Lab](https://impactlab.org) provides global, daily minimum and maximum air temperature at the surface (`tasmin` and `tasmax`) and daily cumulative surface precipitation (`pr`) corresponding to the CMIP6 historical, ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 scenarios for 25 global climate models on a 1/4-degree regular global grid.\n\n## Accessing the data\n\nGDPCIR data can be accessed on the Microsoft Planetary Computer. The dataset is made of of three collections, distinguished by data license:\n* [Public domain (CC0-1.0) collection](https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc0)\n* [Attribution (CC BY 4.0) collection](https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc-by)\n\nEach modeling center with bias corrected and downscaled data in this collection falls into one of these license categories - see the [table below](/dataset/cil-gdpcir-cc-by#available-institutions-models-and-scenarios-by-license-collection) to see which model is in each collection, and see the section below on [Citing, Licensing, and using data produced by this project](/dataset/cil-gdpcir-cc-by#citing-licensing-and-using-data-produced-by-this-project) for citations and additional information about each license.\n\n## Data format & contents\n\nThe data is stored as partitioned zarr stores (see [https://zarr.readthedocs.io](https://zarr.readthedocs.io)), each of which includes thousands of data and metadata files covering the full time span of the experiment. Historical zarr stores contain just over 50 GB, while SSP zarr stores contain nearly 70GB. Each store is stored as a 32-bit float, with dimensions time (daily datetime), lat (float latitude), and lon (float longitude). The data is chunked at each interval of 365 days and 90 degree interval of latitude and longitude. Therefore, each chunk is `(365, 360, 360)`, with each chunk occupying approximately 180MB in memory.\n\nHistorical data is daily, excluding leap days, from Jan 1, 1950 to Dec 31, 2014; SSP data is daily, excluding leap days, from Jan 1, 2015 to either Dec 31, 2099 or Dec 31, 2100, depending on data availability in the source GCM.\n\nThe spatial domain covers all 0.25-degree grid cells, indexed by the grid center, with grid edges on the quarter-degree, using a -180 to 180 longitude convention. Thus, the \u201clon\u201d coordinate extends from -179.875 to 179.875, and the \u201clat\u201d coordinate extends from -89.875 to 89.875, with intermediate values at each 0.25-degree increment between (e.g. -179.875, -179.625, -179.375, etc).\n\n## Available institutions, models, and scenarios by license collection\n\n| Modeling institution | Source model | Available experiments | License collection |\n| -------------------- | ----------------- | ------------------------------------------ | ---------------------- |\n| CAS | FGOALS-g3 [^1] | SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| INM | INM-CM4-8 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| INM | INM-CM5-0 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | Public domain datasets |\n| BCC | BCC-CSM2-MR | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| CMCC | CMCC-CM2-SR5 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-40 |\n| CMCC | CMCC-ESM2 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-40 |\n| CSIRO-ARCCSS | ACCESS-CM2 | SSP2-4.5 and SSP3-7.0 | CC-BY-40 |\n| CSIRO | ACCESS-ESM1-5 | SSP1-2.6, SSP2-4.5, and SSP3-7.0 | CC-BY-40 |\n| MIROC | MIROC-ES2L | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| MIROC | MIROC6 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| MOHC | HadGEM3-GC31-LL | SSP1-2.6, SSP2-4.5, and SSP5-8.5 | CC-BY-40 |\n| MOHC | UKESM1-0-LL | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| MPI-M | MPI-ESM1-2-LR | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| MPI-M/DKRZ [^2] | MPI-ESM1-2-HR | SSP1-2.6 and SSP5-8.5 | CC-BY-40 |\n| NCC | NorESM2-LM | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| NCC | NorESM2-MM | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| NOAA-GFDL | GFDL-CM4 | SSP2-4.5 and SSP5-8.5 | CC-BY-40 |\n| NOAA-GFDL | GFDL-ESM4 | SSP1-2.6, SSP2-4.5, SSP3-7.0, and SSP5-8.5 | CC-BY-40 |\n| NUIST | NESM3 | SSP1-2.6, SSP2-4.5, and SSP5-8.5 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3 | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3-AerChem | ssp370 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3-CC | ssp245 and ssp585 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3-Veg | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40 |\n| EC-Earth-Consortium | EC-Earth3-Veg-LR | ssp1-2.6, ssp2-4.5, ssp3-7.0, and ssp5-8.5 | CC-BY-40 |\n| CCCma | CanESM5 | ssp1-2.6, ssp2-4.5, ssp3-7.0, ssp5-8.5 | CC-BY-40[^3] |\n\n*Notes:*\n\n[^1]: At the time of running, no ssp1-2.6 precipitation data was available. Therefore, we provide `tasmin` and `tamax` for this model and experiment, but not `pr`. All other model/experiment combinations in the above table include all three variables.\n\n[^2]: The institution which ran MPI-ESM1-2-HR\u2019s historical (CMIP) simulations is `MPI-M`, while the future (ScenarioMIP) simulations were run by `DKRZ`. Therefore, the institution component of `MPI-ESM1-2-HR` filepaths differ between `historical` and `SSP` scenarios.\n\n[^3]: This dataset was previously licensed as [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/), but was relicensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) in March, 2023. \n\n## Project methods\n\nThis project makes use of statistical bias correction and downscaling algorithms, which are specifically designed to accurately represent changes in the extremes. For this reason, we selected Quantile Delta Mapping (QDM), following the method introduced by [Cannon et al. (2015)](https://doi.org/10.1175/JCLI-D-14-00754.1), which preserves quantile-specific trends from the GCM while fitting the full distribution for a given day-of-year to a reference dataset (ERA5).\n\nWe then introduce a similar method tailored to increase spatial resolution while preserving extreme behavior, Quantile-Preserving Localized-Analog Downscaling (QPLAD).\n\nTogether, these methods provide a robust means to handle both the central and tail behavior seen in climate model output, while aligning the full distribution to a state-of-the-art reanalysis dataset and providing the spatial granularity needed to study surface impacts.\n\nFor further documentation, see [Global downscaled projections for climate impacts research (GDPCIR): preserving extremes for modeling future climate impacts](https://egusphere.copernicus.org/preprints/2023/egusphere-2022-1513/) (EGUsphere, 2022 [preprint]).\n\n## Citing, licensing, and using data produced by this project\n\nProjects making use of the data produced as part of the Climate Impact Lab Global Downscaled Projections for Climate Impacts Research (CIL GDPCIR) project are requested to cite both this project and the source datasets from which these results are derived. Additionally, the use of data derived from some GCMs *requires* citations, and some modeling centers impose licensing restrictions & requirements on derived works. See each GCM's license info in the links below for more information.\n\n### CIL GDPCIR\n\nUsers are requested to cite this project in derived works. Our method documentation paper may be cited using the following:\n\n> Gergel, D. R., Malevich, S. B., McCusker, K. E., Tenezakis, E., Delgado, M. T., Fish, M. A., and Kopp, R. E.: Global downscaled projections for climate impacts research (GDPCIR): preserving extremes for modeling future climate impacts, EGUsphere [preprint], https://doi.org/10.5194/egusphere-2022-1513, 2023. \n\nThe code repository may be cited using the following:\n\n> Diana Gergel, Kelly McCusker, Brewster Malevich, Emile Tenezakis, Meredith Fish, Michael Delgado (2022). ClimateImpactLab/downscaleCMIP6: (v1.0.0). Zenodo. https://doi.org/10.5281/zenodo.6403794\n\n### ERA5\n\nAdditionally, we request you cite the historical dataset used in bias correction and downscaling, ERA5. See the [ECMWF guide to citing a dataset on the Climate Data Store](https://confluence.ecmwf.int/display/CKB/How+to+acknowledge+and+cite+a+Climate+Data+Store+%28CDS%29+catalogue+entry+and+the+data+published+as+part+of+it):\n\n> Hersbach, H, et al. The ERA5 global reanalysis. Q J R Meteorol Soc.2020; 146: 1999\u20132049. DOI: [10.1002/qj.3803](https://doi.org/10.1002/qj.3803)\n>\n> Mu\u00f1oz Sabater, J., (2019): ERA5-Land hourly data from 1981 to present. Copernicus Climate Change Service (C3S) Climate Data Store (CDS). (Accessed on June 4, 2021), DOI: [10.24381/cds.e2161bac](https://doi.org/10.24381/cds.e2161bac)\n>\n> Mu\u00f1oz Sabater, J., (2021): ERA5-Land hourly data from 1950 to 1980. Copernicus Climate Change Service (C3S) Climate Data Store (CDS). (Accessed on June 4, 2021), DOI: [10.24381/cds.e2161bac](https://doi.org/10.24381/cds.e2161bac)\n\n### GCM-specific citations & licenses\n\nThe CMIP6 simulation data made available through the Earth System Grid Federation (ESGF) are subject to Creative Commons [BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) or [BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) licenses. The Climate Impact Lab has reached out to each of the modeling institutions to request waivers from these terms so the outputs of this project may be used with fewer restrictions, and has been granted permission to release the data using the licenses listed here.\n\n#### Public Domain Datasets\n\nThe following bias corrected and downscaled model simulations are available in the public domain using a [CC0 1.0 Universal Public Domain Declaration](https://creativecommons.org/publicdomain/zero/1.0/). Access the collection on Planetary Computer at https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc0.\n\n* **FGOALS-g3**\n\n License description: [data_licenses/FGOALS-g3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/FGOALS-g3.txt)\n\n CMIP Citation:\n\n > Li, Lijuan **(2019)**. *CAS FGOALS-g3 model output prepared for CMIP6 CMIP*. Version 20190826. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1783\n\n ScenarioMIP Citation:\n\n > Li, Lijuan **(2019)**. *CAS FGOALS-g3 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190818; SSP2-4.5 version 20190818; SSP3-7.0 version 20190820; SSP5-8.5 tasmax version 20190819; SSP5-8.5 tasmin version 20190819; SSP5-8.5 pr version 20190818. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2056\n\n\n* **INM-CM4-8**\n\n License description: [data_licenses/INM-CM4-8.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/INM-CM4-8.txt)\n\n CMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM4-8 model output prepared for CMIP6 CMIP*. Version 20190530. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1422\n\n ScenarioMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM4-8 model output prepared for CMIP6 ScenarioMIP*. Version 20190603. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.12321\n\n\n* **INM-CM5-0**\n\n License description: [data_licenses/INM-CM5-0.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/INM-CM5-0.txt)\n\n CMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM5-0 model output prepared for CMIP6 CMIP*. Version 20190610. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1423\n\n ScenarioMIP Citation:\n\n > Volodin, Evgeny; Mortikov, Evgeny; Gritsun, Andrey; Lykossov, Vasily; Galin, Vener; Diansky, Nikolay; Gusev, Anatoly; Kostrykin, Sergey; Iakovlev, Nikolay; Shestakova, Anna; Emelina, Svetlana **(2019)**. *INM INM-CM5-0 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190619; SSP2-4.5 version 20190619; SSP3-7.0 version 20190618; SSP5-8.5 version 20190724. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.12322\n\n\n#### CC-BY-4.0\n\nThe following bias corrected and downscaled model simulations are licensed under a [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/). Note that this license requires citation of the source model output (included here). Please see https://creativecommons.org/licenses/by/4.0/ for more information. Access the collection on Planetary Computer at https://planetarycomputer.microsoft.com/dataset/cil-gdpcir-cc-by.\n\n* **ACCESS-CM2**\n\n License description: [data_licenses/ACCESS-CM2.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/ACCESS-CM2.txt)\n\n CMIP Citation:\n\n > Dix, Martin; Bi, Doahua; Dobrohotoff, Peter; Fiedler, Russell; Harman, Ian; Law, Rachel; Mackallah, Chloe; Marsland, Simon; O'Farrell, Siobhan; Rashid, Harun; Srbinovsky, Jhan; Sullivan, Arnold; Trenham, Claire; Vohralik, Peter; Watterson, Ian; Williams, Gareth; Woodhouse, Matthew; Bodman, Roger; Dias, Fabio Boeira; Domingues, Catia; Hannah, Nicholas; Heerdegen, Aidan; Savita, Abhishek; Wales, Scott; Allen, Chris; Druken, Kelsey; Evans, Ben; Richards, Clare; Ridzwan, Syazwan Mohamed; Roberts, Dale; Smillie, Jon; Snow, Kate; Ward, Marshall; Yang, Rui **(2019)**. *CSIRO-ARCCSS ACCESS-CM2 model output prepared for CMIP6 CMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2281\n\n ScenarioMIP Citation:\n\n > Dix, Martin; Bi, Doahua; Dobrohotoff, Peter; Fiedler, Russell; Harman, Ian; Law, Rachel; Mackallah, Chloe; Marsland, Simon; O'Farrell, Siobhan; Rashid, Harun; Srbinovsky, Jhan; Sullivan, Arnold; Trenham, Claire; Vohralik, Peter; Watterson, Ian; Williams, Gareth; Woodhouse, Matthew; Bodman, Roger; Dias, Fabio Boeira; Domingues, Catia; Hannah, Nicholas; Heerdegen, Aidan; Savita, Abhishek; Wales, Scott; Allen, Chris; Druken, Kelsey; Evans, Ben; Richards, Clare; Ridzwan, Syazwan Mohamed; Roberts, Dale; Smillie, Jon; Snow, Kate; Ward, Marshall; Yang, Rui **(2019)**. *CSIRO-ARCCSS ACCESS-CM2 model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2285\n\n\n* **ACCESS-ESM1-5**\n\n License description: [data_licenses/ACCESS-ESM1-5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/ACCESS-ESM1-5.txt)\n\n CMIP Citation:\n\n > Ziehn, Tilo; Chamberlain, Matthew; Lenton, Andrew; Law, Rachel; Bodman, Roger; Dix, Martin; Wang, Yingping; Dobrohotoff, Peter; Srbinovsky, Jhan; Stevens, Lauren; Vohralik, Peter; Mackallah, Chloe; Sullivan, Arnold; O'Farrell, Siobhan; Druken, Kelsey **(2019)**. *CSIRO ACCESS-ESM1.5 model output prepared for CMIP6 CMIP*. Version 20191115. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2288\n\n ScenarioMIP Citation:\n\n > Ziehn, Tilo; Chamberlain, Matthew; Lenton, Andrew; Law, Rachel; Bodman, Roger; Dix, Martin; Wang, Yingping; Dobrohotoff, Peter; Srbinovsky, Jhan; Stevens, Lauren; Vohralik, Peter; Mackallah, Chloe; Sullivan, Arnold; O'Farrell, Siobhan; Druken, Kelsey **(2019)**. *CSIRO ACCESS-ESM1.5 model output prepared for CMIP6 ScenarioMIP*. Version 20191115. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2291\n\n\n* **BCC-CSM2-MR**\n\n License description: [data_licenses/BCC-CSM2-MR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/BCC-CSM2-MR.txt)\n\n CMIP Citation:\n\n > Xin, Xiaoge; Zhang, Jie; Zhang, Fang; Wu, Tongwen; Shi, Xueli; Li, Jianglong; Chu, Min; Liu, Qianxia; Yan, Jinghui; Ma, Qiang; Wei, Min **(2018)**. *BCC BCC-CSM2MR model output prepared for CMIP6 CMIP*. Version 20181126. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1725\n\n ScenarioMIP Citation:\n\n > Xin, Xiaoge; Wu, Tongwen; Shi, Xueli; Zhang, Fang; Li, Jianglong; Chu, Min; Liu, Qianxia; Yan, Jinghui; Ma, Qiang; Wei, Min **(2019)**. *BCC BCC-CSM2MR model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190315; SSP2-4.5 version 20190318; SSP3-7.0 version 20190318; SSP5-8.5 version 20190318. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1732\n\n\n* **CMCC-CM2-SR5**\n\n License description: [data_licenses/CMCC-CM2-SR5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CMCC-CM2-SR5.txt)\n\n CMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele **(2020)**. *CMCC CMCC-CM2-SR5 model output prepared for CMIP6 CMIP*. Version 20200616. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1362\n\n ScenarioMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele **(2020)**. *CMCC CMCC-CM2-SR5 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20200717; SSP2-4.5 version 20200617; SSP3-7.0 version 20200622; SSP5-8.5 version 20200622. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1365\n\n\n* **CMCC-ESM2**\n\n License description: [data_licenses/CMCC-ESM2.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CMCC-ESM2.txt)\n\n CMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele; Butensch\u00f6n, Momme **(2021)**. *CMCC CMCC-ESM2 model output prepared for CMIP6 CMIP*. Version 20210114. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.13164\n\n ScenarioMIP Citation:\n\n > Lovato, Tomas; Peano, Daniele; Butensch\u00f6n, Momme **(2021)**. *CMCC CMCC-ESM2 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20210126; SSP2-4.5 version 20210129; SSP3-7.0 version 20210202; SSP5-8.5 version 20210126. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.13168\n\n\n* **EC-Earth3-AerChem**\n\n License description: [data_licenses/EC-Earth3-AerChem.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-AerChem.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-AerChem model output prepared for CMIP6 CMIP*. Version 20200624. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.639\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-AerChem model output prepared for CMIP6 ScenarioMIP*. Version 20200827. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.724\n\n\n* **EC-Earth3-CC**\n\n License description: [data_licenses/EC-Earth3-CC.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-CC.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth-3-CC model output prepared for CMIP6 CMIP*. Version 20210113. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.640\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2021)**. *EC-Earth-Consortium EC-Earth3-CC model output prepared for CMIP6 ScenarioMIP*. Version 20210113. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.15327\n\n\n* **EC-Earth3-Veg-LR**\n\n License description: [data_licenses/EC-Earth3-Veg-LR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-Veg-LR.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-Veg-LR model output prepared for CMIP6 CMIP*. Version 20200217. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.643\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2020)**. *EC-Earth-Consortium EC-Earth3-Veg-LR model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20201201; SSP2-4.5 version 20201123; SSP3-7.0 version 20201123; SSP5-8.5 version 20201201. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.728\n\n\n* **EC-Earth3-Veg**\n\n License description: [data_licenses/EC-Earth3-Veg.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3-Veg.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3-Veg model output prepared for CMIP6 CMIP*. Version 20200225. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.642\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3-Veg model output prepared for CMIP6 ScenarioMIP*. Version 20200225. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.727\n\n\n* **EC-Earth3**\n\n License description: [data_licenses/EC-Earth3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/EC-Earth3.txt)\n\n CMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3 model output prepared for CMIP6 CMIP*. Version 20200310. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.181\n\n ScenarioMIP Citation:\n\n > EC-Earth Consortium (EC-Earth) **(2019)**. *EC-Earth-Consortium EC-Earth3 model output prepared for CMIP6 ScenarioMIP*. Version 20200310. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.251\n\n\n* **GFDL-CM4**\n\n License description: [data_licenses/GFDL-CM4.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/GFDL-CM4.txt)\n\n CMIP Citation:\n\n > Guo, Huan; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Bushuk, Mitchell; Dunne, Krista A.; Dussin, Raphael; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Reichl, Brandon G; Schwarzkopf, Daniel M; Seman, Charles J; Shao, Andrew; Silvers, Levi; Wyman, Bruce; Yan, Xiaoqin; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Held, Isaac M; Krasting, John P.; Horowitz, Larry W.; Milly, P.C.D; Shevliakova, Elena; Winton, Michael; Zhao, Ming; Zhang, Rong **(2018)**. *NOAA-GFDL GFDL-CM4 model output*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1402\n\n ScenarioMIP Citation:\n\n > Guo, Huan; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Dunne, Krista A.; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Schwarzkopf, Daniel M; Seman, Charles J; Shao, Andrew; Silvers, Levi; Wyman, Bruce; Yan, Xiaoqin; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Held, Isaac M; Krasting, John P.; Horowitz, Larry W.; Milly, Chris; Shevliakova, Elena; Winton, Michael; Zhao, Ming; Zhang, Rong **(2018)**. *NOAA-GFDL GFDL-CM4 model output prepared for CMIP6 ScenarioMIP*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.9242\n\n\n* **GFDL-ESM4**\n\n License description: [data_licenses/GFDL-ESM4.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/GFDL-ESM4.txt)\n\n CMIP Citation:\n\n > Krasting, John P.; John, Jasmin G; Blanton, Chris; McHugh, Colleen; Nikonov, Serguei; Radhakrishnan, Aparna; Rand, Kristopher; Zadeh, Niki T.; Balaji, V; Durachta, Jeff; Dupuis, Christopher; Menzel, Raymond; Robinson, Thomas; Underwood, Seth; Vahlenkamp, Hans; Dunne, Krista A.; Gauthier, Paul PG; Ginoux, Paul; Griffies, Stephen M.; Hallberg, Robert; Harrison, Matthew; Hurlin, William; Malyshev, Sergey; Naik, Vaishali; Paulot, Fabien; Paynter, David J; Ploshay, Jeffrey; Reichl, Brandon G; Schwarzkopf, Daniel M; Seman, Charles J; Silvers, Levi; Wyman, Bruce; Zeng, Yujin; Adcroft, Alistair; Dunne, John P.; Dussin, Raphael; Guo, Huan; He, Jian; Held, Isaac M; Horowitz, Larry W.; Lin, Pu; Milly, P.C.D; Shevliakova, Elena; Stock, Charles; Winton, Michael; Wittenberg, Andrew T.; Xie, Yuanyu; Zhao, Ming **(2018)**. *NOAA-GFDL GFDL-ESM4 model output prepared for CMIP6 CMIP*. Version 20190726. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1407\n\n ScenarioMIP Citation:\n\n > John, Jasmin G; Blanton, Chris; McHugh, Colleen; Radhakrishnan, Aparna; Rand, Kristopher; Vahlenkamp, Hans; Wilson, Chandin; Zadeh, Niki T.; Dunne, John P.; Dussin, Raphael; Horowitz, Larry W.; Krasting, John P.; Lin, Pu; Malyshev, Sergey; Naik, Vaishali; Ploshay, Jeffrey; Shevliakova, Elena; Silvers, Levi; Stock, Charles; Winton, Michael; Zeng, Yujin **(2018)**. *NOAA-GFDL GFDL-ESM4 model output prepared for CMIP6 ScenarioMIP*. Version 20180701. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1414\n\n\n* **HadGEM3-GC31-LL**\n\n License description: [data_licenses/HadGEM3-GC31-LL.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/HadGEM3-GC31-LL.txt)\n\n CMIP Citation:\n\n > Ridley, Jeff; Menary, Matthew; Kuhlbrodt, Till; Andrews, Martin; Andrews, Tim **(2018)**. *MOHC HadGEM3-GC31-LL model output prepared for CMIP6 CMIP*. Version 20190624. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.419\n\n ScenarioMIP Citation:\n\n > Good, Peter **(2019)**. *MOHC HadGEM3-GC31-LL model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20200114; SSP2-4.5 version 20190908; SSP5-8.5 version 20200114. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.10845\n\n\n* **MIROC-ES2L**\n\n License description: [data_licenses/MIROC-ES2L.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MIROC-ES2L.txt)\n\n CMIP Citation:\n\n > Hajima, Tomohiro; Abe, Manabu; Arakawa, Osamu; Suzuki, Tatsuo; Komuro, Yoshiki; Ogura, Tomoo; Ogochi, Koji; Watanabe, Michio; Yamamoto, Akitomo; Tatebe, Hiroaki; Noguchi, Maki A.; Ohgaito, Rumi; Ito, Akinori; Yamazaki, Dai; Ito, Akihiko; Takata, Kumiko; Watanabe, Shingo; Kawamiya, Michio; Tachiiri, Kaoru **(2019)**. *MIROC MIROC-ES2L model output prepared for CMIP6 CMIP*. Version 20191129. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.902\n\n ScenarioMIP Citation:\n\n > Tachiiri, Kaoru; Abe, Manabu; Hajima, Tomohiro; Arakawa, Osamu; Suzuki, Tatsuo; Komuro, Yoshiki; Ogochi, Koji; Watanabe, Michio; Yamamoto, Akitomo; Tatebe, Hiroaki; Noguchi, Maki A.; Ohgaito, Rumi; Ito, Akinori; Yamazaki, Dai; Ito, Akihiko; Takata, Kumiko; Watanabe, Shingo; Kawamiya, Michio **(2019)**. *MIROC MIROC-ES2L model output prepared for CMIP6 ScenarioMIP*. Version 20200318. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.936\n\n\n* **MIROC6**\n\n License description: [data_licenses/MIROC6.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MIROC6.txt)\n\n CMIP Citation:\n\n > Tatebe, Hiroaki; Watanabe, Masahiro **(2018)**. *MIROC MIROC6 model output prepared for CMIP6 CMIP*. Version 20191016. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.881\n\n ScenarioMIP Citation:\n\n > Shiogama, Hideo; Abe, Manabu; Tatebe, Hiroaki **(2019)**. *MIROC MIROC6 model output prepared for CMIP6 ScenarioMIP*. Version 20191016. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.898\n\n\n* **MPI-ESM1-2-HR**\n\n License description: [data_licenses/MPI-ESM1-2-HR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MPI-ESM1-2-HR.txt)\n\n CMIP Citation:\n\n > Jungclaus, Johann; Bittner, Matthias; Wieners, Karl-Hermann; Wachsmann, Fabian; Schupfner, Martin; Legutke, Stephanie; Giorgetta, Marco; Reick, Christian; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Esch, Monika; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-HR model output prepared for CMIP6 CMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.741\n\n ScenarioMIP Citation:\n\n > Schupfner, Martin; Wieners, Karl-Hermann; Wachsmann, Fabian; Steger, Christian; Bittner, Matthias; Jungclaus, Johann; Fr\u00fch, Barbara; Pankatz, Klaus; Giorgetta, Marco; Reick, Christian; Legutke, Stephanie; Esch, Monika; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *DKRZ MPI-ESM1.2-HR model output prepared for CMIP6 ScenarioMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2450\n\n\n* **MPI-ESM1-2-LR**\n\n License description: [data_licenses/MPI-ESM1-2-LR.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/MPI-ESM1-2-LR.txt)\n\n CMIP Citation:\n\n > Wieners, Karl-Hermann; Giorgetta, Marco; Jungclaus, Johann; Reick, Christian; Esch, Monika; Bittner, Matthias; Legutke, Stephanie; Schupfner, Martin; Wachsmann, Fabian; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-LR model output prepared for CMIP6 CMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.742\n\n ScenarioMIP Citation:\n\n > Wieners, Karl-Hermann; Giorgetta, Marco; Jungclaus, Johann; Reick, Christian; Esch, Monika; Bittner, Matthias; Gayler, Veronika; Haak, Helmuth; de Vrese, Philipp; Raddatz, Thomas; Mauritsen, Thorsten; von Storch, Jin-Song; Behrens, J\u00f6rg; Brovkin, Victor; Claussen, Martin; Crueger, Traute; Fast, Irina; Fiedler, Stephanie; Hagemann, Stefan; Hohenegger, Cathy; Jahns, Thomas; Kloster, Silvia; Kinne, Stefan; Lasslop, Gitta; Kornblueh, Luis; Marotzke, Jochem; Matei, Daniela; Meraner, Katharina; Mikolajewicz, Uwe; Modali, Kameswarrao; M\u00fcller, Wolfgang; Nabel, Julia; Notz, Dirk; Peters-von Gehlen, Karsten; Pincus, Robert; Pohlmann, Holger; Pongratz, Julia; Rast, Sebastian; Schmidt, Hauke; Schnur, Reiner; Schulzweida, Uwe; Six, Katharina; Stevens, Bjorn; Voigt, Aiko; Roeckner, Erich **(2019)**. *MPI-M MPIESM1.2-LR model output prepared for CMIP6 ScenarioMIP*. Version 20190710. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.793\n\n\n* **NESM3**\n\n License description: [data_licenses/NESM3.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NESM3.txt)\n\n CMIP Citation:\n\n > Cao, Jian; Wang, Bin **(2019)**. *NUIST NESMv3 model output prepared for CMIP6 CMIP*. Version 20190812. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2021\n\n ScenarioMIP Citation:\n\n > Cao, Jian **(2019)**. *NUIST NESMv3 model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190806; SSP2-4.5 version 20190805; SSP5-8.5 version 20190811. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.2027\n\n\n* **NorESM2-LM**\n\n License description: [data_licenses/NorESM2-LM.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NorESM2-LM.txt)\n\n CMIP Citation:\n\n > Seland, \u00d8yvind; Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-LM model output prepared for CMIP6 CMIP*. Version 20190815. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.502\n\n ScenarioMIP Citation:\n\n > Seland, \u00d8yvind; Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-LM model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.604\n\n\n* **NorESM2-MM**\n\n License description: [data_licenses/NorESM2-MM.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/NorESM2-MM.txt)\n\n CMIP Citation:\n\n > Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Seland, \u00d8yvind; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-MM model output prepared for CMIP6 CMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.506\n\n ScenarioMIP Citation:\n\n > Bentsen, Mats; Olivi\u00e8, Dirk Jan Leo; Seland, \u00d8yvind; Toniazzo, Thomas; Gjermundsen, Ada; Graff, Lise Seland; Debernard, Jens Boldingh; Gupta, Alok Kumar; He, Yanchun; Kirkev\u00e5g, Alf; Schwinger, J\u00f6rg; Tjiputra, Jerry; Aas, Kjetil Schanke; Bethke, Ingo; Fan, Yuanchao; Griesfeller, Jan; Grini, Alf; Guo, Chuncheng; Ilicak, Mehmet; Karset, Inger Helene Hafsahl; Landgren, Oskar Andreas; Liakka, Johan; Moseid, Kine Onsum; Nummelin, Aleksi; Spensberger, Clemens; Tang, Hui; Zhang, Zhongshi; Heinze, Christoph; Iversen, Trond; Schulz, Michael **(2019)**. *NCC NorESM2-MM model output prepared for CMIP6 ScenarioMIP*. Version 20191108. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.608\n\n\n* **UKESM1-0-LL**\n\n License description: [data_licenses/UKESM1-0-LL.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/UKESM1-0-LL.txt)\n\n CMIP Citation:\n\n > Tang, Yongming; Rumbold, Steve; Ellis, Rich; Kelley, Douglas; Mulcahy, Jane; Sellar, Alistair; Walton, Jeremy; Jones, Colin **(2019)**. *MOHC UKESM1.0-LL model output prepared for CMIP6 CMIP*. Version 20190627. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1569\n\n ScenarioMIP Citation:\n\n > Good, Peter; Sellar, Alistair; Tang, Yongming; Rumbold, Steve; Ellis, Rich; Kelley, Douglas; Kuhlbrodt, Till; Walton, Jeremy **(2019)**. *MOHC UKESM1.0-LL model output prepared for CMIP6 ScenarioMIP*. SSP1-2.6 version 20190708; SSP2-4.5 version 20190715; SSP3-7.0 version 20190726; SSP5-8.5 version 20190726. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1567\n\n* **CanESM5**\n\n License description: [data_licenses/CanESM5.txt](https://raw.githubusercontent.com/ClimateImpactLab/downscaleCMIP6/master/data_licenses/CanESM5.txt). Note: this dataset was previously licensed\n under CC BY-SA 4.0, but was relicensed as CC BY 4.0 in March, 2023.\n\n CMIP Citation:\n\n > Swart, Neil Cameron; Cole, Jason N.S.; Kharin, Viatcheslav V.; Lazare, Mike; Scinocca, John F.; Gillett, Nathan P.; Anstey, James; Arora, Vivek; Christian, James R.; Jiao, Yanjun; Lee, Warren G.; Majaess, Fouad; Saenko, Oleg A.; Seiler, Christian; Seinen, Clint; Shao, Andrew; Solheim, Larry; von Salzen, Knut; Yang, Duo; Winter, Barbara; Sigmond, Michael **(2019)**. *CCCma CanESM5 model output prepared for CMIP6 CMIP*. Version 20190429. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1303\n\n ScenarioMIP Citation:\n\n > Swart, Neil Cameron; Cole, Jason N.S.; Kharin, Viatcheslav V.; Lazare, Mike; Scinocca, John F.; Gillett, Nathan P.; Anstey, James; Arora, Vivek; Christian, James R.; Jiao, Yanjun; Lee, Warren G.; Majaess, Fouad; Saenko, Oleg A.; Seiler, Christian; Seinen, Clint; Shao, Andrew; Solheim, Larry; von Salzen, Knut; Yang, Duo; Winter, Barbara; Sigmond, Michael **(2019)**. *CCCma CanESM5 model output prepared for CMIP6 ScenarioMIP*. Version 20190429. Earth System Grid Federation. https://doi.org/10.22033/ESGF/CMIP6.1317\n\n## Acknowledgements\n\nThis work is the result of many years worth of work by members of the [Climate Impact Lab](https://impactlab.org), but would not have been possible without many contributions from across the wider scientific and computing communities.\n\nSpecifically, we would like to acknowledge the World Climate Research Programme's Working Group on Coupled Modeling, which is responsible for CMIP, and we would like to thank the climate modeling groups for producing and making their model output available. We would particularly like to thank the modeling institutions whose results are included as an input to this repository (listed above) for their contributions to the CMIP6 project and for responding to and granting our requests for license waivers.\n\nWe would also like to thank Lamont-Doherty Earth Observatory, the [Pangeo Consortium](https://github.com/pangeo-data) (and especially the [ESGF Cloud Data Working Group](https://pangeo-data.github.io/pangeo-cmip6-cloud/#)) and Google Cloud and the Google Public Datasets program for making the [CMIP6 Google Cloud collection](https://console.cloud.google.com/marketplace/details/noaa-public/cmip6) possible. In particular we're extremely grateful to [Ryan Abernathey](https://github.com/rabernat), [Naomi Henderson](https://github.com/naomi-henderson), [Charles Blackmon-Luca](https://github.com/charlesbluca), [Aparna Radhakrishnan](https://github.com/aradhakrishnanGFDL), [Julius Busecke](https://github.com/jbusecke), and [Charles Stern](https://github.com/cisaacstern) for the huge amount of work they've done to translate the ESGF CMIP6 netCDF archives into consistently-formattted, analysis-ready zarr stores on Google Cloud.\n\nWe're also grateful to the [xclim developers](https://github.com/Ouranosinc/xclim/graphs/contributors) ([DOI: 10.5281/zenodo.2795043](https://doi.org/10.5281/zenodo.2795043)), in particular [Pascal Bourgault](https://github.com/aulemahal), [David Huard](https://github.com/huard), and [Travis Logan](https://github.com/tlogan2000), for implementing the QDM bias correction method in the xclim python package, supporting our QPLAD implementation into the package, and ongoing support in integrating dask into downscaling workflows. For method advice and useful conversations, we would like to thank Keith Dixon, Dennis Adams-Smith, and [Joe Hamman](https://github.com/jhamman).\n\n## Financial support\n\nThis research has been supported by The Rockefeller Foundation and the Microsoft AI for Earth Initiative.\n\n## Additional links:\n\n* CIL GDPCIR project homepage: [github.com/ClimateImpactLab/downscaleCMIP6](https://github.com/ClimateImpactLab/downscaleCMIP6)\n* Project listing on zenodo: https://doi.org/10.5281/zenodo.6403794\n* Climate Impact Lab homepage: [impactlab.org](https://impactlab.org)", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "cil-gdpcir-cc-by,climate-impact-lab,cmip6,precipitation,rhodium-group,temperature", "license": "CC-BY-4.0", "title": "CIL Global Downscaled Projections for Climate Impacts Research (CC-BY-4.0)", "missionStartDate": "1950-01-01T00:00:00Z"}, "noaa-cdr-sea-surface-temperature-whoi-netcdf": {"abstract": "The Sea Surface Temperature-Woods Hole Oceanographic Institution (WHOI) Climate Data Record (CDR) is one of three CDRs which combine to form the NOAA Ocean Surface Bundle (OSB) CDR. The resultant sea surface temperature (SST) data are produced through modeling the diurnal variability in combination with AVHRR SST observations. The final record is output to a 3-hourly 0.25\u00b0 resolution grid over the global ice-free oceans from January 1988\u2014present.\n\nThis is a NetCDF-only collection, for Cloud-Optimized GeoTIFFs use collection `noaa-cdr-sea-surface-temperature-whoi`.\nThe NetCDF files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,global,noaa,noaa-cdr-sea-surface-temperature-whoi-netcdf,ocean,temperature", "license": "proprietary", "title": "Sea Surface Temperature - WHOI CDR NetCDFs", "missionStartDate": "1988-01-01T00:00:00Z"}, "noaa-cdr-sea-surface-temperature-optimum-interpolation": {"abstract": "The NOAA 1/4\u00b0 daily Optimum Interpolation Sea Surface Temperature (or daily OISST) Climate Data Record (CDR) provides complete ocean temperature fields constructed by combining bias-adjusted observations from different platforms (satellites, ships, buoys) on a regular global grid, with gaps filled in by interpolation. The main input source is satellite data from the Advanced Very High Resolution Radiometer (AVHRR), which provides high temporal-spatial coverage from late 1981-present. This input must be adjusted to the buoys due to erroneous cold SST data following the Mt Pinatubo and El Chichon eruptions. Applications include climate modeling, resource management, ecological studies on annual to daily scales.\n\nThese Cloud Optimized GeoTIFFs (COGs) were created from NetCDF files which are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\nFor the NetCDF files, see collection `noaa-cdr-sea-surface-temperature-optimum-interpolation-netcdf`.\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,global,noaa,noaa-cdr-sea-surface-temperature-optimum-interpolation,ocean,temperature", "license": "proprietary", "title": "Sea Surface Temperature - Optimum Interpolation CDR", "missionStartDate": "1981-09-01T00:00:00Z"}, "modis-10A1-061": {"abstract": "This global Level-3 (L3) data set provides a daily composite of snow cover and albedo derived from the 'MODIS Snow Cover 5-Min L2 Swath 500m' data set. Each data granule is a 10degx10deg tile projected to a 500 m sinusoidal grid.", "instrument": "modis", "platform": null, "platformSerialIdentifier": "aqua,terra", "processingLevel": null, "keywords": "aqua,global,mod10a1,modis,modis-10a1-061,myd10a1,nasa,satellite,snow,terra", "license": "proprietary", "title": "MODIS Snow Cover Daily", "missionStartDate": "2000-02-24T00:00:00Z"}, "sentinel-5p-l2-netcdf": {"abstract": "The Copernicus [Sentinel-5 Precursor](https://sentinels.copernicus.eu/web/sentinel/missions/sentinel-5p) mission provides high spatio-temporal resolution measurements of the Earth's atmosphere. The mission consists of one satellite carrying the [TROPOspheric Monitoring Instrument](http://www.tropomi.eu/) (TROPOMI). The satellite flies in loose formation with NASA's [Suomi NPP](https://www.nasa.gov/mission_pages/NPP/main/index.html) spacecraft, allowing utilization of co-located cloud mask data provided by the [Visible Infrared Imaging Radiometer Suite](https://www.nesdis.noaa.gov/current-satellite-missions/currently-flying/joint-polar-satellite-system/visible-infrared-imaging) (VIIRS) instrument onboard Suomi NPP during processing of the TROPOMI methane product.\n\nThe Sentinel-5 Precursor mission aims to reduce the global atmospheric data gap between the retired [ENVISAT](https://earth.esa.int/eogateway/missions/envisat) and [AURA](https://www.nasa.gov/mission_pages/aura/main/index.html) missions and the future [Sentinel-5](https://sentinels.copernicus.eu/web/sentinel/missions/sentinel-5) mission. Sentinel-5 Precursor [Level 2 data](http://www.tropomi.eu/data-products/level-2-products) provide total columns of ozone, sulfur dioxide, nitrogen dioxide, carbon monoxide and formaldehyde, tropospheric columns of ozone, vertical profiles of ozone and cloud & aerosol information. These measurements are used for improving air quality forecasts and monitoring the concentrations of atmospheric constituents.\n\nThis STAC Collection provides Sentinel-5 Precursor Level 2 data, in NetCDF format, since April 2018 for the following products:\n\n* [`L2__AER_AI`](http://www.tropomi.eu/data-products/uv-aerosol-index): Ultraviolet aerosol index\n* [`L2__AER_LH`](http://www.tropomi.eu/data-products/aerosol-layer-height): Aerosol layer height\n* [`L2__CH4___`](http://www.tropomi.eu/data-products/methane): Methane (CH4) total column\n* [`L2__CLOUD_`](http://www.tropomi.eu/data-products/cloud): Cloud fraction, albedo, and top pressure\n* [`L2__CO____`](http://www.tropomi.eu/data-products/carbon-monoxide): Carbon monoxide (CO) total column\n* [`L2__HCHO__`](http://www.tropomi.eu/data-products/formaldehyde): Formaldehyde (HCHO) total column\n* [`L2__NO2___`](http://www.tropomi.eu/data-products/nitrogen-dioxide): Nitrogen dioxide (NO2) total column\n* [`L2__O3____`](http://www.tropomi.eu/data-products/total-ozone-column): Ozone (O3) total column\n* [`L2__O3_TCL`](http://www.tropomi.eu/data-products/tropospheric-ozone-column): Ozone (O3) tropospheric column\n* [`L2__SO2___`](http://www.tropomi.eu/data-products/sulphur-dioxide): Sulfur dioxide (SO2) total column\n* [`L2__NP_BD3`](http://www.tropomi.eu/data-products/auxiliary): Cloud from the Suomi NPP mission, band 3\n* [`L2__NP_BD6`](http://www.tropomi.eu/data-products/auxiliary): Cloud from the Suomi NPP mission, band 6\n* [`L2__NP_BD7`](http://www.tropomi.eu/data-products/auxiliary): Cloud from the Suomi NPP mission, band 7\n", "instrument": "TROPOMI", "platform": "Sentinel-5P", "platformSerialIdentifier": "Sentinel 5 Precursor", "processingLevel": null, "keywords": "air-quality,climate-change,copernicus,esa,forecasting,sentinel,sentinel-5-precursor,sentinel-5p,sentinel-5p-l2-netcdf,tropomi", "license": "proprietary", "title": "Sentinel-5P Level-2", "missionStartDate": "2018-04-30T00:18:50Z"}, "sentinel-3-olci-wfr-l2-netcdf": {"abstract": "This Collection provides Sentinel-3 Full Resolution [OLCI Level-2 Water][olci-l2] products containing data on water-leaving reflectance, ocean color, and more.\n\n## Data files\n\nThis dataset includes data on:\n\n- Surface directional reflectance\n- Chlorophyll-a concentration\n- Suspended matter concentration\n- Energy flux\n- Aerosol load\n- Integrated water vapor column\n\nEach variable is contained within NetCDF files. Error estimates are available for each product.\n\n## Processing overview\n\nThe values in the data files have been converted from Top of Atmosphere radiance to reflectance, and include various corrections for gaseous absorption and pixel classification. More information about the product and data processing can be found in the [User Guide](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-olci/product-types/level-2-water) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-olci/level-2/processing).\n\nThis Collection contains Level-2 data in NetCDF files from November 2017 to present.\n\n[olci-l2]: https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-olci/level-2/ocean-products\n", "instrument": "OLCI", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "copernicus,esa,ocean,olci,sentinel,sentinel-3,sentinel-3-olci-wfr-l2-netcdf,sentinel-3a,sentinel-3b,water", "license": "proprietary", "title": "Sentinel-3 Water (Full Resolution)", "missionStartDate": "2017-11-01T00:07:01.738487Z"}, "noaa-cdr-ocean-heat-content-netcdf": {"abstract": "The Ocean Heat Content Climate Data Record (CDR) is a set of ocean heat content anomaly (OHCA) time-series for 1955-present on 3-monthly, yearly, and pentadal (five-yearly) scales. This CDR quantifies ocean heat content change over time, which is an essential metric for understanding climate change and the Earth's energy budget. It provides time-series for multiple depth ranges in the global ocean and each of the major basins (Atlantic, Pacific, and Indian) divided by hemisphere (Northern, Southern).\n\nThis is a NetCDF-only collection, for Cloud-Optimized GeoTIFFs use collection `noaa-cdr-ocean-heat-content`.\nThe NetCDF files are delivered to Azure as part of the [NOAA Open Data Dissemination (NODD) Program](https://www.noaa.gov/information-technology/open-data-dissemination).\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "climate,global,noaa,noaa-cdr-ocean-heat-content-netcdf,ocean,temperature", "license": "proprietary", "title": "Global Ocean Heat Content CDR NetCDFs", "missionStartDate": "1972-03-01T00:00:00Z"}, "sentinel-3-synergy-aod-l2-netcdf": {"abstract": "This Collection provides the Sentinel-3 [Synergy Level-2 Aerosol Optical Depth](https://sentinels.copernicus.eu/web/sentinel/level-2-aod) product, which is a downstream development of the Sentinel-2 Level-1 [OLCI Full Resolution](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-olci/data-formats/level-1) and [SLSTR Radiances and Brightness Temperatures](https://sentinels.copernicus.eu/web/sentinel/user-guides/Sentinel-3-slstr/data-formats/level-1) products. The dataset provides both retrieved and diagnostic global aerosol parameters at super-pixel (4.5 km x 4.5 km) resolution in a single NetCDF file for all regions over land and ocean free of snow/ice cover, excluding high cloud fraction data. The retrieved and derived aerosol parameters are:\n\n- Aerosol Optical Depth (AOD) at 440, 550, 670, 985, 1600 and 2250 nm\n- Error estimates (i.e. standard deviation) in AOD at 440, 550, 670, 985, 1600 and 2250 nm\n- Single Scattering Albedo (SSA) at 440, 550, 670, 985, 1600 and 2250 nm\n- Fine-mode AOD at 550nm\n- Aerosol Angstrom parameter between 550 and 865nm\n- Dust AOD at 550nm\n- Aerosol absorption optical depth at 550nm\n\nAtmospherically corrected nadir surface directional reflectances at 440, 550, 670, 985, 1600 and 2250 nm at super-pixel (4.5 km x 4.5 km) resolution are also provided. More information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/level-2-aod) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-synergy/products-algorithms/level-2-aod-algorithms-and-products).\n\nThis Collection contains Level-2 data in NetCDF files from April 2020 to present.\n", "instrument": "OLCI,SLSTR", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "aerosol,copernicus,esa,global,olci,satellite,sentinel,sentinel-3,sentinel-3-synergy-aod-l2-netcdf,sentinel-3a,sentinel-3b,slstr", "license": "proprietary", "title": "Sentinel-3 Global Aerosol", "missionStartDate": "2020-04-16T19:36:28.012367Z"}, "sentinel-3-synergy-v10-l2-netcdf": {"abstract": "This Collection provides the Sentinel-3 [Synergy Level-2 10-Day Surface Reflectance and NDVI](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-synergy/product-types/level-2-vg1-v10) products, which are SPOT VEGETATION Continuity Products similar to those obtained from the [VEGETATION instrument](https://docs.terrascope.be/#/Satellites/SPOT-VGT/MissionInstruments) onboard the SPOT-4 and SPOT-5 satellites. The primary variables are a maximum Normalized Difference Vegetation Index (NDVI) composite, which is derived from ground reflectance during a 10-day window, and four surface reflectance bands:\n\n- B0 (Blue, 450nm)\n- B2 (Red, 645nm)\n- B3 (NIR, 835nm)\n- MIR (SWIR, 1665nm)\n\nThe four reflectance bands have center wavelengths matching those on the original SPOT VEGETATION instrument. The NDVI variable, which is an indicator of the amount of vegetation, is derived from the B3 and B2 bands.\n\n## Data files\n\nThe four reflectance bands and NDVI values are each contained in dedicated NetCDF files. Additional metadata are delivered in annotation NetCDF files, each containing a single variable, including the geometric viewing and illumination conditions, the total water vapour and ozone columns, and the aerosol optical depth.\n\nEach 10-day product is delivered as a set of 10 rectangular scenes:\n\n- AFRICA\n- NORTH_AMERICA\n- SOUTH_AMERICA\n- CENTRAL_AMERICA\n- NORTH_ASIA\n- WEST_ASIA\n- SOUTH_EAST_ASIA\n- ASIAN_ISLANDS\n- AUSTRALASIA\n- EUROPE\n\nMore information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-synergy/product-types/level-2-vg1-v10) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-synergy/vgt-s/v10-product).\n\nThis Collection contains Level-2 data in NetCDF files from September 2018 to present.\n", "instrument": "OLCI,SLSTR", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "copernicus,esa,ndvi,olci,reflectance,satellite,sentinel,sentinel-3,sentinel-3-synergy-v10-l2-netcdf,sentinel-3a,sentinel-3b,slstr", "license": "proprietary", "title": "Sentinel-3 10-Day Surface Reflectance and NDVI (SPOT VEGETATION)", "missionStartDate": "2018-09-27T11:17:21Z"}, "sentinel-3-olci-lfr-l2-netcdf": {"abstract": "This collection provides Sentinel-3 Full Resolution [OLCI Level-2 Land][olci-l2] products containing data on global vegetation, chlorophyll, and water vapor.\n\n## Data files\n\nThis dataset includes data on three primary variables:\n\n* OLCI global vegetation index file\n* terrestrial Chlorophyll index file\n* integrated water vapor over water file.\n\nEach variable is contained within a separate NetCDF file, and is cataloged as an asset in each Item.\n\nSeveral associated variables are also provided in the annotations data files:\n\n* rectified reflectance for red and NIR channels (RC681 and RC865)\n* classification, quality and science flags (LQSF)\n* common data such as the ortho-geolocation of land pixels, solar and satellite angles, atmospheric and meteorological data, time stamp or instrument information. These variables are inherited from Level-1B products.\n\nThis full resolution product offers a spatial sampling of approximately 300 m.\n\n## Processing overview\n\nThe values in the data files have been converted from Top of Atmosphere radiance to reflectance, and include various corrections for gaseous absorption and pixel classification. More information about the product and data processing can be found in the [User Guide](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-olci/product-types/level-2-land) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-olci/level-2/processing).\n\nThis Collection contains Level-2 data in NetCDF files from April 2016 to present.\n\n[olci-l2]: https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-olci/level-2/land-products\n", "instrument": "OLCI", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "biomass,copernicus,esa,land,olci,sentinel,sentinel-3,sentinel-3-olci-lfr-l2-netcdf,sentinel-3a,sentinel-3b", "license": "proprietary", "title": "Sentinel-3 Land (Full Resolution)", "missionStartDate": "2016-04-25T11:33:47.368562Z"}, "sentinel-3-sral-lan-l2-netcdf": {"abstract": "This Collection provides Sentinel-3 [SRAL Level-2 Land Altimetry](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-altimetry/level-2-algorithms-products) products, which contain data on land radar altimetry measurements. Each product contains three NetCDF files:\n\n- A reduced data file containing a subset of the 1 Hz Ku-band parameters.\n- A standard data file containing the standard 1 Hz and 20 Hz Ku- and C-band parameters.\n- An enhanced data file containing the standard 1 Hz and 20 Hz Ku- and C-band parameters along with the waveforms and parameters necessary to reprocess the data.\n\nMore information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-altimetry/overview) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-altimetry).\n\nThis Collection contains Level-2 data in NetCDF files from March 2016 to present.\n", "instrument": "SRAL", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "altimetry,copernicus,esa,radar,satellite,sentinel,sentinel-3,sentinel-3-sral-lan-l2-netcdf,sentinel-3a,sentinel-3b,sral", "license": "proprietary", "title": "Sentinel-3 Land Radar Altimetry", "missionStartDate": "2016-03-01T14:07:51.632846Z"}, "sentinel-3-slstr-lst-l2-netcdf": {"abstract": "This Collection provides Sentinel-3 [SLSTR Level-2 Land Surface Temperature](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-slstr/product-types/level-2-lst) products containing data on land surface temperature measurements on a 1km grid. Radiance is measured in two channels to determine the temperature of the Earth's surface skin in the instrument field of view, where the term \"skin\" refers to the top surface of bare soil or the effective emitting temperature of vegetation canopies as viewed from above.\n\n## Data files\n\nThe dataset includes data on the primary measurement variable, land surface temperature, in a single NetCDF file, `LST_in.nc`. A second file, `LST_ancillary.nc`, contains several ancillary variables:\n\n- Normalized Difference Vegetation Index\n- Surface biome classification\n- Fractional vegetation cover\n- Total water vapor column\n\nIn addition to the primary and ancillary data files, a standard set of annotation data files provide meteorological information, geolocation and time coordinates, geometry information, and quality flags. More information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-slstr/product-types/level-2-lst) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-slstr/level-2/lst-processing).\n\nThis Collection contains Level-2 data in NetCDF files from April 2016 to present.\n\n## STAC Item geometries\n\nThe Collection contains small \"chips\" and long \"stripes\" of data collected along the satellite direction of travel. Approximately five percent of the STAC Items describing long stripes of data contain geometries that encompass a larger area than an exact concave hull of the data extents. This may require additional filtering when searching the Collection for Items that spatially intersect an area of interest.\n", "instrument": "SLSTR", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "copernicus,esa,land,satellite,sentinel,sentinel-3,sentinel-3-slstr-lst-l2-netcdf,sentinel-3a,sentinel-3b,slstr,temperature", "license": "proprietary", "title": "Sentinel-3 Land Surface Temperature", "missionStartDate": "2016-04-19T01:35:17.188500Z"}, "sentinel-3-slstr-wst-l2-netcdf": {"abstract": "This Collection provides Sentinel-3 [SLSTR Level-2 Water Surface Temperature](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-slstr/product-types/level-2-wst) products containing data on sea surface temperature measurements on a 1km grid. Each product consists of a single NetCDF file containing all data variables:\n\n- Sea Surface Temperature (SST) value\n- SST total uncertainty\n- Latitude and longitude coordinates\n- SST time deviation\n- Single Sensor Error Statistic (SSES) bias and standard deviation estimate\n- Contextual parameters such as wind speed at 10 m and fractional sea-ice contamination\n- Quality flag\n- Satellite zenith angle\n- Top Of Atmosphere (TOA) Brightness Temperature (BT)\n- TOA noise equivalent BT\n\nMore information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-slstr/product-types/level-2-wst) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-slstr/level-2/sst-processing).\n\nThis Collection contains Level-2 data in NetCDF files from October 2017 to present.\n", "instrument": "SLSTR", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "copernicus,esa,ocean,satellite,sentinel,sentinel-3,sentinel-3-slstr-wst-l2-netcdf,sentinel-3a,sentinel-3b,slstr,temperature", "license": "proprietary", "title": "Sentinel-3 Sea Surface Temperature", "missionStartDate": "2017-10-31T23:59:57.451604Z"}, "sentinel-3-sral-wat-l2-netcdf": {"abstract": "This Collection provides Sentinel-3 [SRAL Level-2 Ocean Altimetry](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-altimetry/level-2-algorithms-products) products, which contain data on ocean radar altimetry measurements. Each product contains three NetCDF files:\n\n- A reduced data file containing a subset of the 1 Hz Ku-band parameters.\n- A standard data file containing the standard 1 Hz and 20 Hz Ku- and C-band parameters.\n- An enhanced data file containing the standard 1 Hz and 20 Hz Ku- and C-band parameters along with the waveforms and parameters necessary to reprocess the data.\n\nMore information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-altimetry/overview) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-altimetry).\n\nThis Collection contains Level-2 data in NetCDF files from January 2017 to present.\n", "instrument": "SRAL", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "altimetry,copernicus,esa,ocean,radar,satellite,sentinel,sentinel-3,sentinel-3-sral-wat-l2-netcdf,sentinel-3a,sentinel-3b,sral", "license": "proprietary", "title": "Sentinel-3 Ocean Radar Altimetry", "missionStartDate": "2017-01-28T00:59:14.149496Z"}, "ms-buildings": {"abstract": "Bing Maps is releasing open building footprints around the world. We have detected over 999 million buildings from Bing Maps imagery between 2014 and 2021 including Maxar and Airbus imagery. The data is freely available for download and use under ODbL. This dataset complements our other releases.\n\nFor more information, see the [GlobalMLBuildingFootprints](https://github.com/microsoft/GlobalMLBuildingFootprints/) repository on GitHub.\n\n## Building footprint creation\n\nThe building extraction is done in two stages:\n\n1. Semantic Segmentation \u2013 Recognizing building pixels on an aerial image using deep neural networks (DNNs)\n2. Polygonization \u2013 Converting building pixel detections into polygons\n\n**Stage 1: Semantic Segmentation**\n\n![Semantic segmentation](https://raw.githubusercontent.com/microsoft/GlobalMLBuildingFootprints/main/images/segmentation.jpg)\n\n**Stage 2: Polygonization**\n\n![Polygonization](https://github.com/microsoft/GlobalMLBuildingFootprints/raw/main/images/polygonization.jpg)\n\n## Data assets\n\nThe building footprints are provided as a set of [geoparquet](https://github.com/opengeospatial/geoparquet) datasets in [Delta][delta] table format.\nThe data are partitioned by\n\n1. Region\n2. quadkey at [Bing Map Tiles][tiles] level 9\n\nEach `(Region, quadkey)` pair will have one or more geoparquet files, depending on the density of the of the buildings in that area.\n\nNote that older items in this dataset are *not* spatially partitioned. We recommend using data with a processing date\nof 2023-04-25 or newer. This processing date is part of the URL for each parquet file and is captured in the STAC metadata\nfor each item (see below).\n\n## Delta Format\n\nThe collection-level asset under the `delta` key gives you the fsspec-style URL\nto the Delta table. This can be used to efficiently query for matching partitions\nby `Region` and `quadkey`. See the notebook for an example using Python.\n\n## STAC metadata\n\nThis STAC collection has one STAC item per region. The `msbuildings:region`\nproperty can be used to filter items to a specific region, and the `msbuildings:quadkey`\nproperty can be used to filter items to a specific quadkey (though you can also search\nby the `geometry`).\n\nNote that older STAC items are not spatially partitioned. We recommend filtering on\nitems with an `msbuildings:processing-date` of `2023-04-25` or newer. See the collection\nsummary for `msbuildings:processing-date` for a list of valid values.\n\n[delta]: https://delta.io/\n[tiles]: https://learn.microsoft.com/en-us/bingmaps/articles/bing-maps-tile-system\n", "instrument": null, "platform": null, "platformSerialIdentifier": null, "processingLevel": null, "keywords": "bing-maps,buildings,delta,footprint,geoparquet,microsoft,ms-buildings", "license": "ODbL-1.0", "title": "Microsoft Building Footprints", "missionStartDate": "2014-01-01T00:00:00Z"}, "sentinel-3-slstr-frp-l2-netcdf": {"abstract": "This Collection provides Sentinel-3 [SLSTR Level-2 Fire Radiative Power](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-slstr/product-types/level-2-frp) (FRP) products containing data on fires detected over land and ocean.\n\n## Data files\n\nThe primary measurement data is contained in the `FRP_in.nc` file and provides FRP and uncertainties, projected onto a 1km grid, for fires detected in the thermal infrared (TIR) spectrum over land. Since February 2022, FRP and uncertainties are also provided for fires detected in the short wave infrared (SWIR) spectrum over both land and ocean, with the delivered data projected onto a 500m grid. The latter SWIR-detected fire data is only available for night-time measurements and is contained in the `FRP_an.nc` or `FRP_bn.nc` files.\n\nIn addition to the measurement data files, a standard set of annotation data files provide meteorological information, geolocation and time coordinates, geometry information, and quality flags.\n\n## Processing\n\nThe TIR fire detection is based on measurements from the S7 and F1 bands of the [SLSTR instrument](https://sentinels.copernicus.eu/web/sentinel/technical-guides/sentinel-3-slstr/instrument); SWIR fire detection is based on the S5 and S6 bands. More information about the product and data processing can be found in the [User Guide](https://sentinel.esa.int/web/sentinel/user-guides/sentinel-3-slstr/product-types/level-2-frp) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-slstr/level-2/frp-processing).\n\nThis Collection contains Level-2 data in NetCDF files from August 2020 to present.\n", "instrument": "SLSTR", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "copernicus,esa,fire,satellite,sentinel,sentinel-3,sentinel-3-slstr-frp-l2-netcdf,sentinel-3a,sentinel-3b,slstr,temperature", "license": "proprietary", "title": "Sentinel-3 Fire Radiative Power", "missionStartDate": "2020-08-08T23:11:15.617203Z"}, "sentinel-3-synergy-syn-l2-netcdf": {"abstract": "This Collection provides the Sentinel-3 [Synergy Level-2 Land Surface Reflectance and Aerosol](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-synergy/product-types/level-2-syn) product, which contains data on Surface Directional Reflectance, Aerosol Optical Thickness, and an Angstrom coefficient estimate over land.\n\n## Data Files\n\nIndividual NetCDF files for the following variables:\n\n- Surface Directional Reflectance (SDR) with their associated error estimates for the sun-reflective [SLSTR](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-slstr) channels (S1 to S6 for both nadir and oblique views, except S4) and for all [OLCI](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-olci) channels, except for the oxygen absorption bands Oa13, Oa14, Oa15, and the water vapor bands Oa19 and Oa20.\n- Aerosol optical thickness at 550nm with error estimates.\n- Angstrom coefficient at 550nm.\n\nMore information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-synergy/product-types/level-2-syn) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-synergy/level-2/syn-level-2-product).\n\nThis Collection contains Level-2 data in NetCDF files from September 2018 to present.\n", "instrument": "OLCI,SLSTR", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "aerosol,copernicus,esa,land,olci,reflectance,satellite,sentinel,sentinel-3,sentinel-3-synergy-syn-l2-netcdf,sentinel-3a,sentinel-3b,slstr", "license": "proprietary", "title": "Sentinel-3 Land Surface Reflectance and Aerosol", "missionStartDate": "2018-09-22T16:51:00.001276Z"}, "sentinel-3-synergy-vgp-l2-netcdf": {"abstract": "This Collection provides the Sentinel-3 [Synergy Level-2 Top of Atmosphere Reflectance](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-synergy/product-types/level-2-vgp) product, which is a SPOT VEGETATION Continuity Product containing measurement data similar to that obtained by the [VEGETATION instrument](https://docs.terrascope.be/#/Satellites/SPOT-VGT/MissionInstruments) onboad the SPOT-3 and SPOT-4 satellites. The primary variables are four top of atmosphere reflectance bands:\n\n- B0 (Blue, 450nm)\n- B2 (Red, 645nm)\n- B3 (NIR, 835nm)\n- MIR (SWIR, 1665nm)\n\nThe four reflectance bands have center wavelengths matching those on the original SPOT VEGETATION instrument and have been adapted for scientific applications requiring highly accurate physical measurements through correction for systematic errors and re-sampling to predefined geographic projections. The pixel brightness count is the ground area's apparent reflectance as seen at the top of atmosphere.\n\n## Data files\n\nNetCDF files are provided for the four reflectance bands. Additional metadata are delivered in annotation NetCDF files, each containing a single variable, including the geometric viewing and illumination conditions, the total water vapour and ozone columns, and the aerosol optical depth.\n\nMore information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-synergy/product-types/level-2-vgp) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-synergy/level-2/vgt-p-product).\n\nThis Collection contains Level-2 data in NetCDF files from October 2018 to present.\n", "instrument": "OLCI,SLSTR", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "copernicus,esa,olci,reflectance,satellite,sentinel,sentinel-3,sentinel-3-synergy-vgp-l2-netcdf,sentinel-3a,sentinel-3b,slstr", "license": "proprietary", "title": "Sentinel-3 Top of Atmosphere Reflectance (SPOT VEGETATION)", "missionStartDate": "2018-10-08T08:09:40.491227Z"}, "sentinel-3-synergy-vg1-l2-netcdf": {"abstract": "This Collection provides the Sentinel-3 [Synergy Level-2 1-Day Surface Reflectance and NDVI](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-synergy/product-types/level-2-vg1-v10) products, which are SPOT VEGETATION Continuity Products similar to those obtained from the [VEGETATION instrument](https://docs.terrascope.be/#/Satellites/SPOT-VGT/MissionInstruments) onboard the SPOT-4 and SPOT-5 satellites. The primary variables are a maximum Normalized Difference Vegetation Index (NDVI) composite, which is derived from daily ground reflecrtance, and four surface reflectance bands:\n\n- B0 (Blue, 450nm)\n- B2 (Red, 645nm)\n- B3 (NIR, 835nm)\n- MIR (SWIR, 1665nm)\n\nThe four reflectance bands have center wavelengths matching those on the original SPOT VEGETATION instrument. The NDVI variable, which is an indicator of the amount of vegetation, is derived from the B3 and B2 bands.\n\n## Data files\n\nThe four reflectance bands and NDVI values are each contained in dedicated NetCDF files. Additional metadata are delivered in annotation NetCDF files, each containing a single variable, including the geometric viewing and illumination conditions, the total water vapour and ozone columns, and the aerosol optical depth.\n\nEach 1-day product is delivered as a set of 10 rectangular scenes:\n\n- AFRICA\n- NORTH_AMERICA\n- SOUTH_AMERICA\n- CENTRAL_AMERICA\n- NORTH_ASIA\n- WEST_ASIA\n- SOUTH_EAST_ASIA\n- ASIAN_ISLANDS\n- AUSTRALASIA\n- EUROPE\n\nMore information about the product and data processing can be found in the [User Guide](https://sentinels.copernicus.eu/web/sentinel/user-guides/sentinel-3-synergy/product-types/level-2-vg1-v10) and [Technical Guide](https://sentinel.esa.int/web/sentinel/technical-guides/sentinel-3-synergy/vgt-s/vg1-product-surface-reflectance).\n\nThis Collection contains Level-2 data in NetCDF files from October 2018 to present.\n", "instrument": "OLCI,SLSTR", "platform": "Sentinel-3", "platformSerialIdentifier": "Sentinel-3A,Sentinel-3B", "processingLevel": null, "keywords": "copernicus,esa,ndvi,olci,reflectance,satellite,sentinel,sentinel-3,sentinel-3-synergy-vg1-l2-netcdf,sentinel-3a,sentinel-3b,slstr", "license": "proprietary", "title": "Sentinel-3 1-Day Surface Reflectance and NDVI (SPOT VEGETATION)", "missionStartDate": "2018-10-04T23:17:21Z"}, "esa-worldcover": {"abstract": "The European Space Agency (ESA) [WorldCover](https://esa-worldcover.org/en) product provides global land cover maps for the years 2020 and 2021 at 10 meter resolution based on the combination of [Sentinel-1](https://sentinel.esa.int/web/sentinel/missions/sentinel-1) radar data and [Sentinel-2](https://sentinel.esa.int/web/sentinel/missions/sentinel-2) imagery. The discrete classification maps provide 11 classes defined using the Land Cover Classification System (LCCS) developed by the United Nations (UN) Food and Agriculture Organization (FAO). The map images are stored in [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.\n\nThe WorldCover product is developed by a consortium of European service providers and research organizations. [VITO](https://remotesensing.vito.be/) (Belgium) is the prime contractor of the WorldCover consortium together with [Brockmann Consult](https://www.brockmann-consult.de/) (Germany), [CS SI](https://www.c-s.fr/) (France), [Gamma Remote Sensing AG](https://www.gamma-rs.ch/) (Switzerland), [International Institute for Applied Systems Analysis](https://www.iiasa.ac.at/) (Austria), and [Wageningen University](https://www.wur.nl/nl/Wageningen-University.htm) (The Netherlands).\n\nTwo versions of the WorldCover product are available:\n\n- WorldCover 2020 produced using v100 of the algorithm\n - [WorldCover 2020 v100 User Manual](https://esa-worldcover.s3.eu-central-1.amazonaws.com/v100/2020/docs/WorldCover_PUM_V1.0.pdf)\n - [WorldCover 2020 v100 Validation Report]()\n\n- WorldCover 2021 produced using v200 of the algorithm\n - [WorldCover 2021 v200 User Manual]()\n - [WorldCover 2021 v200 Validaton Report]()\n\nSince the WorldCover maps for 2020 and 2021 were generated with different algorithm versions (v100 and v200, respectively), changes between the maps include both changes in real land cover and changes due to the used algorithms.\n", "instrument": "c-sar,msi", "platform": null, "platformSerialIdentifier": "sentinel-1a,sentinel-1b,sentinel-2a,sentinel-2b", "processingLevel": null, "keywords": "c-sar,esa,esa-worldcover,global,land-cover,msi,sentinel,sentinel-1a,sentinel-1b,sentinel-2a,sentinel-2b", "license": "CC-BY-4.0", "title": "ESA WorldCover", "missionStartDate": "2020-01-01T00:00:00Z"}}}, "usgs_satapi_aws": {"providers_config": {"landsat-c2l2-sr": {"productType": "landsat-c2l2-sr"}, "landsat-c2l2-st": {"productType": "landsat-c2l2-st"}, "landsat-c2ard-st": {"productType": "landsat-c2ard-st"}, "landsat-c2l2alb-bt": {"productType": "landsat-c2l2alb-bt"}, "landsat-c2l3-fsca": {"productType": "landsat-c2l3-fsca"}, "landsat-c2ard-bt": {"productType": "landsat-c2ard-bt"}, "landsat-c2l1": {"productType": "landsat-c2l1"}, "landsat-c2l3-ba": {"productType": "landsat-c2l3-ba"}, "landsat-c2l2alb-st": {"productType": "landsat-c2l2alb-st"}, "landsat-c2ard-sr": {"productType": "landsat-c2ard-sr"}, "landsat-c2l2alb-sr": {"productType": "landsat-c2l2alb-sr"}, "landsat-c2l2alb-ta": {"productType": "landsat-c2l2alb-ta"}, "landsat-c2l3-dswe": {"productType": "landsat-c2l3-dswe"}, "landsat-c2ard-ta": {"productType": "landsat-c2ard-ta"}}, "product_types_config": {"landsat-c2l2-sr": {"abstract": "The Landsat Surface Reflectance (SR) product measures the fraction of incoming solar radiation that is reflected from Earth's surface to the Landsat sensor.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l2-sr,surface-reflectance", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-2 UTM Surface Reflectance (SR) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2l2-st": {"abstract": "The Landsat Surface Temperature (ST) product represents the temperature of the Earth's surface in Kelvin (K).", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l2-st,surface-temperature", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-2 UTM Surface Temperature (ST) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2ard-st": {"abstract": "The Landsat Surface Temperature (ST) product represents the temperature of the Earth's surface in Kelvin (K).", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "analysis-ready-data,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2ard-st,surface-temperature", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Analysis Ready Data (ARD) Level-2 UTM Surface Temperature (ST) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2l2alb-bt": {"abstract": "The Landsat Top of Atmosphere Brightness Temperature (BT) product is a top of atmosphere product with radiance calculated 'at-sensor', not atmospherically corrected, and expressed in units of Kelvin.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l2alb-bt,top-of-atmosphere-brightness-temperature", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-2 Albers Top of Atmosphere Brightness Temperature (BT) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2l3-fsca": {"abstract": "The Landsat Fractional Snow Covered Area (fSCA) product contains an acquisition-based per-pixel snow cover fraction, an acquisition-based revised cloud mask for quality assessment, and a product metadata file.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "analysis-ready-data,fractional-snow-covered-area,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l3-fsca", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-3 Fractional Snow Covered Area (fSCA) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2ard-bt": {"abstract": "The Landsat Top of Atmosphere Brightness Temperature (BT) product is a top of atmosphere product with radiance calculated 'at-sensor', not atmospherically corrected, and expressed in units of Kelvin.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "analysis-ready-data,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2ard-bt,top-of-atmosphere-brightness-temperature", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Analysis Ready Data (ARD) Level-2 UTM Top of Atmosphere Brightness Temperature (BT) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2l1": {"abstract": "The Landsat Level-1 product is a top of atmosphere product distributed as scaled and calibrated digital numbers.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_1,LANDSAT_2,LANDSAT_3,LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "landsat,landsat-1,landsat-2,landsat-3,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l1", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-1 Product", "missionStartDate": "1972-07-25T00:00:00.000Z"}, "landsat-c2l3-ba": {"abstract": "The Landsat Burned Area (BA) contains two acquisition-based raster data products that represent burn classification and burn probability.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "analysis-ready-data,burned-area,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l3-ba", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-3 Burned Area (BA) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2l2alb-st": {"abstract": "The Landsat Surface Temperature (ST) product represents the temperature of the Earth's surface in Kelvin (K).", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l2alb-st,surface-temperature", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-2 Albers Surface Temperature (ST) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2ard-sr": {"abstract": "The Landsat Surface Reflectance (SR) product measures the fraction of incoming solar radiation that is reflected from Earth's surface to the Landsat sensor.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "analysis-ready-data,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2ard-sr,surface-reflectance", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Analysis Ready Data (ARD) Level-2 UTM Surface Reflectance (SR) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2l2alb-sr": {"abstract": "The Landsat Surface Reflectance (SR) product measures the fraction of incoming solar radiation that is reflected from Earth's surface to the Landsat sensor.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l2alb-sr,surface-reflectance", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-2 Albers Surface Reflectance (SR) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2l2alb-ta": {"abstract": "The Landsat Top of Atmosphere (TA) Reflectance product applies per pixel angle band corrections to the Level-1 radiance product.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l2alb-ta,top-of-atmosphere-reflectance", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-2 Albers Top of Atmosphere (TA) Reflectance Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2l3-dswe": {"abstract": "The Landsat Dynamic Surface Water Extent (DSWE) product contains six acquisition-based raster data products pertaining to the existence and condition of surface water.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "analysis-ready-data,dynamic-surface-water-extent-,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2l3-dswe", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Level-3 Dynamic Surface Water Extent (DSWE) Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}, "landsat-c2ard-ta": {"abstract": "The Landsat Top of Atmosphere (TA) Reflectance product applies per pixel angle band corrections to the Level-1 radiance product.", "instrument": null, "platform": null, "platformSerialIdentifier": "LANDSAT_4,LANDSAT_5,LANDSAT_7,LANDSAT_8,LANDSAT_9", "processingLevel": null, "keywords": "analysis-ready-data,landsat,landsat-4,landsat-5,landsat-7,landsat-8,landsat-9,landsat-c2ard-ta,top-of-atmosphere-reflectance", "license": "https://d9-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/Landsat_Data_Policy.pdf", "title": "Landsat Collection 2 Analysis Ready Data (ARD) Level-2 UTM Top of Atmosphere (TA) Reflectance Product", "missionStartDate": "1982-08-22T00:00:00.000Z"}}}} diff --git a/eodag/resources/product_types.yml b/eodag/resources/product_types.yml index b3df177e7..d7d7fcd94 100644 --- a/eodag/resources/product_types.yml +++ b/eodag/resources/product_types.yml @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# -+- coding: utf-8 -+- # Copyright 2018, CS GROUP - France, https://www.csgroup.eu/ # # This file is part of EODAG project @@ -16,7 +16,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -# CBERS 4 --------------------------------------------------------------------- +# MARK: CBERS 4 ------------------------------------------------------------------------ CBERS4_MUX_L2: abstract: | China-Brazil Earth Resources Satellite, CBERS-4 MUX camera Level-2 product. System corrected images, expect some @@ -129,7 +129,7 @@ CBERS4_PAN10M_L4: missionStartDate: "2014-12-07T00:00:00Z" title: CBERS-4 PAN10M Level-4 -# Landasat -------------------------------------------------------------------- +# MARK: Landasat ----------------------------------------------------------------------- # https://www.usgs.gov/faqs/what-naming-convention-landsat-collections-level-1-scenes L57_REFLECTANCE: abstract: | @@ -378,7 +378,7 @@ LANDSAT_ETM_C2L2: title: Enhanced Thematic Mapper Plus (ETM+) 15- to 30-meter multispectral Collection-2 Level-2 data from Landsat 7 missionStartDate: "1999-04-15T00:00:00Z" -# MODIS ----------------------------------------------------------------------- +# MARK: MODIS -------------------------------------------------------------------------- MODIS_MCD43A4: abstract: | The MODerate-resolution Imaging Spectroradiometer (MODIS) Reflectance product MCD43A4 provides 500 meter @@ -397,7 +397,7 @@ MODIS_MCD43A4: missionStartDate: "2000-03-05T00:00:00Z" title: MODIS MCD43A4 -# OSO ------------------------------------------------------------------------- +# MARK: OSO ---------------------------------------------------------------------------- OSO: abstract: | An overview of OSO Land Cover data is given on https://www.theia-land.fr/en/ceslist/land-cover-sec/ @@ -413,7 +413,7 @@ OSO: missionStartDate: "2016-01-01T00:00:00Z" title: OSO Land Cover -# NAIP ----------------------------------------------------------------------- +# MARK: NAIP --------------------------------------------------------------------------- NAIP: abstract: | The National Agriculture Imagery Program (NAIP) acquires aerial imagery during the agricultural growing seasons in @@ -433,7 +433,7 @@ NAIP: missionStartDate: "2003-01-01T00:00:00Z" title: National Agriculture Imagery Program -# Pleiades - ------------------------------------------------------------------ +# MARK: Pleiades - --------------------------------------------------------------------- PLD_PAN: abstract: Pleiades Panchromatic (Pan) instrument: PHR @@ -482,7 +482,7 @@ PLD_PANSHARPENED: missionStartDate: "2011-12-17T00:00:00Z" title: Pleiades Pansharpened -# Sentinel 1 ------------------------------------------------------------------ +# MARK: Sentinel 1 --------------------------------------------------------------------- S1_SAR_OCN: abstract: | Level-2 OCN products include components for Ocean Swell spectra (OSW) providing continuity with ERS and ASAR WV @@ -589,7 +589,7 @@ S1_SAR_RAW: title: SENTINEL1 SAR Level-0 missionStartDate: "2014-04-03T00:00:00Z" -# Sentinel 2 ------------------------------------------------------------------ +# MARK: Sentinel 2 --------------------------------------------------------------------- S2_MSI_L1C: abstract: | The Level-1C product is composed of 100x100 km2 tiles (ortho-images in UTM/WGS84 projection). It results from @@ -756,8 +756,8 @@ S2_MSI_L3A_WASP: missionStartDate: "2015-06-23T00:00:00Z" title: SENTINEL2 Level-3A -# Sentinel 3 ------------------------------------------------------------------ -# S3 OLCI L1 +# MARK: Sentinel 3 --------------------------------------------------------------------- +# MARK: S3 OLCI L1 S3_EFR: abstract: | OLCI (Ocean and Land Colour Instrument) Full resolution: 300m at nadir. Level 1 products are calibrated @@ -781,6 +781,30 @@ S3_EFR: title: SENTINEL3 EFR missionStartDate: "2016-02-16T00:00:00Z" +S3_EFR_BC002: + abstract: | + OLCI (Ocean and Land Colour Instrument) Full resolution: 300m at nadir. Level 1 products are calibrated + Top Of Atmosphere radiance values at OLCI 21 spectral bands. Radiances are computed from the instrument digital + counts by applying geo-referencing, radiometric processing (non-linearity correction, smear correction, dark offset + correction, absolute gain calibration adjusted for gain evolution with time), and stray-light correction for + straylight effects in OLCI camera's spectrometer and ground imager. Additionally, spatial resampling of OLCI pixels + to the 'ideal' instrument grid, initial pixel classification, and annotation at tie points with auxiliary + meteorological data and acquisition geometry are provided. The radiance products are accompanied by error estimate + products, however the error values are currently not available. - All Sentinel-3 NRT products are available at + pick-up point in less than 3h. - All Sentinel-3 Non Time Critical (NTC) products are available at pick-up point in + less than 30 days. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the + EU Copernicus programme. + instrument: OLCI + platform: SENTINEL3 + platformSerialIdentifier: S3A,S3B + processingLevel: L1 + keywords: OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,EFR,BC002 + sensorType: OPTICAL + license: proprietary + title: OLCI Level 1B Full Resolution (version BC002) - Sentinel-3 - Reprocessed + missionStartDate: "2016-04-25T00:00:00Z" + missionEndDate: "2019-10-29T00:00:00Z" + S3_ERR: abstract: | OLCI (Ocean and Land Colour Instrument) Reduced resolution: 1200m at nadir. All Sentinel-3 NRT products are @@ -804,6 +828,29 @@ S3_ERR: title: SENTINEL3 ERR missionStartDate: "2016-02-16T00:00:00Z" +S3_ERR_BC002: + abstract: | + OLCI (Ocean and Land Colour Instrument) Reduced resolution: 1200m at nadir. Level 1 products are calibrated + Top Of Atmosphere radiance values at OLCI 21 spectral bands. Radiances are computed from the instrument digital + counts by applying geo-referencing, radiometric processing (non-linearity correction, smear correction, dark + offset correction, absolute gain calibration adjusted for gain evolution with time), and stray-light correction + for straylight effects in OLCI camera's spectrometer and ground imager. Additionally, spatial resampling of + OLCI pixels to the 'ideal' instrument grid, initial pixel classification, and annotation at tie points with + auxiliary meteorological data and acquisition geometry are provided. The radiance products are accompanied + by error estimate products, however the error values are currently not available. Sentinel-3 is part of a + series of Sentinel satellites, under the umbrella of the EU Copernicus programme. This collection contains + reprocessed data from baseline collection 002. Operational data can be found in the corresponding collection. + instrument: OLCI + platform: SENTINEL3 + platformSerialIdentifier: S3A,S3B + processingLevel: L1 + keywords: OLCI,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,ERR,BC002 + sensorType: OPTICAL + license: proprietary + title: OLCI Level 1B Reduced Resolution (version BC002) - Sentinel-3 - Reprocessed + missionStartDate: "2016-04-25T00:00:00Z" + missionEndDate: "2019-10-29T00:00:00Z" + S3_RAC: abstract: | Sentinel 3 OLCI products output during Radiometric Calibration mode @@ -817,7 +864,7 @@ S3_RAC: title: SENTINEL3 RAC missionStartDate: "2016-02-16T00:00:00Z" -# S3 OLCI L2 +# MARK: S3 OLCI L2 S3_OLCI_L2LRR: abstract: | The OLCI Level-2 Land Reduced Resolution (OL_2_LRR) products contain land and atmospheric geophysical products @@ -926,8 +973,8 @@ S3_OLCI_L2WFR_BC003: S3_OLCI_L4BALTIC: abstract: | Baltic Sea Surface Ocean Colour Plankton from Sentinel-3 OLCI L4 monthly observations - For the Baltic Sea Ocean Satellite Observations, the Italian National Research Council (CNR – Rome, Italy), is - providing Bio-Geo_Chemical (BGC) regional datasets: * ''plankton'' with the phytoplankton chlorophyll + For the Baltic Sea Ocean Satellite Observations, the Italian National Research Council (CNR - Rome, Italy), is + providing Bio-Geo_Chemical (BGC) regional datasets: + ''plankton'' with the phytoplankton chlorophyll concentration (CHL) evaluated via region-specific neural network (Brando et al. 2021) Upstreams: OLCI-S3A & S3B Temporal resolution: monthly Spatial resolution: 300 meters To find this product in the catalogue, use the search keyword ""OCEANCOLOUR_BAL_BGC_L4_NRT"". DOI (product) : https://doi.org/10.48670/moi-00295 @@ -941,7 +988,7 @@ S3_OLCI_L4BALTIC: title: SENTINEL3 OLCI Baltic Sea Surface Ocean Colour Plankton missionStartDate: "2023-04-10T00:00:00Z" -# S3 SLSTR +# MARK: S3 SLSTR S3_SLSTR_L1RBT: abstract: | SLSTR Level-1 observation mode products consisting of full resolution, @@ -960,6 +1007,27 @@ S3_SLSTR_L1RBT: title: SENTINEL3 SLSTR Level-1 missionStartDate: "2016-02-16T00:00:00Z" +S3_SLSTR_L1RBT_BC003: + abstract: | + The SLSTR level 1 products contain: the radiances of the 6 visible (VIS), Near Infra-Red (NIR) and + Short Wave Infra-Red (SWIR) bands (on the A and B stripe grids); the Brightness Temperature (BT) for + the 3 Thermal Infra-Red (TIR) bands; the BT for the 2 Fire (FIR) bands. Resolution: 1km at nadir (TIR), + 500m (VIS). All are provided for both the oblique and nadir view. These measurements are accompanied + with grid and time information, quality flags, error estimates and meteorological auxiliary data. + Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU Copernicus programme. + This collection contains reprocessed data from baseline collection 003. Operational data can be found + in the corresponding collection. + instrument: SLSTR + platform: SENTINEL3 + platformSerialIdentifier: S3A,S3B + processingLevel: L1 + keywords: SLSTR,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1RBT,RBT,VIS,NIR,SWIR,BT,TIR,FIR,Reprocessed,BC003 + sensorType: ATMOSPHERIC + license: proprietary + title: SLSTR Level 1B Radiances and Brightness Temperatures (version BC003) - Sentinel-3 - Reprocessed + missionStartDate: "2016-04-19T00:00:00Z" + missionEndDate: "2018-04-04T00:00:00Z" + S3_SLSTR_L1RBT_BC004: abstract: | SLSTR Level 1B Radiances and Brightness Temperatures (version BC004) - Sentinel 3 - Reprocessed @@ -1084,7 +1152,7 @@ S3_SLSTR_L2: title: SENTINEL3 SLSTR Level-2 missionStartDate: "2017-07-05T00:00:00Z" -# S3 SRAL +# MARK: S3 SRAL S3_SRA: abstract: | SRAL Level 1B: Complex echoes (In-phase (I) and Quadrature (Q)) for the Low Resolution Mode (LRM) and/or @@ -1153,6 +1221,24 @@ S3_SRA_1A_BC004: title: SENTINEL3 SRAL Level-1A Unpacked - Reprocessed from BC004 missionStartDate: "2016-03-01T00:00:00Z" +S3_SRA_1A_BC005: + abstract: | + Fundamental science and engineering product development supporting operational users. This product is most relevant + to SAR processing specialists allowing fundamental studies on SAR processing such as Doppler beam formation and for + calibration studies using ground-based Transponders. Sentinel-3 is part of a series of Sentinel satellites, under + the umbrella of the EU Copernicus programme. This dataset contains reprocessed data from Baseline Collection 005, + and is continued by the operational NTC data stream from 10/Mar/2023 onwards. + instrument: SRAL + platform: SENTINEL3 + platformSerialIdentifier: S3A,S3B + processingLevel: L1A + keywords: SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1A,REPROCESSED,BC005 + sensorType: RADAR + license: proprietary + title: SRAL Level 1A Unpacked L0 Complex Echoes (version BC005) - Sentinel-3 - Reprocessed + missionStartDate: "2016-05-05T00:00:00Z" + missionEndDate: "2023-03-09T00:00:00Z" + S3_SRA_1B_BC004: abstract: | SRAL Level 1B (version BC004) - Sentinel-3 - Reprocessed @@ -1170,6 +1256,25 @@ S3_SRA_1B_BC004: license: proprietary title: SENTINEL3 SRAL Level-1B - Reprocessed from BC004 missionStartDate: "2016-03-01T00:00:00Z" + missionEndDate: "2019-12-31T00:00:00Z" + +S3_SRA_1B_BC005: + abstract: | + SRAL Level 1B: Complex echoes (In-phase (I) and Quadrature (Q)) for the Low Resolution Mode (LRM) and/or Synthetic + Aperture Radar (SAR) mode both for C Band and Ku band. When the altimeter is in SAR mode, this product also contains + the so-called Pseudo LRM (PLRM) echoes. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella + of the EU Copernicus programme. This dataset contains reprocessed data from Baseline Collection 005, and is continued + by the operational NTC data stream from 10/Mar/2023 onwards. + instrument: SRAL + platform: SENTINEL3 + platformSerialIdentifier: S3A,S3B + processingLevel: L1B + keywords: SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1B,REPROCESSED,BC005 + sensorType: RADAR + license: proprietary + title: SRAL Level 1B (version BC005) - Sentinel-3 - Reprocessed + missionStartDate: "2016-05-05T00:00:00Z" + missionEndDate: "2023-03-09T00:00:00Z" S3_SRA_BS_BC004: abstract: | @@ -1191,6 +1296,28 @@ S3_SRA_BS_BC004: license: proprietary title: SENTINEL3 SRAL Level-1B Stack Echoes - Reprocessed from BC004 missionStartDate: "2016-03-01T00:00:00Z" + missionEndDate: "2019-12-31T00:00:00Z" + +S3_SRA_BS_BC005: + abstract: | + SRAL Level 1B: Complex echoes (In-phase (I) and Quadrature (Q)) for the Low Resolution Mode (LRM) and/or Synthetic + Aperture Radar (SAR) mode both for C Band and Ku band. When the altimeter is in SAR mode, this product also + contains the so-called Pseudo LRM (PLRM) echoes. Complex (In-phase and Quadrature) echoes (I's and Q;s) after + slant/Doppler range correction. This product is most relevant to geophysical retrieval algorithm developers + (over ocean, land and ice surfaces), surface characterisations studies (e.g. impact of sea state bias, wave + directional effects etc) and Quality Control systems. Sentinel-3 is part of a series of Sentinel satellites, under + the umbrella of the EU Copernicus programme. This dataset contains reprocessed data from Baseline Collection 005, + and is continued by the operational NTC data stream from 10/Mar/2023 onwards. + instrument: SRAL + platform: SENTINEL3 + platformSerialIdentifier: S3A,S3B + processingLevel: L1B + keywords: SRA,SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L1,L1B,REPROCESSED,STACK,ECHOES,BC005 + sensorType: RADAR + license: proprietary + title: SRAL Level 1B Stack Echoes (version BC005) - Sentinel-3 - Reprocessed + missionStartDate: "2016-05-05T00:00:00Z" + missionEndDate: "2023-03-09T00:00:00Z" S3_WAT: abstract: | @@ -1236,6 +1363,29 @@ S3_WAT_BC004: license: proprietary title: SRAL Level 2 Altimetry Global - Reprocessed from BC004 missionStartDate: "2016-03-01T00:00:00Z" + missionEndDate: "2019-12-31T00:00:00Z" + +S3_WAT_BC005: + abstract: | + The products contain the typical altimetry measurements, like the altimeter range, the sea surface height, the wind + speed, significant wave height and all required geophysical corrections and related flags. Also the sea Ice + freeboard measurement is included. The measurements in the standard data file provide the measurements in low + (1 Hz = approx. 7km) and high resolution (20 Hz = approx. 300 m), in LRM mode or in SAR mode, for both C-band and + Ku band. The SAR mode is the default mode. The reduced measurement data file contains 1 Hz measurements only. The + enhanced measurement data file contains also the waveforms and associated parameters and the pseudo LRM + measurements when in SAR mode. Sentinel-3 is part of a series of Sentinel satellites, under the umbrella of the EU + Copernicus programme. This collection contains reprocessed data from baseline collection 004. Operational data can + be found in the corresponding collection. + instrument: SRAL + platform: SENTINEL3 + platformSerialIdentifier: S3A,S3B + processingLevel: L2 + keywords: SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,WAT,REPROCESSED,BC005 + sensorType: RADAR + license: proprietary + title: SRAL Level 2 Altimetry Global (version BC005) - Sentinel-3 - Reprocessed + missionStartDate: "2016-05-05T00:00:00Z" + missionEndDate: "2023-03-09T00:00:00Z" S3_LAN: abstract: LAN or SR_2_LAN___ (peps) @@ -1249,7 +1399,79 @@ S3_LAN: title: SENTINEL3 SRAL Level-2 LAN missionStartDate: "2016-02-16T00:00:00Z" -# S3 SYNERGY +S3_LAN_HY: + abstract: | + Sentinel-3 STM payload includes two main instruments: the Sentinel-3 Radar ALtimeter (SRAL) and a MicroWave + Radiometer (MWR). SRAL is providing continuous topography measurements of the Earth's surface. It is the first + radar altimeter operating exclusively with delay-Doppler capabilities, which provides a significant improvement of + the along-track resolution compared to conventional Low Resolution Mode (LRM) altimeters. This enhancement is + highly valuable over continental and sea ice surfaces, considering their heterogeneous characteristics. + ESA and the Sentinel-3 Mission Performance Cluster (MPC) have developed in 2021-2022 dedicated delay-Doppler and + Level-2 processing chains for the generation of new Sentinel-3 STM LAND level-2 products over inland waters, + sea-ice, and land ice areas. The main objective of these so-called “Thematic Products” is to address the specific + needs of the user communities related to the three different Thematic surfaces. + For Hydrology Thematic Products, the coverage includes all the continental surfaces, except the Antarctica ice + sheet, and Greenland ice sheet interior. Over coastal zones the 50 km common area between Land and Marine products + remains. Therefore, the Hydrology products cover up to 25 km over surfaces considered as Marine. + instrument: SRAL + platform: SENTINEL3 + platformSerialIdentifier: S3A,S3B + processingLevel: L2 + keywords: SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,LAN,HYDROLOGY + sensorType: RADAR + license: proprietary + title: SENTINEL3 SRAL Level-2 LAN HYDRO + missionStartDate: "2016-02-16T00:00:00Z" + +S3_LAN_SI: + abstract: | + Sentinel-3 STM payload includes two main instruments: the Sentinel-3 Radar ALtimeter (SRAL) and a MicroWave + Radiometer (MWR). SRAL is providing continuous topography measurements of the Earth's surface. It is the first + radar altimeter operating exclusively with delay-Doppler capabilities, which provides a significant improvement of + the along-track resolution compared to conventional Low Resolution Mode (LRM) altimeters. This enhancement is + highly valuable over continental and sea ice surfaces, considering their heterogeneous characteristics. + ESA and the Sentinel-3 Mission Performance Cluster (MPC) have developed in 2021-2022 dedicated delay-Doppler and + Level-2 processing chains for the generation of new Sentinel-3 STM LAND level-2 products over inland waters, + sea-ice, and land ice areas. The main objective of these so-called “Thematic Products” is to address the specific + needs of the user communities related to the three different Thematic surfaces. + Each Sentinel-3 STM Land Thematic Product has a dedicated geographical coverage, defined in a Thematic Mask. For Sea + Ice Thematic Products, the mask remains static, and the coverage was calculated by the Expert Support + Laboratories (ESL) of the Sentinel-3 MPC, based on the maximum of sea ice extent given a NSIDC sea ice climatology. + instrument: SRAL + platform: SENTINEL3 + platformSerialIdentifier: S3A,S3B + processingLevel: L2 + keywords: SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,LAN,SEA,ICE + sensorType: RADAR + license: proprietary + title: SENTINEL3 SRAL Level-2 LAN SEA ICE + missionStartDate: "2016-02-16T00:00:00Z" + +S3_LAN_LI: + abstract: | + Sentinel-3 STM payload includes two main instruments: the Sentinel-3 Radar ALtimeter (SRAL) and a MicroWave + Radiometer (MWR). SRAL is providing continuous topography measurements of the Earth's surface. It is the first + radar altimeter operating exclusively with delay-Doppler capabilities, which provides a significant improvement of + the along-track resolution compared to conventional Low Resolution Mode (LRM) altimeters. This enhancement is + highly valuable over continental and sea ice surfaces, considering their heterogeneous characteristics. + ESA and the Sentinel-3 Mission Performance Cluster (MPC) have developed in 2021-2022 dedicated delay-Doppler and + Level-2 processing chains for the generation of new Sentinel-3 STM LAND level-2 products over inland waters, + sea-ice, and land ice areas. The main objective of these so-called “Thematic Products” is to address the specific + needs of the user communities related to the three different Thematic surfaces. + Each Sentinel-3 STM Land Thematic Product has a dedicated geographical coverage, defined in a Thematic Mask. For + Land Ice Thematic Products, the mask includes the Antarctica and Greenland ice sheets, along with glacier areas as + defined in the Randolph Glacier Inventory (RGI) database. + instrument: SRAL + platform: SENTINEL3 + platformSerialIdentifier: S3A,S3B + processingLevel: L2 + keywords: SRAL,SENTINEL,SENTINEL3,S3,S3A,S3B,L2,LAN,LAND,ICE + sensorType: RADAR + license: proprietary + title: SENTINEL3 SRAL Level-2 LAN LAND ICE + missionStartDate: "2016-02-16T00:00:00Z" + +# MARK: S3 SYNERGY # Synergy data products are generally combinations of OLCI and SLSTR instruments S3_SY_SYN: abstract: | @@ -1332,7 +1554,7 @@ S3_SY_VGP: title: SENTINEL3 SYNERGY Level-2 VGP missionStartDate: "2016-02-16T00:00:00Z" -# Sentinel 5P ------------------------------------------------------------------ +# MARK: Sentinel 5P -------------------------------------------------------------------- S5P_L1B2_IR_ALL: abstract: | Solar irradiance spectra for all bands (UV1-6 and SWIR) @@ -1352,6 +1574,45 @@ S5P_L1B2_IR_ALL: title: Sentinel-5 Precursor Level 1B and Level 2 Irradiances for the SWIR and UNV bands missionStartDate: "2017-10-13T00:00:00Z" +S5P_L1B_IR_ALL: + abstract: | + Solar irradiance spectra for all bands (UV1-6 and SWIR) + The TROPOMI instrument is a space-borne, nadir-viewing, imaging spectrometer covering wavelength bands between the + ultraviolet and the shortwave infrared. The instrument, the single payload of the Sentinel-5P spacecraft, uses + passive remote sensing techniques to attain its objective by measuring, at the Top Of Atmosphere (TOA), the solar + radiation reflected by and radiated from the earth. The instrument operates in a push-broom configuration + (non-scanning), with a swath width of ~2600 km on the Earth's surface. The typical pixel size (near nadir) will + be 7x3.5 km2 for all spectral bands, with the exception of the UV1 band (7x28 km2) and SWIR bands (7x7 km2). + instrument: TROPOMI + platform: SENTINEL5P + platformSerialIdentifier: S5P + processingLevel: L1B + keywords: SENTINEL,SENTINEL5P,S5P,L1,L1B,TROPOMI,IR,SIR,SWIR,Irradiances,UVN + sensorType: ATMOSPHERIC + license: proprietary + title: Sentinel-5 Precursor Level 1B Irradiances for the SWIR and UNV bands + missionStartDate: "2017-10-13T00:00:00Z" + +S5P_L2_IR_ALL: + abstract: | + The TROPOMI instrument is a space-borne, nadir-viewing, imaging spectrometer covering wavelength bands between the + ultraviolet and the shortwave infrared. The instrument, the single payload of the Sentinel-5P spacecraft, uses + passive remote sensing techniques to attain its objective by measuring, at the Top Of Atmosphere (TOA), the solar + radiation reflected by and radiated from the earth. The instrument operates in a push-broom configuration + (non-scanning), with a swath width of ~2600 km on the Earth's surface. The typical pixel size (near nadir) will + be 7x3.5 km2 for all spectral bands, with the exception of the UV1 band (7x28 km2) and SWIR bands (7x7 km2). + Level 2 data provides total columns of ozone, sulfur dioxide, nitrogen dioxide, carbon monoxide, formaldehyde, + tropospheric columns of ozone, vertical profiles of ozone and cloud & aerosol information. + instrument: TROPOMI + platform: SENTINEL5P + platformSerialIdentifier: S5P + processingLevel: L2 + keywords: SENTINEL,SENTINEL5P,S5P,L2,TROPOMI + sensorType: ATMOSPHERIC + license: proprietary + title: Sentinel-5 Precursor Level 2 Data + missionStartDate: "2018-04-01T00:00:00Z" + S5P_L1B_IR_SIR: abstract: | Solar irradiance spectra for the SWIR bands (band 7 and band 8). @@ -1842,7 +2103,7 @@ S5P_L2_SO2: title: Sentinel-5 Precursor Level 2 Sulphur Dioxide missionStartDate: "2017-10-13T00:00:00Z" -# Sentinel 6 +# MARK: Sentinel 6 S6_P4_L1AHR_F06: abstract: | This is a reprocessed dataset at baseline F06, which is continued by the NRT/NTC data stream from 29/April/2022 @@ -1969,7 +2230,7 @@ S6_AMR_L2_F06: title: Sentinel 6 - Climate-quality Advanced Microwave Radiometer Level 2 Products Reprocessed at F06 missionStartDate: "2020-11-28T00:00:00Z" -# SPOT ------------------------------------------------------------------------ +# MARK: SPOT --------------------------------------------------------------------------- SPOT_SWH: abstract: | The Spot World Heritage (SWH) programme objective is the free availability for non-commercial use of orthorectified @@ -2011,7 +2272,7 @@ SPOT5_SPIRIT: title: Spot 5 SPIRIT missionStartDate: "2002-05-04T00:00:00Z" -# VENUS ------------------------------------------------------------------------ +# MARK: VENUS -------------------------------------------------------------------------- VENUS_L1C: abstract: | A light description of Venus L1 data is available at http://www.cesbio.ups-tlse.fr/multitemp/?page_id=12984 @@ -2051,7 +2312,7 @@ VENUS_L3A_MAJA: title: Venus Level3-A missionStartDate: "2017-08-02T00:00:00Z" -# ECMWF ----------------------------------------------------------------------- +# MARK: ECMWF -------------------------------------------------------------------------- TIGGE_CF_SFC: abstract: | @@ -2065,9 +2326,9 @@ TIGGE_CF_SFC: sensorType: ATMOSPHERIC license: proprietary title: TIGGE ECMWF Surface Control forecast - missionStartDate: "2003-01-01T00:00:00Z" + missionStartDate: "2006-10-01T00:00:00Z" -# COPERNICUS ADS ---------------------------------------------------------------------- +# MARK: COPERNICUS ADS ----------------------------------------------------------------- CAMS_GAC_FORECAST: abstract: | CAMS produces global forecasts for atmospheric composition twice a day. @@ -2111,7 +2372,7 @@ CAMS_EU_AIR_QUALITY_FORECAST: sensorType: ATMOSPHERIC license: proprietary title: CAMS European air quality forecasts - missionStartDate: "2021-01-01T00:00:00Z" + missionStartDate: "2020-08-26T00:00:00Z" CAMS_GFE_GFAS: abstract: | @@ -2154,7 +2415,7 @@ CAMS_SOLAR_RADIATION: CAMS_GREENHOUSE_INVERSION: abstract: | This data set contains net fluxes at the surface, atmospheric mixing ratios at model levels, and column-mean atmospheric mixing ratios for carbon dioxide (CO2), methane (CH4) and nitrous oxide (N20). - Natural and anthropogenic surface fluxes of greenhouse gases are key drivers of the evolution of Earth’s climate, so their monitoring is essential. + Natural and anthropogenic surface fluxes of greenhouse gases are key drivers of the evolution of Earth's climate, so their monitoring is essential. Such information has been used in particular as part of the Assessment Reports of the Intergovernmental Panel on Climate Change (IPCC). Ground-based and satellite remote-sensing observations provide a means to quantifying the net fluxes between the land and ocean on the one hand and the atmosphere on the other hand. This is done through a process called atmospheric inversion, which uses transport models of the atmosphere to link the observed concentrations of CO2, CH4 and N2O to the net fluxes at the Earth's surface. @@ -2353,7 +2614,31 @@ CAMS_GLOBAL_EMISSIONS: title: CAMS global emission inventories missionStartDate: "2000-01-01T00:00:00Z" -# COPERNICUS CDS ---------------------------------------------------------------------- +# MARK: COPERNICUS CDS ----------------------------------------------------------------- +AG_ERA5: + abstract: | + This dataset provides daily surface meteorological data for the period from 1979 to present as input for agriculture + and agro-ecological studies. This dataset is based on the hourly ECMWF ERA5 data at surface level and is referred to + as AgERA5. Acquisition and pre-processing of the original ERA5 data is a complex and specialized job. By providing + the AgERA5 dataset, users are freed from this work and can directly start with meaningful input for their analyses + and modelling. To this end, the variables provided in this dataset match the input needs of most agriculture and + agro-ecological models. + Data were aggregated to daily time steps at the local time zone and corrected towards a finer topography at a 0.1° + spatial resolution. The correction to the 0.1° grid was realized by applying grid and variable-specific regression + equations to the ERA5 dataset interpolated at 0.1° grid. The equations were trained on ECMWF's operational + high-resolution atmospheric model (HRES) at a 0.1° resolution. This way the data is tuned to the finer topography, + finer land use pattern and finer land-sea delineation of the ECMWF HRES model. + The data was produced on behalf of the Copernicus Climate Change Service. + platform: ERA5 + instrument: + platformSerialIdentifier: ERA5 + processingLevel: + keywords: ECMWF,Reanalysis,ERA5,CDS,Atmospheric,climate,land,agriculture,AgERA5,surface + sensorType: ATMOSPHERIC + license: proprietary + title: Agrometeorological indicators from 1979 to present derived from reanalysis + missionStartDate: "1979-01-01T00:00:00Z" + ERA5_SL: abstract: | ERA5 is the fifth generation ECMWF reanalysis for the global climate and weather for the past 8 decades. @@ -2667,6 +2952,45 @@ GLACIERS_DIST_RANDOLPH: missionStartDate: "2000-01-01T00:00:00Z" missionEndDate: "2000-12-31T23:59:00Z" +GRIDDED_GLACIERS_MASS_CHANGE: + abstract: | + The dataset provides annual glacier mass changes distributed on a global regular grid at 0.5° resolution (latitude, + longitude). Glaciers play a fundamental role in the Earth's water cycles. They are one of the most important + freshwater resources for societies and ecosystems and the recent increase in ice melt contributes directly to the + rise of ocean levels. Due to this they have been declared as an Essential Climate Variable (ECV) by GCOS, the Global + Climate Observing System. Within the Copernicus Services, the global gridded annual glacier mass change dataset + provides information on changing glacier resources by combining glacier change observations from the Fluctuations + of Glaciers (FoG) database that is brokered from World Glacier Monitoring Service (WGMS). Previous glacier products + were provided to the Copernicus Climate Change Service (C3S) Climate Data Store (CDS) as a homogenized + state-of-the-art glacier dataset with separated elevation and mass change time series collected by scientists and + the national correspondents of each country as provided to the WGMS (see Related data). The new approach combines + glacier mass balances from in-situ observations with glacier elevation changes from remote sensing to generate a new + gridded product of annual glacier mass changes and related uncertainties for every hydrological year since 1975/76 + provided in a 0.5°x0.5° global regular grid. The dataset bridges the gap on spatio-temporal coverage of glacier + change observations, providing for the first time in the CDS an annually resolved glacier mass change product using + the glacier elevation change sample as calibration. This goal has become feasible at the global scale thanks to a + new globally near-complete (96 percent of the world glaciers) dataset of glacier elevation change observations recently + ingested by the FoG database. To develop the distributed glacier change product the glacier outlines were used from + the Randolph Glacier Inventory 6.0 (see Related data). A glacier is considered to belong to a grid-point when its + geometric centroid lies within the grid point. The centroid is obtained from the glacier outlines from the Randolph + Glacier Inventory 6.0. The glacier mass changes in the unit Gigatonnes (1 Gt = 1x10^9 tonnes) correspond to the + total mass of water lost/gained over the glacier surface during a given year. Note that to propagate to mm/cm/m of + water column on the grid cell, the grid cell area needs to be considered. Also note that the data is provided for + hydrological years, which vary between the Northern Hemisphere (01 October to 30 September next year) and the + Southern Hemisphere (01 April to 31 March next year). This dataset has been produced by researchers at the WGMS on + behalf of Copernicus Climate Change Service. Variables in the dataset/application are: Glacier mass change Variables + in the dataset/application are: Uncertainty + platform: + instrument: + platformSerialIdentifier: + processingLevel: + keywords: ECMWF,WGMS,INSITU,CDS,C3S,glacier,randolph,mass,gridded + sensorType: ATMOSPHERIC + license: proprietary + title: Glacier mass change gridded data from 1976 to present derived from the Fluctuations of Glaciers Database + missionStartDate: "1975-01-01T00:00:00Z" + + SATELLITE_CARBON_DIOXIDE: abstract: | This dataset provides observations of atmospheric carbon dioxide (CO2)\namounts obtained from observations @@ -2706,6 +3030,41 @@ SATELLITE_CARBON_DIOXIDE: license: proprietary title: Carbon dioxide data from 2002 to present derived from satellite observations missionStartDate: "2002-10-01T00:00:00Z" + missionEndDate: "2022-12-31T23:59:59" + +SATELLITE_FIRE_BURNED_AREA: + abstract: | + The Burned Area products provide global information of total burned area (BA) at pixel and grid scale. The BA is + identified with the date of first detection of the burned signal in the case of the pixel product, and with the + total BA per grid cell in the case of the grid product. The products were obtained through the analysis of + reflectance changes from medium resolution sensors (Terra MODIS, Sentinel-3 OLCI), supported by the use of MODIS + thermal information. The burned area products also include information related to the land cover that has been + burned, which has been extracted from the Copernicus Climate Change Service (C3S) land cover dataset, thus + assuring consistency between the datasets. + The algorithms for BA retrieval were developed by the University of Alcala (Spain), and processed by Brockmann + Consult GmbH (Germany). Different product versions are available. FireCCI v5.0cds and FireCCI v5.1cds were + developed as part of the Fire ECV Climate Change Initiative Project (Fire CCI) and brokered to C3S, offering the + first global burned area time series at 250m spatial resolution. FireCCI v5.1cds used a more mature algorithm than + the previous version. This algorithm was adapted to Sentinel-3 OLCI data to create the C3S v1.0 burned area + product, extending the BA database to the present. + During July 2020, an error in some files in the version v5.1cds were identified, affecting the files of the grid + product of January 2018, and the pixel and grid products of October, November and December 2019. These errors were + fixed, and a new version, v5.1.1cds, was created for the whole time series, to replace version v5.1cds. The latter + product has been deprecated, but it is temporally kept in the database for transparency and traceability reasons. + Only version v5.1.1cds should be used. + The BA products are useful for researchers studying climate change, as they provide crucial information on burned + biomass, which can be translated to greenhouse gases emissions amongst other contaminants. Burned area is also + useful for land cover change studies, fire management and risk analysis. + platform: + instrument: + platformSerialIdentifier: + processingLevel: + keywords: ECMWF,CDS,C3S,burned + sensorType: ATMOSPHERIC + license: proprietary + title: Fire burned area from 2001 to present derived from satellite observations + missionStartDate: "2001-01-01T00:00:00Z" + missionEndDate: "2022-04-01T23:59:59" SATELLITE_METHANE: abstract: | @@ -2744,6 +3103,123 @@ SATELLITE_METHANE: title: Methane data from 2002 to present derived from satellite observations missionStartDate: "2002-10-01T00:00:00Z" +SATELLITE_SEA_ICE_EDGE_TYPE: + abstract: | + This dataset provides daily gridded data of sea ice edge and sea ice type derived from brightness temperatures + measured by satellite passive microwave radiometers. Sea ice is an important component of our climate system and + a sensitive indicator of climate change. Its presence or its retreat has a strong impact on air-sea interactions, + the Earth's energy budget as well as marine ecosystems. It is recognized by the Global Climate Observing System as + an Essential Climate Variable. Sea ice edge and type are some of the parameters used to characterise sea ice. Other + parameters include sea ice concentration and sea ice thickness, also available in the Climate Data Store. Sea ice + edge and type are defined as follows: Sea ice edge classifies the sea surface into open water, open ice, and closed + ice depending on the amount of sea ice present in each grid cell. This variable is provided for both the Northern + and Southern Hemispheres. Note that a sea ice concentration threshold of 30% is used to distinguish between open + water and open ice, which differs from the 15% threshold commonly used for other sea ice products such as sea ice + extent. Sea ice type classifies ice-covered areas into two categories based on the age of the sea ice: multiyear + ice versus seasonal first-year ice. This variable is currently only available for the Northern Hemisphere and + limited to the extended boreal winter months (mid-October through April). Sea ice type classification during summer + is difficult due to the effect of melting at the ice surface which disturbs the passive microwave signature. Both + sea ice products are based on measurements from the series of Scanning Multichannel Microwave Radiometer (SMMR), + Special Sensor Microwave/Imager (SSM/I), and Special Sensor Microwave Imager/Sounder (SSMIS) sensors and share the + same algorithm baseline. However, sea ice edge makes use of two lower frequencies near 19 GHz and 37 GHz and a + higher frequency near 90 GHz whereas sea ice type only uses the two lower frequencies. This dataset combines + Climate Data Records (CDRs), which are intended to have sufficient length, consistency, and continuity to assess + climate variability and change, and Interim Climate Data Records (ICDRs), which provide regular temporal extensions + to the CDRs and where consistency with the CDRs is expected but not extensively checked. For this dataset, both the + CDR and ICDR parts of each product were generated using the same software and algorithms. The CDRs of sea ice edge + and type currently extend from 25 October 1978 to 31 December 2020 whereas the corresponding ICDRs extend from + January 2021 to present (with a 16-day latency behind real time). All data from the current release of the datasets + (version 2.0) are Level-4 products, in which data gaps are filled by temporal and spatial interpolation. For product + limitations and known issues, please consult the Product User Guide. This dataset is produced on behalf of + Copernicus Climate Change Service (C3S), with heritage from the operational products generated by EUMETSAT Ocean and + Sea Ice Satellite Application Facility (OSI SAF). Variables in the dataset/application are: Sea ice edge, Sea ice + type Variables in the dataset/application are: Status flag, Uncertainty + platform: + instrument: + platform: + platformSerialIdentifier: + processingLevel: + keywords: ECMWF,CDS,C3S,sea,ice + sensorType: ATMOSPHERIC + license: proprietary + title: Sea ice edge and type daily gridded data from 1978 to present derived from satellite observations + missionStartDate: "1978-10-25T00:00:00Z" + missionEndDate: "2023-05-02T23:59:59" + +SATELLITE_SEA_ICE_THICKNESS: + abstract: | + This dataset provides monthly gridded data of sea ice thickness for the Arctic region based on satellite radar altimetry + observations. Sea ice is an important component of our climate system and a sensitive indicator of climate change. Its + presence or its retreat has a strong impact on air-sea interactions, the Earth's energy budget as well as marine ecosystems. + It is recognized by the Global Climate Observing System as an Essential Climate Variable. Sea ice thickness is one of the + parameters commonly used to characterise sea ice, alongside sea ice concentration, sea ice edge, and sea ice type, also + available in the Climate Data Store. + Satellite radar altimeters provide measurements of the sea ice freeboard, which is the difference between the height of the + surface of sea ice and the surface of water in open leads (areas of open water within the sea ice). Because of the buoyancy + of ice in water, typically about 90% of the ice thickness remains under water and thus the total ice thickness is about 10 + times the freeboard. However, snow on top of sea ice changes this ratio and complicates the estimation of the ice thickness, + requiring the use of auxiliary information about snow depth and density. The retrieval of ice thickness uses the narrow + radar swath at the nadir of the satellite at full resolution of approximately 1-10 km and a point spacing of 300 meters. + This Level-2 sea-ice thickness products (not provided here) is then gridded for a period of a month to obtain full coverage + of a north polar grid at a resolution of 25 km. The algorithm used was developed as part of the European Space Agency + Climate Change Initiative (ESA CCI) on Sea Ice. + The data provided here are Level-3 Collated (L3C) products: they contain monthly gridded values from orbit data from a single + platform (Envisat or CryoSat-2) without interpolation or any other form of gap filling. The files also contain estimates of + the algorithm uncertainty as well as a quality status flag indicating potential issues with the retrieval not captured in the + algorithm uncertainty. Sources of uncertainty in the algorithm are related to the auxiliary data and to the use of different + radar altimeter concepts in Envisat (pulse-limited) and CryoSat-2 (synthetic aperture radar). + This dataset combines a Climate Data Record (CDR), which has sufficient length, consistency, and continuity to be used to + assess climate variability and change, and an Interim Climate Data Record (ICDR), which provides regular temporal extensions + to the CDR and where consistency with the CDR is expected but not extensively checked. Here, the CDR is based on measurements + from the RA-2 altimeter on Envisat (October 2002 to October 2010) and the SIRAL altimeter on CryoSat-2 (November 2010 to April + 2020). The ICDR is based on observations from CryoSat-2 only (from April 2015 onward) and is updated monthly with a one-month + delay behind real time. Users should note that the quality and accuracy of the data record are higher during the CryoSat-2 + period than during the Envisat period. As a result, care should be taken when combining the two missions to assess long-term + changes and trends. More information can be found in the Product User Guide and Product Quality Assessment Report. + This dataset is currently limited spatially to the Arctic region and temporally to the winter months of October through April + due to unresolved bias originating from melting snow or open melt ponds in the remaining five months. For a similar reason, + no sea-ice thickness data with sufficient quality exist for the Southern Hemisphere. The extension of the CDR/ICDR to other + periods, regions, and radar altimeter missions is under development in the extension of the ESA CCI Sea Ice project (ESA CCI+). + This dataset is produced on behalf of the Copernicus Climate Change Service (C3S). + instrument: + platform: + platformSerialIdentifier: + processingLevel: + keywords: ECMWF,CDS,C3S,sea,ice + sensorType: ATMOSPHERIC + license: proprietary + title: Sea ice thickness monthly gridded data for the Arctic from 2002 to present derived from satellite observations + missionStartDate: "2002-10-01T00:00:00Z" + +SATELLITE_SEA_ICE_CONCENTRATION: + abstract: | + This dataset provides daily gridded data of sea ice concentration for both hemispheres derived from satellite passive microwave + brightness temperatures. Sea ice is an important component of our climate system and a sensitive indicator of climate change. + Its presence or its retreat has a strong impact on air-sea interactions, the Earth's energy budget as well as marine ecosystems. + It is listed as an Essential Climate Variable by the Global Climate Observing System. Sea ice concentration is defined as the + fraction of the ocean surface in a pixel or grid cell that is covered with sea ice. It is one of the parameters commonly used to + characterise the sea-ice cover. Other sea ice parameters include sea ice thickness, sea ice edge, and sea ice type, also + available in the Climate Data Store. + + The dataset consists of two products produced by the European Organisation for the Exploitation of Meteorological Satellites (EUMETSAT) Ocean and Sea Ice Satellite Application Facility (OSI SAF) with research & development from European Space Agency Climate Change Initiative projects (ESA CCI): + + The Global Sea Ice Concentration Climate Data Record based on measurements from the following sensors: Scanning Multichannel Microwave Radiometer (SMMR; 1978-1987), Special Sensor Microwave/Imager (SSM/I; 1987-2006), and Special Sensor Microwave Imager/Sounder (SSMIS; 2005 onward). This product spans the period from October 1978 to present and is updated daily by an Interim Climate Data Record. In the following, it is referred to as the SSMIS product. + The Global Sea Ice Concentration Climate Data Record based on measurements from the Advanced Microwave Scanning Radiometer - Earth Observing System (AMSR-E) sensor (2002-2011) and its successor, AMSR2 (2012-2020). This product spans the 2002-2020 period and is not updated. In the following, it is referred to as the AMSR product. Note, that this product was first produced by the European Space Agency Climate Change Initiative Phase 2 project (ESA CCI) and has been transferred to EUMETSAT OSI SAF since version 3.0. + Both products are provided on the same polar projection with a grid resolution of 25 km. However, the AMSR product has a true spatial resolution (as resolved by the sensor) of about 15-25 km versus 30-60 km for the SSMIS product. Therefore, the AMSR product provides a much more detailed view of the sea ice cover than the SSMIS product, especially in the marginal ice zone, the transitional zone between open water and the dense sea ice pack. On the other hand, the clear strength of the SSMIS product is its more than 40-year long and consistent record with daily updates. + + The two products share the same algorithm baseline, which is both a continuation of the EUMETSAT OSI SAF approach and a series of innovations contributed by ESA CCI activities. For both products, the underlying algorithm makes use of a combination of the same three temperature channels near 19 GHz and 37 GHz. The data also share a common data format, that allows expert users to revert some of the filtering steps and access the raw output of the SIC algorithms. Both are level-4 products in the sense that gaps are filled by temporal and spatial interpolation. However, gap filling is not applied to fill in days when no input satellite data are available. + + Further details about each product can be found below as well as in the Documentation section. + instrument: + platform: + platformSerialIdentifier: + processingLevel: + keywords: ECMWF,CDS,C3S,sea,ice + sensorType: ATMOSPHERIC + license: proprietary + title: Sea ice concentration daily gridded data from 1978 to present derived from satellite observations + missionStartDate: "1978-10-25T00:00:00Z" + SEASONAL_POSTPROCESSED_PL: abstract: | This entry covers pressure-level data post-processed for bias adjustment on a monthly time resolution. @@ -2806,12 +3282,82 @@ SATELLITE_SEA_LEVEL_BLACK_SEA: instrument: platformSerialIdentifier: processingLevel: - keywords: Climate,ECMWF,CDS,C3S,methane,sea + keywords: Climate,ECMWF,CDS,C3S,sea,level,Black Sea sensorType: HYDROLOGICAL license: proprietary title: Sea level daily gridded data from satellite observations for the Black Sea from 1993 to 2020 missionStartDate: "1993-01-01T00:00:00Z" +SATELLITE_SEA_LEVEL_GLOBAL: + abstract: | + This data set provides gridded daily global estimates of sea level anomaly based on satellite altimetry + measurements. The rise in global mean sea level in recent decades has been one of the most important and well-known + consequences of climate warming, putting a large fraction of the world population and economic infrastructure at + greater risk of flooding. However, changes in the global average sea level mask regional variations that can be one + order of magnitude larger. Therefore, it is essential to measure changes in sea level over the world's oceans as + accurately as possible. Sea level anomaly is defined as the height of water over the mean sea surface in a given + time and region. In this dataset sea level anomalies are computed with respect to a twenty-year mean reference + period (1993-2012) using up-to-date altimeter standards. In the past, the altimeter sea level datasets were + distributed on the CNES AVISO altimetry portal until their production was taken over by the Copernicus Marine + Environment Monitoring Service (CMEMS) and the Copernicus Climate Change Service (C3S) in 2015 and 2016 + respectively. The sea level data set provided here by C3S is climate-oriented, that is, dedicated to the monitoring + of the long-term evolution of sea level and the analysis of the ocean/climate indicators, both requiring a + homogeneous and stable sea level record. To achieve this, a steady two-satellite merged constellation is used at all + time steps in the production system: one satellite serves as reference and ensures the long-term stability of the + data record; the other satellite (which varies across the record) is used to improve accuracy, sample mesoscale + processes and provide coverage at high latitudes. The C3S sea level data set is used to produce Ocean Monitoring + Indicators (e.g. global and regional mean sea level evolution), available in the CMEMS catalogue. The CMEMS sea + level dataset has a more operational focus as it is dedicated to the retrieval of mesoscale signals in the context + of ocean modeling and analysis of the ocean circulation on a global or regional scale. Such applications require the + most accurate sea level estimates at each time step with the best spatial sampling of the ocean with all satellites + available, with less emphasis on long-term stability and homogeneity. This data set is updated three times a year + with a delay of about 6 months relative to present time. This delay is mainly due to the timeliness of the input + data, the centred processing temporal window and the validation process. However, these processing and validation + steps are essential to enhance the stability and accuracy of the sea level products and make them suitable for + climate applications. This dataset includes estimates of sea level anomaly and absolute dynamic topography together + with the corresponding geostrophic velocities. More details about the sea level retrieval algorithms, additional + filters, optimisation procedures, and the error estimation are given in the Documentation tab. Variables in the + dataset/application are: Absolute dynamic topography, Absolute geostrophic velocity meridian component, Absolute + geostrophic velocity zonal component, Geostrophic velocity anomalies meridian component, Geostrophic velocity + anomalies zonal component, Sea level anomaly + platform: + instrument: + platformSerialIdentifier: + processingLevel: + keywords: Climate,ECMWF,CDS,C3S,sea,level,global + sensorType: HYDROLOGICAL + license: proprietary + title: Sea level gridded data from satellite observations for the global ocean + missionStartDate: "1993-01-01T00:00:00Z" + missionEndDate: "2022-08-04T23:59:59Z" + +SATELLITE_SEA_LEVEL_MEDITERRANEAN: + abstract: | + Sea level anomaly is the height of water over the mean sea surface in a given time and region. In this dataset sea + level anomalies are computed with respect to a twenty-year mean reference period (1993-2012). Up-to-date altimeter + standards are used to estimate the sea level anomalies with a mapping algorithm specifically dedicated to the + Mediterranean Sea. The steady number of reference satellite used in the production of this dataset contributes to + the long-term stability of the sea level record. Improvements of the accuracy, sampling of meso-scale processes and + of the high-latitude coverage were achieved by using a few additional satellite missions. New data are provided with + a delay of about 4-5 months relatively to near-real time or interim sea level products. This delay is mainly due to + the timeliness of the input data, the centred processing temporal window and the validation process. However, this + processing and validation adds stability and accuracy to the sea level variables and make them adapted to climate + applications. This dataset includes uncertainties for each grid cell. More details about the sea level retrieval, + additional filters, optimisation procedures, and the error estimation are given in the Documentation section. + Variables in the dataset/application are: Absolute dynamic topography, Absolute geostrophic velocity meridian + component, Absolute geostrophic velocity zonal component, Geostrophic velocity anomalies meridian component, + Geostrophic velocity anomalies zonal component, Sea level anomaly + platform: + instrument: + platformSerialIdentifier: + processingLevel: + keywords: Climate,ECMWF,CDS,C3S,sea,level,mediterranean + sensorType: HYDROLOGICAL + license: proprietary + title: Sea level daily gridded data from satellite observations for the Mediterranean Sea + missionStartDate: "1993-01-01T00:00:00Z" + missionEndDate: "2018-11-01T23:59:59Z" + SEASONAL_POSTPROCESSED_SL: abstract: | This entry covers single-level data post-processed for bias adjustment on a monthly time resolution. @@ -3092,7 +3638,7 @@ SIS_HYDRO_MET_PROJ: missionStartDate: "1970-01-01T00:00:00Z" missionEndDate: "2100-12-31T23:59:00Z" -# CEMS +# MARK: CEMS FIRE_HISTORICAL: abstract: | @@ -3137,7 +3683,7 @@ GLOFAS_FORECAST: sensorType: ATMOSPHERIC license: proprietary title: River discharge and related forecasted data by the Global Flood Awareness System - missionStartDate: "2021-05-26T00:00:00Z" + missionStartDate: "2019-11-05T00:00:00Z" GLOFAS_HISTORICAL: abstract: | @@ -3290,6 +3836,7 @@ EFAS_FORECAST: license: proprietary title: River discharge and related forecasted data by the European Flood Awareness System missionStartDate: "2018-10-11T00:00:00Z" + missionEndDate: "2023-09-19T00:00:00Z" EFAS_HISTORICAL: abstract: | @@ -3395,6 +3942,7 @@ EFAS_SEASONAL: license: proprietary title: Seasonal forecasts of river discharge and related data by the European Flood Awareness System missionStartDate: "2020-11-01T00:00:00Z" + missionEndDate: "2023-09-30T00:00:00Z" EFAS_SEASONAL_REFORECAST: abstract: | @@ -3431,7 +3979,7 @@ EFAS_SEASONAL_REFORECAST: missionStartDate: "1991-01-01T00:00:00Z" missionEndDate: "2020-10-01T00:00:00Z" -# COPERNICUS Digital Elevation Model +# MARK: COPERNICUS Digital Elevation Model COP_DEM_GLO30_DGED: abstract: | Defence Gridded Elevation Data (DGED, 32 Bit floating point) formatted Copernicus DEM GLO-30 data. @@ -3497,7 +4045,7 @@ COP_DEM_GLO90_DTED: title: Copernicus DEM GLO-90 DTED missionStartDate: "2010-06-21T00:00:00Z" -# Copernicus Land Monitoring Service +# MARK: Copernicus Land Monitoring Service CLMS_CORINE: abstract: | The CORINE Land Cover (CLC) inventory was initiated in 1985 (reference year 1990). Updates have been produced in @@ -3548,6 +4096,7 @@ CLMS_GLO_NDVI_333M: license: proprietary title: Global 10-daily Normalized Difference Vegetation Index 333M missionStartDate: "2014-01-01T00:00:00Z" + missionEndDate: "2021-01-01T23:59:59Z" CLMS_GLO_NDVI_1KM_LTS: abstract: | @@ -3705,7 +4254,9 @@ EEA_DAILY_VI: title: Vegetation Indices, daily, UTM projection missionStartDate: -# METEOBLUE -------------------------------------------------------------------------- + + +# MARK: METEOBLUE ---------------------------------------------------------------------- NEMSGLOBAL_TCDC: abstract: | Total cloud cover from NOAAmodel Environment Monitoring System (NEMS) global model. @@ -3741,7 +4292,1319 @@ NEMSAUTO_TCDC: title: NEMSAUTO Total Cloud Cover daily mean missionStartDate: "1984-01-01T00:00:00Z" -# GENERIC---------------------------------------------------------------------- +# MARK: DE DT Outputs ------------------------------------------------------------------ +DT_EXTREMES: + abstract: | + The Digital Twin on Weather-Induced and Geophysical Extremes provides capabilities + for the assessment and prediction of environmental extremes in support of risk + assessment and management. + instrument: + platform: Digital Twin + platformSerialIdentifier: DT + processingLevel: + keywords: DT,DE,LUMI,Destination-Earth,Digital-Twin,Weather,Geophysical,Extremes + sensorType: ATMOSPHERIC + license: proprietary + title: Weather and Geophysical Extremes Digital Twin (DT) + missionStartDate: "2020-01-01T00:00:00Z" +DT_CLIMATE_ADAPTATION: + abstract: | + The Digital Twin on Climate Change Adaptation support the analysis and testing of + scenarios. This in turn will support sustainable development and climate adaptation + and mitigation policy-making at multi-decadal timescales, at regional and national + levels. + instrument: + platform: Digital Twin + platformSerialIdentifier: DT + processingLevel: + keywords: DT,DE,LUMI,Destination-Earth,Digital-Twin,Climate,Change,Adaptation + sensorType: ATMOSPHERIC + license: proprietary + title: Climate Change Adaptation Digital Twin (DT) + missionStartDate: "2020-01-01T00:00:00Z" + +# MARK: METOP -------------------------------------------------------------------------- +METOP_AMSU_L1: + abstract: | + The Advanced Microwave Sounding Unit-A (AMSU-A) is a 15-channel microwave radiometer + that is used for measuring global atmospheric temperature profiles and will provide + information on atmospheric water in all of its phases (with the exception of small + ice particles, which are transparent at microwave frequencies). AMSU-A will provide + information even in cloudy conditions. AMSU-A measures Earth radiance at frequencies + (in GHz) as listed under the instrument channel information. + instrument: AMSU-A + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L1 + keywords: METOP,AMSU-A,SOUNDER,L1,L1B,WATER,ATHMOSPHERE,TEMPERATURE,AMSxxx1B,AMSUL1 + sensorType: SOUNDER + license: proprietary + title: AMSU-A Level 1B - Metop - Global + missionStartDate: "2008-03-01T00:00:00Z" +METOP_OSI_104: + abstract: | + Equivalent neutral 10m winds over the global oceans, with specific sampling to + provide as many observations as possible near the coasts. Better than using this + archived NRT product, please use the reprocessed ASCAT winds data records + (METOP_OSI_150A, METOP_OSI_150B). + For Metop-A, t is recommended that the reprocessed ASCAT winds data records + (10.15770/EUM_SAF_OSI_0007) are used instead of this archived NRT product for the + period before 1 April 2014. + instrument: ASCAT + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L2 + keywords: METOP,ASCAT,SCATTEROMETER,L2,WEATHER,OCEAN-SURFACE-WIND,OCEAN,RADAR-BACKSCATTER-NRCS,OSI-104,ASCAT12+,OSI-104-C,OSI-104-B,OASWC12 + sensorType: SCATTEROMETER + license: proprietary + title: ASCAT Coastal Winds at 12.5 km Swath Grid - Metop + missionStartDate: "2013-04-16T00:00:00Z" +METOP_OSI_150A: + abstract: | + The ASCAT Wind Product contains stress equivalent 10m winds (speed and direction) + over the global oceans. The winds are obtained through the processing of reprocessed + scatterometer backscatter data originating from the ASCAT instrument on EUMETSAT's + Metop satellite. + instrument: ASCAT + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L2 + keywords: METOP,ASCAT,SCATTEROMETER,L2,WEATHER,OCEAN-SURFACE-WIND,OCEAN,RADAR-BACKSCATTER-NRCS,OSI-150-A,OR1ASW025,REPASC25 + sensorType: SCATTEROMETER + license: proprietary + title: ASCAT L2 25 km Winds Data Record Release 1 - Metop + missionStartDate: "2007-01-01T00:00:00Z" + missionEndDate: "2014-04-01T00:00:00Z" +METOP_OSI_150B: + abstract: | + The ASCAT Wind Product contains stress equivalent 10m winds (speed and direction) + over the global oceans. The winds are obtained through the processing of reprocessed + scatterometer backscatter data originating from the ASCAT instrument on EUMETSAT's + Metop satellite. + instrument: ASCAT + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L2 + keywords: METOP,ASCAT,SCATTEROMETER,L2,WEATHER,OCEAN-SURFACE-WIND,OCEAN,RADAR-BACKSCATTER-NRCS,OSI-150-B,OR1ASWC12,REPASC12+ + sensorType: SCATTEROMETER + license: proprietary + title: ASCAT L2 12.5 km Winds Data Record Release 1 - Metop + missionStartDate: "2007-01-01T00:00:00Z" + missionEndDate: "2014-04-01T00:00:00Z" +METOP_ASCSZF1B: + abstract: | + The prime objective of the Advanced SCATterometer (ASCAT) is to measure wind speed + and direction over the oceans, and the main operational application is the + assimilation of ocean winds in NWP models. Other operational applications, based on + the use of measurements of the backscattering coefficient, are sea ice edge + detection and monitoring, monitoring sea ice, snow cover, soil moisture and surface + parameters. This product consists of geo-located radar backscatter values along the + six ASCAT beams. The different beam measurements are not collocated into a regular + swath grid and the individual measurements are not spatially averaged. The + resolution of each of the 255 backscatter values per each beam varies slightly along + the beam, but it is approximately 10km (in the along beam direction) x 25 km (across + the beam). This product is usually referred to as 'ASCAT Level 1B Full resolution + product'. Note that some of the data are reprocessed. Please refer to the associated + product validation reports or product release notes for further information. + instrument: ASCAT + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L1 + keywords: METOP,ASCAT,SCATTEROMETER,L1,OCEAN,RADAR-BACKSCATTER-NRCS,ASCSZF1B + sensorType: SCATTEROMETER + license: proprietary + title: ASCAT Level 1 Sigma0 Full Resolution - Metop - Global + missionStartDate: "2007-05-31T00:00:00Z" +METOP_ASCSZR1B: + abstract: | + The prime objective of the Advanced SCATterometer (ASCAT) is to measure wind speed + and direction over the oceans, and the main operational application is the + assimilation of ocean winds in NWP models. Other operational applications, based on + the use of measurements of the backscattering coefficient, are sea ice edge + detection and monitoring, monitoring sea ice, snow cover, soil moisture and surface + parameters. The product is available from the archive in 2 different spatial + resolutions; 25 km and 12.5 km. Note that some of the data are reprocessed. Please + refer to the associated product validation reports or product release notes for + further information. Near real-time distribution discontinued on 29/09/2015 but the + product contents are now available in the corresponding Level 2 product 'ASCAT Soil + Moisture at 12.5 km Swath Grid'. + instrument: ASCAT + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L1 + keywords: METOP,ASCAT,SCATTEROMETER,L1,LAND,OCEAN,RADAR-BACKSCATTER-NRCS,ASCSZR1B + sensorType: SCATTEROMETER + license: proprietary + title: ASCAT Level 1 Sigma0 resampled at 12.5 km Swath Grid - Metop - Global + missionStartDate: "2007-03-01T00:00:00Z" +METOP_ASCSZO1B: + abstract: | + The prime objective of the Advanced SCATterometer (ASCAT) is to measure wind speed + and direction over the oceans, and the main operational application is the + assimilation of ocean winds in NWP models. Other operational applications, based on + the use of measurements of the backscattering coefficient, are sea ice edge + detection and monitoring, monitoring sea ice, snow cover, soil moisture and surface + parameters. The product is available from the archive in 2 different spatial + resolutions; 25 km and 12.5 km. Note that some of the data are reprocessed. Please + refer to the associated product validation reports or product release notes for + further information. Near real-time distribution discontinued on 29/09/2015 but the + product contents are now available in the corresponding Level 2 product 'ASCAT Soil + Moisture at 25 km Swath Grid'. + instrument: ASCAT + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L1 + keywords: METOP,ASCAT,SCATTEROMETER,L1,LAND,OCEAN,RADAR-BACKSCATTER-NRCS,ASCSZO1B + sensorType: SCATTEROMETER + license: proprietary + title: ASCAT Level 1 Sigma0 resampled at 25 km Swath Grid - Metop - Global + missionStartDate: "2007-03-01T00:00:00Z" +METOP_ASCSZFR02: + abstract: | + Reprocessed L1B data from the Advanced Scatterometer (ASCAT) on METOP-A, resampled + at full resolution (SZF). Normalized radar cross section (NRCS) of the Earth surface + together with measurement time, location (latitude and longitude) and geometrical + information (incidence and azimuth angles). The prime objective of the Advanced + SCATterometer (ASCAT) is to measure wind speed and direction over the oceans, and + the main operational application is the assimilation of ocean winds in NWP models. + Other operational applications, based on the use of measurements of the + backscattering coefficient, are sea ice edge detection and monitoring, monitoring + sea ice, snow cover, soil moisture and surface parameters. This product is also + available at 12.5 and 25 km Swath Grids. This is a Fundamental Climate Data Record + (FCDR). + instrument: ASCAT + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L1 + keywords: METOP,ASCAT,SCATTEROMETER,L1,CLIMATE,FUNDAMENTAL-CLIMATE-DATA-RECORD,ASCSZF1B0200,ASCSZFR02 + sensorType: SCATTEROMETER + license: proprietary + title: ASCAT Level 1 SZF Climate Data Record Release 2 - Metop + missionStartDate: "2007-01-01T00:00:00Z" + missionEndDate: "2014-04-01T00:00:00Z" +METOP_ASCSZOR02: + abstract: | + Reprocessed L1B data from the Advanced Scatterometer (ASCAT) on METOP-A, resampled + at 25 km Swath Grid (SZO). Normalized radar cross section (NRCS) triplets of the + Earth surface together with measurement time, location (latitude and longitude) and + geometrical information (incidence and azimuth angles). The prime objective of the + Advanced SCATterometer (ASCAT) is to measure wind speed and direction over the + oceans, and the main operational application is the assimilation of ocean winds in + NWP models. Other operational applications, based on the use of measurements of the + backscattering coefficient, are sea ice edge detection and monitoring, monitoring + sea ice, snow cover, soil moisture and surface parameters. This product is also + available at full resolution and at 12.5 km Swath Grid. This is a Fundamental + Climate Data Record (FCDR). + instrument: ASCAT + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L1 + keywords: METOP,ASCAT,SCATTEROMETER,L1,CLIMATE,FUNDAMENTAL-CLIMATE-DATA-RECORD,ASCSZOR02,ASCSZO1B0200 + sensorType: SCATTEROMETER + license: proprietary + title: ASCAT Level 1 SZO Climate Data Record Release 2 - Metop + missionStartDate: "2007-01-01T00:00:00Z" + missionEndDate: "2014-04-01T00:00:00Z" +METOP_ASCSZRR02: + abstract: | + Reprocessed L1B data from the Advanced Scatterometer (ASCAT) on METOP-A, resampled + at 12.5 km Swath Grid (SZR). Normalized radar cross section (NRCS) triplets of the + Earth surface together with measurement time, location (latitude and longitude) and + geometrical information (incidence and azimuth angles). The prime objective of the + Advanced SCATterometer (ASCAT) is to measure wind speed and direction over the + oceans, and the main operational application is the assimilation of ocean winds in + NWP models. Other operational applications, based on the use of measurements of the + backscattering coefficient, are sea ice edge detection and monitoring, monitoring + sea ice, snow cover, soil moisture and surface parameters. This product is also + available at full resolution and at 25 km Swath Grid. This is a Fundamental Climate + Data Record (FCDR). + instrument: ASCAT + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L1 + keywords: METOP,ASCAT,SCATTEROMETER,L1,CLIMATE,FUNDAMENTAL-CLIMATE-DATA-RECORD,ASCSZR1B0200,ASCSZRR02 + sensorType: SCATTEROMETER + license: proprietary + title: ASCAT Level 1 SZR Climate Data Record Release 2 - Metop + missionStartDate: "2007-01-01T00:00:00Z" + missionEndDate: "2014-04-01T00:00:00Z" +METOP_SOMO12: + abstract: | + The Soil Moisture (SM) product is derived from the Advanced SCATterometer (ASCAT) + backscatter observations and given in swath orbit geometry (12.5 km sampling). This + SM product provides an estimate of the water content of the 0-5 cm topsoil layer, + expressed in degree of saturation between 0 and 100 [%]. The algorithm used to + derive this parameter is based on a linear relationship of SM and scatterometer + backscatter and uses change detection techniques to eliminate the contributions of + vegetation, land cover and surface topography, considered invariant from year to + year. Seasonal vegetation effects are modelled by exploiting the multi-angle viewing + capabilities of ASCAT. The SM processor has been developed by Vienna University of + Technology (TU Wien). Note that some of the data are reprocessed. Please refer to + the associated product validation reports or product release notes for further + information. + instrument: ASCAT + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L2 + keywords: METOP,ASCAT,SCATTEROMETER,L2,LAND,SOIL-MOISTURE,SOMO12,ASCSMR02,SSM-ASCAT-C-NRT-O12.5,H101,H16,H104 + sensorType: SCATTEROMETER + license: proprietary + title: ASCAT Soil Moisture at 12.5 km Swath Grid in NRT - Metop + missionStartDate: "2007-06-01T00:00:00Z" +METOP_SOMO25: + abstract: | + The Soil Moisture (SM) product is derived from the Advanced SCATterometer (ASCAT) + backscatter observations and given in swath orbit geometry (25 km sampling). This SM + product provides an estimate of the water content of the 0-5 cm topsoil layer, + expressed in degree of saturation between 0 and 100 [%]. The algorithm used to + derive this parameter is based on a linear relationship of SM and scatterometer + backscatter and uses change detection techniques to eliminate the contributions of + vegetation, land cover and surface topography, considered invariant from year to + year. Seasonal vegetation effects are modelled by exploiting the multi-angle viewing + capabilities of ASCAT. The SM processor has been developed by Vienna University of + Technology (TU Wien). Note that some of the data are reprocessed. Please refer to + the associated product validation reports or product release notes for further + information. + instrument: ASCAT + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L2 + keywords: METOP,ASCAT,SCATTEROMETER,L2,LAND,SOIL-MOISTURE,ASCSMO02,H102,H103,SOMO25,H105,SSM-ASCAT-C-NRT-O25 + sensorType: SCATTEROMETER + license: proprietary + title: ASCAT Soil Moisture at 25 km Swath Grid in NRT - Metop + missionStartDate: "2007-06-01T00:00:00Z" +METOP_AVHRRGACR02: + abstract: | + This is the second release of the reprocessed polar Atmospheric Motion Vectors (AMV) + Thematic Climate Data Record (TCDR) from the Advanced Very High Resolution + Radiometer (AVHRR) in Global Area Coverage (GAC), from TIROS-N, NOAA-06, 07, 08, 09, + 10, 11, 12, 14, 15, 16, 17, 18 and 19 and Metop-A and -B. It contains AMVs at all + heights below the tropopause, derived from images in the Infrared channel at 10.8 + microns. Vectors are retrieved by tracking the motion of clouds in two consecutive + images. The height assignment of the AMVs is calculated using the Cross-Correlation + Contribution (CCC) function to determine the height using the pixels that contribute + the most to the vectors. A quality indicator is derived for each vector to assess + the reliability of the retrieval. Products are stored in netCDF4 format and cover + the period from January 1979 to September 2019. + This is a Thematic Climate Data Record (TCDR). + instrument: AVHRR + platform: METOP,TIROS,NOAA + platformSerialIdentifier: METOP,TIROS,NOAA + processingLevel: L2 + keywords: METOP,AVHRR,RADIOMETER,L2,WIND,CLIMATE,ATMOSPHERE,THEMATIC-CLIMATE-DATA-RECORD,AVHGAC020200 + sensorType: RADIOMETER + license: proprietary + title: AVHRR GAC Atmospheric Motion Vectors Climate Data Record Release 2 - Multimission - Polar + missionStartDate: "1979-01-01T00:00:00Z" + missionEndDate: "2019-09-01T00:00:00Z" +METOP_AVHRRL1: + abstract: | + The Advanced Very High Resolution Radiometer (AVHRR) operates at 5 different channels simultaneously in the visible + and infrared bands, with wavelengths specified in the instrument channels description. Channel 3 switches between 3a + and 3b for daytime and nighttime. As a high-resolution imager (about 1.1 km near nadir) its main purpose is to + provide cloud and surface information such as cloud coverage, cloud top temperature, surface temperature over land + and sea, and vegetation or snow/ice. In addition, AVHRR products serve as input for the level 2 processing of IASI + and ATOVS. + instrument: AVHRR + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L1 + keywords: METOP,AVHRR,RADIOMETER,L1,ATMOSPHERE,OCEAN,AVHXXX1B,AVHRRL1 + sensorType: RADIOMETER + license: proprietary + title: AVHRR Level 1B - Metop - Global + missionStartDate: "2008-03-01T00:00:00Z" +METOP_LSA_002: + abstract: | + The EDLST (EPS Daily Land Surface Temperature) provides a composite of day-time and nigh-time retrievals of LST + based on clear-sky measurements from the Advanced Very High Resolution Radiometer (AVHRR) on-board EUMETSAT polar + system satellites, the Metop series. + instrument: AVHRR + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L3 + keywords: METOP,AVHRR,RADIOMETER,L3,LAND-SURFACE-TEMPERATURE,SURFACE-RADIATION-BUDGET,LAND,EDLST,LSA-002 + sensorType: RADIOMETER + license: proprietary + title: Daily Land Surface Temperature - Metop + missionStartDate: "2015-01-01T00:00:00Z" +METOP_GLB_SST_NC: + abstract: | + Global Metop/AVHRR sub-skin Sea Surface Temperature (GBL SST) is a 12 hourly synthesis on a 0.05° global grid. The + product format is compliant with the Data Specification (GDS) version 2 from the Group for High Resolution Sea + Surface Temperatures (GHRSST). + instrument: AVHRR + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L3 + keywords: METOP,AVHRR,RADIOMETER,L3,OCEAN,SEA-SURFACE-TEMPERATURE,OSSTGLBN,OSI-201-B,GLB-SST,OSSTGLB + sensorType: RADIOMETER + license: proprietary + title: Global L3C AVHRR Sea Surface Temperature (GHRSST) - Metop + missionStartDate: "2016-07-12T00:00:00Z" +METOP_GOMEL1: + abstract: | + The Global Ozone Monitoring Experiment-2 (GOME-2) spectrometer measures profiles and total columns of ozone and of + other atmospheric constituents that are related to the depletion of ozone in the stratosphere and its production in + the troposphere, as well as to natural and anthropogenic sources of pollution. + instrument: GOME-2 + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L1 + keywords: METOP,GOME-2,SPECTROMETER,L1,ATMOSPHERE,GOMEL1,GOMXXX1B + sensorType: SPECTROMETER + license: proprietary + title: GOME-2 Level 1B - Metop - Global + missionStartDate: "2007-01-01T00:00:00Z" +METOP_GOMEL1R03: + abstract: | + This is release 3 of the Global Ozone Monitoring Experiment 2 (GOME-2) Level 1B Fundamental Data Record from Metop-A + and -B. GOME-2 is an optical spectrometer. GOME-2 senses the Earth's backscattered radiance and extra-terrestrial + solar irradiance in the ultraviolet and visible part of the spectrum (240 nm - 790 nm) at a high spectral resolution + between 0.26 nm and 0.51 nm. There are 4096 spectral points from four detector channels transferred for each + individual GOME-2 measurement. This is a Fundamental Data Record (FDR). Disclaimer: GOME2-A channel 3 should be + careful to use for the period: April 2007 until March 2009 when doing DOAS retrievals. + instrument: GOME-2 + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L1 + keywords: METOP,GOME-2,SPECTROMETER,L1,CLIMATE,FUNDAMENTAL-DATA-RECORD,FDR,CLOUDS,ATMOSPHERE,RADIATION,GOMXXX1B0300 + sensorType: SPECTROMETER + license: proprietary + title: GOME-2 Level 1B Fundamental Data Record Release 3 - Metop-A and -B + missionStartDate: "2007-04-01T00:00:00Z" + missionEndDate: "2020-08-01T00:00:00Z" +METOP_IASTHR011: + abstract: | + This is the release 1.1 of the climate data record of "all-sky" temperature and humidity profiles and their + associated quality parameters. The CDR was processed using the latest operational EUMETSAT algorithms available + (V6.5.4, 12/2019). It consists of the outputs of the statistical retrieval module Piece Wise Linear Regression only. + This provides a homogeneous CDR throughout the time period. + On the 8 August 2023, year 2022 was added to the CDR. + This is a Thematic Climate Data Record (TCDR). + instrument: IASI + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L2 + keywords: METOP,IASI,INTERFEROMETER,L2,CLIMATE,TEMPERATURE,ATMOSPHERE,HUMIDITY,LAND-SURFACE-TEMPERATURE,THEMATIC-CLIMATE-DATA-RECORD,SEA-SURFACE-TEMPERATURE,IASTHPW30101 + sensorType: INTERFEROMETER + license: proprietary + title: IASI All Sky Temperature and Humidity Profiles - Climate Data Record Release 1.1 - Metop-A and -B + missionStartDate: "2007-07-10T00:00:00Z" + missionEndDate: "2023-01-01T00:00:00Z" +METOP_IASSND02: + abstract: | + The main objective of the Infrared Atmospheric Sounding Interferometer (IASI) is to provide high resolution + atmospheric emission spectra to derive temperature and humidity profiles with high spectral and vertical resolution + and accuracy. Additionally, it is used for the determination of trace gases such as ozone, as well as land and sea + surface temperature, emissivity and cloud properties. This combined product (IASI Atmospheric Temperature Water + Vapour and Surface Skin Temperature; IASI Cloud Parameters; IASI Ozone and IASI Trace Gases contains temperature + Profiles, Humidity Profiles, Surface Temperature, Surface Emissivity, Fractional Cloud Cover, Cloud Top Temperature, + Cloud Top Pressure, Cloud Phase, Total Column Ozone, Columnar ozone amounts in thick layers, Total column N2O, CO, + CH4, CO2 - all combined in one product. + instrument: IASI + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L2 + keywords: METOP,IASI,INTERFEROMETER,L2,CLIMATE,TEMPERATURE,ATMOSPHERE,HUMIDITY,IASSND02 + sensorType: INTERFEROMETER + license: proprietary + title: IASI Combined Sounding Products - Metop + missionStartDate: "2008-02-13T00:00:00Z" +METOP_IASIL1C_ALL: + abstract: | + This product covers all spectral samples. The main objective of the Infrared Atmospheric Sounding Interferometer + (IASI) is to provide high resolution atmospheric emission spectra to derive temperature and humidity profiles with + high spectral and vertical resolution and accuracy. Additionally it is used for the determination of trace gases + such as ozone, nitrous oxide, carbon dioxide and methane, as well as land and sea surface temperature, emissivity + and cloud properties. The IASI L1c product contains infra-red radiance spectra at 0.5cm-1 resolution. The EUMETCast + product has for each sounder pixel 8461 spectral samples covering the range between 645.0 cm-1 and 2760 cm-1. + instrument: IASI + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L1 + keywords: METOP,IASI,INTERFEROMETER,L1,L1C,ATMOSPHERE,IASIL1C-ALL,IASxxx1C + sensorType: INTERFEROMETER + license: proprietary + title: IASI Level 1C - All Spectral Samples - Metop - Global + missionStartDate: "2009-03-23T00:00:00Z" +METOP_MHSL1: + abstract: | + The Microwave Humidity Sounder (MHS) is a 5 channel instrument used to provide input to the retrieval of surface + temperatures, emissivities, and atmospheric humidity. In combination with AMSU-A information it can also be used to + process precipitation rates and related cloud properties, as well as to detect sea ice and snow coverage. + instrument: MHS + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L1 + keywords: METOP,MHS,SOUNDER,L1,L1B,ATMOSPHERE,MHSxxx1B,MHSL1 + sensorType: SOUNDER + license: proprietary + title: MHS Level 1B - Metop - Global + missionStartDate: "2009-03-23T00:00:00Z" +METOP_HIRSL1: + abstract: | + The High Resolution Infrared Sounder (HIRS) operates at 20 channels (19 channels in the infrared and one in the + visible). Its main purpose is to provide input for the vertical temperature and humidity profile retrievals. In + addition, the HIRS pixel resolution serves as the standard grid resolution for all ATOVS level 2 products. + instrument: HIRS + platform: METOP + platformSerialIdentifier: METOP + processingLevel: L1 + keywords: METOP,HIRS,SOUNDER,L1,L1B,ATMOSPHERE,HIRxxx1B,HIRSL1 + sensorType: SOUNDER + license: proprietary + title: HIRS Level 1B - Metop - Global + missionStartDate: "2009-03-23T00:00:00Z" + +# Copernicus Marine +MO_GLOBAL_ANALYSISFORECAST_PHY_001_024: + abstract: | + The Operational Mercator global ocean analysis and forecast system at 1/12 degree is providing 10 days of 3D global + ocean forecasts updated daily. The time series is aggregated in time in order to reach a two full year's time series + sliding window. This product includes daily and monthly mean files of temperature, salinity, currents, sea level, + mixed layer depth and ice parameters from the top to the bottom over the global ocean. It also includes hourly mean + surface fields for sea level height, temperature and currents. The global ocean output files are displayed with a + 1/12 degree horizontal resolution with regular longitude/latitude equirectangular projection. 50 vertical levels are + ranging from 0 to 5500 meters. This product also delivers a special dataset for surface current which also includes + wave and tidal drift called SMOC (Surface merged Ocean Current). DOI (product) : https://doi.org/10.48670/moi-00016 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,analysis,forecast,marine,physics + sensorType: + license: proprietary + title: Global Ocean Physics Analysis and Forecast + missionStartDate: "2019-01-01T00:00:00Z" + +MO_GLOBAL_ANALYSISFORECAST_BGC_001_028: + abstract: | + The Operational Mercator Ocean biogeochemical global ocean analysis and forecast system at 1/4 degree is providing + 10 days of 3D global ocean forecasts updated weekly. The time series is aggregated in time, in order to reach a two + full year's time series sliding window. This product includes daily and monthly mean files of biogeochemical + parameters (chlorophyll, nitrate, phosphate, silicate, dissolved oxygen, dissolved iron, primary production, + phytoplankton, PH, and surface partial pressure of carbon dioxyde) over the global ocean. The global ocean output + files are displayed with a 1/4 degree horizontal resolution with regular longitude/latitude equirectangular + projection. 50 vertical levels are ranging from 0 to 5700 meters. + NEMO version (v3.6_STABLE) + Forcings: + GLOBAL_ANALYSIS_FORECAST_PHYS_001_024 at daily frequency. + Outputs mean fields are interpolated on a standard + regular grid in NetCDF format. + Initial conditions: World Ocean Atlas 2013 for nitrate, phosphate, silicate and + dissolved oxygen, GLODAPv2 for DIC and Alkalinity, and climatological model outputs for Iron and DOC + + Quality/Accuracy/Calibration information: See the related + QuID[http://catalogue.marine.copernicus.eu/documents/QUID/CMEMS-GLO-QUID-001-028.pdf] DOI (product): https://doi.org/10.48670/moi-00015 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,analysis,forecast,marine,biogeochemical,biogeochemistry + sensorType: + license: proprietary + title: Global Ocean Biogeochemistry Analysis and Forecast + missionStartDate: "2021-10-01T00:00:00Z" + +MO_GLOBAL_ANALYSISFORECAST_WAV_001_027: + abstract: | + The operational global ocean analysis and forecast system of Météo-France with a resolution of 1/12 degree is + providing daily analyses and 10 days forecasts for the global ocean sea surface waves. This product includes + 3-hourly instantaneous fields of integrated wave parameters from the total spectrum (significant height, period, + direction, Stokes drift,...etc), as well as the following partitions: the wind wave, the primary and secondary swell + waves. The global wave system of Météo-France is based on the wave model MFWAM which is a third generation wave + model. MFWAM uses the computing code ECWAM-IFS-38R2 with a dissipation terms developed by Ardhuin et al. (2010). The + model MFWAM was upgraded on november 2014 thanks to improvements obtained from the european research project « my wave » + (Janssen et al. 2014). The model mean bathymetry is generated by using 2-minute gridded global topography data + ETOPO2/NOAA. Native model grid is irregular with decreasing distance in the latitudinal direction close to the poles. + At the equator the distance in the latitudinal direction is more or less fixed with grid size 1/10°. The operational + model MFWAM is driven by 6-hourly analysis and 3-hourly forecasted winds from the IFS-ECMWF atmospheric system. The + wave spectrum is discretized in 24 directions and 30 frequencies starting from 0.035 Hz to 0.58 Hz. The model MFWAM + uses the assimilation of altimeters with a time step of 6 hours. The global wave system provides analysis 4 times a + day, and a forecast of 10 days at 0:00 UTC. The wave model MFWAM uses the partitioning to split the swell spectrum + in primary and secondary swells. DOI (product) : https://doi.org/10.48670/moi-00017 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,analysis,forecast,marine,waves,surface + sensorType: + license: proprietary + title: Global Ocean Waves Analysis and Forecast + missionStartDate: "2021-01-01T00:00:00Z" + +MO_GLOBAL_MULTIYEAR_BGC_001_033: + abstract: | + The Low and Mid-Trophic Levels (LMTL) reanalysis for global ocean is produced at [https://www.cls.fr CLS] on behalf + of Global Ocean Marine Forecasting Center. It provides 2D fields of biomass content of zooplankton and six functional + groups of micronekton. It uses the LMTL component of SEAPODYM dynamical population model (http://www.seapodym.eu). + No data assimilation has been done. This product also contains forcing data: net primary production, euphotic depth, + depth of each pelagic layers zooplankton and micronekton inhabit, average temperature and currents over pelagic layers. + Forcings sources: + Ocean currents and temperature (CMEMS multiyear product) + Net Primary Production computed from + chlorophyll a, Sea Surface Temperature and Photosynthetically Active Radiation observations (chlorophyll from CMEMS + multiyear product, SST from NOAA NCEI AVHRR-only Reynolds, PAR from INTERIM) and relaxed by model outputs at high + latitudes (CMEMS biogeochemistry multiyear product) + Vertical coverage: + Epipelagic layer + Upper mesopelagic layer + Lower mesopelagic layer (max. 1000m) + DOI (product) : https://doi.org/10.48670/moi-00020 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,hindcast,marine,biomass,LMTL + sensorType: + license: proprietary + title: Global ocean low and mid trophic levels biomass content hindcast + missionStartDate: "1998-01-01T00:00:00Z" + missionEndDate: "2022-12-31T23:59:59Z" + +MO_GLOBAL_MULTIYEAR_WAV_001_032: + abstract: | + GLOBAL_REANALYSIS_WAV_001_032 for the global wave reanalysis describing past sea states since years 1993. This product + also bears the name of WAVERYS within the GLO-HR MFC. for correspondence to other global multi-year products like GLORYS. + BIORYS. etc. The core of WAVERYS is based on the MFWAM model. a third generation wave model that calculates the wave + spectrum. i.e. the distribution of sea state energy in frequency and direction on a 1/5° irregular grid. Average wave + quantities derived from this wave spectrum, such as the SWH (significant wave height) or the average wave period, are + delivered on a regular 1/5° grid with a 3h time step. The wave spectrum is discretized into 30 frequencies obtained from + a geometric sequence of first member 0.035 Hz and a reason 7.5. WAVERYS takes into account oceanic currents from the + GLORYS12 physical ocean reanalysis and assimilates significant wave height observed from historical altimetry missions + and directional wave spectra from Sentinel 1 SAR from 2017 onwards. DOI (product): https://doi.org/10.48670/moi-00022 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,reanalysis,forecast,marine,waves,WAVERYS + sensorType: + license: proprietary + title: Global Ocean Waves Reanalysis + missionStartDate: "1993-01-01T00:00:00Z" + missionEndDate: "2024-01-31T21:00:00Z" + +MO_GLOBAL_MULTIYEAR_PHY_ENS_001_031: + abstract: | + You can find here the CMEMS Global Ocean Ensemble Reanalysis product at ¼ degree resolution: monthly means of Temperature, Salinity, + Currents and Ice variables for 75 vertical levels, starting from 1993 onward.\n \nGlobal ocean reanalyses are homogeneous 3D gridded + descriptions of the physical state of the ocean covering several decades, produced with a numerical ocean model constrained with data + assimilation of satellite and in situ observations. These reanalyses are built to be as close as possible to the observations + (i.e. realistic) and in agreement with the model physics The multi-model ensemble approach allows uncertainties or error bars in + the ocean state to be estimated.\n\nThe ensemble mean may even provide for certain regions and/or periods a more reliable estimate + than any individual reanalysis product.\n\nThe four reanalyses, used to create the ensemble, covering “altimetric era” period + (starting from 1st of January 1993) during which altimeter altimetry data observations are available:\n GLORYS2V4 from Mercator Ocean (Fr); + \n ORAS5 from ECMWF;\n GloSea5 from Met Office (UK);\n and C-GLORSv7 from CMCC (It);\n + \nThese four products provided four different time series of global ocean simulations 3D monthly estimates. All numerical products + available for users are monthly or daily mean averages describing the ocean. + \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00024 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,ensemble,multiyear,reanalysis,temperature,currents,salinity,ice,physics + sensorType: + license: proprietary + title: Global Ocean Ensemble Physics Reanalysis + missionStartDate: "1993-01-01T00:00:00Z" + missionEndDate: "2022-12-31T00:00:00Z" + +MO_INSITU_GLO_PHY_UV_DISCRETE_NRT_013_048: + abstract: | + This product is entirely dedicated to ocean current data observed in near-real time. Current data from 3 different types + of instruments are distributed:\n The near-surface zonal and meridional velocities calculated along the trajectories of + the drifting buoys which are part of the DBCP's Global Drifter Program. These data are delivered together with wind stress + components and surface temperature. \n The near-surface zonal and meridional total velocities, and near-surface radial + velocities, measured by High Frequency radars that are part of the European High Frequency radar Network. These data are + delivered together with standard deviation of near-surface zonal and meridional raw velocities, Geometrical Dilution of + Precision (GDOP), quality flags and metadata.\n The zonal and meridional velocities, at parking depth and in surface, + calculated along the trajectories of the floats which are part of the Argo Program.\n\nDOI (product):\nhttps://doi.org/10.48670/moi-00041 + instrument: + platform: + platformSerialIdentifier: + processingLevel: Level 2 + keywords: CMEMS,Mercator,ocean,insitu,NRT,currents,global,L2 + sensorType: + license: proprietary + title: Global Ocean- in-situ Near real time observations of ocean currents + missionStartDate: "1997-01-01T00:00:00Z" + +MO_INSITU_GLO_PHY_TS_OA_NRT_013_002: + abstract: | + For the Global Ocean- Gridded objective analysis fields of temperature and salinity using profiles from the in-situ near + real time database are produced monthly. Objective analysis is based on a statistical estimation method that allows presenting + a synthesis and a validation of the dataset, providing a support for localized experience (cruises), providing a validation + source for operational models, observing seasonal cycle and inter-annual variability. + \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00037 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,insitu,NRT,gridded,monthly,global,L4,analysis + sensorType: + license: proprietary + title: Global Ocean- Real time in-situ observations objective analysis + missionStartDate: "2015-01-01T00:00:00Z" + missionEndDate: "2024-04-01T00:00:00Z" + +MO_INSITU_GLO_PHY_TS_OA_MY_013_052: + abstract: | + Global Ocean- Gridded objective analysis fields of temperature and salinity using profiles from the reprocessed in-situ global + product CORA (INSITU_GLO_TS_REP_OBSERVATIONS_013_001_b) using the ISAS software. Objective analysis is based on a statistical + estimation method that allows presenting a synthesis and a validation of the dataset, providing a validation source for operational + models, observing seasonal cycle and inter-annual variability.\n\n**DOI (product):** \nhttps://doi.org/10.17882/46219 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,insitu,delayed,gridded,global,L4,analysis,temperature,salinity,CORA + sensorType: + license: proprietary + title: Global Ocean- Delayed Mode gridded CORA- In-situ Observations objective analysis in Delayed Mode + missionStartDate: "1960-01-01T00:00:00Z" + missionEndDate: "2023-06-01T00:00:00Z" + +MO_MULTIOBS_GLO_BIO_BGC_3D_REP_015_010: + abstract: | + This product consists of 3D fields of Particulate Organic Carbon (POC), Particulate Backscattering coefficient (bbp) + and Chlorophyll-a concentration (Chla) at depth. The reprocessed product is provided at 0.25°x0.25° horizontal resolution, + over 36 levels from the surface to 1000 m depth. A neural network method estimates both the vertical distribution of + Chla concentration and of particulate backscattering coefficient (bbp), a bio-optical proxy for POC, from merged surface + ocean color satellite measurements with hydrological properties and additional relevant drivers. + DOI (product): https://doi.org/10.48670/moi-00046 Product Citation: Please refer to our Technical FAQ for citing + products: http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169. + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,marine,POC,organic,carbon,particulate,chlorophyll,backscattering,bbp,Chla + sensorType: + license: proprietary + title: Global Ocean 3D Chlorophyll-a concentration, Particulate Backscattering coefficient and Particulate Organic Carbon + missionStartDate: "1998-01-07T00:00:00Z" + missionEndDate: "2021-12-29T00:00:00Z" + +MO_MULTIOBS_GLO_BIO_CARBON_SURFACE_REP_015_008: + abstract: | + This product corresponds to a REP L4 time series of monthly global reconstructed surface ocean pCO2, air-sea fluxes of CO2, + pH, total alkalinity, dissolved inorganic carbon, saturation state with respect to calcite and aragonite, and associated + uncertainties on a 0.25° x 0.25° regular grid. The product is obtained from an ensemble-based forward feed neural network + approach mapping situ data for surface ocean fugacity (SOCAT data base, Bakker et al. 2016, https://www.socat.info/) and + sea surface salinity, temperature, sea surface height, chlorophyll a, mixed layer depth and atmospheric CO2 mole fraction. + Sea-air flux fields are computed from the air-sea gradient of pCO2 and the dependence on wind speed of Wanninkhof (2014). + Surface ocean pH on total scale, dissolved inorganic carbon, and saturation states are then computed from surface ocean pCO2 + and reconstructed surface ocean alkalinity using the CO2sys speciation software.\n\nProduct Citation: Please refer to our + Technical FAQ for citing products: http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169. + \n\nDOI (product):\nhttps://doi.org/10.48670/moi-00047\n\nReferences:\n\n Chau, T. T. T., Gehlen, M., and + Chevallier, F.: A seamless ensemble-based reconstruction of surface ocean pCO2 and air-sea CO2 fluxes over the global + coastal and open oceans, Biogeosciences, 19, 1087-1109, https://doi.org/10.5194/bg-19-1087-2022, 2022.\n + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,surface,carbon,L4,REP + sensorType: + license: proprietary + title: Global Ocean Surface Carbon + missionStartDate: "1985-01-01T00:00:00Z" + missionEndDate: "2022-12-01T00:00:00Z" + +MO_MULTIOBS_GLO_BGC_NUTRIENTS_CARBON_PROFILES_MYNRT_015_009: + abstract: | + This product consists of vertical profiles of the concentration of nutrients (nitrates, phosphates, and silicates) and + carbonate system variables (total alkalinity, dissolved inorganic carbon, pH, and partial pressure of carbon dioxide), + computed for each Argo float equipped with an oxygen sensor.\nThe method called CANYON (Carbonate system and Nutrients + concentration from hYdrological properties and Oxygen using a Neural-network) is based on a neural network trained using + high-quality nutrient data collected over the last 30 years (GLODAPv2 database, https://www.glodap.info/). The method is + applied to each Argo float equipped with an oxygen sensor using as input the properties measured by the float (pressure, + temperature, salinity, oxygen), and its date and position.\n\nProduct Citation: Please refer to our Technical FAQ for + citing products: http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169.\n\nDOI (product): + \nhttps://doi.org/10.48670/moi-00048\n\nReferences:\n\n Sauzede R., H. C. Bittig, H. Claustre, O. Pasqueron de Fommervault, + J.-P. Gattuso, L. Legendre and K. S. Johnson, 2017: Estimates of Water-Column Nutrient Concentrations and Carbonate System + Parameters in the Global Ocean: A novel Approach Based on Neural Networks. Front. Mar. Sci. 4:128. + doi: 10.3389/fmars.2017.00128.\n Bittig H. C., T. Steinhoff, H. Claustre, B. Fiedler, N. L. Williams, R. Sauzède, + A. Körtzinger and J.-P. Gattuso,2018: An Alternative to Static Climatologies: Robust Estimation of Open Ocean CO2 Variables + and Nutrient Concentrations From T, S, and O2 Data Using Bayesian Neural Networks. Front. Mar. Sci. 5:328. doi: 10.3389/fmars.2018.00328.\n + instrument: + platform: + platformSerialIdentifier: + processingLevel: Level 3 + keywords: CMEMS,Mercator,ocean,global,vertical,nutrients,carbon,carbonate,L3 + sensorType: + license: proprietary + title: Nutrient and carbon profiles vertical distribution + missionStartDate: "2002-09-01T00:00:00Z" + missionEndDate: "2022-08-31T00:00:00Z" + +MO_MULTIOBS_GLO_PHY_MYNRT_015_003: + abstract: | + This product is a L4 REP and NRT global total velocity field at 0m and 15m together wiht its individual components + (geostrophy and Ekman) and related uncertainties. It consists of the zonal and meridional velocity at a 1h frequency and + at 1/4 degree regular grid. The total velocity fields are obtained by combining CMEMS satellite Geostrophic surface currents + and modelled Ekman currents at the surface and 15m depth (using ERA5 wind stress in REP and ERA5 in NRT). 1 hourly product, + daily and monthly means are available. This product has been initiated in the frame of CNES/CLS projects. Then it has been + consolidated during the Globcurrent project (funded by the ESA User Element Program). + \n\nProduct Citation:\nPlease refer to our Technical FAQ for citing products: + http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169. + \n\nDOI (product): \nhttps://doi.org/10.48670/mds-00327\n\nReferences:\n\n Rio, M.-H., S. Mulet, and N. Picot: + Beyond GOCE for the ocean circulation estimate: Synergetic use of altimetry, gravimetry, and in situ data provides new + insight into geostrophic and Ekman currents, Geophys. Res. Lett., 41, doi:10.1002/2014GL061773, 2014.\n + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,REP,NRT,geostrophic,currents,GLOBCURRENT,L4 + sensorType: + license: proprietary + title: Global Total (COPERNICUS-GLOBCURRENT), Ekman and Geostrophic currents at the Surface and 15m + missionStartDate: "1993-01-01T00:00:00Z" + +MO_MULTIOBS_GLO_PHY_S_SURFACE_MYNRT_015_013: + abstract: | + This product consits of daily global gap-free Level-4 (L4) analyses of the Sea Surface Salinity (SSS) and Sea Surface Density (SSD) + at 1/8° of resolution, obtained through a multivariate optimal interpolation algorithm that combines sea surface salinity images + from multiple satellite sources as NASA's Soil Moisture Active Passive (SMAP) and ESA's Soil Moisture Ocean Salinity (SMOS) satellites + with in situ salinity measurements and satellite SST information. The product was developed by the Consiglio Nazionale delle Ricerche (CNR) + and includes 4 datasets:\n cmems_obs-mob_glo_phy-sss_nrt_multi_P1D, which provides near-real-time (NRT) daily data + \n cmems_obs-mob_glo_phy-sss_nrt_multi_P1M, which provides near-real-time (NRT) monthly data\n cmems_obs-mob_glo_phy-sss_my_multi_P1D, + which provides multi-year reprocessed (REP) daily data \n cmems_obs-mob_glo_phy-sss_my_multi_P1M, which provides multi-year reprocessed (REP) + monthly data \n\nProduct citation: \nPlease refer to our Technical FAQ for citing products: + http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169.\n\nDOI + (product): \nhttps://doi.org/10.48670/moi-00051\n\nReferences:\n\n Droghei, R., B. Buongiorno Nardelli, and + R. Santoleri, 2016: Combining in-situ and satellite observations to retrieve salinity and density at the ocean surface. + J. Atmos. Oceanic Technol. doi:10.1175/JTECH-D-15-0194.1.\n Buongiorno Nardelli, B., R. Droghei, and R. Santoleri, + 2016: Multi-dimensional interpolation of SMOS sea surface salinity with surface temperature and in situ salinity data. + Rem. Sens. Environ., doi:10.1016/j.rse.2015.12.052.\n Droghei, R., B. Buongiorno Nardelli, and R. Santoleri, + 2018: A New Global Sea Surface Salinity and Density Dataset From Multivariate Observations (1993-2016), Front. Mar. Sci., 5(March), + 1-13, doi:10.3389/fmars.2018.00084.\n Sammartino, Michela, Salvatore Aronica, Rosalia Santoleri, and Bruno Buongiorno Nardelli. (2022). + Retrieving Mediterranean Sea Surface Salinity Distribution and Interannual Trends from Multi-Sensor Satellite and In Situ Data, + Remote Sensing 14, 2502: https://doi.org/10.3390/rs14102502.\n + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,surface,salinity,density,NRT,daily,REP,L4 + sensorType: + license: proprietary + title: Multi Observation Global Ocean Sea Surface Salinity and Sea Surface Density + missionStartDate: "1993-01-01T00:00:00Z" + +MO_MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012: + abstract: | + You can find here the Multi Observation Global Ocean ARMOR3D L4 analysis and multi-year reprocessing. It consists of 3D Temperature, + Salinity, Heights, Geostrophic Currents and Mixed Layer Depth, available on a 1/4 degree regular grid and on 50 depth levels from + the surface down to the bottom. The product includes 4 datasets: \n dataset-armor-3d-nrt-weekly, which delivers near-real-time (NRT) + weekly data\n dataset-armor-3d-nrt-monthly, which delivers near-real-time (NRT) monthly data\n dataset-armor-3d-rep-weekly, which + delivers multi-year reprocessed (REP) weekly data \n dataset-armor-3d-rep-monthly, which delivers multi-year reprocessed (REP) + monthly data\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00052\n\n\nProduct Citation: \nPlease refer to our + Technical FAQ for citing products: http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169. + \n\nReferences:\n\n Guinehut S., A.-L. Dhomps, G. Larnicol and P.-Y. Le Traon, 2012: High resolution 3D temperature + and salinity fields derived from in situ and satellite observations. Ocean Sci., 8(5):845-857.\n Mulet, S., M.-H. Rio, + A. Mignot, S. Guinehut and R. Morrow, 2012: A new estimate of the global 3D geostrophic ocean circulation based on satellite + data and in-situ measurements. Deep Sea Research Part II : Topical Studies in Oceanography, 77-80(0):70-81.\n + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,REP,NRT,ARMOR3D,temperature,salinity,heights,Geostrophic,currents,L4 + sensorType: + license: proprietary + title: Multi Observation Global Ocean 3D Temperature Salinity Height Geostrophic Current and MLD + missionStartDate: "1993-01-01T00:00:00Z" + +MO_MULTIOBS_GLO_PHY_W_3D_REP_015_007: + abstract: | + You can find here the OMEGA3D observation-based quasi-geostrophic vertical and horizontal ocean currents developed by the + Consiglio Nazionale delle RIcerche. The data are provided weekly over a regular grid at 1/4° horizontal resolution, from + the surface to 1500 m depth (representative of each Wednesday). The velocities are obtained by solving a diabatic formulation + of the Omega equation, starting from ARMOR3D data (MULTIOBS_GLO_PHY_REP_015_002 which corresponds to former version of + MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012) and ERA-Interim surface fluxes. + \n\nDOI (product): \nhttps://commons.datacite.org/doi.org/10.25423/cmcc/multiobs_glo_phy_w_rep_015_007\n\n + \nProduct citation: \nPlease refer to our Technical FAQ for citing products.http://marine.copernicus.eu/faq/cite-cmems-products-cmems-credit/?idpage=169 + \n\nReferences:\n\n DOI (Product): https://doi.org/10.25423/cmcc/multiobs_glo_phy_w_rep_015_007 + \n Buongiorno Nardelli, B. (2020). CNR global observation-based OMEGA3D quasi-geostrophic vertical and horizontal ocean + currents (1993-2018) (Version 1) [Data set]. Copernicus Monitoring Environment Marine Service (CMEMS). + https://doi.org/10.25423/CMCC/MULTIOBS_GLO_PHY_W_REP_015_007\n Buongiorno Nardelli, B. A Multi-Year Timeseries of Observation-Based + 3D Horizontal and Vertical Quasi-Geostrophic Global Ocean Currents. Earth Syst. Sci. Data 2020, No. 12, 1711-1723. + https://doi.org/10.5194/essd-12-1711-2020.\n + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,ARMOR3D,weekly,ERA-Interim,quasi-geostrophic,currents,L4,OMEGA3D + sensorType: + license: proprietary + title: Global Observed Ocean Physics 3D Quasi-Geostrophic Currents (OMEGA3D) + missionStartDate: "1993-01-06T00:00:00Z" + missionEndDate: "2018-12-26T00:00:00Z" + +MO_SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_001: + abstract: | + For the Global - Arctic and Antarctic - Ocean. The OSI SAF delivers three global sea ice products in operational mode: + sea ice concentration, sea ice edge, sea ice type (OSI-401 OSI-402 and OSI-403). These products are delivered daily at + 10km resolution in a polar stereographic projection covering the Northern Hemisphere and the Southern Hemisphere. It is + the Sea Ice operational nominal product for the Global Ocean. In addition, a sea ice drift product is delivered at 60km + resolution in a polar stereographic projection covering the Northern and Southern Hemispheres. The sea ice motion vectors + have a time-span of 2 days.\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00134 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,ice,arctic,antarctic,concentration,edge,type,L4 + sensorType: + license: proprietary + title: Global Ocean - Arctic and Antarctic - Sea Ice Concentration, Edge, Type and Drift (OSI-SAF) + missionStartDate: "2019-05-04T00:00:00Z" + +MO_SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_006: + abstract: | + DTU Space produces polar covering Near Real Time gridded ice displacement fields obtained by MCC processing of Sentinel-1 SAR, + Envisat ASAR WSM swath data or RADARSAT ScanSAR Wide mode data . The nominal temporal span between processed swaths is 24hours, + the nominal product grid resolution is a 10km.\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00135 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,NRT,gridded,MCC,DTU,displacement,L4 + sensorType: + license: proprietary + title: Global Ocean - High Resolution SAR Sea Ice Drift + missionStartDate: "2019-05-04T00:00:00Z" + +MO_SEAICE_GLO_SEAICE_L4_REP_OBSERVATIONS_011_009: + abstract: | + The CDR and ICDR sea ice concentration dataset of the EUMETSAT OSI SAF (OSI-450-a and OSI-430-a), covering the period from + October 1978 to present, with 16 days delay. It used passive microwave data from SMMR, SSM/I and SSMIS. Sea ice concentration + is computed from atmospherically corrected PMW brightness temperatures, using a combination of state-of-the-art algorithms and + dynamic tie points. It includes error bars for each grid cell (uncertainties). This version 3.0 of the CDR (OSI-450-a, 1978-2020) + and ICDR (OSI-430-a, 2021-present with 16 days latency) was released in November 2022 + \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00136\n + \nReferences:\n\n [http://osisaf.met.no/docs/osisaf_cdop2_ss2_pum_sea-ice-conc-reproc_v2p2.pdf]\n + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,ice,concentration,CDR,ICDR,REP,reprocessed,L4 + sensorType: + license: proprietary + title: Global Ocean Sea Ice Concentration Time Series REPROCESSED (OSI-SAF) + missionStartDate: "1978-10-25T00:00:00Z" + +MO_SEALEVEL_GLO_PHY_L4_NRT_008_046: + abstract: | + Altimeter satellite gridded Sea Level Anomalies (SLA) computed with respect to a twenty-year [1993, 2012] mean. The SLA is + estimated by Optimal Interpolation, merging the L3 along-track measurement from the different altimeter missions available. + Part of the processing is fitted to the Global Ocean. (see QUID document or http://duacs.cls.fr [](http://duacs.cls.fr) pages + for processing details). The product gives additional variables (i.e. Absolute Dynamic Topography and geostrophic currents + (absolute and anomalies)). It serves in near-real time applications.\nThis product is processed by the DUACS multimission + altimeter data processing system. \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00149 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,gridded,surface,heights,SLA,NRT,L4 + sensorType: + license: proprietary + title: GLOBAL OCEAN GRIDDED L4 SEA SURFACE HEIGHTS AND DERIVED VARIABLES NRT + missionStartDate: "2022-01-01T00:00:00Z" + +MO_SEALEVEL_GLO_PHY_MDT_008_063: + abstract: | + Mean Dynamic Topography that combines the global CNES-CLS-2022 MDT, the Black Sea CMEMS2020 MDT and the Med Sea CMEMS2020 MDT. + It is an estimate of the mean over the 1993-2012 period of the sea surface height above geoid. This is consistent with the + reference time period also used in the DUACS products\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00150 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,sealevel,topography,surface,height,L4 + sensorType: + license: proprietary + title: GLOBAL OCEAN MEAN DYNAMIC TOPOGRAPHY + missionStartDate: "1993-01-06T00:00:00Z" + +MO_SST_GLO_SST_L3S_NRT_OBSERVATIONS_010_010: + abstract: | + For the Global Ocean- Sea Surface Temperature L3 Observations . This product provides daily foundation sea surface temperature + from multiple satellite sources. The data are intercalibrated. This product consists in a fusion of sea surface temperature + observations from multiple satellite sensors, daily, over a 0.1° resolution global grid. It includes observations by polar + orbiting (NOAA-18 & NOAAA-19/AVHRR, METOP-A/AVHRR, ENVISAT/AATSR, AQUA/AMSRE, TRMM/TMI) and geostationary (MSG/SEVIRI, GOES-11) + satellites . The observations of each sensor are intercalibrated prior to merging using a bias correction based on a multi-sensor + median reference correcting the large-scale cross-sensor biases.3 more datasets are available that only contain "per sensor type" data: + Polar InfraRed (PIR), Polar MicroWave (PMW), Geostationary InfraRed (GIR)\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00164 + instrument: + platform: + platformSerialIdentifier: + processingLevel: Level 3 + keywords: CMEMS,Mercator,ocean,global,surface,temperature,L3,PIR,PMW,GIR + sensorType: + license: proprietary + title: ODYSSEA Global Ocean - Sea Surface Temperature Multi-sensor L3 Observations + missionStartDate: "2020-12-31T00:00:00Z" + +MO_SST_GLO_SST_L4_NRT_OBSERVATIONS_010_001: + abstract: | + For the Global Ocean- the OSTIA global foundation Sea Surface Temperature product provides daily gap-free maps of: Foundation + Sea Surface Temperature at 0.05° x 0.05° horizontal grid resolution, using in-situ and satellite data from both infrared and + microwave radiometers. \n\nThe Operational Sea Surface Temperature and Ice Analysis (OSTIA) system is run by the UK's Met + Office and delivered by IFREMER PU. OSTIA uses satellite data provided by the GHRSST project together with in-situ observations + to determine the sea surface temperature.\nA high resolution (1/20° - approx. 6 km) daily analysis of sea surface temperature (SST) + is produced for the global ocean and some lakes.\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00165\n\nReferences: + \n\n Good, S.; Fiedler, E.; Mao, C.; Martin, M.J.; Maycock, A.; Reid, R.; Roberts-Jones, J.; Searle, T.; Waters, J.; While, J.; + Worsfold, M. The Current Configuration of the OSTIA System for Operational Production of Foundation Sea Surface Temperature and + Ice Concentration Analyses. Remote Sens. 2020, 12, 720. doi: 10.3390/rs12040720\n Donlon, C.J., Martin, M., Stark, J., Roberts-Jones, + J., Fiedler, E., and Wimmer, W., 2012, The Operational Sea Surface Temperature and Sea Ice Analysis (OSTIA) system. Remote Sensing + of the Environment. doi: 10.1016/j.rse.2010.10.017 2011.\n John D. Stark, Craig J. Donlon, Matthew J. Martin and Michael E. McCulloch, + 2007, OSTIA : An operational, high resolution, real time, global sea surface temperature analysis system., Oceans 07 IEEE Aberdeen, + conference proceedings. Marine challenges: coastline to deep sea. Aberdeen, Scotland.IEEE.\n + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,surface,temperature,L4,OSTIA + sensorType: + license: proprietary + title: Global Ocean OSTIA Sea Surface Temperature and Sea Ice Analysis + missionStartDate: "2007-01-01T00:00:00Z" + +MO_SST_GLO_SST_L4_REP_OBSERVATIONS_010_011: + abstract: | + The OSTIA (Good et al., 2020) global sea surface temperature reprocessed product provides daily gap-free maps of foundation + sea surface temperature and ice concentration (referred to as an L4 product) at 0.05deg.x 0.05deg. horizontal grid resolution, + using in-situ and satellite data. This product provides the foundation Sea Surface Temperature, which is the temperature free + of diurnal variability.\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00168\n + \nReferences:\n\n Good, S.; Fiedler, E.; Mao, C.; Martin, M.J.; Maycock, A.; Reid, R.; Roberts-Jones, J.; Searle, T.; + Waters, J.; While, J.; Worsfold, M. The Current Configuration of the OSTIA System for Operational Production of Foundation + Sea Surface Temperature and Ice Concentration Analyses. Remote Sens. 2020, 12, 720, doi:10.3390/rs12040720\n + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,surface,temperature,concentration,L4,OSTIA,reprocessed,REP + sensorType: + license: proprietary + title: Global Ocean OSTIA Sea Surface Temperature and Sea Ice Reprocessed + missionStartDate: "1981-10-01T00:00:00Z" + missionEndDate: "2022-05-31T00:00:00Z" + +MO_SST_GLO_SST_L4_REP_OBSERVATIONS_010_024: + abstract: | + The ESA SST CCI and C3S global Sea Surface Temperature Reprocessed product provides gap-free maps of daily average SST at 20 cm + depth at 0.05deg. x 0.05deg. horizontal grid resolution, using satellite data from the (A)ATSRs, SLSTR and the AVHRR series of + sensors (Merchant et al., 2019). The ESA SST CCI and C3S level 4 analyses were produced by running the Operational Sea Surface + Temperature and Sea Ice Analysis (OSTIA) system (Good et al., 2020) to provide a high resolution (1/20deg. - approx. 5km grid resolution) + daily analysis of the daily average sea surface temperature (SST) at 20 cm depth for the global ocean. Only (A)ATSR, SLSTR and AVHRR + satellite data processed by the ESA SST CCI and C3S projects were used, giving a stable product. It also uses reprocessed sea-ice + concentration data from the EUMETSAT OSI-SAF (OSI-450 and OSI-430; Lavergne et al., 2019). + \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00169\n\nReferences:\n\n Good, S., Fiedler, E., Mao, C., Martin, + M.J., Maycock, A., Reid, R., Roberts-Jones, J., Searle, T., Waters, J., While, J., Worsfold, M. The Current Configuration of the + OSTIA System for Operational Production of Foundation Sea Surface Temperature and Ice Concentration Analyses. Remote Sens. + 2020, 12, 720, doi:10.3390/rs12040720.\n Lavergne, T., Sørensen, A. M., Kern, S., Tonboe, R., Notz, D., Aaboe, S., Bell, L., Dybkjær, + G., Eastwood, S., Gabarro, C., Heygster, G., Killie, M. A., Brandt Kreiner, M., Lavelle, J., Saldo, R., Sandven, S., and Pedersen, + L. T.: Version 2 of the EUMETSAT OSI SAF and ESA CCI sea-ice concentration climate data records, The Cryosphere, 13, 49-78, + doi:10.5194/tc-13-49-2019, 2019.\n Merchant, C.J., Embury, O., Bulgin, C.E. et al. Satellite-based time-series of sea-surface + temperature since 1981 for climate applications. Sci Data 6, 223 (2019) doi:10.1038/s41597-019-0236-x.\n + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,surface,temperature,ESA,SST,CCI,C3S,L4,reprocessed,REP + sensorType: + license: proprietary + title: ESA SST CCI and C3S reprocessed sea surface temperature analyses + missionStartDate: "1981-09-01T00:00:00Z" + missionEndDate: "2022-10-31T00:00:00Z" + +MO_WAVE_GLO_WAV_L3_SPC_NRT_OBSERVATIONS_014_002: + abstract: | + Near-Real-Time mono-mission satellite-based integral parameters derived from the directional wave spectra. Using linear + propagation wave model, only wave observations that can be back-propagated to wave converging regions are considered. + The dataset parameters includes partition significant wave height, partition peak period and partition peak or principal + direction given along swell propagation path in space and time at a 3-hour timestep, from source to land. Validity flags + are also included for each parameter and indicates the valid time steps along propagation (eg. no propagation for significant + wave height close to the storm source or any integral parameter when reaching the land). The integral parameters at observation + point are also available together with a quality flag based on the consistency between each propagated observation and the overall + swell field.This product is processed by the WAVE-TAC multi-mission SAR data processing system. It serves in near-real time + the main operational oceanography and climate forecasting centers in Europe and worldwide. It processes near-real-time data + from the following SAR missions: Sentinel-1A and Sentinel-1B.One file is produced for each mission and is available in two + formats: one gathering in one netcdf file all observations related to the same swell field, and for another all observations + available in a 3-hour time range, and for both formats, propagated information from source to land. + \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00178 + instrument: + platform: + platformSerialIdentifier: + processingLevel: Level 3 + keywords: CMEMS,Mercator,ocean,global,NRT,wave,L3,WAVE-TAC,SAR,spectral,mono-mission + sensorType: + license: proprietary + title: GLOBAL OCEAN L3 SPECTRAL PARAMETERS FROM NRT SATELLITE MEASUREMENTS + missionStartDate: "2018-05-28T00:00:00Z" + +MO_WAVE_GLO_PHY_SWH_L3_NRT_014_001: + abstract: | + Near-Real-Time mono-mission satellite-based along-track significant wave height. Only valid data are included, based on a + rigorous editing combining various criteria such as quality flags (surface flag, presence of ice) and thresholds on parameter + values. Such thresholds are applied on parameters linked to significant wave height determination from retracking (e.g. SWH, + sigma0, range, off nadir angle…). All the missions are homogenized with respect to a reference mission (Jason-3 until April 2022, + Sentinel-6A afterwards) and calibrated on in-situ buoy measurements. Finally, an along-track filter is applied to reduce the + measurement noise.\n\nAs a support of information to the significant wave height, wind speed measured by the altimeters is also + processed and included in the files. Wind speed values are provided by upstream products (L2) for each mission and are based on + different algorithms. Only valid data are included and all the missions are homogenized with respect to the reference mission. + \n\nThis product is processed by the WAVE-TAC multi-mission altimeter data processing system. It serves in near-real time the + main operational oceanography and climate forecasting centers in Europe and worldwide. It processes operational data (OGDR and NRT, + produced in near-real-time) from the following altimeter missions: Sentinel-6A, Jason-3, Sentinel-3A, Sentinel-3B, Cryosat-2, + SARAL/AltiKa, CFOSAT ; and interim data (IGDR, 1 to 2 days delay) from Hai Yang-2B mission.\n\nOne file containing valid SWH + is produced for each mission and for a 3-hour time window. It contains the filtered SWH (VAVH), the unfiltered SWH (VAVH_UNFILTERED) + and the wind speed (wind_speed).\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00179 + instrument: + platform: + platformSerialIdentifier: + processingLevel: Level 3 + keywords: CMEMS,Mercator,ocean,global,NRT,wave,height,L3,wind,speed,WAVE-TAC,mono-mission + sensorType: + license: proprietary + title: GLOBAL OCEAN L3 SIGNIFICANT WAVE HEIGHT FROM NRT SATELLITE MEASUREMENTS + missionStartDate: "2021-01-01T00:00:00Z" + +MO_WAVE_GLO_PHY_SWH_L4_NRT_014_003: + abstract: | + Near-Real-Time gridded multi-mission merged satellite significant wave height. Only valid data are included. This product + is processed in Near-Real-Time by the WAVE-TAC multi-mission altimeter data processing system and is based on CMEMS level-3 + SWH datasets (see the product WAVE_GLO_WAV_L3_SWH_NRT_OBSERVATIONS_014_001).\nIt merges along-track SWH data from the following + missions: Jason-3, Sentinel-3A, Sentinel-3B, SARAL/AltiKa, Cryosat-2, CFOSAT and HaiYang-2B. The resulting gridded product has + a 2° horizontal resolution and is produced daily. Different SWH fields are produced: VAVH_DAILY fields are daily statistics + computed from all available level 3 along-track measurements from 00 UTC until 23:59 UTC ; VAVH_INST field provides an estimate + of the instantaneous wave field at 12:00UTC (noon), using all available Level 3 along-track measurements and accounting for + their spatial and temporal proximity.\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00180 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,NRT,wave,height,L4,gridded,WAVE-TAC,multi-mission + sensorType: + license: proprietary + title: GLOBAL OCEAN L4 SIGNIFICANT WAVE HEIGHT FROM NRT SATELLITE MEASUREMENTS + missionStartDate: "2020-01-01T00:00:00Z" + +MO_WIND_GLO_PHY_CLIMATE_L4_MY_012_003: + abstract: | + For the Global Ocean - The product contains monthly Level-4 sea surface wind and stress fields at 0.25 degrees horizontal + spatial resolution. The monthly averaged wind and stress fields are based on monthly average ECMWF ERA5 reanalysis fields, + corrected for persistent biases using all available Level-3 scatterometer observations from the Metop-A, Metop-B and Metop-C ASCAT, + QuikSCAT SeaWinds, ERS-1 and ERS-2 SCAT satellite instruments. The product provides monthly mean stress-equivalent wind and + stress variables as well as their standard deviation. The number of observations used to calculate the monthly averages are + included in the product.\n\nDOI (product): \nhttps://doi.org/10.48670/moi-00181 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,L4,surface,wind,stress,monthly,Scatterometer + sensorType: + license: proprietary + title: Global Ocean Monthly Mean Sea Surface Wind and Stress from Scatterometer and Model + missionStartDate: "1999-08-01T00:00:00Z" + missionEndDate: "2024-01-01T00:00:00Z" + +MO_WIND_GLO_PHY_L3_NRT_012_002: + abstract: | + For the Global Ocean - The product contains daily L3 gridded sea surface wind observations from available scatterometers + with resolutions corresponding to the L2 swath products:\n\n0.5 degrees grid for the 50 km scatterometer L2 inputs, + \n0.25 degrees grid based on 25 km scatterometer swath observations,\nand 0.125 degrees based on 12.5 km scatterometer + swath observations, i.e., from the coastal products.\n\nData from ascending and descending passes are gridded separately. + \nThe product provides stress-equivalent wind and stress variables as well as their divergence and curl. The NRT L3 products + follow the NRT availability of the EUMETSAT OSI SAF L2 products and are available for:\nThe ASCAT scatterometers on Metop-A + (discontinued on 15/11/2021), Metop-B and Metop-C at 0.125 and 0.25 degrees;\nThe OSCAT scatterometer on Scatsat-1 at 0.25 + and 0.5 degrees (discontinued on 28/2/2021); \nThe HSCAT scatterometer on HY-2B, HY-2C and HY-2D at 0.25 and 0.5 degrees + \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00182 + instrument: + platform: + platformSerialIdentifier: + processingLevel: Level 3 + keywords: CMEMS,Mercator,ocean,global,L3,surface,wind,daily,gridded,NRT,Scatterometer + sensorType: + license: proprietary + title: Global Ocean Daily Gridded Sea Surface Winds from Scatterometer + missionStartDate: "2016-01-01T00:00:00Z" + +MO_WIND_GLO_PHY_L3_MY_012_005: + abstract: | + For the Global Ocean - The product contains daily L3 gridded sea surface wind observations from available scatterometers + with resolutions corresponding to the L2 swath products:\n0.5 degrees grid for the 50 km scatterometer L2 inputs, + \n0.25 degrees grid based on 25 km scatterometer swath observations,\nand 0.125 degrees based on 12.5 km scatterometer + swath observations, i.e., from the coastal products. Data from ascending and descending passes are gridded separately. + \n\nThe product provides stress-equivalent wind and stress variables as well as their divergence and curl. The MY L3 products + follow the availability of the reprocessed EUMETSAT OSI SAF L2 products and are available for: The ASCAT scatterometer + on MetOp-A and Metop-B at 0.125 and 0.25 degrees; The Seawinds scatterometer on QuikSCAT at 0.25 and 0.5 degrees; The AMI + scatterometer on ERS-1 and ERS-2 at 0.25 degrees; The OSCAT scatterometer on Oceansat-2 at 0.25 and 0.5 degrees; + \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00183 + instrument: + platform: + platformSerialIdentifier: + processingLevel: Level 3 + keywords: CMEMS,Mercator,ocean,global,L3,surface,wind,daily,gridded,reprocessed,REP,Scatterometer + sensorType: + license: proprietary + title: Global Ocean Daily Gridded Reprocessed L3 Sea Surface Winds from Scatterometer + missionStartDate: "1991-08-01T00:00:00Z" + missionEndDate: "2023-12-31T00:00:00Z" + +MO_WIND_GLO_PHY_L4_NRT_012_004: + abstract: | + For the Global Ocean - The product contains hourly Level-4 sea surface wind and stress fields at 0.125 degrees horizontal spatial + resolution. Scatterometer observations for Metop-B and Metop-C ASCAT and their collocated European Centre for Medium-Range + Weather Forecasts (ECMWF) operational model variables are used to calculate temporally-averaged difference fields. These fields + are used to correct for persistent biases in hourly ECMWF operational model fields. The product provides stress-equivalent wind + and stress variables as well as their divergence and curl. The applied bias corrections, the standard deviation of the differences + (for wind and stress fields) and difference of variances (for divergence and curl fields) are included in the product. + \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00305 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,L4,surface,wind,stress,hourly,NRT,Scatterometer,Metop + sensorType: + license: proprietary + title: Global Ocean Hourly Sea Surface Wind and Stress from Scatterometer and Model + missionStartDate: "2020-07-01T00:00:00Z" + +MO_WIND_GLO_PHY_L4_MY_012_006: + abstract: | + For the Global Ocean - The product contains hourly Level-4 sea surface wind and stress fields at 0.125 and 0.25 degrees horizontal + spatial resolution. Scatterometer observations and their collocated European Centre for Medium-Range Weather Forecasts (ECMWF) ERA5 + reanalysis model variables are used to calculate temporally-averaged difference fields. These fields are used to correct for + persistent biases in hourly ECMWF ERA5 model fields. Bias corrections are based on scatterometer observations from Metop-A, Metop-B, + Metop-C ASCAT (0.125 degrees), QuikSCAT SeaWinds, ERS-1 and ERS-2 SCAT (0.25 degrees). The product provides stress-equivalent wind + and stress variables as well as their divergence and curl. The applied bias corrections, the standard deviation of the differences + (for wind and stress fields) and difference of variances (for divergence and curl fields) are included in the product. + \n\nDOI (product): \nhttps://doi.org/10.48670/moi-00185 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,L4,surface,wind,stress,hourly,REP,reprocessed,Scatterometer,Metop,QuikSCAT,ERS + sensorType: + license: proprietary + title: Global Ocean Hourly Reprocessed Sea Surface Wind and Stress from Scatterometer and Model + missionStartDate: "1994-06-01T00:00:00Z" + missionEndDate: "2024-01-21T23:00:00Z" + +MO_OCEANCOLOUR_GLO_BGC_L3_MY_009_107: + abstract: | + For the **Global** Ocean **Satellite Observations**, Brockmann Consult (BC) is providing **Bio-Geo_Chemical (BGC)** products + based on the ESA-CCI inputs.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP, OLCI-S3A & OLCI-S3B for the **""multi""** products.\n + Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional types and sizes (**PFT**) and Reflectance (**RRS**).\n\n + Temporal resolutions: **daily**, **monthly**.\n* Spatial resolutions: **4 km** (multi).\n + Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**). + \n\nTo find these products in the catalogue, use the search keyword **""ESA-CCI""**. + \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00282 + instrument: + platform: + platformSerialIdentifier: + processingLevel: Level 3 + keywords: CMEMS,Mercator,ocean,global,L3,bio-geo-chemical,BGC,chlorophyll,phytoplankton,reflectance + sensorType: + license: proprietary + title: Global Ocean Colour Plankton and Reflectances MY L3 daily observations + missionStartDate: "1997-09-04T00:00:00Z" + missionEndDate: "2024-04-30T00:00:00Z" + +MO_OCEANCOLOUR_GLO_BGC_L3_NRT_009_101: + abstract: | + For the **Global** Ocean **Satellite Observations**, ACRI-ST company (Sophia Antipolis, France) is providing **Bio-Geo-Chemical (BGC)** + products based on the **Copernicus-GlobColour** processor.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B + for the **"multi"** products, and S3A & S3B only for the **"olci"** products.\n* Variables: Chlorophyll-a (**CHL**), Phytoplankton + Functional types and sizes (**PFT**), Suspended Matter (**SPM**), Secchi Transparency Depth (**ZSD**), Diffuse Attenuation (**KD490**), + Particulate Backscattering (**BBP**), Absorption Coef. (**CDM**) and Reflectance (**RRS**).\n\n* Temporal resolutions: **daily** + \n* Spatial resolutions: **4 km** and a finer resolution based on olci **300 meters** inputs.\n* Recent products are organized in + datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n + \nTo find the **Copernicus-GlobColour** products in the catalogue, use the search keyword **"GlobColour"**. + \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00278 + instrument: + platform: + platformSerialIdentifier: + processingLevel: Level 3 + keywords: CMEMS,Mercator,ocean,global,colour,L3,bio-geo-chemical,BGC,Copernicus-GlobColour,NRT + sensorType: + license: proprietary + title: Global Ocean Colour (Copernicus-GlobColour), Bio-Geo-Chemical, L3 (daily) from Satellite Observations (Near Real Time) + missionStartDate: "2023-04-25T00:00:00Z" + +MO_OCEANCOLOUR_GLO_BGC_L3_MY_009_103: + abstract: | + For the **Global** Ocean **Satellite Observations**, ACRI-ST company (Sophia Antipolis, France) is providing **Bio-Geo-Chemical (BGC)** + products based on the **Copernicus-GlobColour** processor.\n Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for + the **"multi"** products, and S3A & S3B only for the **"olci"** products.\n* Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional + types and sizes (**PFT**), Suspended Matter (**SPM**), Secchi Transparency Depth (**ZSD**), Diffuse Attenuation (**KD490**), Particulate + Backscattering (**BBP**), Absorption Coef. (**CDM**) and Reflectance (**RRS**).\n\n Temporal resolutions: **daily**.\n Spatial resolutions: + **4 km** and a finer resolution based on olci **300 meters** inputs.\n* Recent products are organized in datasets called Near Real Time (**NRT**) + and long time-series (from 1997) in datasets called Multi-Years (**MY**).\n\nTo find the **Copernicus-GlobColour** products in the catalogue, + use the search keyword **"GlobColour"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00280 + instrument: + platform: + platformSerialIdentifier: + processingLevel: Level 3 + keywords: CMEMS,Mercator,ocean,global,colour,L3,bio-geo-chemical,BGC,Copernicus-GlobColour,MY,multi-years + sensorType: + license: proprietary + title: Global Ocean Colour (Copernicus-GlobColour), Bio-Geo-Chemical, L3 (daily) from Satellite Observations (1997-ongoing) + missionStartDate: "1997-09-04T00:00:00Z" + +MO_OCEANCOLOUR_GLO_BGC_L4_NRT_009_102: + abstract: | + For the **Global** Ocean **Satellite Observations**, ACRI-ST company (Sophia Antipolis, France) is providing **Bio-Geo-Chemical (BGC)** + products based on the **Copernicus-GlobColour** processor.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the + **"multi"** products, and S3A & S3B only for the **"olci"** products.\n* Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional + types and sizes (**PFT**), Primary Production (**PP**), Suspended Matter (**SPM**), Secchi Transparency Depth (**ZSD**), Diffuse + Attenuation (**KD490**), Particulate Backscattering (**BBP**), Absorption Coef. (**CDM**) and Reflectance (**RRS**).\n + \n* Temporal resolutions: **monthly** plus, for some variables, **daily gap-free** based on a space-time interpolation to provide a + "cloud free" product.\n* Spatial resolutions: **4 km** and a finer resolution based on olci **300 meters** inputs. + \n* Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets + called Multi-Years (**MY**).\n\nTo find the **Copernicus-GlobColour** products in the catalogue, use the search keyword + **"GlobColour"**.\n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00279 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,colour,L4,bio-geo-chemical,BGC,Copernicus-GlobColour,NRT,monthly,interpolated + sensorType: + license: proprietary + title: Global Ocean Colour (Copernicus-GlobColour), Bio-Geo-Chemical, L4 (monthly and interpolated) from Satellite Observations (Near Real Time) + missionStartDate: "2023-04-01T00:00:00Z" + +MO_OCEANCOLOUR_GLO_BGC_L4_MY_009_104: + abstract: | + For the **Global** Ocean **Satellite Observations**, ACRI-ST company (Sophia Antipolis, France) is providing **Bio-Geo-Chemical (BGC)** + products based on the **Copernicus-GlobColour** processor.\n Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP & JPSS1, OLCI-S3A & S3B for the + **""multi""** products, and S3A & S3B only for the **""olci""** products.\n Variables: Chlorophyll-a (**CHL**), Phytoplankton Functional + types and sizes (**PFT**), Primary Production (**PP**), Suspended Matter (**SPM**), Secchi Transparency Depth (**ZSD**), Diffuse Attenuation + (**KD490**), Particulate Backscattering (**BBP**), Absorption Coef. (**CDM**) and Reflectance (**RRS**).\n\n Temporal resolutions: + **monthly** plus, for some variables, **daily gap-free** based on a space-time interpolation to provide a ""cloud free"" product.\n + Spatial resolutions: **4 km** and a finer resolution based on olci **300 meters** inputs.\n Recent products are organized + in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets called Multi-Years (**MY**). + \n\nTo find the **Copernicus-GlobColour** products in the catalogue, use the search keyword **""GlobColour""**." + \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00281 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,colour,L4,bio-geo-chemical,BGC,Copernicus-GlobColour,MY,multi-years,monthly,interpolated + sensorType: + license: proprietary + title: Global Ocean Colour (Copernicus-GlobColour), Bio-Geo-Chemical, L4 (monthly and interpolated) from Satellite Observations (1997-ongoing) + missionStartDate: "1997-09-01T00:00:00Z" + +MO_OCEANCOLOUR_GLO_BGC_L4_MY_009_108: + abstract: | + For the **Global** Ocean **Satellite Observations**, Brockmann Consult (BC) is providing **Bio-Geo_Chemical (BGC)** products + based on the ESA-CCI inputs.\n* Upstreams: SeaWiFS, MODIS, MERIS, VIIRS-SNPP, OLCI-S3A & OLCI-S3B for the **""multi""** products. + \n Variables: Chlorophyll-a (**CHL**).\n\n* Temporal resolutions: **monthly**.\n* Spatial resolutions: **4 km** (multi). + \n Recent products are organized in datasets called Near Real Time (**NRT**) and long time-series (from 1997) in datasets + called Multi-Years (**MY**).\n\nTo find these products in the catalogue, use the search keyword **""ESA-CCI""**. + \n\n**DOI (product):** \nhttps://doi.org/10.48670/moi-00283 + instrument: + platform: + platformSerialIdentifier: + processingLevel: L4 + keywords: CMEMS,Mercator,ocean,global,colour,L4,bio-geo-chemical,BGC,chlorophyll,MY,multi-years,monthly + sensorType: + license: proprietary + title: Global Ocean Colour Plankton MY L4 monthly observations + missionStartDate: "1997-09-01T00:00:00Z" + missionEndDate: "2024-04-01T00:00:00Z" + +# MARK: GENERIC ------------------------------------------------------------------------ GENERIC_PRODUCT_TYPE: abstract: instrument: diff --git a/eodag/resources/providers.yml b/eodag/resources/providers.yml index 09acbeb3b..79f569e0d 100644 --- a/eodag/resources/providers.yml +++ b/eodag/resources/providers.yml @@ -16,7 +16,7 @@ # See the License for the specific language governing permissions and # limitations under the License. --- -!provider +!provider # MARK: usgs name: usgs priority: 0 description: U.S geological survey catalog for Landsat products @@ -83,7 +83,7 @@ dataset: '{productType}' --- -!provider +!provider # MARK: aws_eos name: aws_eos priority: 0 description: EOS search for Amazon public datasets @@ -96,6 +96,7 @@ need_auth: true auth_error_code: 403 results_entry: 'results' + ssl_verify: true pagination: next_page_query_obj: '{{"limit":{items_per_page},"page":{page}}}' total_items_nb_key_path: '$.meta.found' @@ -499,6 +500,7 @@ download: !plugin type: AwsDownload requester_pays: True + ssl_verify: true products: CBERS4_MUX_L2: default_bucket: 'cbers-pds' @@ -535,9 +537,10 @@ - productPath auth: !plugin type: AwsAuth + ssl_verify: true --- -!provider +!provider # MARK: theia name: theia priority: 0 description: French National Space Agency (CNES) catalog for Sentinel 2 products, Pleiades and Landsat products @@ -548,6 +551,7 @@ type: QueryStringSearch api_endpoint: 'https://theia.cnes.fr/atdistrib/resto2/api/collections/{collection}/search.json' need_auth: false + ssl_verify: true pagination: next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}' total_items_nb_key_path: '$.properties.totalResults' @@ -702,18 +706,20 @@ processingLevel: '{processingLevel}' download: !plugin type: HTTPDownload - base_uri: 'https://theia.cnes.fr/atdistrib/resto2' extract: true + archive_depth: 2 order_enabled: true auth_error_code: 403 + ssl_verify: true dl_url_params: issuerId: theia auth: !plugin type: TokenAuth auth_uri: 'https://theia.cnes.fr/atdistrib/services/authenticate/' + ssl_verify: true --- -!provider +!provider # MARK: peps name: peps priority: 1 description: | @@ -726,6 +732,7 @@ type: QueryStringSearch api_endpoint: 'https://peps.cnes.fr/resto/api/collections/{collection}/search.json' need_auth: false + ssl_verify: true pagination: next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}' total_items_nb_key_path: '$.properties.totalResults' @@ -831,6 +838,8 @@ # Additional metadata provided by the providers but that don't appear in the reference spec thumbnail: '$.properties.thumbnail' + links: $.null + services: $.null products: S1_SAR_OCN: productType: OCN @@ -855,18 +864,19 @@ collection: '{collection}' download: !plugin type: HTTPDownload - base_uri: 'https://peps.cnes.fr/resto' extract: true archive_depth: 2 order_enabled: true auth_error_code: 401 + ssl_verify: true dl_url_params: issuerId: peps auth: !plugin type: GenericAuth auth_uri: 'https://peps.cnes.fr/resto/api/users/connect' + ssl_verify: true --- -!provider +!provider # MARK: creodias name: creodias priority: 0 description: CloudFerro DIAS @@ -874,133 +884,160 @@ - host url: https://creodias.eu/ search: !plugin - type: QueryStringSearch - api_endpoint: 'http://datahub.creodias.eu/resto/api/collections/{collection}/search.json' + type: ODataV4Search + api_endpoint: 'https://datahub.creodias.eu/odata/v1/Products' need_auth: false - timeout: 60 + timeout: 120 + ssl_verify: true + dont_quote: + - '[' + - ']' + - '$' + - '=' + - '&' + - ':' pagination: - next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}&exactCount=1' - total_items_nb_key_path: '$.properties.totalResults' + next_page_url_tpl: '{url}?{search}&$top={items_per_page}&$skip={skip}&$expand=Attributes&$expand=Assets' + count_tpl: '&$count=True' + total_items_nb_key_path: '$."@odata.count"' max_items_per_page: 1_000 + sort: + sort_by_default: + - !!python/tuple [startTimeFromAscendingNode, ASC] + sort_by_tpl: '&$orderby={sort_param} {sort_order}' + sort_param_mapping: + startTimeFromAscendingNode: ContentDate/Start + completionTimeFromAscendingNode: ContentDate/End + publicationDate: PublicationDate + modificationDate: ModificationDate + sort_order_mapping: + ascending: asc + descending: desc + max_sort_params: 1 + results_entry: 'value' + free_text_search_operations: + $filter: + union: ' or ' + wrapper: '{}' + operations: + and: + - "Collection/Name eq '{collection}'" + - "OData.CSC.Intersects(area=geography'{geometry#to_ewkt}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq '{productType}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformShortName' and att/OData.CSC.StringAttribute/Value eq '{platform}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformSerialIdentifier' and att/OData.CSC.StringAttribute/Value eq '{platformSerialIdentifier}')" + - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'spatialResolution' and att/OData.CSC.StringAttribute/Value eq '{resolution}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'authority' and att/OData.CSC.StringAttribute/Value eq '{organisationName}')" + - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'orbitNumber' and att/OData.CSC.StringAttribute/Value eq '{orbitNumber}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'orbitDirection' and att/OData.CSC.StringAttribute/Value eq '{orbitDirection}')" + - "Attributes/OData.CSC.DoubleAttribute/any(att:att/Name eq 'cloudCover' and att/OData.CSC.DoubleAttribute/Value le {cloudCover})" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'operationalMode' and att/OData.CSC.StringAttribute/Value eq '{sensorMode}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'polarisationChannels' and att/OData.CSC.StringAttribute/Value eq '{polarizationChannels}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'tileId' and att/OData.CSC.StringAttribute/Value eq '{tileIdentifier}')" + - "ContentDate/Start lt {completionTimeFromAscendingNode#to_iso_utc_datetime}" + - "ContentDate/End gt {startTimeFromAscendingNode#to_iso_utc_datetime}" + - contains(Name,'{id}') discover_metadata: auto_discovery: true metadata_pattern: '^(?!collection)[a-zA-Z0-9]+$' - search_param: '{metadata}={{{metadata}}}' - metadata_path: '$.properties.*' + search_param: + free_text_search_operations: + $filter: + operations: + and: + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq '{metadata}' and att/OData.CSC.StringAttribute/Value eq '{{{metadata}}}')" + metadata_path: '$.Attributes.*' discover_product_types: - fetch_url: https://finder.creodias.eu/attributes.json - result_type: json - results_entry: 'collections[?billing=="free"]' - generic_product_type_id: '$.id' - generic_product_type_parsable_properties: - collection: '$.id' - generic_product_type_parsable_metadata: - abstract: '$.description' - instrument: '{$.summaries.instruments#csv_list}' - platform: '{$.summaries.constellation#csv_list}' - platformSerialIdentifier: '{$.summaries.platform#csv_list}' - processingLevel: '$.summaries."processing:level"' - keywords: '{$.keywords#csv_list}' - license: '$.license' - title: '$.title' - missionStartDate: '$.extent.temporal.interval[0][0]' + fetch_url: null + per_product_metadata_query: false + metadata_pre_mapping: + metadata_path: '$.Attributes' + metadata_path_id: 'Name' + metadata_path_value: 'Value' metadata_mapping: - uid: '$.id' + # Opensearch resource identifier within the search engine context (in our case + # within the context of the data provider) + # Queryable parameters are set with null as 1st configuration list value to mark them as queryable, + # but `free_text_search_operations.$filter.operations.and` entries are then used instead. + uid: '$.Id' + # OpenSearch Parameters for Collection Search (Table 3) productType: - - productType - - '$.properties.productType' - platform: '$.properties.collection' + - null + - '$.Attributes.productType' + platform: + - null + - '$.Attributes.platformShortName' platformSerialIdentifier: - - platform - - '$.properties.platform' + - null + - '$.Attributes.platformSerialIdentifier' instrument: - - instrument - - '$.properties.instrument' + - null + - '$.Attributes.instrumentShortName' processingLevel: - - processingLevel - - '$.properties.processingLevel' + - null + - '$.Attributes.processingLevel' # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4) - title: '{$.properties.title#remove_extension}' - topicCategory: '$.properties.topicCategory' - keyword: '$.properties.keywords' - abstract: '$.properties.description' + title: '$.Name' resolution: - - 'resolution' - - '$.properties.resolution' + - null + - '$.Attributes.spatialResolution' organisationName: - - 'organisationName' - - '$.properties.organisationName' - publicationDate: '$.properties.published' - accessConstraint: '$.properties.license' - + - null + - '$.Attributes.authority' + publicationDate: '$.PublicationDate' # OpenSearch Parameters for Product Search (Table 5) - parentIdentifier: - - 'parentIdentifier' - - '$.properties.parentIdentifier' - acquisitionType: '$.properties.acquisitionType' orbitNumber: - - 'orbitNumber' - - '$.properties.orbitNumber' + - null + - '$.Attributes.orbitNumber' orbitDirection: - - 'orbitDirection' - - '$.properties.orbitDirection' - swathIdentifier: - - 'swath' - - '$.properties.swath' + - null + - '$.Attributes.orbitDirection' cloudCover: - - 'cloudCover=[0,{cloudCover}]' - - '$.properties.cloudCover' - snowCover: - - 'snowCover=[0,{snowCover}]' - - '$.properties.snowCover' - productVersion: '$.properties.version' - productQualityStatus: '$.properties.onlineQualityCheck' - processorName: '$.properties.processingName' - processingCenter: '$.properties.processingCenter' - creationDate: '$.properties.dhusIngestDate' - modificationDate: '$.properties.updated' + - null + - '$.Attributes.cloudCover' + modificationDate: '$.ModificationDate' sensorMode: - - 'sensorMode' - - '$.properties.sensorMode' + - null + - '$.Attributes.operationalMode' # OpenSearch Parameters for Acquistion Parameters Search (Table 6) startTimeFromAscendingNode: - - startDate - - '$.properties.startDate' + - null + - '$.ContentDate.Start' completionTimeFromAscendingNode: - - completionDate - - '$.properties.completionDate' - polarizationMode: - - 'polarisation' - - '$.properties.polarisation' - + - null + - '$.ContentDate.End' + polarizationChannels: + - null + - '$.Attributes.polarisationChannels' # Custom parameters (not defined in the base document referenced above) id: - - 'productIdentifier=%{id#remove_extension}%' - - '{$.properties.title#remove_extension}' + - null + - '{$.Name#remove_extension}' tileIdentifier: - - tileId - - '$.null' + - null + - '$.Attributes.tileId' # The geographic extent of the product geometry: - - 'geometry={geometry#to_rounded_wkt}' - # - '$.geometry' - - '($.geometry.`str()`.`sub(/^\\[\\]$/, POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90)))`)|($.geometry[*])' - # The url of the quicklook - quicklook: '$.properties.thumbnail' + - null + - '{$.Footprint#from_ewkt}' # The url to download the product "as is" (literal or as a template to be completed either after the search result # is obtained from the provider or during the eodag download phase) - downloadLink: 'https://zipper.creodias.eu/download/{uid}' - # storageStatus must be one of ONLINE, STAGING, OFFLINE - storageStatus: '$.properties.status' - + downloadLink: 'https://zipper.creodias.eu/odata/v1/Products({uid})/$value' + # storageStatus: must be one of ONLINE, STAGING, OFFLINE + storageStatus: '{$.Online#get_group_name((?PTrue)|(?PFalse))}' + collection: + - null + - $.null + quicklook: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink' + thumbnail: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink' # Additional metadata provided by the providers but that don't appear in the reference spec - thumbnail: '$.properties.thumbnail' + productIdentifier: '$.S3Path' download: !plugin type: HTTPDownload - base_uri: 'https://zipper.creodias.eu/download/' extract: true order_enabled: false archive_depth: 2 + ssl_verify: true auth: !plugin type: KeycloakOIDCPasswordAuth auth_base_uri: 'https://identity.cloudferro.com/auth' @@ -1010,26 +1047,27 @@ token_provision: qs token_qs_key: 'token' auth_error_code: 401 + ssl_verify: true products: # S1 S1_SAR_RAW: productType: RAW - collection: Sentinel1 + collection: SENTINEL-1 metadata_mapping: cloudCover: '$.null' S1_SAR_GRD: productType: GRD - collection: Sentinel1 + collection: SENTINEL-1 metadata_mapping: cloudCover: '$.null' S1_SAR_SLC: productType: SLC - collection: Sentinel1 + collection: SENTINEL-1 metadata_mapping: cloudCover: '$.null' S1_SAR_OCN: productType: OCN - collection: Sentinel1 + collection: SENTINEL-1 metadata_mapping: cloudCover: '$.null' # S2 @@ -1041,181 +1079,181 @@ productType: S2MSI2A # S3 SRAL S3_SRA: - productType: SRA - collection: Sentinel3 + productType: SR_1_SRA___ + collection: SENTINEL-3 metadata_mapping: cloudCover: '$.null' S3_SRA_A: - productType: SRA_A - collection: Sentinel3 + productType: SR_1_SRA_A_ + collection: SENTINEL-3 metadata_mapping: cloudCover: '$.null' S3_SRA_BS: - productType: SRA_BS - collection: Sentinel3 + productType: SR_1_SRA_BS + collection: SENTINEL-3 metadata_mapping: cloudCover: '$.null' S3_LAN: - productType: LAN - collection: Sentinel3 + productType: SR_2_LAN___ + collection: SENTINEL-3 metadata_mapping: cloudCover: '$.null' S3_WAT: - productType: WAT - collection: Sentinel3 + productType: SR_2_WAT___ + collection: SENTINEL-3 metadata_mapping: cloudCover: '$.null' # S3 OLCI S3_EFR: - productType: EFR - collection: Sentinel3 + productType: OL_1_EFR___ + collection: SENTINEL-3 S3_ERR: - productType: ERR - collection: Sentinel3 + productType: OL_1_ERR___ + collection: SENTINEL-3 S3_OLCI_L2LRR: - productType: LRR - collection: Sentinel3 + productType: OL_2_LRR___ + collection: SENTINEL-3 S3_OLCI_L2LFR: - productType: LFR - collection: Sentinel3 + productType: OL_2_LFR___ + collection: SENTINEL-3 S3_OLCI_L2WRR: - productType: WRR - collection: Sentinel3 + productType: OL_2_WRR___ + collection: SENTINEL-3 S3_OLCI_L2WFR: - productType: WFR - collection: Sentinel3 + productType: OL_2_WFR___ + collection: SENTINEL-3 # S3 SLSTR S3_SLSTR_L1RBT: - productType: RBT - collection: Sentinel3 + productType: SL_1_RBT___ + collection: SENTINEL-3 S3_SLSTR_L2LST: - productType: LST - collection: Sentinel3 + productType: SL_2_LST___ + collection: SENTINEL-3 S3_SLSTR_L2WST: - productType: WST - collection: Sentinel3 + productType: SL_2_WST___ + collection: SENTINEL-3 S3_SLSTR_L2AOD: - productType: AOD___ - collection: Sentinel3 + productType: SL_2_AOD___ + collection: SENTINEL-3 S3_SLSTR_L2FRP: - productType: FRP___ - collection: Sentinel3 + productType: SL_2_FRP___ + collection: SENTINEL-3 # S3 SY S3_SY_AOD: productType: SY_2_AOD___ - collection: Sentinel3 + collection: SENTINEL-3 S3_SY_SYN: productType: SY_2_SYN___ - collection: Sentinel3 + collection: SENTINEL-3 S3_SY_V10: productType: SY_2_V10___ - collection: Sentinel3 + collection: SENTINEL-3 S3_SY_VG1: productType: SY_2_VG1___ - collection: Sentinel3 + collection: SENTINEL-3 S3_SY_VGP: productType: SY_2_VGP___ - collection: Sentinel3 + collection: SENTINEL-3 # S5P L1 S5P_L1B_IR_SIR: productType: L1B_IR_SIR - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_IR_UVN: productType: L1B_IR_UVN - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD1: productType: L1B_RA_BD1 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD2: productType: L1B_RA_BD2 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD3: productType: L1B_RA_BD3 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD4: productType: L1B_RA_BD4 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD5: productType: L1B_RA_BD5 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD6: productType: L1B_RA_BD6 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD7: productType: L1B_RA_BD7 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD8: productType: L1B_RA_BD8 - collection: Sentinel5P + collection: SENTINEL-5P # S5P L2 S5P_L2_NO2: productType: L2__NO2___ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_CLOUD: productType: L2__CLOUD_ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_O3: productType: L2__O3____ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_CO: productType: L2__CO____ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_AER_AI: productType: L2__AER_AI - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_O3_PR: productType: L2__O3__PR - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_O3_TCL: productType: L2__O3_TCL - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_AER_LH: productType: L2__AER_LH - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_HCHO: productType: L2__HCHO__ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_CH4: productType: L2__CH4___ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_NP_BD3: productType: L2__NP_BD3 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_NP_BD6: productType: L2__NP_BD6 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_NP_BD7: productType: L2__NP_BD7 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_SO2: productType: L2__SO2___ - collection: Sentinel5P + collection: SENTINEL-5P # COP DEM COP_DEM_GLO30_DGED: productType: DGE_30 - collection: CopDem + collection: COP-DEM metadata_mapping: cloudCover: '$.null' COP_DEM_GLO30_DTED: productType: DTE_30 - collection: CopDem + collection: COP-DEM metadata_mapping: cloudCover: '$.null' COP_DEM_GLO90_DGED: productType: DGE_90 - collection: CopDem + collection: COP-DEM metadata_mapping: cloudCover: '$.null' COP_DEM_GLO90_DTED: productType: DTE_90 - collection: CopDem + collection: COP-DEM metadata_mapping: cloudCover: '$.null' GENERIC_PRODUCT_TYPE: productType: '{productType}' collection: '{collection}' --- -!provider +!provider # MARK: onda name: onda priority: 0 description: Serco DIAS @@ -1227,6 +1265,7 @@ api_endpoint: 'https://catalogue.onda-dias.eu/dias-catalogue/Products' timeout: 60 need_auth: false + ssl_verify: true dont_quote: - '[' - ']' @@ -1239,6 +1278,18 @@ next_page_url_tpl: '{url}?{search}&$top={items_per_page}&$skip={skip}&$expand=Metadata' # 2021/03/19: 2000 is the max, if greater 200 response but contains an error message max_items_per_page: 2_000 + sort: + sort_by_default: + - !!python/tuple [startTimeFromAscendingNode, ASC] + sort_by_tpl: '&$orderby={sort_param} {sort_order}' + sort_param_mapping: + startTimeFromAscendingNode: beginPosition + uid: id + storageStatus: offline + sort_order_mapping: + ascending: asc + descending: desc + max_sort_params: 1 results_entry: 'value' literal_search_params: $format: json @@ -1309,7 +1360,7 @@ - '$.Metadata.sensorType' # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4) - title: '$.Metadata.filename' + title: '{$.Metadata.filename#remove_extension}' topicCategory: - null - '$.Metadata.topicCategory' @@ -1497,18 +1548,22 @@ platform: '{platform}' download: !plugin type: HTTPDownload + # base_uri used to parse downloadLink base_uri: 'https://catalogue.onda-dias.eu/dias-catalogue/Products' extract: true + archive_depth: 2 auth_error_code: 401 order_enabled: true order_method: 'POST' + ssl_verify: true order_headers: Content-Type: application/json auth: !plugin type: GenericAuth + ssl_verify: true --- -!provider +!provider # MARK: astraea_eod name: astraea_eod priority: 0 roles: @@ -1519,6 +1574,7 @@ type: StacSearch api_endpoint: https://eod-catalog-svc-prod.astraea.earth/search need_auth: false + ssl_verify: true discover_queryables: fetch_url: null product_type_fetch_url: null @@ -1529,6 +1585,13 @@ # This provider doesn't implement any pagination, let's just try to get the maximum number of # products available at once then, so we stick to 10_000. max_items_per_page: 10_000 + sort: + sort_by_default: + - !!python/tuple [startTimeFromAscendingNode, ASC] + sort_param_mapping: + id: id + startTimeFromAscendingNode: properties.datetime + creationDate: properties.created metadata_mapping: # redefine the following mapppings as the provider does not support advanced queries/filtering, # these parameters will not be queryable @@ -1593,7 +1656,7 @@ download: !plugin type: AwsDownload requester_pays: True - flatten_top_dirs: True + ssl_verify: true products: S1_SAR_GRD: default_bucket: 'sentinel-s1-l1c' @@ -1626,9 +1689,10 @@ - tilePath auth: !plugin type: AwsAuth + ssl_verify: true --- -!provider +!provider # MARK: usgs_satapi_aws name: usgs_satapi_aws priority: 0 roles: @@ -1639,6 +1703,7 @@ type: StacSearch api_endpoint: https://landsatlook.usgs.gov/stac-server/search need_auth: false + ssl_verify: true discover_queryables: fetch_url: null product_type_fetch_url: null @@ -1647,6 +1712,18 @@ # but in practive if an Internal Server Error is returned for more than # about 500 products. max_items_per_page: 500 + sort: + sort_by_default: + - !!python/tuple [startTimeFromAscendingNode, ASC] + sort_param_mapping: + id: id + startTimeFromAscendingNode: properties.datetime + creationDate: properties.created + modificationDate: properties.updated + platformSerialIdentifier: properties.platform + illuminationElevationAngle: properties.view:sun_elevation + illuminationAzimuthAngle: properties.view:sun_azimuth + cloudCover: properties.eo:cloud_cover metadata_mapping: assets: '{$.assets#recursive_sub_str(r"https?(.*)landsatlook.usgs.gov/data/",r"s3\1usgs-landsat/")}' awsProductId: '{$.assets.thumbnail.href#replace_str(r".+/([A-Z0-9_]+)/[\w.]+$",r"\1")}' @@ -1670,12 +1747,13 @@ download: !plugin type: AwsDownload requester_pays: True - flatten_top_dirs: True + ssl_verify: true auth: !plugin type: AwsAuth + ssl_verify: true --- -!provider +!provider # MARK: earth_search name: earth_search priority: 0 roles: @@ -1686,6 +1764,7 @@ type: StacSearch api_endpoint: https://earth-search.aws.element84.com/v1/search need_auth: false + ssl_verify: true discover_product_types: results_entry: '$.collections[?id!="sentinel-s2-l2a-cogs"]' discover_queryables: @@ -1701,6 +1780,17 @@ # say the max is 10_000. In practice a too high number (e.g. 5_000) returns a 502 error ({"message": "Internal server error"}). # Let's set it to a more robust number: 500 max_items_per_page: 500 + sort: + sort_by_default: + - !!python/tuple [startTimeFromAscendingNode, ASC] + sort_param_mapping: + id: id + startTimeFromAscendingNode: properties.datetime + creationDate: properties.created + modificationDate: properties.updated + platformSerialIdentifier: properties.platform + resolution: properties.gsd + cloudCover: properties.eo:cloud_cover metadata_mapping: utmZone: - '{{"query":{{"mgrs:utm_zone":{{"eq":"{utmZone}"}}}}}}' @@ -1714,6 +1804,7 @@ tileIdentifier: - '{{"query":{{"mgrs:utm_zone":{{"eq":"{tileIdentifier#slice_str(0,2,1)}"}},"mgrs:latitude_band":{{"eq":"{tileIdentifier#slice_str(2,3,1)}"}},"mgrs:grid_square":{{"eq":"{tileIdentifier#slice_str(3,5,1)}"}}}}}}' - '{utmZone}{latitudeBand}{gridSquare}' + assets: '{$.assets#dict_filter($[?(href=~"^s3.*")])}' products: S1_SAR_GRD: productType: sentinel-1-grd @@ -1752,7 +1843,7 @@ download: !plugin type: AwsDownload requester_pays: True - flatten_top_dirs: True + ssl_verify: true products: S2_MSI_L1C: default_bucket: 'sentinel-s2-l1c' @@ -1762,9 +1853,10 @@ - tilePath auth: !plugin type: AwsAuth + ssl_verify: true --- -!provider +!provider # MARK: earth_search_cog name: earth_search_cog priority: 0 roles: @@ -1775,6 +1867,7 @@ type: StacSearch api_endpoint: https://earth-search.aws.element84.com/v1/search need_auth: false + ssl_verify: true discover_product_types: fetch_url: null discover_queryables: @@ -1790,10 +1883,23 @@ # say the max is 10_000. In practice a too high number (e.g. 5_000) returns a 502 error ({"message": "Internal server error"}). # Let's set it to a more robust number: 500 max_items_per_page: 500 + sort: + sort_by_default: + - !!python/tuple [startTimeFromAscendingNode, ASC] + sort_param_mapping: + id: id + startTimeFromAscendingNode: properties.datetime + creationDate: properties.created + modificationDate: properties.updated + platform: properties.constellation + platformSerialIdentifier: properties.platform + resolution: properties.gsd + cloudCover: properties.eo:cloud_cover metadata_mapping: platformSerialIdentifier: '$.id.`split(_, 0, -1)`' polarizationMode: '$.id.`sub(/.{14}([A-Z]{2}).*/, \\1)`' title: '{$.properties."s2:product_uri"#remove_extension}' + assets: '{$.assets#dict_filter($[?(href=~"^http.*")])}' products: S2_MSI_L2A_COG: productType: sentinel-2-l2a @@ -1801,9 +1907,9 @@ productType: '{productType}' download: !plugin type: HTTPDownload - base_uri: 'https://sentinel-cogs.s3.us-west-2.amazonaws.com' + ssl_verify: true --- -!provider +!provider # MARK: earth_search_gcs name: earth_search_gcs priority: 0 roles: @@ -1814,6 +1920,7 @@ type: StacSearch api_endpoint: https://earth-search.aws.element84.com/v0/search need_auth: false + ssl_verify: true discover_product_types: fetch_url: null discover_queryables: @@ -1829,6 +1936,17 @@ # say the max is 10_000. In practice a too high number (e.g. 5_000) returns a 502 error ({"message": "Internal server error"}). # Let's set it to a more robust number: 500 max_items_per_page: 500 + sort: + sort_by_default: + - !!python/tuple [startTimeFromAscendingNode, ASC] + sort_param_mapping: + id: id + startTimeFromAscendingNode: properties.datetime + creationDate: properties.created + modificationDate: properties.updated + platformSerialIdentifier: properties.platform + resolution: properties.gsd + cloudCover: properties.eo:cloud_cover products: S2_MSI_L1C: productType: sentinel-s2-l1c @@ -1852,13 +1970,15 @@ type: AwsDownload base_uri: https://storage.googleapis.com ignore_assets: True + ssl_verify: true products: S2_MSI_L1C: default_bucket: 'gcp-public-data-sentinel-2' auth: !plugin type: AwsAuth + ssl_verify: true --- -!provider +!provider # MARK: ecmwf name: ecmwf priority: 0 description: ECMWF archive products @@ -1869,6 +1989,7 @@ type: EcmwfApi api_endpoint: https://api.ecmwf.int/v1 extract: false + ssl_verify: true metadata_mapping: productType: '$.productType' title: '$.id' @@ -2075,41 +2196,109 @@ levtype: sfc origin: ecmf grid: 0.5/0.5 - param: 59/134/136/146/147/151/165/166/167/168/172/176/177/179/189/235/228001/228002/228039/228139/228141/228144/228164/228228 + param: 59/134/136/146/147/151/165/166/167/168/172/176/177/179/189/235/228002/228039/228139/228141/228144/228164/228228 step: 0 time: 00:00 + target: output GENERIC_PRODUCT_TYPE: dataset: '{productType}' --- -!provider +!provider # MARK: cop_ads name: cop_ads priority: 0 description: Copernicus Atmosphere Data Store roles: - host url: https://ads.atmosphere.copernicus.eu/ - api: !plugin - type: CdsApi - api_endpoint: https://ads.atmosphere.copernicus.eu/api/v2 + auth: !plugin + type: GenericAuth + method: basic + ssl_verify: true + download: !plugin + type: HTTPDownload + timeout: 30 + ssl_verify: true extract: false - flatten_top_dirs: True + auth_error_code: 401 + order_enabled: true + order_method: POST + order_on_response: + metadata_mapping: + orderId: $.json.request_id + orderStatusLink: https://ads.atmosphere.copernicus.eu/api/v2/tasks/{orderId} + order_status: + request: + method: GET + metadata_mapping: + status: $.json.state + message: $.json.message + error_message: $.json.error.reason + error: + status: failed + success: + status: completed + on_success: + metadata_mapping: + downloadLink: $.json.location + products: + CAMS_GAC_FORECAST: + outputs_extension: .grib + CAMS_GFE_GFAS: + outputs_extension: .grib + CAMS_EU_AIR_QUALITY_FORECAST: + outputs_extension: .grib + CAMS_EU_AIR_QUALITY_RE: + outputs_extension: .zip + extract: true + CAMS_GRF: + outputs_extension: .zip + extract: true + CAMS_GRF_AUX: + outputs_extension: .zip + extract: true + CAMS_SOLAR_RADIATION: + outputs_extension: .csv + CAMS_GREENHOUSE_EGG4_MONTHLY: + outputs_extension: .grib + CAMS_GREENHOUSE_EGG4: + outputs_extension: .grib + CAMS_GREENHOUSE_INVERSION: + outputs_extension: .grib + CAMS_GLOBAL_EMISSIONS: + outputs_extension: .zip + extract: true + CAMS_EAC4: + outputs_extension: .grib + CAMS_EAC4_MONTHLY: + outputs_extension: .grib + search: !plugin + type: BuildSearchResult + ssl_verify: true + end_date_excluded: false + remove_from_query: + - dataset + discover_queryables: + fetch_url: null + product_type_fetch_url: null constraints_file_url: "https://datastore.copernicus-climate.eu/cams/published-forms/camsprod/{dataset}/constraints.json" metadata_mapping: productType: '$.productType' title: '$.id' startTimeFromAscendingNode: '{$.startTimeFromAscendingNode#to_iso_date}' completionTimeFromAscendingNode: - - 'date={startTimeFromAscendingNode#to_iso_date}/{completionTimeFromAscendingNode#to_iso_date(-1,)}' + - 'date={startTimeFromAscendingNode#to_iso_date}/{completionTimeFromAscendingNode#to_iso_date}' - '{$.completionTimeFromAscendingNode#to_iso_date}' + _date: '{startTimeFromAscendingNode}/{completionTimeFromAscendingNode}' id: '$.id' # The geographic extent of the product geometry: - 'area={geometry#to_nwse_bounds_str(/)}' - '$.geometry' defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - # storageStatus set to ONLINE for consistency between providers - storageStatus: '{$.null#replace_str("Not Available","ONLINE")}' - downloadLink: 'https://ads.atmosphere.copernicus.eu/cdsapp#!/dataset/{dataset}' + storageStatus: '{$.null#replace_str("Not Available","OFFLINE")}' + downloadLink: '$.null' + qs: $.qs + orderLink: 'https://ads.atmosphere.copernicus.eu/api/v2/resources/{dataset}?{qs#to_geojson}' # Copernicus ADS specific parameters accuracy: - accuracy @@ -2344,7 +2533,7 @@ - '$.variable' version: - version - - '$.version' + - '{$.version#to_geojson}' quantity: - quantity - '$.quantity' @@ -2370,14 +2559,14 @@ dataset: cams-europe-air-quality-forecasts model: ensemble format: grib - variable: alder_pollen + variable: ammonia type: forecast time: '00:00' level: '0' leadtime_hour: '0' metadata_mapping: geometry: - - 'area={geometry#to_nwse_bounds}' + - '{{"area": {geometry#to_nwse_bounds} }}' - '$.geometry' CAMS_EU_AIR_QUALITY_RE: dataset: cams-europe-air-quality-reanalyses @@ -2387,10 +2576,14 @@ model: ensemble level: '0' metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + completionTimeFromAscendingNode: + - | + {{ + "year": {_date#interval_to_datetime_dict}["year"], + "month": {_date#interval_to_datetime_dict}["month"], + "day": {_date#interval_to_datetime_dict}["day"] + }} + - '{$.completionTimeFromAscendingNode#to_iso_date}' CAMS_GRF: dataset: cams-global-radiative-forcings format: zip @@ -2401,10 +2594,14 @@ level: surface version: '2' metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + completionTimeFromAscendingNode: + - | + {{ + "year": {_date#interval_to_datetime_dict}["year"], + "month": {_date#interval_to_datetime_dict}["month"], + "day": {_date#interval_to_datetime_dict}["day"] + }} + - '{$.completionTimeFromAscendingNode#to_iso_date}' CAMS_GRF_AUX: dataset: cams-global-radiative-forcing-auxilliary-variables band: short_wave @@ -2415,10 +2612,14 @@ aerosol_type: marine level: surface metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + completionTimeFromAscendingNode: + - | + {{ + "year": {_date#interval_to_datetime_dict}["year"], + "month": {_date#interval_to_datetime_dict}["month"], + "day": {_date#interval_to_datetime_dict}["day"] + }} + - '{$.completionTimeFromAscendingNode#to_iso_date}' CAMS_SOLAR_RADIATION: dataset: cams-solar-radiation-timeseries sky_type: clear @@ -2435,10 +2636,14 @@ variable: snow_albedo api_product_type: monthly_mean metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + completionTimeFromAscendingNode: + - | + {{ + "year": {_date#interval_to_datetime_dict}["year"], + "month": {_date#interval_to_datetime_dict}["month"], + "day": {_date#interval_to_datetime_dict}["day"] + }} + - '{$.completionTimeFromAscendingNode#to_iso_date}' CAMS_GREENHOUSE_EGG4: dataset: cams-global-ghg-reanalysis-egg4 format: grib @@ -2452,10 +2657,14 @@ input_observations: surface time_aggregation: instantaneous metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + completionTimeFromAscendingNode: + - | + {{ + "year": {_date#interval_to_datetime_dict}["year"], + "month": {_date#interval_to_datetime_dict}["month"], + "day": {_date#interval_to_datetime_dict}["day"] + }} + - '{$.completionTimeFromAscendingNode#to_iso_date}' CAMS_GLOBAL_EMISSIONS: dataset: cams-global-emission-inventories version: latest @@ -2463,10 +2672,14 @@ variable: acids source: anthropogenic metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + completionTimeFromAscendingNode: + - | + {{ + "year": {_date#interval_to_datetime_dict}["year"], + "month": {_date#interval_to_datetime_dict}["month"], + "day": {_date#interval_to_datetime_dict}["day"] + }} + - '{$.completionTimeFromAscendingNode#to_iso_date}' CAMS_EAC4: dataset: cams-global-reanalysis-eac4 format: grib @@ -2478,361 +2691,511 @@ variable: 2m_dewpoint_temperature api_product_type: monthly_mean metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + completionTimeFromAscendingNode: + - | + {{ + "year": {_date#interval_to_datetime_dict}["year"], + "month": {_date#interval_to_datetime_dict}["month"], + "day": {_date#interval_to_datetime_dict}["day"] + }} + - '{$.completionTimeFromAscendingNode#to_iso_date}' GENERIC_PRODUCT_TYPE: dataset: '{productType}' - format: grib - time: '00:00' --- -!provider +!provider # MARK: cop_cds name: cop_cds priority: 0 description: Copernicus Climate Data Store roles: - host url: https://cds.climate.copernicus.eu/ - api: !plugin - type: CdsApi - api_endpoint: https://cds.climate.copernicus.eu/api/v2 + # anchors to avoid duplications + anchor_day_month_year: &day_month_year + completionTimeFromAscendingNode: + - | + {{ + "year": {_date#interval_to_datetime_dict}["year"], + "month": {_date#interval_to_datetime_dict}["month"], + "day": {_date#interval_to_datetime_dict}["day"] + }} + - '{$.completionTimeFromAscendingNode#to_iso_date}' + anchor_month_year: &month_year + completionTimeFromAscendingNode: + - | + {{ + "year": {_date#interval_to_datetime_dict}["year"], + "month": {_date#interval_to_datetime_dict}["month"] + }} + - '{$.completionTimeFromAscendingNode#to_iso_date}' + anchor_hday_hmonth_hyear: &hday_hmonth_hyear + completionTimeFromAscendingNode: + - | + {{ + "hyear": {_date#interval_to_datetime_dict}["year"], + "hmonth": {_date#interval_to_datetime_dict}["month"], + "hday": {_date#interval_to_datetime_dict}["day"] + }} + - '{$.completionTimeFromAscendingNode#to_iso_date}' + anchor_hdate: &hdate + completionTimeFromAscendingNode: + - 'hdate={startTimeFromAscendingNode#to_iso_date}/{completionTimeFromAscendingNode#to_iso_date(-1,)}' + - '{$.completionTimeFromAscendingNode#to_iso_date}' + auth: !plugin + type: GenericAuth + method: basic + ssl_verify: true + download: !plugin + type: HTTPDownload + timeout: 30 + ssl_verify: true extract: false + auth_error_code: 401 + order_enabled: true + order_method: POST + order_on_response: + metadata_mapping: + orderId: $.json.request_id + orderStatusLink: https://cds.climate.copernicus.eu/api/v2/tasks/{orderId} + order_status: + request: + method: GET + metadata_mapping: + status: $.json.state + message: $.json.message + error_message: $.json.error.reason + error: + status: failed + success: + status: completed + on_success: + metadata_mapping: + downloadLink: $.json.location + products: + AG_ERA5: + outputs_extension: .zip + extract: true + ERA5_SL: + outputs_extension: .grib + ERA5_PL: + outputs_extension: .grib + ERA5_PL_MONTHLY: + outputs_extension: .grib + ERA5_LAND: + outputs_extension: .grib + ERA5_LAND_MONTHLY: + outputs_extension: .grib + ERA5_SL_MONTHLY: + outputs_extension: .grib + UERRA_EUROPE_SL: + outputs_extension: .grib + SATELLITE_SEA_LEVEL_BLACK_SEA: + outputs_extension: .zip + extract: true + GLACIERS_DIST_RANDOLPH: + outputs_extension: .zip + extract: true + FIRE_HISTORICAL: + outputs_extension: .grib + GLOFAS_FORECAST: + outputs_extension: .grib + GLOFAS_REFORECAST: + outputs_extension: .grib + GLOFAS_HISTORICAL: + outputs_extension: .grib + GLOFAS_SEASONAL: + outputs_extension: .grib + GLOFAS_SEASONAL_REFORECAST: + outputs_extension: .grib + EFAS_FORECAST: + outputs_extension: .grib.zip + extract: true + EFAS_HISTORICAL: + outputs_extension: .grib.zip + extract: true + EFAS_REFORECAST: + outputs_extension: .grib.zip + extract: true + EFAS_SEASONAL: + outputs_extension: .grib.zip + extract: true + EFAS_SEASONAL_REFORECAST: + outputs_extension: .grib.zip + extract: true + SATELLITE_CARBON_DIOXIDE: + outputs_extension: .zip + extract: true + SATELLITE_FIRE_BURNED_AREA: + outputs_extension: .zip + extract: true + SATELLITE_METHANE: + outputs_extension: .zip + extract: true + SEASONAL_POSTPROCESSED_PL: + outputs_extension: .grib + SEASONAL_POSTPROCESSED_SL: + outputs_extension: .grib + SEASONAL_ORIGINAL_SL: + outputs_extension: .grib + SEASONAL_ORIGINAL_PL: + outputs_extension: .grib + SEASONAL_MONTHLY_PL: + outputs_extension: .grib + SEASONAL_MONTHLY_SL: + outputs_extension: .grib + SIS_HYDRO_MET_PROJ: + outputs_extension: .zip + extract: true + search: !plugin + type: BuildSearchResult + ssl_verify: true + end_date_excluded: false + remove_from_query: + - dataset discover_queryables: fetch_url: null product_type_fetch_url: null - flatten_top_dirs: True - constraints_file_url: "http://datastore.copernicus-climate.eu/c3s/published-forms/c3sprod/{dataset}/constraints.json" + constraints_file_url: http://datastore.copernicus-climate.eu/c3s/published-forms/c3sprod/{dataset}/constraints.json metadata_mapping: - productType: '$.productType' - title: '$.id' + productType: $.productType + title: $.id startTimeFromAscendingNode: '{$.startTimeFromAscendingNode#to_iso_date}' completionTimeFromAscendingNode: - - 'date={startTimeFromAscendingNode#to_iso_date}/{completionTimeFromAscendingNode#to_iso_date(-1,)}' + - date={startTimeFromAscendingNode#to_iso_date}/{completionTimeFromAscendingNode#to_iso_date} - '{$.completionTimeFromAscendingNode#to_iso_date}' - id: '$.id' + _date: '{startTimeFromAscendingNode}/{completionTimeFromAscendingNode}' + id: $.id # The geographic extent of the product geometry: - - 'area={geometry#to_nwse_bounds_str(/)}' - - '$.geometry' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - # storageStatus set to ONLINE for consistency between providers - storageStatus: '{$.null#replace_str("Not Available","ONLINE")}' - downloadLink: 'https://cds.climate.copernicus.eu/cdsapp#!/dataset/{dataset}' + - area={geometry#to_nwse_bounds_str(/)} + - $.geometry + defaultGeometry: POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90)) + storageStatus: '{$.null#replace_str("Not Available","OFFLINE")}' + downloadLink: $.null + qs: $.qs + orderLink: https://cds.climate.copernicus.eu/api/v2/resources/{dataset}?{qs#to_geojson} # Copernicus CDS specific parameters accuracy: - accuracy - - '$.accuracy' + - $.accuracy anoffset: - anoffset - - '$.anoffset' + - $.anoffset api_product_type: - product_type - - '$.api_product_type' + - $.api_product_type bitmap: - bitmap - - '$.bitmap' + - $.bitmap block: - block - - '$.block' + - $.block + cdr_type: + - cdr_type + - $.cdr_type channel: - channel - - '$.channel' + - $.channel class: - class - - '$.class' + - $.class database: - database - - '$.database' + - $.database dataset: - dataset - - '$.dataset' + - $.dataset dataset_type: - dataset_type - - '$.dataset_type' + - $.dataset_type date_range: - date_range - - '$.date_range' + - $.date_range day: - day - - '$.day' + - $.day diagnostic: - diagnostic - - '$.diagnostic' + - $.diagnostic direction: - direction - - '$.direction' + - $.direction domain: - domain - - '$.domain' + - $.domain duplicates: - duplicates - - '$.duplicates' + - $.duplicates ensemble_member: - ensemble_member - - '$.ensemble_member' + - $.ensemble_member expect: - expect - - '$.expect' + - $.expect experiment: - experiment - - '$.experiment' + - $.experiment expver: - expver - - '$.expver' + - $.expver fcperiod: - fcperiod - - '$.fcperiod' + - $.fcperiod fieldset: - fieldset - - '$.fieldset' + - $.fieldset filter: - filter - - '$.filter' + - $.filter format: - format - - '$.format' + - $.format frequency: - frequency - - '$.frequency' + - $.frequency gcm: - gcm - - '$.gcm' + - $.gcm grid: - grid - - '$.grid' + - $.grid hdate: - hdate - - '$.hdate' + - $.hdate horizontal_resolution: - horizontal_resolution - - '$.horizontal_resolution' + - $.horizontal_resolution hydrological_model: - hydrological_model - - '$.hydrological_model' + - $.hydrological_model ident: - ident - - '$.ident' + - $.ident interpolation: - interpolation - - '$.interpolation' + - $.interpolation intgrid: - intgrid - - '$.intgrid' + - $.intgrid iteration: - iteration - - '$.iteration' + - $.iteration latitude: - latitude - - '$.latitude' + - $.latitude levelist: - levelist - - '$.levelist' + - $.levelist leadtime_hour: - leadtime_hour - - '$.leadtime_hour' + - $.leadtime_hour leadtime_month: - leadtime_month - - '$.leadtime_month' + - $.leadtime_month levtype: - levtype - - '$.levtype' + - $.levtype longitude: - longitude - - '$.longitude' + - $.longitude lsm: - lsm - - '$.lsm' + - $.lsm method: - method - - '$.method' + - $.method model_levels: - model_levels - - '$.model_levels' + - $.model_levels month: - month - - '$.month' + - $.month number: - number - - '$.number' + - $.number obsgroup: - obsgroup - - '$.obsgroup' + - $.obsgroup obstype: - obstype - - '$.obstype' + - $.obstype origin: - origin - - '$.origin' + - $.origin originating_centre: - originating_centre - - '$.originating_centre' + - $.originating_centre packing: - packing - - '$.packing' + - $.packing padding: - padding - - '$.padding' + - $.padding param: - param - - '$.param' + - $.param period: - period - - '$.period' + - $.period pressure_level: - pressure_level - - '$.pressure_level' + - $.pressure_level priority: - priority - - '$.priority' + - $.priority processing_level: - processing_level - - '$.processing_level' + - $.processing_level processing_type: - processing_type - - '$.processing_type' + - $.processing_type product: - product - - '$.product' + - $.product range: - range - - '$.range' + - $.range rcm: - rcm - - '$.rcm' + - $.rcm refdate: - refdate - - '$.refdate' + - $.refdate reference: - reference - - '$.reference' + - $.reference + region: + - region + - $.region reportype: - reportype - - '$.reportype' + - $.reportype repres: - repres - - '$.repres' + - $.repres resol: - resol - - '$.resol' + - $.resol rotation: - rotation - - '$.rotation' + - $.rotation + satellite: + - satellite + - $.satellite section: - section - - '$.section' + - $.section + sensor: + - sensor + - $.sensor sensor_and_algorithm: - sensor_and_algorithm - - '$.sensor_and_algorithm' + - $.sensor_and_algorithm source: - source - - '$.source' + - $.source + statistic: + - statistic + - $.statistic step: - step - - '$.step' + - $.step stream: - stream - - '$.stream' + - $.stream system: - system - - '$.system' + - $.system + system_version: + - system_version + - '{$.system_version#to_geojson}' target: - target - - '$.target' + - $.target + temporal_aggregation: + - temporal_aggregation + - $.temporal_aggregation time: - time - - '$.time' + - $.time time_aggregation: - time_aggregation - - '$.time_aggregation' + - $.time_aggregation truncation: - truncation - - '$.truncation' + - $.truncation type: - type - - '$.type' + - $.type use: - use - - '$.use' + - $.use variable: - variable - - '$.variable' + - $.variable variable_type: - variable_type - - '$.variable_type' + - $.variable_type version: - version - - '$.version' - system_version: - - system_version - - '$.system_version' + - '{$.version#to_geojson}' year: - year - - '$.year' + - $.year products: # See available Public Datasets in https://cds.climate.copernicus.eu/cdsapp#!/search?type=dataset + AG_ERA5: + dataset: sis-agrometeorological-indicators + version: '1_1' + variable: cloud_cover + statistic: 24_hour_mean + format: zip + metadata_mapping: + <<: *day_month_year ERA5_SL: dataset: reanalysis-era5-single-levels api_product_type: reanalysis - time: '00:00' + time: 00:00 format: grib ERA5_PL: dataset: reanalysis-era5-pressure-levels api_product_type: reanalysis - time: '00:00' + time: 00:00 format: grib ERA5_PL_MONTHLY: dataset: reanalysis-era5-pressure-levels-monthly-means api_product_type: monthly_averaged_reanalysis - time: '00:00' + time: 00:00 format: grib variable: divergence pressure_level: '1' metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + <<: *day_month_year ERA5_LAND: dataset: reanalysis-era5-land variable: 2m_dewpoint_temperature - time: '01:00' + time: 01:00 format: grib ERA5_LAND_MONTHLY: dataset: reanalysis-era5-land-monthly-means api_product_type: monthly_averaged_reanalysis variable: 2m_dewpoint_temperature - time: '00:00' + time: 00:00 format: grib metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + <<: *day_month_year ERA5_SL_MONTHLY: dataset: reanalysis-era5-single-levels-monthly-means api_product_type: monthly_averaged_reanalysis - time: '00:00' + time: 00:00 format: grib metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + <<: *day_month_year UERRA_EUROPE_SL: dataset: reanalysis-uerra-europe-single-levels origin: mescan_surfex variable: 10m_wind_direction - time: '00:00' + time: 00:00 format: grib - SATELLITE_SEA_LEVEL_BLACK_SEA: - dataset: satellite-sea-level-black-sea - format: zip - metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' GLACIERS_DIST_RANDOLPH: dataset: insitu-glaciers-extent variable: glacier_area @@ -2852,7 +3215,7 @@ system_version: operational variable: river_discharge_in_the_last_24_hours format: grib - hydrological_model: lisflood + hydrological_model: htessel_lisflood api_product_type: control_forecast leadtime_hour: '24' GLOFAS_REFORECAST: @@ -2871,9 +3234,7 @@ hydrological_model: lisflood api_product_type: consolidated metadata_mapping: - completionTimeFromAscendingNode: - - 'hdate={startTimeFromAscendingNode#to_iso_date}/{completionTimeFromAscendingNode#to_iso_date(-1,)}' - - '{$.completionTimeFromAscendingNode#to_iso_date}' + <<: *hday_hmonth_hyear GLOFAS_SEASONAL: dataset: cems-glofas-seasonal variable: river_discharge_in_the_last_24_hours @@ -2882,10 +3243,7 @@ hydrological_model: lisflood leadtime_hour: '24' metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + <<: *day_month_year GLOFAS_SEASONAL_REFORECAST: dataset: cems-glofas-seasonal-reforecast format: grib @@ -2894,10 +3252,7 @@ hydrological_model: lisflood leadtime_hour: '24' metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"hyear": {_date#interval_to_datetime_dict}["year"], "hmonth": {_date#interval_to_datetime_dict}["month"], "hday": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + <<: *hday_hmonth_hyear EFAS_FORECAST: dataset: efas-forecast format: grib.zip @@ -2906,7 +3261,7 @@ api_product_type: control_forecast variable: river_discharge_in_the_last_24_hours model_levels: surface_level - time: '00:00' + time: 00:00 leadtime_hour: '24' EFAS_HISTORICAL: dataset: efas-historical @@ -2914,11 +3269,9 @@ model_levels: surface_level variable: snow_depth_water_equivalent system_version: version_5_0 - time: '00:00' + time: 00:00 metadata_mapping: - completionTimeFromAscendingNode: - - 'hdate={startTimeFromAscendingNode#to_iso_date}/{completionTimeFromAscendingNode#to_iso_date(-1,)}' - - '{$.completionTimeFromAscendingNode#to_iso_date}' + <<: *hday_hmonth_hyear EFAS_REFORECAST: dataset: efas-reforecast system_version: version_5_0 @@ -2928,9 +3281,7 @@ model_levels: surface_level leadtime_hour: '6' metadata_mapping: - completionTimeFromAscendingNode: - - 'hdate={startTimeFromAscendingNode#to_iso_date}/{completionTimeFromAscendingNode#to_iso_date(-1,)}' - - '{$.completionTimeFromAscendingNode#to_iso_date}' + <<: *hday_hmonth_hyear EFAS_SEASONAL: dataset: efas-seasonal system_version: operational @@ -2939,10 +3290,7 @@ model_levels: surface_level leadtime_hour: '24' metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + <<: *day_month_year EFAS_SEASONAL_REFORECAST: dataset: efas-seasonal-reforecast system_version: version_5_0 @@ -2951,10 +3299,7 @@ model_levels: surface_level leadtime_hour: '24' metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"hyear": {_date#interval_to_datetime_dict}["year"], "hmonth": {_date#interval_to_datetime_dict}["month"], "hday": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + <<: *hday_hmonth_hyear SATELLITE_CARBON_DIOXIDE: dataset: satellite-carbon-dioxide format: zip @@ -2963,10 +3308,23 @@ sensor_and_algorithm: sciamachy_wfmd version: '4.0' metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + <<: *day_month_year + SATELLITE_FIRE_BURNED_AREA: + dataset: satellite-fire-burned-area + format: zip + origin: esa_cci + sensor: modis + variable: grid_variables + version: 5_1_1cds + metadata_mapping: + completionTimeFromAscendingNode: + - | + {{ + "year": {_date#interval_to_datetime_dict}["year"], + "month": {_date#interval_to_datetime_dict}["month"], + "nominal_day": {_date#interval_to_datetime_dict}["day"] + }} + - '{$.completionTimeFromAscendingNode#to_iso_date}' SATELLITE_METHANE: dataset: satellite-methane format: zip @@ -2975,10 +3333,60 @@ sensor_and_algorithm: sciamachy_wfmd version: '4.0' metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + <<: *day_month_year + SATELLITE_SEA_ICE_EDGE_TYPE: + cdr_type: cdr + dataset: satellite-sea-ice-edge-type + format: zip + region: northern_hemisphere + variable: + - sea_ice_edge + - sea_ice_type + version: '3_0' + metadata_mapping: + <<: *day_month_year + SATELLITE_SEA_ICE_THICKNESS: + cdr_type: cdr + dataset: satellite-sea-ice-thickness + format: zip + satellite: envisat + variable: all + version: '3_0' + metadata_mapping: + <<: *month_year + SATELLITE_SEA_ICE_CONCENTRATION: + cdr_type: cdr + dataset: satellite-sea-ice-concentration + format: zip + origin: EUMETSAT OSI SAF + region: + - northern_hemisphere + - southern_hemisphere + sensor: ssmis + temporal_aggregation: daily + variable: all + version: v3 + metadata_mapping: + <<: *day_month_year + SATELLITE_SEA_LEVEL_BLACK_SEA: + dataset: satellite-sea-level-black-sea + format: zip + metadata_mapping: + <<: *day_month_year + SATELLITE_SEA_LEVEL_GLOBAL: + dataset: satellite-sea-level-global + format: zip + variable: + - daily + version: vDT2021 + metadata_mapping: + <<: *day_month_year + SATELLITE_SEA_LEVEL_MEDITERRANEAN: + dataset: satellite-sea-level-mediterranean + variable: all + format: zip + metadata_mapping: + <<: *day_month_year SEASONAL_POSTPROCESSED_PL: dataset: seasonal-postprocessed-pressure-levels format: grib @@ -2986,26 +3394,20 @@ system: '4' variable: geopotential_anomaly pressure_level: '10' - api_product_type: 'ensemble_mean' + api_product_type: ensemble_mean leadtime_month: '1' metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + <<: *day_month_year SEASONAL_POSTPROCESSED_SL: dataset: seasonal-postprocessed-single-levels format: grib originating_centre: ecmwf system: '4' variable: 2m_dewpoint_temperature_anomaly - api_product_type: 'ensemble_mean' + api_product_type: ensemble_mean leadtime_month: '1' metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + <<: *day_month_year SEASONAL_ORIGINAL_SL: dataset: seasonal-original-single-levels format: grib @@ -3031,10 +3433,7 @@ api_product_type: monthly_mean leadtime_month: '1' metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + <<: *day_month_year SEASONAL_MONTHLY_SL: dataset: seasonal-monthly-single-levels format: grib @@ -3044,10 +3443,7 @@ api_product_type: monthly_mean leadtime_month: '1' metadata_mapping: - completionTimeFromAscendingNode: '{$.completionTimeFromAscendingNode#to_iso_date}' - _date: - - '{{"_date": {{"year": {_date#interval_to_datetime_dict}["year"], "month": {_date#interval_to_datetime_dict}["month"], "day": {_date#interval_to_datetime_dict}["day"]}} }}' - - '{$._date}' + <<: *day_month_year SIS_HYDRO_MET_PROJ: dataset: sis-hydrology-meteorology-derived-projections format: zip @@ -3064,26 +3460,38 @@ period: 1_5_c GENERIC_PRODUCT_TYPE: dataset: '{productType}' - time: '00:00' - format: netcdf --- -!provider +!provider # MARK: sara name: sara priority: 0 description: Sentinel Australasia Regional Access roles: - host + url: https://www.copernicus.gov.au/ search: !plugin type: QueryStringSearch # The endpoint is based off of the collection. There is a generic endpoint, # but can be very slow if not enough metdata is provided. api_endpoint: 'https://copernicus.nci.org.au/sara.server/1.0/api/collections/{collection}/search.json' need_auth: false + ssl_verify: true pagination: next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}' total_items_nb_key_path: '$.properties.totalResults' # 2021/03/19: 500 is the max, no error if greater max_items_per_page: 500 + sort: + sort_by_default: + - !!python/tuple [startTimeFromAscendingNode, ASC] + sort_by_tpl: '&sortParam={sort_param}&sortOrder={sort_order}' + sort_param_mapping: + startTimeFromAscendingNode: startDate + completionTimeFromAscendingNode: completionDate + sensorMode: sensorMode + sort_order_mapping: + ascending: asc + descending: desc + max_sort_params: 1 discover_metadata: auto_discovery: true metadata_pattern: '^(?!collection)[a-zA-Z0-9_]+$' @@ -3325,16 +3733,17 @@ collection: '{collection}' download: !plugin type: HTTPDownload - base_uri: 'https://copernicus.nci.org.au/' extract: true archive_depth: 2 order_enabled: true auth_error_code: 403 + ssl_verify: true auth: !plugin type: GenericAuth method: basic + ssl_verify: true --- -!provider +!provider # MARK: meteoblue name: meteoblue priority: 0 roles: @@ -3345,6 +3754,7 @@ type: BuildPostSearchResult api_endpoint: 'https://my.meteoblue.com/dataset/query' need_auth: true + ssl_verify: true pagination: next_page_query_obj: '{{"checkOnly":true}}' discover_metadata: @@ -3380,7 +3790,7 @@ timeIntervalsAlignment: - '{{"timeIntervalsAlignment": {timeIntervalsAlignment#to_geojson} }}' - '$.timeIntervalsAlignment' - orderLink: '{downloadLink#replace_str(r"^(.*)(\")(queries\")(.)",r"\1\2runOnJobQueue\2\4 true, \2\3\4")}' + orderLink: '{$.downloadLink#replace_str(r"^(.*)(\")(queries\")(.)",r"\1\2runOnJobQueue\2\4 true, \2\3\4")}' products: NEMSGLOBAL_TCDC: queries: [{'domain':'NEMSGLOBAL','gapFillDomain':null,'timeResolution':'daily','codes':[{'code':71,'level':'sfc','aggregation':'mean'}]}] @@ -3399,27 +3809,35 @@ geometry: {"type": "Polygon", "coordinates": [[[180, -90], [180, 90], [-180, 90], [-180, -90], [180, -90]]]} download: !plugin type: HTTPDownload - base_uri: 'https://my.meteoblue.com/dataset/query' + ssl_verify: true method: POST extract: False order_enabled: true - order_method: 'POST' + order_method: POST order_on_response: metadata_mapping: - order_id: '$.id' - downloadLink: 'http://queueresults.meteoblue.com/{order_id}' - downloadMethod: '{$.null#replace_str("Not Available","GET")}' - orderStatusLink: 'http://my.meteoblue.com/queue/status/{order_id}' - order_status_method: 'GET' - order_status_percent: percentCompleted - order_status_error: - status: error + orderId: '$.json.id' + orderStatusLink: 'http://my.meteoblue.com/queue/status/{orderId}' + order_status: + request: + method: GET + metadata_mapping: + percent: $.json.percentCompleted + status: $.json.status + error: + status: error + on_success: + metadata_mapping: + orderId: '$.json.id' + downloadLink: 'http://queueresults.meteoblue.com/{orderId}' + downloadMethod: '{$.null#replace_str("Not Available","GET")}' outputs_extension: .nc auth: !plugin type: HttpQueryStringAuth auth_uri: 'http://my.meteoblue.com/dataset/meta?dataset=NEMSAUTO' + ssl_verify: true --- -!provider +!provider # MARK: cop_dataspace name: cop_dataspace priority: 0 description: Copernicus Data Space Ecosystem @@ -3427,96 +3845,158 @@ - host url: https://dataspace.copernicus.eu/ search: !plugin - type: QueryStringSearch - api_endpoint: 'http://catalogue.dataspace.copernicus.eu/resto/api/collections/{collection}/search.json' + type: ODataV4Search + api_endpoint: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Products' need_auth: false - timeout: 60 + timeout: 120 + ssl_verify: true + dont_quote: + - '[' + - ']' + - '$' + - '=' + - '&' + - ':' pagination: - next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}&exactCount=1' - total_items_nb_key_path: '$.properties.totalResults' + next_page_url_tpl: '{url}?{search}&$top={items_per_page}&$skip={skip}&$expand=Attributes&$expand=Assets' + count_tpl: '&$count=True' + total_items_nb_key_path: '$."@odata.count"' max_items_per_page: 1_000 + sort: + sort_by_default: + - !!python/tuple [startTimeFromAscendingNode, ASC] + sort_by_tpl: '&$orderby={sort_param} {sort_order}' + sort_param_mapping: + startTimeFromAscendingNode: ContentDate/Start + completionTimeFromAscendingNode: ContentDate/End + publicationDate: PublicationDate + modificationDate: ModificationDate + sort_order_mapping: + ascending: asc + descending: desc + max_sort_params: 1 + results_entry: 'value' + free_text_search_operations: + $filter: + union: ' or ' + wrapper: '{}' + operations: + and: + - "Collection/Name eq '{collection}'" + - "OData.CSC.Intersects(area=geography'{geometry#to_ewkt}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq '{productType}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformShortName' and att/OData.CSC.StringAttribute/Value eq '{platform}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformSerialIdentifier' and att/OData.CSC.StringAttribute/Value eq '{platformSerialIdentifier}')" + - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'spatialResolution' and att/OData.CSC.StringAttribute/Value eq '{resolution}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'authority' and att/OData.CSC.StringAttribute/Value eq '{organisationName}')" + - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'orbitNumber' and att/OData.CSC.StringAttribute/Value eq '{orbitNumber}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'orbitDirection' and att/OData.CSC.StringAttribute/Value eq '{orbitDirection}')" + - "Attributes/OData.CSC.DoubleAttribute/any(att:att/Name eq 'cloudCover' and att/OData.CSC.DoubleAttribute/Value le {cloudCover})" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'operationalMode' and att/OData.CSC.StringAttribute/Value eq '{sensorMode}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'polarisationChannels' and att/OData.CSC.StringAttribute/Value eq '{polarizationChannels}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'tileId' and att/OData.CSC.StringAttribute/Value eq '{tileIdentifier}')" + - "ContentDate/Start lt {completionTimeFromAscendingNode#to_iso_utc_datetime}" + - "ContentDate/End gt {startTimeFromAscendingNode#to_iso_utc_datetime}" + - contains(Name,'{id}') discover_metadata: auto_discovery: true metadata_pattern: '^(?!collection)[a-zA-Z0-9]+$' - search_param: '{metadata}={{{metadata}}}' - metadata_path: '$.properties.*' + search_param: + free_text_search_operations: + $filter: + operations: + and: + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq '{metadata}' and att/OData.CSC.StringAttribute/Value eq '{{{metadata}}}')" + metadata_path: '$.Attributes.*' + per_product_metadata_query: false + metadata_pre_mapping: + metadata_path: '$.Attributes' + metadata_path_id: 'Name' + metadata_path_value: 'Value' metadata_mapping: # Opensearch resource identifier within the search engine context (in our case # within the context of the data provider) - uid: '$.id' + # Queryable parameters are set with null as 1st configuration list value to mark them as queryable, + # but `free_text_search_operations.$filter.operations.and` entries are then used instead. + uid: '$.Id' # OpenSearch Parameters for Collection Search (Table 3) productType: - - productType - - '$.properties.productType' - platform: '$.properties.collection' + - null + - '$.Attributes.productType' + platform: + - null + - '$.Attributes.platformShortName' platformSerialIdentifier: - - platform - - '$.properties.platform' + - null + - '$.Attributes.platformSerialIdentifier' instrument: - - instrument - - '$.properties.instrument' + - null + - '$.Attributes.instrumentShortName' processingLevel: - - processingLevel - - '$.properties.processingLevel' + - null + - '$.Attributes.processingLevel' # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4) - title: '{$.properties.title#remove_extension}' + title: '$.Name' resolution: - - 'resolution' - - '$.properties.resolution' + - null + - '$.Attributes.spatialResolution' organisationName: - - 'organisationName' - - '$.properties.organisationName' - publicationDate: '$.properties.published' + - null + - '$.Attributes.authority' + publicationDate: '$.PublicationDate' # OpenSearch Parameters for Product Search (Table 5) orbitNumber: - - 'orbitNumber' - - '$.properties.orbitNumber' + - null + - '$.Attributes.orbitNumber' orbitDirection: - - 'orbitDirection' - - '$.properties.orbitDirection' + - null + - '$.Attributes.orbitDirection' cloudCover: - - 'cloudCover=[0,{cloudCover}]' - - '$.properties.cloudCover' - modificationDate: '$.properties.updated' + - null + - '$.Attributes.cloudCover' + modificationDate: '$.ModificationDate' sensorMode: - - 'sensorMode' - - '$.properties.sensorMode' + - null + - '$.Attributes.operationalMode' # OpenSearch Parameters for Acquistion Parameters Search (Table 6) startTimeFromAscendingNode: - - startDate - - '$.properties.startDate' + - null + - '$.ContentDate.Start' completionTimeFromAscendingNode: - - completionDate - - '$.properties.completionDate' + - null + - '$.ContentDate.End' polarizationChannels: - - 'polarisation' - - '$.properties.polarisation' + - null + - '$.Attributes.polarisationChannels' # Custom parameters (not defined in the base document referenced above) id: - - 'productIdentifier={id#remove_extension}' - - '{$.properties.title#remove_extension}' + - null + - '{$.Name#remove_extension}' tileIdentifier: - - tileId - - '$.null' + - null + - '$.Attributes.tileId' # The geographic extent of the product geometry: - - 'geometry={geometry#to_rounded_wkt}' - - '($.geometry.`str()`.`sub(/^\\[\\]$/, POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90)))`)|($.geometry[*])' - # The url of the quicklook - quicklook: '$.properties.thumbnail' + - null + - '{$.Footprint#from_ewkt}' # The url to download the product "as is" (literal or as a template to be completed either after the search result # is obtained from the provider or during the eodag download phase) downloadLink: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Products({uid})/$value' # storageStatus: must be one of ONLINE, STAGING, OFFLINE - storageStatus: '$.properties.status' + storageStatus: '{$.Online#get_group_name((?PTrue)|(?PFalse))}' + collection: + - null + - $.null + quicklook: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink' + thumbnail: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink' # Additional metadata provided by the providers but that don't appear in the reference spec - thumbnail: '$.properties.thumbnail' + productIdentifier: '$.S3Path' download: !plugin type: HTTPDownload - base_uri: 'https://catalogue.dataspace.copernicus.eu/odata/v1/Products' extract: true order_enabled: false archive_depth: 2 + ssl_verify: true auth: !plugin type: KeycloakOIDCPasswordAuth auth_base_uri: 'https://identity.dataspace.copernicus.eu/auth' @@ -3526,191 +4006,192 @@ token_provision: qs token_qs_key: 'token' auth_error_code: 401 + ssl_verify: true products: # S2 S2_MSI_L1C: - collection: Sentinel2 + collection: SENTINEL-2 productType: S2MSI1C S2_MSI_L2A: - collection: Sentinel2 + collection: SENTINEL-2 productType: S2MSI2A # S1 S1_SAR_RAW: productType: RAW - collection: Sentinel1 + collection: SENTINEL-1 metadata_mapping: cloudCover: '$.null' S1_SAR_GRD: productType: GRD - collection: Sentinel1 + collection: SENTINEL-1 metadata_mapping: cloudCover: '$.null' S1_SAR_SLC: productType: SLC - collection: Sentinel1 + collection: SENTINEL-1 metadata_mapping: cloudCover: '$.null' S1_SAR_OCN: productType: OCN - collection: Sentinel1 + collection: SENTINEL-1 metadata_mapping: cloudCover: '$.null' # S3 SRAL S3_SRA: productType: SR_1_SRA___ - collection: Sentinel3 + collection: SENTINEL-3 metadata_mapping: cloudCover: '$.null' S3_SRA_A: productType: SR_1_SRA_A_ - collection: Sentinel3 + collection: SENTINEL-3 metadata_mapping: cloudCover: '$.null' S3_SRA_BS: productType: SR_1_SRA_BS - collection: Sentinel3 + collection: SENTINEL-3 metadata_mapping: cloudCover: '$.null' S3_LAN: productType: SR_2_LAN___ - collection: Sentinel3 + collection: SENTINEL-3 metadata_mapping: cloudCover: '$.null' S3_WAT: productType: SR_2_WAT___ - collection: Sentinel3 + collection: SENTINEL-3 metadata_mapping: cloudCover: '$.null' # S3 OLCI S3_EFR: productType: OL_1_EFR___ - collection: Sentinel3 + collection: SENTINEL-3 S3_ERR: productType: OL_1_ERR___ - collection: Sentinel3 + collection: SENTINEL-3 S3_OLCI_L2LRR: productType: OL_2_LRR___ - collection: Sentinel3 + collection: SENTINEL-3 S3_OLCI_L2LFR: productType: OL_2_LFR___ - collection: Sentinel3 + collection: SENTINEL-3 S3_OLCI_L2WRR: productType: OL_2_WRR___ - collection: Sentinel3 + collection: SENTINEL-3 S3_OLCI_L2WFR: productType: OL_2_WFR___ - collection: Sentinel3 + collection: SENTINEL-3 # S3 SLSTR S3_SLSTR_L1RBT: productType: SL_1_RBT___ - collection: Sentinel3 + collection: SENTINEL-3 S3_SLSTR_L2LST: productType: SL_2_LST___ - collection: Sentinel3 + collection: SENTINEL-3 S3_SLSTR_L2WST: productType: SL_2_WST___ - collection: Sentinel3 + collection: SENTINEL-3 S3_SLSTR_L2AOD: productType: SL_2_AOD___ - collection: Sentinel3 + collection: SENTINEL-3 S3_SLSTR_L2FRP: productType: SL_2_FRP___ - collection: Sentinel3 + collection: SENTINEL-3 # S3 SY S3_SY_AOD: productType: SY_2_AOD___ - collection: Sentinel3 + collection: SENTINEL-3 S3_SY_SYN: productType: SY_2_SYN___ - collection: Sentinel3 + collection: SENTINEL-3 S3_SY_V10: productType: SY_2_V10___ - collection: Sentinel3 + collection: SENTINEL-3 S3_SY_VG1: productType: SY_2_VG1___ - collection: Sentinel3 + collection: SENTINEL-3 S3_SY_VGP: productType: SY_2_VGP___ - collection: Sentinel3 + collection: SENTINEL-3 # S5P L1 S5P_L1B_IR_SIR: productType: L1B_IR_SIR - collection: Sentinel5P + collection: Sentinel-5P S5P_L1B_IR_UVN: productType: L1B_IR_UVN - collection: Sentinel5P + collection: Sentinel-5P S5P_L1B_RA_BD1: productType: L1B_RA_BD1 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD2: productType: L1B_RA_BD2 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD3: productType: L1B_RA_BD3 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD4: productType: L1B_RA_BD4 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD5: productType: L1B_RA_BD5 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD6: productType: L1B_RA_BD6 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD7: productType: L1B_RA_BD7 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD8: productType: L1B_RA_BD8 - collection: Sentinel5P + collection: SENTINEL-5P # S5P L2 S5P_L2_NO2: productType: L2__NO2___ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_CLOUD: productType: L2__CLOUD_ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_O3: productType: L2__O3____ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_CO: productType: L2__CO____ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_AER_AI: productType: L2__AER_AI - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_O3_PR: productType: L2__O3__PR - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_O3_TCL: productType: L2__O3_TCL - collection: Sentinel5P + collection: Sentinel-5P S5P_L2_AER_LH: productType: L2__AER_LH - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_HCHO: productType: L2__HCHO__ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_CH4: productType: L2__CH4___ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_NP_BD3: productType: L2__NP_BD3 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_NP_BD6: productType: L2__NP_BD6 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_NP_BD7: productType: L2__NP_BD7 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_SO2: productType: L2__SO2___ - collection: Sentinel5P + collection: SENTINEL-5P GENERIC_PRODUCT_TYPE: productType: '{productType}' collection: '{collection}' --- -!provider +!provider # MARK: planetary_computer name: planetary_computer priority: 0 roles: @@ -3721,8 +4202,14 @@ type: StacSearch api_endpoint: https://planetarycomputer.microsoft.com/api/stac/v1/search need_auth: false + ssl_verify: true pagination: max_items_per_page: 1000 + sort: + sort_param_mapping: + id: id + startTimeFromAscendingNode: properties.datetime + platformSerialIdentifier: properties.platform metadata_mapping: tileIdentifier: - '{{"query":{{"s2:mgrs_tile":{{"eq":"{tileIdentifier}"}}}}}}' @@ -3748,17 +4235,17 @@ productType: '{productType}' download: !plugin type: HTTPDownload - base_uri: 'https://planetarycomputer.microsoft.com/api/stac/download' - flatten_top_dirs: True auth_error_code: 403 + ssl_verify: true auth: !plugin type: SASAuth auth_uri: 'https://planetarycomputer.microsoft.com/api/sas/v1/sign?href={url}' signed_url_key: href + ssl_verify: true headers: Ocp-Apim-Subscription-Key: "{apikey}" --- -!provider +!provider # MARK: hydroweb_next name: hydroweb_next priority: 0 roles: @@ -3770,11 +4257,21 @@ api_endpoint: https://hydroweb.next.theia-land.fr/api/v1/rs-catalog/stac/search need_auth: true auth_error_code: 401 + ssl_verify: true discover_queryables: fetch_url: null product_type_fetch_url: null pagination: max_items_per_page: 10_000 + sort: + sort_by_default: + - !!python/tuple [startTimeFromAscendingNode, ASC] + sort_param_mapping: + id: id + startTimeFromAscendingNode: properties.start_datetime + completionTimeFromAscendingNode: properties.end_datetime + productVersion: properties.version + processingLevel: processing:level metadata_mapping: startTimeFromAscendingNode: - '{{"query":{{"end_datetime":{{"gte":"{startTimeFromAscendingNode#to_iso_utc_datetime}"}}}}}}' @@ -3787,1942 +4284,1457 @@ productType: '{productType}' download: !plugin type: HTTPDownload - base_uri: https://hydroweb.next.theia-land.fr - flatten_top_dirs: true auth_error_code: 401 + ssl_verify: true auth: !plugin type: HTTPHeaderAuth + ssl_verify: true headers: X-API-Key: "{apikey}" + --- -!provider +!provider # MARK: wekeo name: wekeo priority: 0 roles: - host description: WEkEO - Copernicus and Sentinel data url: https://www.wekeo.eu/ + # anchors to avoid duplications + anchor_day_month_year: &day_month_year + startTimeFromAscendingNode: + - | + {{ + "year": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"], + "month": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"], + "day": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] + }} + - $.properties.startDate + completionTimeFromAscendingNode: $.properties.endDate + anchor_hist_day_month_year: &hist_day_month_year + startTimeFromAscendingNode: + - | + {{ + "hyear": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"], + "hmonth": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"], + "hday": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] + }} + - $.properties.startDate + completionTimeFromAscendingNode: $.properties.endDate + anchor_year_month: &month_year + startTimeFromAscendingNode: + - | + {{ + "year": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"], + "month": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] + }} + - $.properties.startDate + completionTimeFromAscendingNode: $.properties.endDate + anchor_hist_year_month: &hist_month_year + startTimeFromAscendingNode: + - | + {{ + "hyear": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"], + "hmonth": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] + }} + - $.properties.startDate + completionTimeFromAscendingNode: $.properties.endDate + anchor_dates_eum: &eo_eum_dates + startTimeFromAscendingNode: + - '{{"dtstart": "{startTimeFromAscendingNode}"}}' + - '$.properties.startdate' + completionTimeFromAscendingNode: + - '{{"dtend": "{completionTimeFromAscendingNode}"}}' + - '$.properties.enddate' + anchor_dates_clms: &clms_dates + startTimeFromAscendingNode: + - '{{"start": "{startTimeFromAscendingNode}"}}' + - '$.properties.startdate' + completionTimeFromAscendingNode: + - '{{"end": "{completionTimeFromAscendingNode}"}}' + - '$.properties.enddate' + anchor_s1_sar: &s1_sar_params + processingLevel: + - '{{"processingLevel": "{processingLevel}"}}' + - '$.id.`sub(/^[^_]([^_]+)_([^_]+)_([^_]+)_([0-4]+).*/, LEVEL\\4)`' + sensorMode: + - '{{"sensorMode": "{sensorMode}"}}' + - '$.id.`sub(/^[^_]([^_]+)_([^_]+)_.*/, \\2)`' + swath: + - '{{"swath": "{swath}"}}' + - '$.null' + polarisation: + - '{{"polarisation": "{polarisation}"}}' + - '$.null' + relativeOrbitNumber: + - '{{"relativeOrbitNumber": "{relativeOrbitNumber}"}}' + - '$.null' + missionTakeId: + - '{{"missionTakeId": "{missionTakeId}"}}' + - '$.null' + anchor_orbit_cycle: &orbit_cycle + relativeOrbitNumber: + - '{{"relativeOrbitNumber": "{relativeOrbitNumber}"}}' + - '$.null' + orbitNumber: + - '{{"orbit": "{orbitNumber}"}}' + - '$.null' + cycleNumber: + - '{{"cycle": "{cycleNumber}"}}' + - '$.null' + andchor_id_from_date: &id_from_date + id: + - | + {{ + "start": "{id#replace_str(r'^.*_([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])_.*$',r'\1-\2-\3T\4%3A\5%3A00Z')}", + "end": "{id#replace_str(r'^.*_([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])_.*$',r'\1-\2-\3T\4%3A\5%3A00Z')}" + }} + - '$.id' search: !plugin - type: DataRequestSearch - api_endpoint: "https://wekeo-broker.prod.wekeo2.eu/databroker/" - data_request_url: "https://wekeo-broker.prod.wekeo2.eu/databroker/datarequest" - metadata_url: "https://wekeo-broker.prod.wekeo2.eu/databroker/querymetadata/" - status_url: "https://wekeo-broker.prod.wekeo2.eu/databroker/datarequest/status/" - result_url: "https://wekeo-broker.prod.wekeo2.eu/databroker/datarequest/jobs/{jobId}/result?size={items_per_page}&page={page}" + type: PostJsonSearch + api_endpoint: https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/search timeout: 60 need_auth: true auth_error_code: 401 - results_entry: content + results_entry: 'features' two_passes_id_search: true - dates_required: true pagination: - start_page: 0 - max_items_per_page: 20 - total_items_nb_key_path: '$.totItems' + total_items_nb_key_path: '$.properties.totalResults' + next_page_query_obj: '{{"itemsPerPage":{items_per_page},"startIndex":{skip}}}' + max_items_per_page: 200 + query_params_key: 'search' discover_product_types: fetch_url: null - constraints_file_url: "https://wekeo-broker.apps.mercator.dpi.wekeo.eu/databroker/querymetadata/{dataset}" + constraints_file_url: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/queryable/{dataset}' + constraints_file_dataset_key: productType constraints_entry: constraints + stop_without_constraints_entry_key: true metadata_mapping: productType: - - '{{"datasetId": "{productType}"}}' - - '$.productInfo.datasetId' + - '{{"dataset_id": "{productType}"}}' + - '$.null' + geometry: + - '{{"bbox": {geometry#to_bounds}}}' + - '$.geometry' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + id: + - '{{"productIdentifier": "{id}"}}' + - '{$.id#remove_extension}' startTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productStartDate' + - '{{"startDate": "{startTimeFromAscendingNode}"}}' + - '$.properties.startdate' completionTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productEndDate' - geometry: - - '{{"boundingBoxValues": [{{"name": "bbox", "bbox": {geometry#to_bounds}}}]}}' - - '$.extraInformation.footprint' - cloudCover: '$.extraInformation.cloudCover' - downloadLink: '$.url' - title: '$.productInfo.product' - orderLink: 'https://wekeo-broker.prod.wekeo2.eu/databroker/dataorder?{{"uri": "{downloadLink}","jobId":"requestJobId"}}' + - '{{"completionDate": "{completionTimeFromAscendingNode}"}}' + - '$.properties.enddate' + downloadLink: '$.properties.location' + title: '$.id' storageStatus: 'OFFLINE' - auth: !plugin - type: TokenAuth - auth_uri: 'https://wekeo-broker.prod.wekeo2.eu/databroker/gettoken' - token_type: json - token_key: access_token - request_method: GET - headers: - Authorization: Bearer $token + processingLevel: + - '{{"processingLevel": "{processingLevel}"}}' + - '$.null' + providerProductType: + - '{{"productType": "{providerProductType}"}}' + - '$.null' + timeliness: + - '{{"timeliness": "{timeliness}"}}' + - '$.null' + orbitDirection: + - '{{"orbitDirection": "{orbitDirection}"}}' + - '$.null' + variable: + - '{{"variable": {variable}}}' + - '$.null' + leadtime_hour: + - '{{"leadtime_hour": {leadtime_hour}}}' + - '$.null' + leadtime_month: + - '{{"leadtime_month": {leadtime_month}}}' + - '$.null' + origin: + - '{{"origin": "{origin}"}}' + - '$.null' + system: + - '{{"system": "{system}"}}' + - '$.null' + format: + - '{{"format": "{format}"}}' + - '$.null' + pressure_level: + - '{{"pressure_level": {pressure_level}}}' + - '$.null' + model_level: + - '{{"model_level": {model_level}}}' + - '$.null' + sensor_and_algorithm: + - '{{"sensor_and_algorithm": "{sensor_and_algorithm}"}}' + - '$.null' + version: + - '{{"version": {version}}}' + - '$.null' + time: + - '{{"time": {time}}}' + - '$.null' + region: + - '{{"region": {region}}}' + - '$.null' + type: + - '{{"type": "{type}"}}' + - '$.null' + source: + - '{{"source": {source}}}' + - '$.null' + quantity: + - '{{"quantity": "{quantity}"}}' + - '$.null' + input_observations: + - '{{"input_observations": "{input_observations}"}}' + - '$.null' + aggregation: + - '{{"aggregation": "{aggregation}"}}' + - '$.null' + model: + - '{{"model": {model}}}' + - '$.null' + level: + - '{{"level": {level}}}' + - '$.null' + forcing_type: + - '{{"forcing_type": "{forcing_type}"}}' + - '$.null' + sky_type: + - '{{"sky_type": {sky_type}}}' + - '$.null' + band: + - '{{"band": {band}}}' + - '$.null' + aerosol_type: + - '{{"aerosol_type": {aerosol_type}}}' + - '$.null' + step: + - '{{"step": {step}}}' + - '$.null' + longitude: + - '{{"longitude": "{longitude}"}}' + - '$.null' + latitude: + - '{{"latitude": "{latitude}"}}' + - '$.null' + altitude: + - '{{"altitude": "{altitude}"}}' + - '$.null' + time_reference: + - '{{"time_reference": "{time_reference}"}}' + - '$.null' + grid: + - '{{"grid": "{grid}"}}' + - '$.null' + soil_level: + - '{{"soil_level": {soil_level}}}' + - '$.null' + year: + - '{{"year": {year}}}' + - '$.null' + month: + - '{{"month": {month}}}' + - '$.null' + day: + - '{{"day": {day}}}' + - '$.null' + satellite: + - '{{"satellite": {satellite}}}' + - '$.null' + cdr_type: + - '{{"cdr_type": "{cdr_type}"}}' + - '$.null' + statistic: + - '{{"statistic": {statistic}}}' + - '$.null' + sensor: + - '{{"sensor": "{sensor}"}}' + - '$.null' products: + S1_SAR_GRD: + productType: EO:ESA:DAT:SENTINEL-1 + providerProductType: GRD + metadata_mapping: + <<: *s1_sar_params + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ESA:DAT:SENTINEL-1"}}' + S1_SAR_RAW: + productType: EO:ESA:DAT:SENTINEL-1 + providerProductType: RAW + metadata_mapping: + <<: *s1_sar_params + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ESA:DAT:SENTINEL-1"}}' + S1_SAR_OCN: + productType: EO:ESA:DAT:SENTINEL-1 + providerProductType: OCN + metadata_mapping: + <<: *s1_sar_params + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ESA:DAT:SENTINEL-1"}}' + S1_SAR_SLC: + productType: EO:ESA:DAT:SENTINEL-1 + providerProductType: SLC + metadata_mapping: + <<: *s1_sar_params + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ESA:DAT:SENTINEL-1"}}' S2_MSI_L1C: - productType: EO:ESA:DAT:SENTINEL-2:MSI + productType: EO:ESA:DAT:SENTINEL-2 processingLevel: S2MSI1C metadata_mapping: - id: - - '{{"stringInputValues": [{{"name": "productIdentifier", "value": "{id}"}}]}}' - - '{$.productInfo.product#remove_extension}' processingLevel: - - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}' - - '{$.productInfo.product#get_processing_level_from_s2_id}' + - '{{"processingLevel": "{processingLevel}"}}' + - '$.id.`sub(/^[^_]([^_]+)_([^_]+)_.*/, S2\\2)`' cloudCover: - - '{{"stringInputValues": [{{"name": "cloudCover", "value": "{cloudCover}"}}]}}' - - '$.extraInformation.cloudCover' - productIdentifier: - - '{{"stringInputValues": [{{"name": "productIdentifier", "value": "{productIdentifier}"}}]}}' + - '{{"cloudCover": "{cloudCover}"}}' - '$.null' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ESA:DAT:SENTINEL-2"}}' S2_MSI_L2A: - productType: EO:ESA:DAT:SENTINEL-2:MSI + productType: EO:ESA:DAT:SENTINEL-2 processingLevel: S2MSI2A metadata_mapping: - id: - - '{{"stringInputValues": [{{"name": "productIdentifier", "value": "{id}"}}]}}' - - '{$.productInfo.product#remove_extension}' processingLevel: - - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}' - - '{$.productInfo.product#get_processing_level_from_s2_id}' + - '{{"processingLevel": "{processingLevel}"}}' + - '$.id.`sub(/^[^_]([^_]+)_([^_]+)_.*/, S2\\2)`' cloudCover: - - '{{"stringInputValues": [{{"name": "cloudCover", "value": "{cloudCover}"}}]}}' - - '$.extraInformation.cloudCover' - productIdentifier: - - '{{"stringInputValues": [{{"name": "productIdentifier", "value": "{productIdentifier}"}}]}}' + - '{{"cloudCover": "{cloudCover}"}}' - '$.null' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ESA:DAT:SENTINEL-2"}}' S2_MSI_L2AP: - productType: EO:ESA:DAT:SENTINEL-2:MSI + productType: EO:ESA:DAT:SENTINEL-2 processingLevel: S2MSI2AP metadata_mapping: - id: - - '{{"stringInputValues": [{{"name": "productIdentifier", "value": "{id}"}}]}}' - - '{$.productInfo.product#remove_extension}' processingLevel: - - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}' - - '{$.productInfo.product#get_processing_level_from_s2_id}' + - '{{"processingLevel": "{processingLevel}"}}' + - '$.id.`sub(/^[^_]([^_]+)_([^_]+)_.*/, S2\\2)`' cloudCover: - - '{{"stringInputValues": [{{"name": "cloudCover", "value": "{cloudCover}"}}]}}' - - '$.extraInformation.cloudCover' - productIdentifier: - - '{{"stringInputValues": [{{"name": "productIdentifier", "value": "{productIdentifier}"}}]}}' + - '{{"cloudCover": "{cloudCover}"}}' - '$.null' - S1_SAR_GRD: - productType: EO:ESA:DAT:SENTINEL-1:SAR - providerProductType: "GRD" + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ESA:DAT:SENTINEL-2"}}' + S3_LAN_HY: + productType: EO:ESA:DAT:SENTINEL-3 + providerProductType: SR_2_LAN_HY + processingLevel: 2 metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "GRD"}}, {{"name": "sensorMode", "value": {id#split_id_into_s1_params}["sensorMode"]}}, {{"name": "processingLevel", "value": {id#split_id_into_s1_params}["processingLevel"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s1_params}["startDate"], "end": {id#split_id_into_s1_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productEndDate' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}' - - '$.null' processingLevel: - - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}' - - '{$.productInfo.product#get_processing_level_from_s1_id}' - sensorMode: - - '{{"stringChoiceValues": [{{"name": "sensorMode", "value": "{sensorMode}"}}]}}' - - '{$.productInfo.product#get_sensor_mode_from_s1_id}' - swath: - - '{{"stringChoiceValues": [{{"name": "swath", "value": "{swath}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}' - - '$.null' - polarisation: - - '{{"stringChoiceValues": [{{"name": "polarisation", "value": "{polarisation}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relativeOrbitNumber", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - missionTakeId: - - '{{"stringInputValues": [{{"name": "missionTakeId", "value": "{missionTakeId}"}}]}}' - - '$.null' - S1_SAR_RAW: - productType: EO:ESA:DAT:SENTINEL-1:SAR - providerProductType: "RAW" - metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "RAW"}}, {{"name": "sensorMode", "value": {id#split_id_into_s1_params}["sensorMode"]}}, {{"name": "processingLevel", "value": {id#split_id_into_s1_params}["processingLevel"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s1_params}["startDate"], "end": {id#split_id_into_s1_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productEndDate' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}' - - '$.null' - processingLevel: - - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}' - - '{$.productInfo.product#get_processing_level_from_s1_id}' - sensorMode: - - '{{"stringChoiceValues": [{{"name": "sensorMode", "value": "{sensorMode}"}}]}}' - - '{$.productInfo.product#get_sensor_mode_from_s1_id}' - swath: - - '{{"stringChoiceValues": [{{"name": "swath", "value": "{swath}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}' - - '$.null' - polarisation: - - '{{"stringChoiceValues": [{{"name": "polarisation", "value": "{polarisation}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relativeOrbitNumber", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - missionTakeId: - - '{{"stringInputValues": [{{"name": "missionTakeId", "value": "{missionTakeId}"}}]}}' - - '$.null' - S1_SAR_OCN: - productType: EO:ESA:DAT:SENTINEL-1:SAR - providerProductType: "OCN" - metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "OCN"}}, {{"name": "sensorMode", "value": {id#split_id_into_s1_params}["sensorMode"]}}, {{"name": "processingLevel", "value": {id#split_id_into_s1_params}["processingLevel"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s1_params}["startDate"], "end": {id#split_id_into_s1_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productEndDate' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}' - - '$.null' - processingLevel: - - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}' - - '{$.productInfo.product#get_processing_level_from_s1_id}' - sensorMode: - - '{{"stringChoiceValues": [{{"name": "sensorMode", "value": "{sensorMode}"}}]}}' - - '{$.productInfo.product#get_sensor_mode_from_s1_id}' - swath: - - '{{"stringChoiceValues": [{{"name": "swath", "value": "{swath}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}' - - '$.null' - polarisation: - - '{{"stringChoiceValues": [{{"name": "polarisation", "value": "{polarisation}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relativeOrbitNumber", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - missionTakeId: - - '{{"stringInputValues": [{{"name": "missionTakeId", "value": "{missionTakeId}"}}]}}' - - '$.null' - S1_SAR_SLC: - productType: EO:ESA:DAT:SENTINEL-1:SAR - providerProductType: SLC - metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "SLC"}}, {{"name": "sensorMode", "value": {id#split_id_into_s1_params}["sensorMode"]}}, {{"name": "processingLevel", "value": {id#split_id_into_s1_params}["processingLevel"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s1_params}["startDate"], "end": {id#split_id_into_s1_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productEndDate' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}' - - '$.null' - processingLevel: - - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}' - - '{$.productInfo.product#get_processing_level_from_s1_id}' - sensorMode: - - '{{"stringChoiceValues": [{{"name": "sensorMode", "value": "{sensorMode}"}}]}}' - - '{$.productInfo.product#get_sensor_mode_from_s1_id}' - swath: - - '{{"stringChoiceValues": [{{"name": "swath", "value": "{swath}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}' - - '$.null' - polarisation: - - '{{"stringChoiceValues": [{{"name": "polarisation", "value": "{polarisation}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relativeOrbitNumber", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - missionTakeId: - - '{{"stringInputValues": [{{"name": "missionTakeId", "value": "{missionTakeId}"}}]}}' - - '$.null' - S3_OLCI_L2LRR: - productType: EO:ESA:DAT:SENTINEL-3:OL_2_LRR___ - providerProductType: LRR + - '{{"processingLevel": "{processingLevel}"}}' + - '2' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ESA:DAT:SENTINEL-3"}}' + S3_LAN_SI: + productType: EO:ESA:DAT:SENTINEL-3 + providerProductType: SR_2_LAN_SI processingLevel: 2 metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "LRR"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}' - - '$.null' processingLevel: - - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}' + - '{{"processingLevel": "{processingLevel}"}}' - '2' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}' - - '$.null' - S3_OLCI_L2LFR: - productType: EO:ESA:DAT:SENTINEL-3:OL_2_LFR___ - providerProductType: OL_2_LFR___ + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ESA:DAT:SENTINEL-3"}}' + S3_LAN_LI: + productType: EO:ESA:DAT:SENTINEL-3 + providerProductType: SR_2_LAN_LI processingLevel: 2 metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "OL_2_LFR___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}' - - '$.null' processingLevel: - - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}' + - '{{"processingLevel": "{processingLevel}"}}' - '2' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}' - - '$.null' - S3_SY_SYN: - productType: EO:ESA:DAT:SENTINEL-3:SYNERGY + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ESA:DAT:SENTINEL-3"}}' + S3_OLCI_L2LFR: + productType: EO:ESA:DAT:SENTINEL-3 + providerProductType: OL_2_LFR___ processingLevel: 2 metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "productType", "value": {id#split_id_into_s3_params}["productType"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}' - - '$.null' processingLevel: - - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}' + - '{{"processingLevel": "{processingLevel}"}}' - '2' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}' - - '$.null' - cloudCover: - - '{{"stringInputValues": [{{"name": "cloudCover", "value": "{cloudCover}"}}]}}' - - '$.extraInformation.cloudCover' - # additional filtering to only return the desired product types (defining datasetId EO:ESA:DAT:SENTINEL-3:SYNERGY is not enough for that) - custom_filters: - filter_attribute: "$.productInfo.product" - indexes: 4-15 - filter_clause: "in ['SY_2_AOD___', 'SY_2_V10___', 'SY_2_VGP___', 'SY_2_SYN___', 'SY_2_VG1___']" - S3_LAN: - productType: EO:ESA:DAT:SENTINEL-3:SR_2_LAN___ - providerProductType: SR_2_LAN___ + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ESA:DAT:SENTINEL-3"}}' + S3_OLCI_L2LRR: + productType: EO:ESA:DAT:SENTINEL-3 + providerProductType: OL_2_LRR___ processingLevel: 2 metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "SR_2_LAN___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}' - - '$.null' processingLevel: - - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}' + - '{{"processingLevel": "{processingLevel}"}}' - '2' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}' - - '$.null' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ESA:DAT:SENTINEL-3"}}' S3_SLSTR_L2: - productType: EO:ESA:DAT:SENTINEL-3:SL_2_LST___ + productType: EO:ESA:DAT:SENTINEL-3 providerProductType: SL_2_LST___ processingLevel: 2 metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "SL_2_LST___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}' - - '$.null' processingLevel: - - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}' + - '{{"processingLevel": "{processingLevel}"}}' - '2' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}' - - '$.null' - S3_SLSTR_L2AOD: - productType: EO:EUM:DAT:SENTINEL-3:0416 - providerProductType: SL_2_AOD___ - timeliness: NR - metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "SL_2_AOD___"}}, {{"name": "timeliness", "value": "NR"}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S3_SLSTR_L2FRP: - productType: EO:EUM:DAT:SENTINEL-3:0417 - providerProductType: SL_2_FRP___ - timeliness: NR - metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "SL_2_FRP___"}}, {{"name": "timeliness", "value": "NR"}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}' - - '$.null' - fire: - - '{{"stringChoiceValues": [{{"name": "fire", "value": "{fire}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ESA:DAT:SENTINEL-3"}}' S3_EFR: productType: EO:EUM:DAT:SENTINEL-3:OL_1_EFR___ - providerProductType: OL_1_EFR___ metadata_mapping: - productType: - - '{{"datasetId": "EO:EUM:DAT:SENTINEL-3:0577"}}' - - 'EO:EUM:DAT:SENTINEL-3:OL_1_EFR___' id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "OL_1_EFR___"}}, {{"name": "timeliness", "value": "NT"}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' + - '{{"timeliness": {id#split_id_into_s3_params}["timeliness"], "sat": {id#split_id_into_s3_params}["sat"], "dtstart": {id#split_id_into_s3_params}["startDate"], "dtend": {id#split_id_into_s3_params}["endDate"]}}' + - '{$.id#remove_extension}' + <<: *eo_eum_dates platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type + - '{{"sat": "{platform}"}}' + - '$.id.`sub(/^[^_]([^_]+)_.*/, Sentinel-\\1)`' + platformSerialIdentifier: '$.id.`sub(/^[^_]([^_]+)_.*/, S\\1)`' + <<: *orbit_cycle + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:EUM:DAT:SENTINEL-3:OL_1_EFR___"}}' S3_ERR: productType: EO:EUM:DAT:SENTINEL-3:OL_1_ERR___ - providerProductType: OL_1_ERR___ metadata_mapping: - productType: - - '{{"datasetId": "EO:EUM:DAT:SENTINEL-3:0578"}}' - - 'EO:EUM:DAT:SENTINEL-3:OL_1_ERR___' id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "OL_1_ERR___"}}, {{"name": "timeliness", "value": "NT"}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' + - '{{"timeliness": {id#split_id_into_s3_params}["timeliness"], "sat": {id#split_id_into_s3_params}["sat"], "dtstart": {id#split_id_into_s3_params}["startDate"], "dtend": {id#split_id_into_s3_params}["endDate"]}}' + - '{$.id#remove_extension}' + <<: *eo_eum_dates platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type + - '{{"sat": "{platform}"}}' + - '$.id.`sub(/^[^_]([^_]+)_.*/, Sentinel-\\1)`' + platformSerialIdentifier: '$.id.`sub(/^[^_]([^_]+)_.*/, S\\1)`' + <<: *orbit_cycle + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:EUM:DAT:SENTINEL-3:OL_1_ERR___"}}' S3_OLCI_L2WFR: productType: EO:EUM:DAT:SENTINEL-3:OL_2_WFR___ - providerProductType: OL_2_WFR___ metadata_mapping: id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "OL_2_WFR___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' + - '{{"timeliness": {id#split_id_into_s3_params}["timeliness"], "sat": {id#split_id_into_s3_params}["sat"], "dtstart": {id#split_id_into_s3_params}["startDate"], "dtend": {id#split_id_into_s3_params}["endDate"]}}' + - '{$.id#remove_extension}' + <<: *eo_eum_dates platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type + - '{{"sat": "{platform}"}}' + - '$.id.`sub(/^[^_]([^_]+)_.*/, Sentinel-\\1)`' + platformSerialIdentifier: '$.id.`sub(/^[^_]([^_]+)_.*/, S\\1)`' + <<: *orbit_cycle + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:EUM:DAT:SENTINEL-3:OL_2_WFR___"}}' S3_OLCI_L2WRR: productType: EO:EUM:DAT:SENTINEL-3:OL_2_WRR___ - providerProductType: OL_2_WRR___ - metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "OL_2_WRR___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S3_OLCI_L2WFR_BC003: - productType: EO:EUM:DAT:SENTINEL-3:0556 - providerProductType: OL_2_WFR___ - timeliness: NT - metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "OL_2_WFR___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S3_OLCI_L2WRR_BC003: - productType: EO:EUM:DAT:SENTINEL-3:0557 - providerProductType: OL_2_WRR___ - timeliness: NT metadata_mapping: id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "OL_2_WRR___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' + - '{{"timeliness": {id#split_id_into_s3_params}["timeliness"], "sat": {id#split_id_into_s3_params}["sat"], "dtstart": {id#split_id_into_s3_params}["startDate"], "dtend": {id#split_id_into_s3_params}["endDate"]}}' + - '{$.id#remove_extension}' + <<: *eo_eum_dates platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type + - '{{"sat": "{platform}"}}' + - '$.id.`sub(/^[^_]([^_]+)_.*/, Sentinel-\\1)`' + platformSerialIdentifier: '$.id.`sub(/^[^_]([^_]+)_.*/, S\\1)`' + <<: *orbit_cycle + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:EUM:DAT:SENTINEL-3:OL_2_WRR___"}}' S3_SRA: productType: EO:EUM:DAT:SENTINEL-3:SR_1_SRA___ - providerProductType: SR_1_SRA___ metadata_mapping: id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "SR_1_SRA___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' + - '{{"timeliness": {id#split_id_into_s3_params}["timeliness"], "sat": {id#split_id_into_s3_params}["sat"], "dtstart": {id#split_id_into_s3_params}["startDate"], "dtend": {id#split_id_into_s3_params}["endDate"]}}' + - '{$.id#remove_extension}' + <<: *eo_eum_dates platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type + - '{{"sat": "{platform}"}}' + - '$.id.`sub(/^[^_]([^_]+)_.*/, Sentinel-\\1)`' + platformSerialIdentifier: '$.id.`sub(/^[^_]([^_]+)_.*/, S\\1)`' + <<: *orbit_cycle + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:EUM:DAT:SENTINEL-3:SR_1_SRA___"}}' S3_SRA_A: productType: EO:EUM:DAT:SENTINEL-3:SR_1_SRA_A_ - providerProductType: SR_1_SRA_A_ metadata_mapping: id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "SR_1_SRA_A_"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' + - '{{"timeliness": {id#split_id_into_s3_params}["timeliness"], "sat": {id#split_id_into_s3_params}["sat"], "dtstart": {id#split_id_into_s3_params}["startDate"], "dtend": {id#split_id_into_s3_params}["endDate"]}}' + - '{$.id#remove_extension}' + <<: *eo_eum_dates platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type + - '{{"sat": "{platform}"}}' + - '$.id.`sub(/^[^_]([^_]+)_.*/, Sentinel-\\1)`' + platformSerialIdentifier: '$.id.`sub(/^[^_]([^_]+)_.*/, S\\1)`' + <<: *orbit_cycle + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:EUM:DAT:SENTINEL-3:SR_1_SRA_A_"}}' S3_SRA_BS: productType: EO:EUM:DAT:SENTINEL-3:SR_1_SRA_BS - providerProductType: SR_1_SRA_BS metadata_mapping: id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "SR_1_SRA_BS"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' + - '{{"timeliness": {id#split_id_into_s3_params}["timeliness"], "sat": {id#split_id_into_s3_params}["sat"], "dtstart": {id#split_id_into_s3_params}["startDate"], "dtend": {id#split_id_into_s3_params}["endDate"]}}' + - '{$.id#remove_extension}' + <<: *eo_eum_dates platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S3_SRA_1A_BC004: - productType: EO:EUM:DAT:SENTINEL-3:0583 - providerProductType: SR_1_SRA_A_ + - '{{"sat": "{platform}"}}' + - '$.id.`sub(/^[^_]([^_]+)_.*/, Sentinel-\\1)`' + platformSerialIdentifier: '$.id.`sub(/^[^_]([^_]+)_.*/, S\\1)`' + <<: *orbit_cycle + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:EUM:DAT:SENTINEL-3:SR_1_SRA_BS"}}' + + S3_SLSTR_L1RBT: + productType: EO:EUM:DAT:SENTINEL-3:SL_1_RBT___ + providerProductType: SL_1_RBT___ metadata_mapping: id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "SR_1_SRA_A_"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' + - '{{"productType": "SL_1_RBT___", "timeliness": {id#split_id_into_s3_params}["timeliness"], "sat": {id#split_id_into_s3_params}["sat"], "dtstart": {id#split_id_into_s3_params}["startDate"], "dtend": {id#split_id_into_s3_params}["endDate"]}}' + - '{$.id#remove_extension}' + <<: *eo_eum_dates platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S3_SRA_1B_BC004: - productType: EO:EUM:DAT:SENTINEL-3:0584 - providerProductType: SR_1_SRA___ + - '{{"sat": "{platform}"}}' + - '$.id.`sub(/^[^_]([^_]+)_.*/, Sentinel-\\1)`' + platformSerialIdentifier: '$.id.`sub(/^[^_]([^_]+)_.*/, S\\1)`' + <<: *orbit_cycle + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:EUM:DAT:SENTINEL-3:SL_1_RBT___"}}' + S3_WAT: + productType: EO:EUM:DAT:SENTINEL-3:SR_2_WAT___ metadata_mapping: id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "SR_1_SRA___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' + - '{{"type": "SR_2_WAT___", "timeliness": {id#split_id_into_s3_params}["timeliness"], "sat": {id#split_id_into_s3_params}["sat"], "dtstart": {id#split_id_into_s3_params}["startDate"], "dtend": {id#split_id_into_s3_params}["endDate"]}}' + - '{$.id#remove_extension}' + <<: *eo_eum_dates + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:EUM:DAT:SENTINEL-3:SR_2_WAT___"}}' + S5P_L1B_IR_ALL: + productType: EO:ESA:DAT:SENTINEL-5P + processingLevel: L1B + metadata_mapping: + processingLevel: + - '{{"processingLevel": "{processingLevel}"}}' + - '$.id.`sub(/^[^_]([^_]+)_([^_]+)_([^_]+)_.*/, \\3)`' + processingMode: + - '{{"processingMode": "{processingMode}"}}' - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ESA:DAT:SENTINEL-5P"}}' + S5P_L2_IR_ALL: + productType: EO:ESA:DAT:SENTINEL-5P + processingLevel: L2 + metadata_mapping: + processingLevel: + - '{{"processingLevel": "{processingLevel}"}}' + - '$.id.`sub(/^[^_]([^_]+)_([^_]+)_([^_]+)_.*/, \\3)`' + processingMode: + - '{{"processingMode": "{processingMode}"}}' - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S3_SRA_BS_BC004: - productType: EO:EUM:DAT:SENTINEL-3:0585 - providerProductType: SR_1_SRA_BS + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ESA:DAT:SENTINEL-5P"}}' + SATELLITE_CARBON_DIOXIDE: + productType: EO:ECMWF:DAT:SATELLITE_CARBON_DIOXIDE + processingLevel: + - level_2 + version: + - "4.0" + variable: xco2 + sensor_and_algorithm: sciamachy_wfmd + format: zip metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "SR_1_SRA_BS"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' + id: '$.id' + <<: *day_month_year + variable: + - '{{"variable": "{variable}"}}' - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' + processingLevel: + - '{{"processing_level": {processingLevel}}}' - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:SATELLITE_CARBON_DIOXIDE"}}' + SATELLITE_FIRE_BURNED_AREA: + productType: EO:ECMWF:DAT:SATELLITE_FIRE_BURNED_AREA + origin: c3s + sensor: modis + variable: grid_variables + version: 5_1_1cds + region: + - europe + format: zip + metadata_mapping: + variable: + - '{{"variable": "{variable}"}}' - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' + version: + - '{{"version": "{version}"}}' - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' + startTimeFromAscendingNode: + - | + {{ + "year": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"], + "month": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"], + "day": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] + }} + - $.properties.startDate + completionTimeFromAscendingNode: $.properties.endDate + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:SATELLITE_FIRE_BURNED_AREA"}}' + SATELLITE_METHANE: + productType: EO:ECMWF:DAT:SATELLITE_METHANE + processingLevel: + - level_2 + version: + - "4.0" + variable: xch4 + sensor_and_algorithm: sciamachy_wfmd + format: zip + metadata_mapping: + id: '$.id' + <<: *day_month_year + processingLevel: + - '{{"processing_level": {processingLevel}}}' - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' + variable: + - '{{"variable": "{variable}"}}' - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S3_WAT: - productType: EO:EUM:DAT:SENTINEL-3:SR_2_WAT___ - providerProductType: SR_2_WAT___ + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:SATELLITE_METHANE"}}' + SATELLITE_SEA_ICE_EDGE_TYPE: + productType: EO:ECMWF:DAT:SATELLITE_SEA_ICE_EDGE_TYPE + variable: + - sea_ice_type + region: northern_hemisphere + cdr_type: cdr + version: '3_0' + format: zip metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "SR_2_WAT___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' + id: '$.id' + <<: *day_month_year + region: + - '{{"region": "{region}"}}' - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' + version: + - '{{"version": "{version}"}}' - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:SATELLITE_SEA_ICE_EDGE_TYPE"}}' + SATELLITE_SEA_ICE_THICKNESS: + productType: EO:ECMWF:DAT:SATELLITE_SEA_ICE_THICKNESS + satellite: + - envisat + cdr_type: + - cdr + variable: all + version: '3_0' + format: zip + metadata_mapping: + id: '$.id' + <<: *month_year + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:SATELLITE_SEA_ICE_THICKNESS"}}' + SATELLITE_SEA_ICE_CONCENTRATION: + productType: EO:ECMWF:DAT:SATELLITE_SEA_ICE_CONCENTRATION + cdr_type: + - cdr + variable: all + version: v3 + sensor: ssmis + origin: ESA CCI + region: + - northern_hemisphere + temporal_aggregation: daily + format: zip + metadata_mapping: + id: '$.id' + <<: *day_month_year + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:SATELLITE_SEA_ICE_CONCENTRATION"}}' + SATELLITE_SEA_LEVEL_BLACK_SEA: + productType: EO:ECMWF:DAT:SATELLITE_SEA_LEVEL_BLACK_SEA + variable: all + format: zip + metadata_mapping: + id: '$.id' + <<: *day_month_year + variable: + - '{{"variable": "{variable}"}}' - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:SATELLITE_SEA_LEVEL_BLACK_SEA"}}' + SATELLITE_SEA_LEVEL_GLOBAL: + productType: EO:ECMWF:DAT:SATELLITE_SEA_LEVEL_GLOBAL + variable: + - daily + format: zip + version: vDT2021 + metadata_mapping: + id: '$.id' + <<: *day_month_year + version: + - '{{"version": "{version}"}}' - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:SATELLITE_SEA_LEVEL_GLOBAL"}}' + SATELLITE_SEA_LEVEL_MEDITERRANEAN: + productType: EO:ECMWF:DAT:SATELLITE_SEA_LEVEL_MEDITERRANEAN + variable: all + format: zip + metadata_mapping: + id: '$.id' + <<: *day_month_year + variable: + - '{{"variable": "{variable}"}}' - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:SATELLITE_SEA_LEVEL_MEDITERRANEAN"}}' + SEASONAL_ORIGINAL_SL: + productType: EO:ECMWF:DAT:SEASONAL_ORIGINAL_SINGLE_LEVELS + variable: + - land_sea_mask + leadtime_hour: + - "0" + origin: ecmwf + system: "51" + format: grib + metadata_mapping: + id: '$.id' + <<: *day_month_year + origin: + - '{{"originating_centre": "{origin}"}}' - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:SEASONAL_ORIGINAL_SINGLE_LEVELS"}}' + SEASONAL_ORIGINAL_PL: + productType: EO:ECMWF:DAT:SEASONAL_ORIGINAL_PRESSURE_LEVELS + variable: + - geopotential + pressure_level: + - "10" + leadtime_hour: + - "12" + origin: ecmwf + system: "51" + format: grib + metadata_mapping: + id: '$.id' + <<: *day_month_year + origin: + - '{{"originating_centre": "{origin}"}}' - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S3_WAT_BC004: - productType: EO:EUM:DAT:SENTINEL-3:0586 - providerProductType: SR_2_WAT___ - timeliness: NT + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:SEASONAL_ORIGINAL_PRESSURE_LEVELS"}}' + SEASONAL_POSTPROCESSED_SL: + productType: EO:ECMWF:DAT:SEASONAL_POSTPROCESSED_SINGLE_LEVELS + providerProductType: + - ensemble_mean + variable: + - 10m_u_component_of_wind_anomaly + leadtime_month: + - "1" + origin: ecmwf + system: "51" + format: grib metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "SR_2_WAT___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' + id: '$.id' providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' + - '{{"product_type": {providerProductType}}}' - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' + <<: *month_year + origin: + - '{{"originating_centre": "{origin}"}}' - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S3_SLSTR_L1RBT: - productType: EO:EUM:DAT:SENTINEL-3:SL_1_RBT___ - providerProductType: SL_1_RBT___ + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:SEASONAL_POSTPROCESSED_SINGLE_LEVELS"}}' + SEASONAL_POSTPROCESSED_PL: + productType: EO:ECMWF:DAT:SEASONAL_POSTPROCESSED_PRESSURE_LEVELS + providerProductType: + - ensemble_mean + variable: + - geopotential_anomaly + pressure_level: + - "10" + leadtime_month: + - "1" + origin: ecmwf + system: "5" + format: grib metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "SL_1_RBT___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' + id: '$.id' providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' + - '{{"product_type": {providerProductType}}}' - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' + <<: *month_year + origin: + - '{{"originating_centre": "{origin}"}}' - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S3_SLSTR_L1RBT_BC004: - productType: EO:EUM:DAT:SENTINEL-3:0615 - providerProductType: SL_1_RBT___ + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:SEASONAL_POSTPROCESSED_PRESSURE_LEVELS"}}' + SEASONAL_MONTHLY_SL: + productType: EO:ECMWF:DAT:SEASONAL_MONTHLY_SINGLE_LEVELS + variable: + - 10m_u_component_of_wind + providerProductType: + - ensemble_mean + leadtime_month: + - "1" + origin: ecmwf + system: "51" + format: grib metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "SL_1_RBT___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' + id: '$.id' providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' + - '{{"product_type": {providerProductType}}}' - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' + <<: *month_year + origin: + - '{{"originating_centre": "{origin}"}}' - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S3_SLSTR_L2WST: - productType: EO:EUM:DAT:SENTINEL-3:SL_2_WST___ - providerProductType: SL_2_WST___ + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:SEASONAL_MONTHLY_SINGLE_LEVELS"}}' + SEASONAL_MONTHLY_PL: + productType: EO:ECMWF:DAT:SEASONAL_MONTHLY_PRESSURE_LEVELS + variable: + - geopotential + - temperature + providerProductType: + - ensemble_mean + leadtime_month: + - "1" + pressure_level: + - "10" + origin: ecmwf + system: "51" + format: grib metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "SL_2_WST___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' + id: '$.id' providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' + - '{{"product_type": {providerProductType}}}' - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - orbitDirection: - - '{{"stringChoiceValues": [{{"name": "orbitdir", "value": "{orbitDirection}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' + <<: *month_year + origin: + - '{{"originating_centre": "{origin}"}}' - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S3_SLSTR_L2WST_BC003: - productType: EO:EUM:DAT:SENTINEL-3:0582 - providerProductType: SL_2_WST___ - timeliness: NT - platform: Sentinel-3A + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:SEASONAL_MONTHLY_PRESSURE_LEVELS"}}' + GLACIERS_DIST_RANDOLPH: + productType: EO:ECMWF:DAT:INSITU_GLACIERS_EXTENT + variable: + - glacier_area + providerProductType: + - gridded + format: zip + version: "6_0" metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "SL_2_WST___"}}, {{"name": "timeliness", "value": {id#split_id_into_s3_params}["timeliness"]}}, {{"name": "sat", "value": {id#split_id_into_s3_params}["sat"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' + id: '$.id' + <<: *day_month_year providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' + - '{{"product_type": {providerProductType}}}' - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' + version: + - '{{"version": "{version}"}}' - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:INSITU_GLACIERS_EXTENT"}}' + GRIDDED_GLACIERS_MASS_CHANGE: + productType: EO:ECMWF:DAT:DERIVED_GRIDDED_GLACIER_MASS_CHANGE + variable: glacier_mass_change + format: zip + version: "wgms_fog_2022_09" + metadata_mapping: + id: '$.id' + startTimeFromAscendingNode: + - | + {{ + "hydrological_year": {startTimeFromAscendingNode#get_hydrological_year} + }} + - $.properties.startDate + completionTimeFromAscendingNode: $.properties.endDate + version: + - '{{"product_version": "{version}"}}' - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' + variable: + - '{{"variable": "{variable}"}}' - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S3_OLCI_L4BALTIC: - productType: EO:MO:DAT:OCEANCOLOUR_BAL_BGC_L4_NRT_009_132:cmems_obs-oc_bal_bgc-plankton_nrt_l4-olci-300m_P1M_202207 - variable: - - lat - - CHL - - lon - - CHL_count - - time - - CHL_error + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DERIVED_GRIDDED_GLACIER_MASS_CHANGE"}}' + UERRA_EUROPE_SL: + productType: EO:ECMWF:DAT:REANALYSIS_UERRA_EUROPE_SINGLE_LEVELS + variable: total_cloud_cover + origin: uerra_harmonie + format: grib # netcdf format may fail metadata_mapping: - id: - - '{{"dateRangeSelectValues": [{{"name": "time", "start": {id#get_dates_from_string}["startDate"], "end": {id#get_dates_from_string}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "time", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "time", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productEndDate' + id: '$.id' + <<: *day_month_year variable: - - '{{"multiStringSelectValues": [{{"name": "variables", "value": {variable}}}]}}' + - '{{"variable": "{variable}"}}' - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S5P_L1B2_IR_ALL: - productType: EO:ESA:DAT:SENTINEL-5P:TROPOMI + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:REANALYSIS_UERRA_EUROPE_SINGLE_LEVELS"}}' + AG_ERA5: + productType: EO:ECMWF:DAT:SIS_AGROMETEOROLOGICAL_INDICATORS + variable: cloud_cover + version: '1_1' + time: + - "06_00" + format: zip + statistic: + - 24_hour_mean metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "productType", "value": {id#split_id_into_s5p_params}["productType"]}}, {{"name": "processingMode", "value": {id#split_id_into_s5p_params}["processingMode"]}}, {{"name": "processingLevel", "value": {id#split_id_into_s5p_params}["processingLevel"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s5p_params}["startDate"], "end": {id#split_id_into_s5p_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - processingLevel: - - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}' - - '{$.productInfo.product#get_processing_level_from_s5p_id}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}' + id: '$.id' + <<: *day_month_year + version: + - '{{"version": "{version}"}}' - '$.null' - processingMode: - - '{{"stringChoiceValues": [{{"name": "processingMode", "value": "{processingMode}"}}]}}' + variable: + - '{{"variable": "{variable}"}}' - '$.null' - S6_P4_L1AHR_F06: - productType: EO:EUM:DAT:0236 - platform: Sentinel-6A - providerProductType: P4_1A_HR_____ - timeliness: NT + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:SIS_AGROMETEOROLOGICAL_INDICATORS"}}' + ERA5_SL: + productType: EO:ECMWF:DAT:REANALYSIS_ERA5_SINGLE_LEVELS + providerProductType: + - ensemble_mean + variable: + - 10m_u_component_of_wind + format: grib # netcdf format may fail metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "P4_1A_HR_____"}}, {{"name": "timeliness", "value": "NT"}}, {{"name": "sat", "value": "Sentinel-6A"}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' + id: '$.id' + startTimeFromAscendingNode: + - | + {{ + "year": {startTimeFromAscendingNode#to_datetime_dict(string)}["year"], + "month": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"], + "day": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"], + "time": {startTimeFromAscendingNode#get_ecmwf_time} + }} + - $.properties.startDate + completionTimeFromAscendingNode: $.properties.endDate providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' + - '{{"product_type": {providerProductType}}}' - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S6_P4_L1BLR_F06: - productType: EO:EUM:DAT:0237 - platform: Sentinel-6A - providerProductType: P4_1B_LR_____ - timeliness: NT - metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "P4_1B_LR_____"}}, {{"name": "timeliness", "value": "NT"}}, {{"name": "sat", "value": "Sentinel-6A"}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S6_P4_L1BAHR_F06: - productType: EO:EUM:DAT:0238 - platform: Sentinel-6A - providerProductType: P4_1B_HR_____ - timeliness: NT - metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "P4_1B_HR_____"}}, {{"name": "timeliness", "value": "NT"}}, {{"name": "sat", "value": "Sentinel-6A"}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S6_P4_L2LR_F06: - productType: EO:EUM:DAT:0239 - platform: Sentinel-6A - providerProductType: P4_2__LR_____ - timeliness: NT - metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "P4_2__LR_____"}}, {{"name": "timeliness", "value": "NT"}}, {{"name": "sat", "value": "Sentinel-6A"}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S6_P4_L2HR_F06: - productType: EO:EUM:DAT:0240 - platform: Sentinel-6A - providerProductType: P4_2__HR_____ - timeliness: NT - metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "P4_2__HR_____"}}, {{"name": "timeliness", "value": "NT"}}, {{"name": "sat", "value": "Sentinel-6A"}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - S6_AMR_L2_F06: - productType: EO:EUM:DAT:0241 - platform: Sentinel-6A - providerProductType: MW_2__AMR____ - timeliness: NT - metadata_mapping: - id: - - '{{"stringChoiceValues": [{{"name": "type", "value": "MW_2__AMR____"}}, {{"name": "timeliness", "value": "NT"}}, {{"name": "sat", "value": "Sentinel-6A"}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s3_params}["startDate"], "end": {id#split_id_into_s3_params}["endDate"]}}]}}' - - '{$.productInfo.product#remove_extension}' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "type", "value": "{providerProductType}"}}]}}' - - '$.null' - platform: - - '{{"stringChoiceValues": [{{"name": "sat", "value": "{platform}"}}]}}' - - '$.null' - timeliness: - - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' - - '$.null' - relativeOrbitNumber: - - '{{"stringInputValues": [{{"name": "relorbit", "value": "{relativeOrbitNumber}"}}]}}' - - '$.null' - orbitNumber: - - '{{"stringInputValues": [{{"name": "orbit", "value": "{orbitNumber}"}}]}}' - - '$.null' - cycleNumber: - - '{{"stringInputValues": [{{"name": "cycle", "value": "{cycleNumber}"}}]}}' - - '$.null' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - COP_DEM_GLO30_DGED: - productType: EO:DEM:DAT:COP-DEM_GLO-30-DGED__2022_1 - metadata_mapping: - id: - - '{{"boundingBoxValues": [{{"name": "bbox", "bbox": {id#split_cop_dem_id}}}]}}' - - '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: '$.productInfo.productStartDate' - completionTimeFromAscendingNode: '$.productInfo.productEndDate' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - COP_DEM_GLO90_DGED: - productType: EO:DEM:DAT:COP-DEM_GLO-90-DGED__2022_1 - metadata_mapping: - id: - - '{{"boundingBoxValues": [{{"name": "bbox", "bbox": {id#split_cop_dem_id}}}]}}' - - '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: '$.productInfo.productStartDate' - completionTimeFromAscendingNode: '$.productInfo.productEndDate' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - CLMS_CORINE: - productType: EO:CLMS:DAT:CORINE - providerProductType: "Corine Land Cover 2018" - format: "GeoTiff100mt" - metadata_mapping: - # the given datetimes are used to determine the product type, i.e. from which year the data will be taken - startTimeFromAscendingNode: '$.productInfo.productStartDate' - completionTimeFromAscendingNode: '$.productInfo.productEndDate' - providerProductType: - - '{{"stringChoiceValues": [{{"name": "product_type", "value": "{providerProductType}"}}]}}' - - '$.null' - format: - - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}' - - '$.null' - id: - - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}, {{"name": "product_type", "value": "{id#split_corine_id}"}}]}}' - - '{$.productInfo.product#remove_extension}' - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - CLMS_GLO_FCOVER_333M: - productType: EO:CLMS:DAT:CGLS_GLOBAL_FCOVER300_V1_333M - metadata_mapping: - id: '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productEndDate' - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - CLMS_GLO_NDVI_333M: - productType: EO:CLMS:DAT:CGLS_GLOBAL_NDVI300_V1_333M - metadata_mapping: - id: '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productEndDate' - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - CLMS_GLO_NDVI_1KM_LTS: - productType: EO:CLMS:DAT:CGLS_GLOBAL_NDVI_V2_1KM_LTS - metadata_mapping: - id: '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productEndDate' - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - CLMS_GLO_DMP_333M: - productType: EO:CLMS:DAT:CGLS_GLOBAL_DMP300_V1_333M - metadata_mapping: - id: '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productEndDate' - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - CLMS_GLO_GDMP_333M: - productType: EO:CLMS:DAT:CGLS_GLOBAL_GDMP300_V1_333M - metadata_mapping: - id: '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productEndDate' - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - CLMS_GLO_LAI_333M: - productType: EO:CLMS:DAT:CGLS_GLOBAL_LAI300_V1_333M - metadata_mapping: - id: '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productEndDate' - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - CLMS_GLO_FAPAR_333M: - productType: EO:CLMS:DAT:CGLS_GLOBAL_FAPAR300_V1_333M - metadata_mapping: - id: '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productEndDate' - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - EEA_DAILY_SWI_1KM: - productType: EO:EEA:DAT:VEGETATION:DAILY_SWI_1KM_EUROPE_V1 - metadata_mapping: - id: '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productEndDate' - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - EEA_DAILY_SSM_1KM: - productType: EO:EEA:DAT:VEGETATION:DAILY_SSM_1KM_EUROPE_V1 - metadata_mapping: - id: '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "dtrange", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productEndDate' - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type - EEA_DAILY_VI: - productType: EO:EEA:DAT:CLMS_HRVPP_VI - metadata_mapping: - id: - - '{{"stringInputValues": [{{"name": "uid", "value": "{id}"}}]}}' - - '{$.productInfo.product#remove_extension}' - startTimeFromAscendingNode: - - '{{"dateRangeSelectValues": [{{"name": "temporal_interval", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: '$.productInfo.productEndDate' - platformSerialIdentifier: - - '{{"stringChoiceValues": [{{"name": "platformSerialIdentifier", "value": "{platformSerialIdentifier}"}}]}}' - - '$.null' - productVersion: - - '{{"stringInputValues": [{{"name": "productVersion", "value": "{productVersion}"}}]}}' - - '$.null' - collection: - - '{{"stringChoiceValues": [{{"name": "productType", "value": "{collection}"}}]}}' - - '$.null' - processingStartDate: - - '{{"dateRangeSelectValues": [{{"name": "processingDate", "start": "{processingStartDate#to_iso_utc_datetime}", "end": "{processingEndDate#to_iso_utc_datetime}"}}]}}' - - '$.null' - tileIdentifier: - - '{{"stringInputValues": [{{"name": "tileId", "value": "{tileIdentifier}"}}]}}' - - '$.null' - place: - - '{{"stringInputValues": [{{"name": "name", "value": "{place}"}}]}}' - - '$.null' - geometry: - - '{{"boundingBoxValues": [{{"name": "bbox", "bbox": {geometry#to_bounds}}}]}}' - - '$.extraInformation.footprint' defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:REANALYSIS_ERA5_SINGLE_LEVELS"}}' ERA5_PL: productType: EO:ECMWF:DAT:REANALYSIS_ERA5_PRESSURE_LEVELS providerProductType: - ensemble_mean - - ensemble_members - - reanalysis - - ensemble_spread variable: - temperature - - fraction_of_cloud_cover - - geopotential - - ozone_mass_mixing_ratio - - potential_vorticity - - relative_humidity - - specific_cloud_ice_water_content - - specific_cloud_liquid_water_content - - specific_humidity - - specific_rain_water_content - - specific_snow_water_content - - vertical_velocity - - vorticity pressure_level: - "1" - - "2" - - "3" - - "5" - - "7" - - "10" - - "20" - - "30" - - "50" - - "70" - - "100" - - "125" - - "150" - - "175" - - "200" - - "225" - - "250" - - "300" - - "350" - - "400" - - "450" - - "500" - - "550" - - "600" - - "650" - - "700" - - "750" - - "775" - - "800" - - "825" - - "850" - - "875" - - "900" - - "925" - - "950" - - "975" - - "1000" - format: grib # netcdf format may fail + format: grib metadata_mapping: - id: '$.productInfo.product' + id: '$.id' startTimeFromAscendingNode: - - '{{"multiStringSelectValues": [{{"name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"]}}, {{"name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"]}}, {{"name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"]}}, {{"name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time}}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: '$.productInfo.productEndDate' + - | + {{ + "year": {startTimeFromAscendingNode#to_datetime_dict(string)}["year"], + "month": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"], + "day": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"], + "time": {startTimeFromAscendingNode#get_ecmwf_time} + }} + - $.properties.startDate + completionTimeFromAscendingNode: $.properties.endDate providerProductType: - - '{{"multiStringSelectValues": [{{"name": "product_type", "value": {providerProductType}}}]}}' - - '$.null' - variable: - - '{{"multiStringSelectValues": [{{"name": "variable", "value": {variable}}}]}}' - - '$.null' - pressure_level: - - '{{"multiStringSelectValues": [{{"name": "pressure_level", "value": {pressure_level}}}]}}' + - '{{"product_type": {providerProductType}}}' - '$.null' - format: - - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:REANALYSIS_ERA5_PRESSURE_LEVELS"}}' + ERA5_SL_MONTHLY: + productType: EO:ECMWF:DAT:REANALYSIS_ERA5_SINGLE_LEVELS_MONTHLY_MEANS + providerProductType: + - monthly_averaged_ensemble_members + variable: + - 10m_u_component_of_wind + format: grib + time: + - "00:00" + metadata_mapping: + id: '$.id' + startTimeFromAscendingNode: + - | + {{ + "year": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"], + "month": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] + }} + - $.properties.startDate + completionTimeFromAscendingNode: $.properties.endDate + providerProductType: + - '{{"product_type": {providerProductType}}}' - '$.null' - geometry: - - '{{"boundingBoxValues": [{{"name": "area", "bbox": {geometry#to_bounds}}}]}}' - - '$.extraInformation.footprint' defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - storeDownloadUrl: True + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:REANALYSIS_ERA5_SINGLE_LEVELS_MONTHLY_MEANS"}}' ERA5_PL_MONTHLY: productType: EO:ECMWF:DAT:REANALYSIS_ERA5_PRESSURE_LEVELS_MONTHLY_MEANS providerProductType: - monthly_averaged_ensemble_members - - monthly_averaged_ensemble_members_by_hour_of_day - - monthly_averaged_reanalysis - - monthly_averaged_reanalysis_by_hour_of_day variable: - divergence - - fraction_of_cloud_cover - - geopotential - - ozone_mass_mixing_ratio - - potential_vorticity - - relative_humidity - - specific_cloud_ice_water_content - - specific_cloud_liquid_water_content - - specific_humidity - - specific_rain_water_content - - specific_snow_water_content - - temperature - - u_component_of_wind - - v_component_of_wind - - vertical_velocity - - vorticity pressure_level: - "1" - - "2" - - "3" - - "5" - - "7" - - "10" - - "20" - - "30" - - "50" - - "70" - - "100" - - "125" - - "150" - - "175" - - "200" - - "225" - - "250" - - "300" - - "350" - - "400" - - "450" - - "500" - - "550" - - "600" - - "650" - - "700" - - "750" - - "775" - - "800" - - "825" - - "850" - - "875" - - "900" - - "925" - - "950" - - "975" - - "1000" - format: grib # netcdf format may fail + format: grib + time: + - "00:00" metadata_mapping: - id: '$.productInfo.product' + id: '$.id' startTimeFromAscendingNode: - - '{{"multiStringSelectValues": [{{"name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"]}}, {{"name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"]}}, {{"name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time}}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: '$.productInfo.productEndDate' + - | + {{ + "year": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"], + "month": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] + }} + - $.properties.startDate + completionTimeFromAscendingNode: $.properties.endDate providerProductType: - - '{{"multiStringSelectValues": [{{"name": "product_type", "value": {providerProductType}}}]}}' - - '$.null' - variable: - - '{{"multiStringSelectValues": [{{"name": "variable", "value": {variable}}}]}}' - - '$.null' - pressure_level: - - '{{"multiStringSelectValues": [{{"name": "pressure_level", "value": {pressure_level}}}]}}' + - '{{"product_type": {providerProductType}}}' - '$.null' - format: - - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}' - - '$.null' - geometry: - - '{{"boundingBoxValues": [{{"name": "area", "bbox": {geometry#to_bounds}}}]}}' - - '$.extraInformation.footprint' defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - storeDownloadUrl: True + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:REANALYSIS_ERA5_PRESSURE_LEVELS_MONTHLY_MEANS"}}' ERA5_LAND: productType: EO:ECMWF:DAT:REANALYSIS_ERA5_LAND variable: - 2m_dewpoint_temperature - - 2m_temperature - - skin_temperature - - soil_temperature_level_1 - - lake_bottom_temperature - - lake_total_layer_temperature - - lake_shape_factor - - snow_cover - - temperature_of_snow_layer - - snow_depth - - snow_albedo - - skin_reservoir_content - - volumetric_soil_water_layer_1 - - forecast_albedo - - surface_net_thermal_radiation - - surface_net_solar_radiation - - evaporation_from_bare_soil - - evaporation_from_open_water_surfaces_excluding_oceans - - total_evaporation - - surface_runoff - - snow_evaporation - - potential_evaporation - - snow_density - - snowmelt - - surface_latent_heat_flux - - 10m_u_component_of_wind - - 10m_v_component_of_wind - - surface_pressure - - total_precipitation - - leaf_area_index_high_vegetation - - leaf_area_index_low_vegetation - format: grib # netcdf format may fail + format: grib metadata_mapping: - id: '$.productInfo.product' + id: '$.id' startTimeFromAscendingNode: - - '{{"stringChoiceValues": [{{"name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(string)}["year"]}}, {{"name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(string)}["month"]}}], "multiStringSelectValues": [{{"name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"]}}, {{"name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time}}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: '$.productInfo.productEndDate' - variable: - - '{{"multiStringSelectValues": [{{"name": "variable", "value": {variable}}}]}}' - - '$.null' - format: - - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}' - - '$.null' - geometry: - - '{{"boundingBoxValues": [{{"name": "area", "bbox": {geometry#to_bounds}}}]}}' - - '$.extraInformation.footprint' + - | + {{ + "year": {startTimeFromAscendingNode#to_datetime_dict(string)}["year"], + "month": {startTimeFromAscendingNode#to_datetime_dict(string)}["month"], + "day": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"], + "time": {startTimeFromAscendingNode#get_ecmwf_time} + }} + - $.properties.startDate + completionTimeFromAscendingNode: $.properties.endDate defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - storeDownloadUrl: True + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:REANALYSIS_ERA5_LAND"}}' ERA5_LAND_MONTHLY: productType: EO:ECMWF:DAT:REANALYSIS_ERA5_LAND_MONTHLY_MEANS providerProductType: - monthly_averaged_reanalysis - - monthly_averaged_reanalysis_by_hour_of_day variable: - 2m_dewpoint_temperature - - 2m_temperature - - skin_temperature - - soil_temperature_level_1 - - lake_bottom_temperature - - lake_total_layer_temperature - - lake_shape_factor - - snow_cover - - temperature_of_snow_layer - - snow_depth - - snow_albedo - - skin_reservoir_content - - volumetric_soil_water_layer_1 - - forecast_albedo - - surface_net_thermal_radiation - - surface_net_solar_radiation - - evaporation_from_bare_soil - - evaporation_from_open_water_surfaces_excluding_oceans - - total_evaporation - - surface_runoff - - snow_evaporation - - potential_evaporation - - snow_density - - snowmelt - - surface_latent_heat_flux - - 10m_u_component_of_wind - - 10m_v_component_of_wind - - surface_pressure - - total_precipitation - - leaf_area_index_high_vegetation - - leaf_area_index_low_vegetation - format: grib # netcdf format may fail + format: grib + time: + - "00:00" metadata_mapping: - id: '$.productInfo.product' + id: '$.id' startTimeFromAscendingNode: - - '{{"multiStringSelectValues": [{{"name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"]}}, {{"name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"]}}, {{"name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time}}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: '$.productInfo.productEndDate' + - | + {{ + "year": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"], + "month": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] + }} + - $.properties.startDate + completionTimeFromAscendingNode: $.properties.endDate providerProductType: - - '{{"multiStringSelectValues": [{{"name": "product_type", "value": {providerProductType}}}]}}' - - '$.null' - variable: - - '{{"multiStringSelectValues": [{{"name": "variable", "value": {variable}}}]}}' - - '$.null' - format: - - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}' + - '{{"product_type": {providerProductType}}}' - '$.null' - geometry: - - '{{"boundingBoxValues": [{{"name": "area", "bbox": {geometry#to_bounds}}}]}}' - - '$.extraInformation.footprint' defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - storeDownloadUrl: True - ERA5_SL: - productType: EO:ECMWF:DAT:REANALYSIS_ERA5_SINGLE_LEVELS - providerProductType: - - ensemble_mean - - ensemble_members - - reanalysis - - ensemble_spread + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:REANALYSIS_ERA5_LAND_MONTHLY_MEANS"}}' + CAMS_EAC4: + productType: EO:ECMWF:DAT:CAMS_GLOBAL_REANALYSIS_EAC4 + format: grib variable: - - 10m_u_component_of_wind - - 10m_v_component_of_wind - - 2m_dewpoint_temperature - - 2m_temperature - - mean_sea_level_pressure - - mean_wave_direction - - mean_wave_period - - sea_surface_temperature - - significant_height_of_combined_wind_waves_and_swell - - surface_pressure - - total_precipitation - format: grib # netcdf format may fail + - '2m_dewpoint_temperature' + time: + - '00:00' metadata_mapping: - id: '$.productInfo.product' + id: '$.id' startTimeFromAscendingNode: - - '{{"multiStringSelectValues": [{{"name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"]}}, {{"name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"]}}, {{"name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"]}}, {{"name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time}}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: '$.productInfo.productEndDate' - providerProductType: - - '{{"multiStringSelectValues": [{{"name": "product_type", "value": {providerProductType}}}]}}' - - '$.null' - variable: - - '{{"multiStringSelectValues": [{{"name": "variable", "value": {variable}}}]}}' - - '$.null' - format: - - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}' - - '$.null' - geometry: - - '{{"boundingBoxValues": [{{"name": "area", "bbox": {geometry#to_bounds}}}]}}' - - '$.extraInformation.footprint' + - '{{"dtstart": "{startTimeFromAscendingNode#to_iso_utc_datetime}"}}' + - '$.properties.startdate' + completionTimeFromAscendingNode: + - '{{"dtend": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}' + - '$.properties.enddate' defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - storeDownloadUrl: True - ERA5_SL_MONTHLY: - productType: EO:ECMWF:DAT:REANALYSIS_ERA5_SINGLE_LEVELS_MONTHLY_MEANS - providerProductType: - - monthly_averaged_ensemble_members - - monthly_averaged_ensemble_members_by_hour_of_day - - monthly_averaged_reanalysis - - monthly_averaged_reanalysis_by_hour_of_day + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CAMS_GLOBAL_REANALYSIS_EAC4"}}' + CAMS_GLOBAL_EMISSIONS: + productType: EO:ECMWF:DAT:CAMS_GLOBAL_EMISSION_INVENTORIES + version: + - latest + format: zip variable: - - 10m_u_component_of_wind - - 10m_v_component_of_wind - - 2m_dewpoint_temperature - - 2m_temperature - - mean_sea_level_pressure - - mean_wave_direction - - mean_wave_period - - sea_surface_temperature - - significant_height_of_combined_wind_waves_and_swell - - surface_pressure - - total_precipitation - format: grib # netcdf format may fail + - acids + source: + - anthropogenic metadata_mapping: - id: '$.productInfo.product' + id: '$.id' startTimeFromAscendingNode: - - '{{"multiStringSelectValues": [{{"name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"]}}, {{"name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"]}}, {{"name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time}}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: '$.productInfo.productEndDate' + - | + {{ + "year": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] + }} + - $.properties.startDate + completionTimeFromAscendingNode: $.properties.endDate + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CAMS_GLOBAL_EMISSION_INVENTORIES"}}' + CAMS_EAC4_MONTHLY: + productType: EO:ECMWF:DAT:CAMS_GLOBAL_REANALYSIS_EAC4_MONTHLY + format: grib + variable: + - 2m_dewpoint_temperature + api_product_type: + - monthly_mean + metadata_mapping: + id: '$.id' + <<: *month_year providerProductType: - - '{{"multiStringSelectValues": [{{"name": "product_type", "value": {providerProductType}}}]}}' - - '$.null' - variable: - - '{{"multiStringSelectValues": [{{"name": "variable", "value": {variable}}}]}}' + - '{{"product_type": {providerProductType}}}' - '$.null' - format: - - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}' - - '$.null' - geometry: - - '{{"boundingBoxValues": [{{"name": "area", "bbox": {geometry#to_bounds}}}]}}' - - '$.extraInformation.footprint' defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - storeDownloadUrl: True - UERRA_EUROPE_SL: - productType: EO:ECMWF:DAT:REANALYSIS_UERRA_EUROPE_SINGLE_LEVELS - variable: total_cloud_cover - origin: uerra_harmonie - format: grib # netcdf format may fail + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CAMS_GLOBAL_REANALYSIS_EAC4_MONTHLY"}}' + CAMS_GREENHOUSE_INVERSION: + productType: EO:ECMWF:DAT:CAMS_GLOBAL_GREENHOUSE_GAS_INVERSION + version: latest + variable: carbon_dioxide + quantity: mean_column + input_observations: surface + aggregation: instantaneous metadata_mapping: - id: '$.productInfo.product' - startTimeFromAscendingNode: - - '{{"multiStringSelectValues": [{{"name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"]}}, {{"name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"]}}, {{"name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"]}}, {{"name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time}}}]}}' - - '$.productInfo.productStartDate' - completionTimeFromAscendingNode: '$.productInfo.productEndDate' - variable: - - '{{"stringChoiceValues": [{{"name": "variable", "value": "{variable}"}}]}}' + id: '$.id' + <<: *month_year + aggregation: + - '{{"time_aggregation": "{aggregation}"}}' - '$.null' - origin: - - '{{"stringChoiceValues": [{{"name": "origin", "value": "{origin}"}}]}}' + variable: + - '{{"variable": "{variable}"}}' - '$.null' - format: - - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}' + version: + - '{{"version": "{version}"}}' - '$.null' - geometry: - - '{{"boundingBoxValues": [{{"name": "area", "bbox": {geometry#to_bounds}}}]}}' - - 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - storeDownloadUrl: True - SATELLITE_SEA_LEVEL_BLACK_SEA: - productType: EO:ECMWF:DAT:SATELLITE_SEA_LEVEL_BLACK_SEA - variable: all + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CAMS_GLOBAL_GREENHOUSE_GAS_INVERSION"}}' + CAMS_EU_AIR_QUALITY_RE: + productType: EO:ECMWF:DAT:CAMS_EUROPE_AIR_QUALITY_REANALYSES + type: + - validated_reanalysis format: zip - metadata_mapping: - id: '$.productInfo.product' - variable: - - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}' - - $.null - format: - - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' + variable: + - nitrogen_dioxide + model: + - ensemble + level: + - '0' + metadata_mapping: + id: '$.id' + <<: *month_year + type: + - '{{"type": {type}}}' - '$.null' - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}, - {{ "name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - GLACIERS_ELEVATION_AND_MASS_CHANGE: - productType: EO:ECMWF:DAT:INSITU_GLACIERS_ELEVATION_MASS - variable: all + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CAMS_EUROPE_AIR_QUALITY_REANALYSES"}}' + CAMS_GRF: + productType: EO:ECMWF:DAT:CAMS_GLOBAL_RADIATIVE_FORCINGS + format: zip + variable: + - radiative_forcing_of_carbon_dioxide + forcing_type: instantaneous + band: + - long_wave + sky_type: + - all_sky + level: + - surface + version: + - '2' + metadata_mapping: + id: '$.id' + <<: *month_year + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CAMS_GLOBAL_RADIATIVE_FORCINGS"}}' + CAMS_GRF_AUX: + productType: EO:ECMWF:DAT:CAMS_GLOBAL_RADIATIVE_FORCING_AUXILLIARY_VARIABLES + band: + - short_wave + sky_type: + - clear_sky + version: + - '1.5' format: zip + variable: + - aerosol_radiation_effect + aerosol_type: + - marine + level: + - surface + metadata_mapping: + id: '$.id' + <<: *month_year + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CAMS_GLOBAL_RADIATIVE_FORCING_AUXILLIARY_VARIABLES"}}' + CAMS_GREENHOUSE_EGG4: + productType: EO:ECMWF:DAT:CAMS_GLOBAL_GHG_REANALYSIS_EGG4 + format: grib + variable: + - snow_albedo + step: + - '0' + metadata_mapping: + id: '$.id' + startTimeFromAscendingNode: + - '{{"dtstart": "{startTimeFromAscendingNode#to_iso_utc_datetime}"}}' + - '$.properties.startdate' + completionTimeFromAscendingNode: + - '{{"dtend": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}' + - '$.properties.enddate' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CAMS_GLOBAL_GHG_REANALYSIS_EGG4"}}' + CAMS_GREENHOUSE_EGG4_MONTHLY: + productType: EO:ECMWF:DAT:CAMS_GLOBAL_GHG_REANALYSIS_EGG4_MONTHLY + format: grib + variable: + - snow_albedo providerProductType: - - elevation_change - file_version: - - "20200824" + - monthly_mean_by_hour_of_day + step: + - '3' + time: + - '00:00' metadata_mapping: - variable: - - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}' - - $.null - format: - - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null + id: '$.id' + <<: *month_year providerProductType: - - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}' - - $.null - file_version: - - '{{ "multiStringSelectValues": [ {{"name": "file_version", "value": {file_version} }} ] }}' - - $.null - id: $.productInfo.product - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - startTimeFromAscendingNode: $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - storeDownloadUrl: True - GLACIERS_DIST_RANDOLPH: - productType: EO:ECMWF:DAT:INSITU_GLACIERS_EXTENT - variable: all - format: zip - version: - - "6_0" + - '{{"product_type": {providerProductType}}}' + - '$.null' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CAMS_GLOBAL_GHG_REANALYSIS_EGG4_MONTHLY"}}' + CAMS_EU_AIR_QUALITY_FORECAST: + productType: EO:ECMWF:DAT:CAMS_EUROPE_AIR_QUALITY_FORECASTS + model: + - ensemble + format: grib + variable: + - alder_pollen + type: + - forecast + time: + - '00:00' + level: + - '0' + leadtime_hour: + - '0' metadata_mapping: - variable: - - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}' - - $.null - format: - - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null + id: '$.id' + startTimeFromAscendingNode: + - '{{"dtstart": "{startTimeFromAscendingNode#to_iso_utc_datetime}"}}' + - '$.properties.startdate' + completionTimeFromAscendingNode: + - '{{"dtend": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}' + - '$.properties.enddate' + type: + - '{{"type": {type}}}' + - '$.null' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CAMS_EUROPE_AIR_QUALITY_FORECASTS"}}' + CAMS_GAC_FORECAST: + productType: EO:ECMWF:DAT:CAMS_GLOBAL_ATMOSPHERIC_COMPOSITION_FORECASTS + type: + - forecast + format: grib + variable: + - ammonium_aerosol_optical_depth_550nm + time: + - '00:00' + leadtime_hour: + - '0' + metadata_mapping: + id: '$.id' + startTimeFromAscendingNode: + - '{{"dtstart": "{startTimeFromAscendingNode#to_iso_utc_datetime}"}}' + - '$.properties.startdate' + completionTimeFromAscendingNode: + - '{{"dtend": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}' + - '$.properties.enddate' + type: + - '{{"type": {type}}}' + - '$.null' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CAMS_GLOBAL_ATMOSPHERIC_COMPOSITION_FORECASTS"}}' + CAMS_SOLAR_RADIATION: + productType: EO:ECMWF:DAT:CAMS_SOLAR_RADIATION_TIMESERIES + sky_type: clear + step: 1minute + time_reference: true_solar_time + altitude: -999 + format: csv + metadata_mapping: + id: '$.id' + startTimeFromAscendingNode: + - '{{"dtstart": "{startTimeFromAscendingNode#to_iso_utc_datetime}"}}' + - '$.properties.startdate' + completionTimeFromAscendingNode: + - '{{"dtend": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}' + - '$.properties.enddate' + step: + - '{{"time_step": "{step}"}}' + - '$.null' + sky_type: + - '{{"sky_type": "{sky_type}"}}' + - '$.null' + geometry: + - '{{"longitude": {geometry#to_longitude_latitude}["lon"], "latitude": {geometry#to_longitude_latitude}["lat"]}}' + - '$.null' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CAMS_SOLAR_RADIATION_TIMESERIES"}}' + EEA_DAILY_VI: + productType: EO:EEA:DAT:CLMS_HRVPP_VI + metadata_mapping: + id: + - '{{"uid": "{id}"}}' + - '$.id' + <<: *clms_dates + relativeOrbitNumber: + - '{{"relativeOrbitNumber": "{relativeOrbitNumber}"}}' + - '$.null' version: - - '{{ "multiStringSelectValues": [ {{"name": "version", "value": {version} }} ] }}' - - $.null - id: $.productInfo.product - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - startTimeFromAscendingNode: $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - storeDownloadUrl: True + - '{{"productVersion": "{version}"}}' + - '$.null' + platformSerialIdentifier: + - '{{"platformSerialIdentifier": "{platformSerialIdentifier}"}}' + - '$.id.`sub(/^[^_]+_[^_]+_([^_]+)_.*/, \\1)`' + tileIdentifier: + - '{{"tileId": "{tileIdentifier}"}}' + - '$.null' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:EEA:DAT:CLMS_HRVPP_VI"}}' + COP_DEM_GLO30_DGED: + productType: EO:DEM:DAT:COP-DEM_GLO-30-DGED__2023_1 + metadata_mapping: + id: '$.id' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:DEM:DAT:COP-DEM_GLO-30-DGED__2023_1"}}' + COP_DEM_GLO30_DTED: + productType: EO:DEM:DAT:COP-DEM_GLO-30-DTED__2023_1 + metadata_mapping: + id: '$.id' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:DEM:DAT:COP-DEM_GLO-30-DTED__2023_1"}}' + COP_DEM_GLO90_DGED: + productType: EO:DEM:DAT:COP-DEM_GLO-90-DGED__2023_1 + metadata_mapping: + id: '$.id' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:DEM:DAT:COP-DEM_GLO-90-DGED__2023_1"}}' + COP_DEM_GLO90_DTED: + productType: EO:DEM:DAT:COP-DEM_GLO-90-DTED__2023_1 + metadata_mapping: + id: '$.id' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:DEM:DAT:COP-DEM_GLO-90-DTED__2023_1"}}' + CLMS_GLO_NDVI_333M: + productType: EO:CLMS:DAT:CLMS_GLOBAL_NDVI_300M_V1_10DAILY_NETCDF + metadata_mapping: + <<: *id_from_date + <<: *clms_dates + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:CLMS:DAT:CLMS_GLOBAL_NDVI_300M_V1_10DAILY_NETCDF"}}' + CLMS_GLO_NDVI_1KM_LTS: + productType: EO:CLMS:DAT:CLMS_GLOBAL_NDVI_1KM_V2_10DAILY_NETCDF + metadata_mapping: + <<: *id_from_date + <<: *clms_dates + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:CLMS:DAT:CLMS_GLOBAL_NDVI_1KM_V2_10DAILY_NETCDF"}}' + CLMS_CORINE: + productType: EO:CLMS:DAT:CORINE + providerProductType: Corine Land Cover 2018 + format: GeoTiff100mt + metadata_mapping: + id: '$.id' + providerProductType: + - '{{"product_type": "{providerProductType}"}}' + - '$.null' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:CLMS:DAT:CORINE"}}' + CLMS_GLO_FCOVER_333M: + productType: EO:CLMS:DAT:CLMS_GLOBAL_FCOVER_300M_V1_10DAILY_NETCDF + metadata_mapping: + <<: *id_from_date + <<: *clms_dates + productGroupId: + - '{{"productGroupId": "{productGroupId}"}}' + - '$.null' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:CLMS:DAT:CLMS_GLOBAL_FCOVER_300M_V1_10DAILY_NETCDF"}}' + CLMS_GLO_DMP_333M: + productType: EO:CLMS:DAT:CLMS_GLOBAL_DMP_300M_V1_10DAILY_NETCDF + metadata_mapping: + <<: *id_from_date + <<: *clms_dates + productGroupId: + - '{{"productGroupId": "{productGroupId}"}}' + - '$.null' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:CLMS:DAT:CLMS_GLOBAL_DMP_300M_V1_10DAILY_NETCDF"}}' + CLMS_GLO_GDMP_333M: + productType: EO:CLMS:DAT:CLMS_GLOBAL_GDMP_300M_V1_10DAILY_NETCDF + metadata_mapping: + <<: *id_from_date + <<: *clms_dates + productGroupId: + - '{{"productGroupId": "{productGroupId}"}}' + - '$.null' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:CLMS:DAT:CLMS_GLOBAL_GDMP_300M_V1_10DAILY_NETCDF"}}' + CLMS_GLO_FAPAR_333M: + productType: EO:CLMS:DAT:CLMS_GLOBAL_FAPAR_300M_V1_10DAILY_NETCDF + metadata_mapping: + <<: *id_from_date + <<: *clms_dates + productGroupId: + - '{{"productGroupId": "{productGroupId}"}}' + - '$.null' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:CLMS:DAT:CLMS_GLOBAL_FAPAR_300M_V1_10DAILY_NETCDF"}}' + CLMS_GLO_LAI_333M: + productType: EO:CLMS:DAT:CLMS_GLOBAL_LAI_300M_V1_10DAILY_NETCDF + metadata_mapping: + <<: *id_from_date + <<: *clms_dates + productGroupId: + - '{{"productGroupId": "{productGroupId}"}}' + - '$.null' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:CLMS:DAT:CLMS_GLOBAL_LAI_300M_V1_10DAILY_NETCDF"}}' FIRE_HISTORICAL: - productType: EO:ECMWF:DAT:CEMS_FIRE_HISTORICAL - providerProductType: - - reanalysis - dataset: - - Consolidated dataset + productType: EO:ECMWF:DAT:CEMS_FIRE_HISTORICAL_V1 + providerProductType: reanalysis variable: - fire_danger_index - - build_up_index - - danger_risk - - drought_code - - duff_moisture_code - - fine_fuel_moisture_code - - fire_daily_severity_rating - - fire_weather_index - - initial_fire_spread_index - - keetch_byram_drought_index - - burning_index - - energy_release_component - - ignition_component version: - - "4.0" + - "4_1" + format: + - "grib" + grid: original_grid + type: consolidated_dataset metadata_mapping: + id: '$.id' + <<: *day_month_year providerProductType: - - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}' - - $.null - variable: - - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}' - - $.null - dataset: - - '{{ "multiStringSelectValues": [ {{"name": "dataset", "value": {dataset} }} ] }}' - - $.null + - '{{"product_type": "{providerProductType}"}}' + - '$.null' version: - - '{{ "multiStringSelectValues": [ {{"name": "version", "value": {version} }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}, - {{ "name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90)) - id: $.productInfo.product + - '{{"system_version": {version}}}' + - '$.null' + format: + - '{{"format": {format}}}' + - '$.null' + type: + - '{{"dataset_type": "{type}"}}' + - '$.null' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CEMS_FIRE_HISTORICAL_V1"}}' GLOFAS_FORECAST: productType: EO:ECMWF:DAT:CEMS_GLOFAS_FORECAST - variable: - - river_discharge_in_the_last_24_hours - system_version: + variable: river_discharge_in_the_last_24_hours + version: - operational leadtime_hour: - "24" - - "48" - - "72" - - "96" - - "120" - - "144" - - "168" - - "192" - - "216" - - "240" - - "264" - - "288" - - "312" - - "336" - - "360" - - "384" - - "408" - - "432" - - "456" - - "480" - - "504" - - "528" - - "552" - - "576" - - "600" - - "624" - - "648" - - "672" - - "696" - - "720" - hydrological_model: + model: - lisflood providerProductType: - control_forecast format: grib metadata_mapping: + id: '$.id' + <<: *day_month_year providerProductType: - - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}' - - $.null + - '{{"product_type": {providerProductType}}}' + - '$.null' + version: + - '{{"system_version": {version}}}' + - '$.null' + model: + - '{{"hydrological_model": {model}}}' + - '$.null' variable: - - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}' - - $.null - leadtime_hour: - - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}' - - $.null - hydrological_model: - - '{{ "multiStringSelectValues": [ {{"name": "hydrological_model", "value": {hydrological_model} }} ] }}' - - $.null - format: - - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}, - {{ "name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: - - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}' - - $.extraInformation.footprint + - '{{"variable": "{variable}"}}' + - '$.null' defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CEMS_GLOFAS_FORECAST"}}' GLOFAS_HISTORICAL: productType: EO:ECMWF:DAT:CEMS_GLOFAS_HISTORICAL variable: - river_discharge_in_the_last_24_hours - system_version: + version: - version_4_0 - hydrological_model: + model: - lisflood providerProductType: - consolidated format: grib metadata_mapping: + id: '$.id' + <<: *hist_day_month_year providerProductType: - - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}' - - $.null - variable: - - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}' - - $.null - system_version: - - '{{ "multiStringSelectValues": [ {{"name": "system_version", "value": {system_version} }} ] }}' - - $.null - hydrological_model: - - '{{ "multiStringSelectValues": [ {{"name": "hydrological_model", "value": {hydrological_model} }} ] }}' - - $.null - format: - - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "hyear", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "hmonth", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}, - {{ "name": "hday", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: - - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}' - - $.extraInformation.footprint + - '{{"product_type": {providerProductType}}}' + - '$.null' + version: + - '{{"system_version": {version}}}' + - '$.null' + model: + - '{{"hydrological_model": {model}}}' + - '$.null' defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CEMS_GLOFAS_HISTORICAL"}}' GLOFAS_REFORECAST: productType: EO:ECMWF:DAT:CEMS_GLOFAS_REFORECAST variable: @@ -5731,177 +5743,69 @@ - control_reforecast leadtime_hour: - "24" - - "48" - - "72" - - "96" - - "120" - - "144" - - "168" - - "192" - - "216" - - "240" - - "264" - - "288" - - "312" - - "336" - - "360" - - "384" - - "408" - - "432" - - "456" - - "480" - - "504" - - "528" - - "552" - - "576" - - "600" - - "624" - - "648" - - "672" - - "696" - - "720" - - "744" - - "768" - - "792" - - "816" - - "840" - - "864" - - "888" - - "912" - - "936" - - "960" - - "984" - - "1008" - - "1032" - - "1056" - - "1080" - - "1104" - system_version: - - version_3_1 - hydrological_model: + version: + - version_4_0 + model: - lisflood format: grib metadata_mapping: + id: '$.id' + <<: *hist_day_month_year providerProductType: - - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}' - - $.null - variable: - - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}' - - $.null - leadtime_hour: - - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}' - - $.null - system_version: - - '{{ "multiStringSelectValues": [ {{"name": "system_version", "value": {system_version} }} ] }}' - - $.null - hydrological_model: - - '{{ "multiStringSelectValues": [ {{"name": "hydrological_model", "value": {hydrological_model} }} ] }}' - - $.null - format: - - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "hyear", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "hmonth", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}, - {{ "name": "hday", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: - - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}' - - $.extraInformation.footprint + - '{{"product_type": {providerProductType}}}' + - '$.null' + version: + - '{{"system_version": {version}}}' + - '$.null' + model: + - '{{"hydrological_model": {model}}}' + - '$.null' defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CEMS_GLOFAS_REFORECAST"}}' GLOFAS_SEASONAL: productType: EO:ECMWF:DAT:CEMS_GLOFAS_SEASONAL variable: - river_discharge_in_the_last_24_hours - system_version: + version: - operational - hydrological_model: + model: - htessel_lisflood leadtime_hour: - "24" - - "48" - - "72" - - "96" - - "120" - - "144" format: grib metadata_mapping: - variable: - - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}' - - $.null - system_version: - - '{{ "multiStringSelectValues": [ {{"name": "system_version", "value": {system_version} }} ] }}' - - $.null - hydrological_model: - - '{{ "multiStringSelectValues": [ {{"name": "hydrological_model", "value": {hydrological_model} }} ] }}' - - $.null - leadtime_hour: - - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}' - - $.null - format: - - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: - - '{{ "boundingBoxValues": [ {{"name": "area", "bbox": {geometry#to_bounds} }} ] }}' - - '$.extraInformation.footprint' + id: '$.id' + <<: *month_year + version: + - '{{"system_version": {version}}}' + - '$.null' + model: + - '{{"hydrological_model": {model}}}' + - '$.null' defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CEMS_GLOFAS_SEASONAL"}}' GLOFAS_SEASONAL_REFORECAST: productType: EO:ECMWF:DAT:CEMS_GLOFAS_SEASONAL_REFORECAST variable: - river_discharge_in_the_last_24_hours - system_version: + version: - version_4_0 - hydrological_model: + model: - lisflood leadtime_hour: - "24" format: grib metadata_mapping: - variable: - - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}' - - $.null - system_version: - - '{{ "multiStringSelectValues": [ {{"name": "system_version", "value": {system_version} }} ] }}' - - $.null - hydrological_model: - - '{{ "multiStringSelectValues": [ {{"name": "hydrological_model", "value": {hydrological_model} }} ] }}' - - $.null - leadtime_hour: - - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}' - - $.null - format: - - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "hyear", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "hmonth", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: - - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}' - - '$.extraInformation.footprint' + id: '$.id' + <<: *hist_month_year + version: + - '{{"system_version": {version}}}' + - '$.null' + model: + - '{{"hydrological_model": {model}}}' + - '$.null' defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:CEMS_GLOFAS_SEASONAL_REFORECAST"}}' EFAS_FORECAST: productType: EO:ECMWF:DAT:EFAS_FORECAST providerProductType: @@ -5910,825 +5814,291 @@ - "1" leadtime_hour: - "0" - - "6" - - "12" - - "18" - - "24" - - "30" - - "36" - - "42" - - "48" - - "54" - - "60" - - "66" - - "72" - - "78" - - "84" - - "90" - - "96" - - "102" - - "108" - - "114" - - "120" - - "126" - - "132" - - "138" - - "144" - - "150" - - "156" - - "162" - - "168" - - "174" - - "180" - - "186" - - "192" - - "198" - - "204" - - "210" - - "216" - - "222" - - "228" - - "234" - - "240" - - "246" - - "252" - - "258" - - "264" - - "270" - - "276" - - "282" - - "288" - - "294" - - "300" - - "306" - - "312" - - "318" - - "324" - - "330" - - "336" - - "342" - - "348" - - "354" - - "360" - originating_centre: ecmwf + version: + - operational + origin: ecmwf variable: volumetric_soil_moisture - model_levels: soil_levels + model_level: soil_levels + time: + - 00:00 format: grib.zip metadata_mapping: + id: '$.id' + <<: *day_month_year providerProductType: - - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}' - - $.null - soil_level: - - '{{ "multiStringSelectValues": [ {{"name": "soil_level", "value": {soil_level} }} ] }}' - - $.null - leadtime_hour: - - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}' - - $.null - originating_centre: - - '{{ "stringChoiceValues": [ {{"name": "originating_centre", "value": "{originating_centre}" }} ] }}' - - $.null + - '{{"product_type": {providerProductType}}}' + - '$.null' + version: + - '{{"system_version": {version}}}' + - '$.null' + model_level: + - '{{"model_levels": "{model_level}"}}' + - '$.null' + origin: + - '{{"originating_centre": "{origin}"}}' + - '$.null' variable: - - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}' - - $.null - model_levels: - - '{{ "stringChoiceValues": [ {{"name": "model_levels", "value": "{model_levels}" }} ] }}' - - $.null - format: - - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}, - {{ "name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }}, - {{ "name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time} }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True + - '{{"variable": "{variable}"}}' + - '$.null' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:EFAS_FORECAST"}}' EFAS_HISTORICAL: productType: EO:ECMWF:DAT:EFAS_HISTORICAL + version: + - version_5_0 + variable: volumetric_soil_moisture + model_level: soil_levels soil_level: - "1" - system_version: version_4_0 - variable: volumetric_soil_moisture - model_levels: soil_levels - metadata_mapping: - soil_level: - - '{{ "multiStringSelectValues": [ {{"name": "soil_level", "value": {soil_level} }} ] }}' - - $.null - system_version: - - '{{ "stringChoiceValues": [ {{"name": "system_version", "value": "{system_version}" }} ] }}' - - $.null + time: + - 00:00 + metadata_mapping: + id: '$.id' + <<: *hist_day_month_year + version: + - '{{"system_version": {version}}}' + - '$.null' + model_level: + - '{{"model_levels": "{model_level}"}}' + - '$.null' variable: - - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}' - - $.null - model_levels: - - '{{ "stringChoiceValues": [ {{"name": "model_levels", "value": "{model_levels}" }} ] }}' - - $.null - format: - - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "hyear", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "hmonth", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}, - {{ "name": "hday", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }}, - {{ "name": "time", "value": {startTimeFromAscendingNode#get_ecmwf_time} }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True + - '{{"variable": "{variable}"}}' + - '$.null' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:EFAS_HISTORICAL"}}' EFAS_REFORECAST: productType: EO:ECMWF:DAT:EFAS_REFORECAST providerProductType: - control_forecast + version: + - version_5_0 soil_level: - "1" leadtime_hour: - - "0" - "6" - - "12" - - "18" - - "24" - - "30" - - "36" - - "42" - - "48" - - "54" - - "60" - - "66" - - "72" - - "78" - - "84" - - "90" - - "96" - - "102" - - "108" - - "114" - - "120" - - "126" - - "132" - - "138" - - "144" - - "150" - - "156" - - "162" - - "168" - - "174" - - "180" - - "186" - - "192" - - "198" variable: volumetric_soil_moisture - model_levels: soil_levels + model_level: soil_levels format: grib.zip metadata_mapping: + id: '$.id' + <<: *hist_day_month_year providerProductType: - - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}' - - $.null - soil_level: - - '{{ "multiStringSelectValues": [ {{"name": "soil_level", "value": {soil_level} }} ] }}' - - $.null - leadtime_hour: - - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}' - - $.null + - '{{"product_type": {providerProductType}}}' + - '$.null' + version: + - '{{"system_version": {version}}}' + - '$.null' + model_level: + - '{{"model_levels": "{model_level}"}}' + - '$.null' variable: - - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}' - - $.null - model_levels: - - '{{ "stringChoiceValues": [ {{"name": "model_levels", "value": "{model_levels}" }} ] }}' - - $.null - format: - - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "hyear", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "hmonth", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}, - {{ "name": "hday", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True + - '{{"variable": "{variable}"}}' + - '$.null' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:EFAS_REFORECAST"}}' EFAS_SEASONAL: productType: EO:ECMWF:DAT:EFAS_SEASONAL - soil_level: - - "1" + version: + - operational leadtime_hour: - "24" - - "48" - - "72" - - "96" - - "120" - - "144" - - "168" - - "192" variable: volumetric_soil_moisture - model_levels: soil_levels - format: grib.zip - metadata_mapping: - soil_level: - - '{{ "multiStringSelectValues": [ {{"name": "soil_level", "value": {soil_level} }} ] }}' - - $.null - leadtime_hour: - - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}' - - $.null - variable: - - '{{"stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}' - - $.null - model_levels: - - '{{"stringChoiceValues": [ {{"name": "model_levels", "value": "{model_levels}" }} ] }}' - - $.null - format: - - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True - EFAS_SEASONAL_REFORECAST: - productType: EO:ECMWF:DAT:EFAS_SEASONAL_REFORECAST + model_level: soil_levels soil_level: - "1" - leadtime_hour: - - "24" - - "48" - - "72" - - "96" - - "120" - - "144" - - "168" - - "192" - variable: volumetric_soil_moisture - model_levels: soil_levels format: grib.zip metadata_mapping: - soil_level: - - '{{ "multiStringSelectValues": [ {{"name": "soil_level", "value": {soil_level} }} ] }}' - - $.null - leadtime_hour: - - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}' - - $.null - variable: - - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}' - - $.null - model_levels: - - '{{ "stringChoiceValues": [ {{"name": "model_levels", "value": "{model_levels}" }} ] }}' - - $.null - format: - - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "hyear", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "hmonth", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True - SATELLITE_CARBON_DIOXIDE: - productType: EO:ECMWF:DAT:SATELLITE_CARBON_DIOXIDE - processing_level: - - level_2 - version: - - "4.0" - variable: xco2 - sensor_and_algorithm: sciamachy_wfmd - format: zip - metadata_mapping: - processing_level: - - '{{ "multiStringSelectValues": [ {{"name": "processing_level", "value": {processing_level} }} ] }}' - - $.null + id: '$.id' + <<: *month_year version: - - '{{ "multiStringSelectValues": [ {{"name": "version", "value": {version} }} ] }}' - - $.null - variable: - - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}' - - $.null - sensor_and_algorithm: - - '{{ "stringChoiceValues": [ {{"name": "sensor_and_algorithm", "value": "{sensor_and_algorithm}" }} ] }}' - - $.null - format: - - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}, - {{ "name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True - SATELLITE_METHANE: - productType: EO:ECMWF:DAT:SATELLITE_METHANE - processing_level: - - level_2 - version: - - "4.0" - variable: xch4 - sensor_and_algorithm: sciamachy_wfmd - format: zip - metadata_mapping: - processing_level: - - '{{ "multiStringSelectValues": [ {{"name": "processing_level", "value": {processing_level} }} ] }}' - - $.null - version: - - '{{ "multiStringSelectValues": [ {{"name": "version", "value": {version} }} ] }}' - - $.null - variable: - - '{{ "stringChoiceValues": [ {{"name": "variable", "value": "{variable}" }} ] }}' - - $.null - sensor_and_algorithm: - - '{{ "stringChoiceValues": [ {{"name": "sensor_and_algorithm", "value": "{sensor_and_algorithm}" }} ] }}' - - $.null - format: - - '{{ "stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}, - {{ "name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True - SEASONAL_POSTPROCESSED_PL: - productType: EO:ECMWF:DAT:SEASONAL_POSTPROCESSED_PRESSURE_LEVELS - providerProductType: - - ensemble_mean - variable: - - geopotential_anomaly - - specific_humidity_anomaly - - temperature_anomaly - - u_component_of_wind_anomaly - - v_component_of_wind_anomaly - pressure_level: - - "10" - - "30" - - "50" - - "100" - - "200" - - "300" - - "400" - - "500" - - "700" - - "850" - - "925" - - "1000" - leadtime_month: - - "1" - originating_centre: ecmwf - system: "5" - format: grib - metadata_mapping: - providerProductType: - - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}' - - $.null - variable: - - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}' - - $.null - pressure_level: - - '{{ "multiStringSelectValues": [ {{"name": "pressure_level", "value": {pressure_level} }} ] }}' - - $.null - leadtime_month: - - '{{ "multiStringSelectValues": [ {{"name": "leadtime_month", "value": {leadtime_month} }} ] }}' - - $.null - originating_centre: - - '{{"stringChoiceValues": [ {{"name": "originating_centre", "value": "{originating_centre}" }} ] }}' - - $.null - system: - - '{{"stringChoiceValues": [ {{"name": "system", "value": "{system}" }} ] }}' - - $.null - format: - - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: - - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}' - - '$.extraInformation.footprint' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True - SEASONAL_POSTPROCESSED_SL: - productType: EO:ECMWF:DAT:SEASONAL_POSTPROCESSED_SINGLE_LEVELS - providerProductType: - - ensemble_mean - variable: - - 10m_u_component_of_wind_anomaly - - 10m_v_component_of_wind_anomaly - - 10m_wind_gust_anomaly - - 10m_wind_speed_anomaly - leadtime_month: - - "1" - originating_centre: ecmwf - system: "51" - format: grib - metadata_mapping: - providerProductType: - - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}' - - $.null - variable: - - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}' - - $.null - leadtime_month: - - '{{ "multiStringSelectValues": [ {{"name": "leadtime_month", "value": {leadtime_month} }} ] }}' - - $.null - originating_centre: - - '{{"stringChoiceValues": [ {{"name": "originating_centre", "value": "{originating_centre}" }} ] }}' - - $.null - system: - - '{{"stringChoiceValues": [ {{"name": "system", "value": "{system}" }} ] }}' - - $.null - format: - - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: - - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}' - - '$.extraInformation.footprint' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True - SEASONAL_ORIGINAL_SL: - productType: EO:ECMWF:DAT:SEASONAL_ORIGINAL_SINGLE_LEVELS - variable: - - 10m_u_component_of_wind - - 10m_v_component_of_wind - - 10m_wind_gust_since_previous_post_processing - leadtime_hour: - - "0" - - "6" - - "12" - - "18" - - "24" - - "30" - - "36" - - "42" - - "48" - - "54" - - "60" - - "66" - - "72" - - "78" - - "84" - - "90" - - "96" - - "102" - - "108" - - "114" - - "120" - - "126" - - "132" - - "138" - - "144" - - "150" - - "156" - - "162" - - "168" - - "174" - - "180" - - "186" - - "192" - - "198" - originating_centre: ecmwf - system: "51" - format: grib - metadata_mapping: - providerProductType: - - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}' - - $.null + - '{{"system_version": {version}}}' + - '$.null' + model_level: + - '{{"model_levels": "{model_level}"}}' + - '$.null' variable: - - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}' - - $.null - leadtime_hour: - - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}' - - $.null - originating_centre: - - '{{"stringChoiceValues": [ {{"name": "originating_centre", "value": "{originating_centre}" }} ] }}' - - $.null - system: - - '{{"stringChoiceValues": [ {{"name": "system", "value": "{system}" }} ] }}' - - $.null - format: - - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}, - {{ "name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: - - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}' - - '$.extraInformation.footprint' + - '{{"variable": "{variable}"}}' + - '$.null' defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True - SEASONAL_ORIGINAL_PL: - productType: EO:ECMWF:DAT:SEASONAL_ORIGINAL_PRESSURE_LEVELS - variable: - - geopotential - - temperature - pressure_level: - - "10" - - "30" - - "50" - - "100" - - "200" - - "300" - - "400" - - "500" - - "700" - - "850" - - "925" - - "1000" + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:EFAS_SEASONAL"}}' + EFAS_SEASONAL_REFORECAST: + productType: EO:ECMWF:DAT:EFAS_SEASONAL_REFORECAST + version: + - "version_5_0" leadtime_hour: - - "12" - "24" - - "36" - - "48" - - "60" - - "72" - - "84" - - "96" - - "108" - - "120" - - "132" - - "144" - - "156" - - "168" - - "180" - - "192" - originating_centre: ecmwf - system: "51" - format: grib - metadata_mapping: - variable: - - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}' - - $.null - pressure_level: - - '{{ "multiStringSelectValues": [ {{"name": "pressure_level", "value": {pressure_level} }} ] }}' - - $.null - leadtime_hour: - - '{{ "multiStringSelectValues": [ {{"name": "leadtime_hour", "value": {leadtime_hour} }} ] }}' - - $.null - originating_centre: - - '{{"stringChoiceValues": [ {{"name": "originating_centre", "value": "{originating_centre}" }} ] }}' - - $.null - system: - - '{{"stringChoiceValues": [ {{"name": "system", "value": "{system}" }} ] }}' - - $.null - format: - - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }}, - {{ "name": "day", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["day"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: - - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}' - - '$.extraInformation.footprint' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True - SEASONAL_MONTHLY_PL: - productType: EO:ECMWF:DAT:SEASONAL_MONTHLY_PRESSURE_LEVELS - variable: - - geopotential - - temperature - providerProductType: - - ensemble_mean - leadtime_month: - - "1" - pressure_level: - - "10" - - "30" - - "50" - - "100" - - "200" - - "300" - - "400" - - "500" - - "700" - - "850" - - "925" - - "1000" - originating_centre: ecmwf - system: "51" - format: grib - metadata_mapping: - variable: - - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}' - - $.null - providerProductType: - - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}' - - $.null - leadtime_month: - - '{{ "multiStringSelectValues": [ {{"name": "leadtime_month", "value": {leadtime_month} }} ] }}' - - $.null - pressure_level: - - '{{ "multiStringSelectValues": [ {{"name": "pressure_level", "value": {pressure_level} }} ] }}' - - $.null - originating_centre: - - '{{"stringChoiceValues": [ {{"name": "originating_centre", "value": "{originating_centre}" }} ] }}' - - $.null - system: - - '{{"stringChoiceValues": [ {{"name": "system", "value": "{system}" }} ] }}' - - $.null - format: - - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: - - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}' - - '$.extraInformation.footprint' - defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True - SEASONAL_MONTHLY_SL: - productType: EO:ECMWF:DAT:SEASONAL_MONTHLY_SINGLE_LEVELS - variable: - - 10m_u_component_of_wind - - 10m_wind_gust_since_previous_post_processing - - 10m_v_component_of_wind - providerProductType: - - ensemble_mean - leadtime_month: + variable: volumetric_soil_moisture + model_level: soil_levels + soil_level: - "1" - originating_centre: ecmwf - system: "51" - format: grib + format: grib.zip metadata_mapping: + id: '$.id' + <<: *hist_month_year + version: + - '{{"system_version": {version}}}' + - '$.null' + model_level: + - '{{"model_levels": "{model_level}"}}' + - '$.null' variable: - - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}' - - $.null - providerProductType: - - '{{ "multiStringSelectValues": [ {{"name": "product_type", "value": {providerProductType} }} ] }}' - - $.null - leadtime_month: - - '{{ "multiStringSelectValues": [ {{"name": "leadtime_month", "value": {leadtime_month} }} ] }}' - - $.null - originating_centre: - - '{{"stringChoiceValues": [ {{"name": "originating_centre", "value": "{originating_centre}" }} ] }}' - - $.null - system: - - '{{"stringChoiceValues": [ {{"name": "system", "value": "{system}" }} ] }}' - - $.null - format: - - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: - - | - {{ "multiStringSelectValues": [ - {{ "name": "year", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["year"] }}, - {{ "name": "month", "value": {startTimeFromAscendingNode#to_datetime_dict(list)}["month"] }} - ] }} - - $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: - - '{{ "boundingBoxValues": [ {{ "name": "area", "bbox": {geometry#to_bounds} }} ] }}' - - '$.extraInformation.footprint' + - '{{"variable": "{variable}"}}' + - '$.null' defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True - SIS_HYDRO_MET_PROJ: - productType: EO:ECMWF:DAT:SIS_HYDROLOGY_METEOROLOGY_DERIVED_PROJECTIONS - period: - - "1974" - ensemble_member: - - r12i1p1 - experiment: - - historical - time_aggregation: - - daily - variable: - - 2m_air_temperature - providerProductType: essential_climate_variables - processing_type: bias_corrected - variable_type: absolute_values - horizontal_resolution: 5_km - rcm: cclm4_8_17 - gcm: ec_earth - format: zip + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "EO:ECMWF:DAT:EFAS_SEASONAL_REFORECAST"}}' + + auth: !plugin + type: TokenAuth + auth_uri: 'https://gateway.prod.wekeo2.eu/hda-broker/gettoken' + refresh_uri: 'https://gateway.prod.wekeo2.eu/hda-broker/refreshtoken' + token_type: json + token_key: access_token + refresh_token_key: refresh_token + download: !plugin + type: HTTPDownload + auth_error_code: 401 + order_enabled: true + order_method: 'POST' + order_on_response: metadata_mapping: - period: - - '{{ "multiStringSelectValues": [ {{"name": "period", "value": {period} }} ] }}' - - $.null - ensemble_member: - - '{{"multiStringSelectValues": [ {{"name": "ensemble_member", "value": {ensemble_member} }} ] }}' - - $.null - experiment: - - '{{"multiStringSelectValues": [ {{"name": "experiment", "value": {experiment} }} ] }}' - - $.null - time_aggregation: - - '{{ "multiStringSelectValues": [ {{"name": "time_aggregation", "value": {time_aggregation} }} ] }}' - - $.null - variable: - - '{{ "multiStringSelectValues": [ {{"name": "variable", "value": {variable} }} ] }}' - - $.null - providerProductType: - - '{{"stringChoiceValues": [ {{"name": "product_type", "value": "{providerProductType}" }} ] }}' - - $.null - processing_type: - - '{{"stringChoiceValues": [ {{"name": "processing_type", "value": "{processing_type}" }} ] }}' - - $.null - variable_type: - - '{{"stringChoiceValues": [ {{"name": "variable_type", "value": "{variable_type}" }} ] }}' - - $.null - horizontal_resolution: - - '{{"stringChoiceValues": [ {{"name": "horizontal_resolution", "value": "{horizontal_resolution}" }} ] }}' - - $.null - rcm: - - '{{"stringChoiceValues": [ {{"name": "rcm", "value": "{rcm}" }} ] }}' - - $.null - gcm: - - '{{"stringChoiceValues": [ {{"name": "gcm", "value": "{gcm}" }} ] }}' - - $.null - format: - - '{{"stringChoiceValues": [ {{"name": "format", "value": "{format}" }} ] }}' - - $.null - startTimeFromAscendingNode: $.productInfo.productStartDate - completionTimeFromAscendingNode: $.productInfo.productEndDate - geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' - id: $.productInfo.product - storeDownloadUrl: True + orderId: '$.json.download_id' + orderStatusLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/downloads?download_id={orderId}' + order_status: + request: + method: GET + metadata_mapping: + status: $.json.features[0].status + message: $.json.features[0].message + error: + status: Error + success: + status: Done + ordered: + http_code: 202 + on_success: + metadata_mapping: + download_id: $.json.features[0]._id + downloadLink: https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download/{download_id} + products: + GLOFAS_FORECAST: + outputs_extension: .grib + GLOFAS_REFORECAST: + outputs_extension: .grib + GLOFAS_HISTORICAL: + outputs_extension: .grib + GLOFAS_SEASONAL: + outputs_extension: .grib + GLOFAS_SEASONAL_REFORECAST: + outputs_extension: .grib + FIRE_HISTORICAL: + outputs_extension: .grib +--- +!provider # wekeo_cmems + name: wekeo_cmems + priority: 0 + roles: + - host + description: WEkEO - Copernicus Marine Service + url: https://www.wekeo.eu/ + search: !plugin + type: PostJsonSearch + api_endpoint: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/search' + need_auth: true + timeout: 60 + auth_error_code: 401 + results_entry: 'features' + two_passes_id_search: true + pagination: + total_items_nb_key_path: '$.properties.totalResults' + next_page_query_obj: '{{"itemsPerPage":{items_per_page},"startIndex":{skip}}}' + query_params_key: 'search' + discover_product_types: + fetch_url: https://gateway.prod.wekeo2.eu/hda-broker/api/v1/datasets?itemsPerPage=1400&q=EO:MO + single_collection_fetch_qs: q={productType} + single_collection_fetch_url: https://gateway.prod.wekeo2.eu/hda-broker/api/v1/datasets/{productType} + result_type: json + results_entry: 'features' + generic_product_type_id: '$.dataset_id' + generic_product_type_parsable_properties: + collection: '$.dataset_id' + generic_product_type_parsable_metadata: + abstract: '$.metadata.description' + license: '$.terms' + instrument: '$.null' + platform: '$.null' + platformSerialIdentifier: '$.null' + single_product_type_parsable_metadata: + title: '$.metadata._source.datasetTitle' + missionStartDate: '$.metadata._source.tempextent_begin' + missionEndDate: '$.metadata._source.tempextent_end' + processingLevel: '$.null' + keywords: '$.metadata._source.keywords' + constraints_file_url: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/queryable/{dataset}' + constraints_file_dataset_key: productType + constraints_entry: constraints + stop_without_constraints_entry_key: true + metadata_mapping: + productType: + - '{{"dataset_id": "{productType}"}}' + - '$.null' + id: + - '{{"min_date": {id#dates_from_cmems_id}["min_date"], "max_date": {id#dates_from_cmems_id}["max_date"]}}' + - '$.id' + geometry: + - '{{"bbox": {geometry#to_bounds}}}' + - '$.geometry' + startTimeFromAscendingNode: + - '{{"min_date": "{startTimeFromAscendingNode#to_iso_utc_datetime}"}}' + - '$.properties.startdate' + completionTimeFromAscendingNode: + - '{{"max_date": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}' + - '$.properties.enddate' + variable: + - '{{"variables": {variable}}}' + - '{$.properties.location#get_variables_from_path}' + downloadLink: '$.properties.location' + title: '$.id' + storageStatus: 'OFFLINE' + orderLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download?{{"location": "{downloadLink}","product_id":"{id}", "cacheable": "true", "dataset_id": "productType"}}' + products: + GENERIC_PRODUCT_TYPE: + productType: '{productType}' + auth: !plugin + type: TokenAuth + auth_uri: 'https://gateway.prod.wekeo2.eu/hda-broker/gettoken' + refresh_uri: 'https://gateway.prod.wekeo2.eu/hda-broker/refreshtoken' + token_type: json + token_key: access_token + refresh_token_key: refresh_token download: !plugin type: HTTPDownload - base_uri: https://wekeo-broker.prod.wekeo2.eu/databroker - flatten_top_dirs: true auth_error_code: 401 order_enabled: true order_method: 'POST' order_on_response: metadata_mapping: - order_id: '$.orderId' - orderStatusLink: 'https://wekeo-broker.prod.wekeo2.eu/databroker/dataorder/status/{order_id}' - downloadLink: 'https://wekeo-broker.prod.wekeo2.eu/databroker/dataorder/download/{order_id}' - order_status_method: 'GET' - order_status_success: - status: completed - message: "Done!" + orderId: '$.json.download_id' + orderStatusLink: 'https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/downloads?download_id={orderId}' + order_status: + request: + method: GET + metadata_mapping: + status: $.json.features[0].status + message: $.json.features[0].message + error: + status: Error + success: + status: Done + ordered: + http_code: 202 + on_success: + metadata_mapping: + download_id: $.json.features[0]._id + downloadLink: https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/download/{download_id} --- -!provider +!provider # MARK: creodias_s3 name: creodias_s3 priority: 0 description: CloudFerro DIAS data through S3 protocol @@ -6737,337 +6107,1229 @@ url: https://creodias.eu/ search: !plugin type: CreodiasS3Search - api_endpoint: 'http://datahub.creodias.eu/resto/api/collections/{collection}/search.json' + api_endpoint: 'https://datahub.creodias.eu/odata/v1/Products' s3_endpoint: 'https://eodata.cloudferro.com' need_auth: true - timeout: 60 + timeout: 120 + ssl_verify: true + dont_quote: + - '[' + - ']' + - '$' + - '=' + - '&' + - ':' pagination: - next_page_url_tpl: '{url}?{search}&maxRecords={items_per_page}&page={page}&exactCount=1' - total_items_nb_key_path: '$.properties.totalResults' + next_page_url_tpl: '{url}?{search}&$top={items_per_page}&$skip={skip}&$expand=Attributes&$expand=Assets' + count_tpl: '&$count=True' + total_items_nb_key_path: '$."@odata.count"' max_items_per_page: 1_000 + sort: + sort_by_default: + - !!python/tuple [startTimeFromAscendingNode, ASC] + sort_by_tpl: '&$orderby={sort_param} {sort_order}' + sort_param_mapping: + startTimeFromAscendingNode: ContentDate/Start + completionTimeFromAscendingNode: ContentDate/End + publicationDate: PublicationDate + modificationDate: ModificationDate + sort_order_mapping: + ascending: asc + descending: desc + max_sort_params: 1 + results_entry: 'value' + free_text_search_operations: + $filter: + union: ' or ' + wrapper: '{}' + operations: + and: + - "Collection/Name eq '{collection}'" + - "OData.CSC.Intersects(area=geography'{geometry#to_ewkt}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq '{productType}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformShortName' and att/OData.CSC.StringAttribute/Value eq '{platform}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'platformSerialIdentifier' and att/OData.CSC.StringAttribute/Value eq '{platformSerialIdentifier}')" + - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'spatialResolution' and att/OData.CSC.StringAttribute/Value eq '{resolution}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'authority' and att/OData.CSC.StringAttribute/Value eq '{organisationName}')" + - "Attributes/OData.CSC.IntegerAttribute/any(att:att/Name eq 'orbitNumber' and att/OData.CSC.StringAttribute/Value eq '{orbitNumber}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'orbitDirection' and att/OData.CSC.StringAttribute/Value eq '{orbitDirection}')" + - "Attributes/OData.CSC.DoubleAttribute/any(att:att/Name eq 'cloudCover' and att/OData.CSC.DoubleAttribute/Value le {cloudCover})" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'operationalMode' and att/OData.CSC.StringAttribute/Value eq '{sensorMode}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'polarisationChannels' and att/OData.CSC.StringAttribute/Value eq '{polarizationChannels}')" + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'tileId' and att/OData.CSC.StringAttribute/Value eq '{tileIdentifier}')" + - "ContentDate/Start lt {completionTimeFromAscendingNode#to_iso_utc_datetime}" + - "ContentDate/End gt {startTimeFromAscendingNode#to_iso_utc_datetime}" + - contains(Name,'{id}') discover_metadata: auto_discovery: true metadata_pattern: '^(?!collection)[a-zA-Z0-9]+$' - search_param: '{metadata}={{{metadata}}}' - metadata_path: '$.properties.*' + search_param: + free_text_search_operations: + $filter: + operations: + and: + - "Attributes/OData.CSC.StringAttribute/any(att:att/Name eq '{metadata}' and att/OData.CSC.StringAttribute/Value eq '{{{metadata}}}')" + metadata_path: '$.Attributes.*' discover_product_types: - fetch_url: https://finder.creodias.eu/attributes.json - result_type: json - results_entry: 'collections[?billing=="free"]' - generic_product_type_id: '$.id' - generic_product_type_parsable_properties: - collection: '$.id' - generic_product_type_parsable_metadata: - abstract: '$.description' - instrument: '{$.summaries.instruments#csv_list}' - platform: '{$.summaries.constellation#csv_list}' - platformSerialIdentifier: '{$.summaries.platform#csv_list}' - processingLevel: '$.summaries."processing:level"' - keywords: '{$.keywords#csv_list}' - license: '$.license' - title: '$.title' - missionStartDate: '$.extent.temporal.interval[0][0]' + fetch_url: null + per_product_metadata_query: false + metadata_pre_mapping: + metadata_path: '$.Attributes' + metadata_path_id: 'Name' + metadata_path_value: 'Value' metadata_mapping: - uid: '$.id' + # Opensearch resource identifier within the search engine context (in our case + # within the context of the data provider) + # Queryable parameters are set with null as 1st configuration list value to mark them as queryable, + # but `free_text_search_operations.$filter.operations.and` entries are then used instead. + uid: '$.Id' + # OpenSearch Parameters for Collection Search (Table 3) productType: - - productType - - '$.properties.productType' - platform: '$.properties.collection' + - null + - '$.Attributes.productType' + platform: + - null + - '$.Attributes.platformShortName' platformSerialIdentifier: - - platform - - '$.properties.platform' + - null + - '$.Attributes.platformSerialIdentifier' instrument: - - instrument - - '$.properties.instrument' + - null + - '$.Attributes.instrumentShortName' processingLevel: - - processingLevel - - '$.properties.processingLevel' + - null + - '$.Attributes.processingLevel' # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4) - title: '{$.properties.title#remove_extension}' - topicCategory: '$.properties.topicCategory' - keyword: '$.properties.keywords' - abstract: '$.properties.description' + title: '$.Name' resolution: - - 'resolution' - - '$.properties.resolution' + - null + - '$.Attributes.spatialResolution' organisationName: - - 'organisationName' - - '$.properties.organisationName' - publicationDate: '$.properties.published' - accessConstraint: '$.properties.license' - + - null + - '$.Attributes.authority' + publicationDate: '$.PublicationDate' # OpenSearch Parameters for Product Search (Table 5) - parentIdentifier: - - 'parentIdentifier' - - '$.properties.parentIdentifier' - acquisitionType: '$.properties.acquisitionType' orbitNumber: - - 'orbitNumber' - - '$.properties.orbitNumber' + - null + - '$.Attributes.orbitNumber' orbitDirection: - - 'orbitDirection' - - '$.properties.orbitDirection' - swathIdentifier: - - 'swath' - - '$.properties.swath' + - null + - '$.Attributes.orbitDirection' cloudCover: - - 'cloudCover=[0,{cloudCover}]' - - '$.properties.cloudCover' - snowCover: - - 'snowCover=[0,{snowCover}]' - - '$.properties.snowCover' - productVersion: '$.properties.version' - productQualityStatus: '$.properties.onlineQualityCheck' - processorName: '$.properties.processingName' - processingCenter: '$.properties.processingCenter' - creationDate: '$.properties.dhusIngestDate' - modificationDate: '$.properties.updated' + - null + - '$.Attributes.cloudCover' + modificationDate: '$.ModificationDate' sensorMode: - - 'sensorMode' - - '$.properties.sensorMode' + - null + - '$.Attributes.operationalMode' # OpenSearch Parameters for Acquistion Parameters Search (Table 6) startTimeFromAscendingNode: - - startDate - - '$.properties.startDate' + - null + - '$.ContentDate.Start' completionTimeFromAscendingNode: - - completionDate - - '$.properties.completionDate' - polarizationMode: - - 'polarisation' - - '$.properties.polarisation' - + - null + - '$.ContentDate.End' + polarizationChannels: + - null + - '$.Attributes.polarisationChannels' # Custom parameters (not defined in the base document referenced above) id: - - 'productIdentifier=%{id#remove_extension}%' - - '{$.properties.title#remove_extension}' + - null + - '{$.Name#remove_extension}' tileIdentifier: - - tileId - - '$.null' + - null + - '$.Attributes.tileId' # The geographic extent of the product geometry: - - 'geometry={geometry#to_rounded_wkt}' - # - '$.geometry' - - '($.geometry.`str()`.`sub(/^\\[\\]$/, POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90)))`)|($.geometry[*])' - # The url of the quicklook - quicklook: '$.properties.thumbnail' + - null + - '{$.Footprint#from_ewkt}' # The url to download the product "as is" (literal or as a template to be completed either after the search result # is obtained from the provider or during the eodag download phase) - downloadLink: 'https://zipper.creodias.eu/download/{uid}' - # storageStatus must be one of ONLINE, STAGING, OFFLINE - storageStatus: '$.properties.status' - - # Additional metadata provided by the providers but that don't appear in the reference spec - thumbnail: '$.properties.thumbnail' + downloadLink: 'https://zipper.creodias.eu/odata/v1/Products({uid})/$value' + # storageStatus: must be one of ONLINE, STAGING, OFFLINE + storageStatus: '{$.Online#get_group_name((?PTrue)|(?PFalse))}' + collection: + - null + - $.null + quicklook: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink' + thumbnail: '$.Assets[?(@.Type="QUICKLOOK")].DownloadLink' + # Additional metadata provided by the providers but that don't appear in the reference spec + productIdentifier: '$.S3Path' download: !plugin type: CreodiasS3Download - flatten_top_dirs: True base_uri: 'https://eodata.cloudferro.com' s3_bucket: 'eodata' + ssl_verify: true auth: !plugin type: AwsAuth auth_error_code: 403 + ssl_verify: true products: - # S1 + # S1 S1_SAR_RAW: productType: RAW - collection: Sentinel1 + collection: SENTINEL-1 metadata_mapping: cloudCover: '$.null' S1_SAR_GRD: productType: GRD - collection: Sentinel1 + collection: SENTINEL-1 metadata_mapping: cloudCover: '$.null' S1_SAR_SLC: productType: SLC - collection: Sentinel1 + collection: SENTINEL-1 metadata_mapping: cloudCover: '$.null' S1_SAR_OCN: productType: OCN - collection: Sentinel1 + collection: SENTINEL-1 metadata_mapping: cloudCover: '$.null' # S2 S2_MSI_L1C: collection: SENTINEL-2 productType: S2MSI1C - prefixes_delimiter: ".jp2" S2_MSI_L2A: collection: SENTINEL-2 productType: S2MSI2A # S3 SRAL S3_SRA: - productType: SRA - collection: Sentinel3 + productType: SR_1_SRA___ + collection: SENTINEL-3 metadata_mapping: cloudCover: '$.null' S3_SRA_A: - productType: SRA_A - collection: Sentinel3 + productType: SR_1_SRA_A_ + collection: SENTINEL-3 metadata_mapping: cloudCover: '$.null' S3_SRA_BS: - productType: SRA_BS - collection: Sentinel3 + productType: SR_1_SRA_BS + collection: SENTINEL-3 metadata_mapping: cloudCover: '$.null' S3_LAN: - productType: LAN - collection: Sentinel3 + productType: SR_2_LAN___ + collection: SENTINEL-3 metadata_mapping: cloudCover: '$.null' S3_WAT: - productType: WAT - collection: Sentinel3 + productType: SR_2_WAT___ + collection: SENTINEL-3 metadata_mapping: cloudCover: '$.null' # S3 OLCI S3_EFR: - productType: EFR - collection: Sentinel3 + productType: OL_1_EFR___ + collection: SENTINEL-3 S3_ERR: - productType: ERR - collection: Sentinel3 + productType: OL_1_ERR___ + collection: SENTINEL-3 S3_OLCI_L2LRR: - productType: LRR - collection: Sentinel3 + productType: OL_2_LRR___ + collection: SENTINEL-3 S3_OLCI_L2LFR: - productType: LFR - collection: Sentinel3 + productType: OL_2_LFR___ + collection: SENTINEL-3 S3_OLCI_L2WRR: - productType: WRR - collection: Sentinel3 + productType: OL_2_WRR___ + collection: SENTINEL-3 S3_OLCI_L2WFR: - productType: WFR - collection: Sentinel3 + productType: OL_2_WFR___ + collection: SENTINEL-3 # S3 SLSTR S3_SLSTR_L1RBT: - productType: RBT - collection: Sentinel3 + productType: SL_1_RBT___ + collection: SENTINEL-3 S3_SLSTR_L2LST: - productType: LST - collection: Sentinel3 + productType: SL_2_LST___ + collection: SENTINEL-3 S3_SLSTR_L2WST: - productType: WST - collection: Sentinel3 + productType: SL_2_WST___ + collection: SENTINEL-3 S3_SLSTR_L2AOD: - productType: AOD___ - collection: Sentinel3 + productType: SL_2_AOD___ + collection: SENTINEL-3 S3_SLSTR_L2FRP: - productType: FRP___ - collection: Sentinel3 + productType: SL_2_FRP___ + collection: SENTINEL-3 # S3 SY S3_SY_AOD: productType: SY_2_AOD___ - collection: Sentinel3 + collection: SENTINEL-3 S3_SY_SYN: productType: SY_2_SYN___ - collection: Sentinel3 + collection: SENTINEL-3 S3_SY_V10: productType: SY_2_V10___ - collection: Sentinel3 + collection: SENTINEL-3 S3_SY_VG1: productType: SY_2_VG1___ - collection: Sentinel3 + collection: SENTINEL-3 S3_SY_VGP: productType: SY_2_VGP___ - collection: Sentinel3 + collection: SENTINEL-3 # S5P L1 S5P_L1B_IR_SIR: productType: L1B_IR_SIR - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_IR_UVN: productType: L1B_IR_UVN - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD1: productType: L1B_RA_BD1 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD2: productType: L1B_RA_BD2 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD3: productType: L1B_RA_BD3 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD4: productType: L1B_RA_BD4 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD5: productType: L1B_RA_BD5 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD6: productType: L1B_RA_BD6 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD7: productType: L1B_RA_BD7 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L1B_RA_BD8: productType: L1B_RA_BD8 - collection: Sentinel5P + collection: SENTINEL-5P # S5P L2 S5P_L2_NO2: productType: L2__NO2___ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_CLOUD: productType: L2__CLOUD_ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_O3: productType: L2__O3____ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_CO: productType: L2__CO____ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_AER_AI: productType: L2__AER_AI - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_O3_PR: productType: L2__O3__PR - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_O3_TCL: productType: L2__O3_TCL - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_AER_LH: productType: L2__AER_LH - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_HCHO: productType: L2__HCHO__ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_CH4: productType: L2__CH4___ - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_NP_BD3: productType: L2__NP_BD3 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_NP_BD6: productType: L2__NP_BD6 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_NP_BD7: productType: L2__NP_BD7 - collection: Sentinel5P + collection: SENTINEL-5P S5P_L2_SO2: productType: L2__SO2___ - collection: Sentinel5P + collection: SENTINEL-5P # COP DEM COP_DEM_GLO30_DGED: productType: DGE_30 - collection: CopDem + collection: COP-DEM metadata_mapping: cloudCover: '$.null' COP_DEM_GLO30_DTED: productType: DTE_30 - collection: CopDem + collection: COP-DEM metadata_mapping: cloudCover: '$.null' COP_DEM_GLO90_DGED: productType: DGE_90 - collection: CopDem + collection: COP-DEM metadata_mapping: cloudCover: '$.null' COP_DEM_GLO90_DTED: productType: DTE_90 - collection: CopDem + collection: COP-DEM metadata_mapping: cloudCover: '$.null' GENERIC_PRODUCT_TYPE: productType: '{productType}' collection: '{collection}' +--- +!provider # MARK: dedt_lumi + name: dedt_lumi + priority: 0 + roles: + - host + description: Destination Earth Digital Twin Outputs from LUMI through Polytope API + url: https://polytope.lumi.apps.dte.destination-earth.eu/openapi + search: !plugin + type: BuildSearchResult + ssl_verify: true + discover_queryables: + fetch_url: null + product_type_fetch_url: null + constraints_file_url: eodag/resources/constraints/{dataset}.json + metadata_mapping: + productType: destination-earth + storageStatus: OFFLINE + startTimeFromAscendingNode: '{$.startTimeFromAscendingNode#to_iso_date}' + completionTimeFromAscendingNode: + - '{{"date": "{startTimeFromAscendingNode#to_non_separated_date}/to/{completionTimeFromAscendingNode#to_non_separated_date}"}}' + - '{$.completionTimeFromAscendingNode#to_iso_date}' + geometry: POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90)) + qs: $.qs + orderLink: 'https://polytope.lumi.apps.dte.destination-earth.eu/api/v1/requests/destination-earth?{{"verb": "retrieve", "request": {qs#to_geojson} }}' + downloadLink: $.null + activity: + - activity + - $.activity + anoffset: + - anoffset + - $.anoffset + class: + - class + - $.class + dataset: + - dataset + - $.dataset + domain: + - domain + - $.domain + experiment: + - experiment + - $.experiment + expver: + - expver + - $.expver + generation: + - generation + - $.generation + levelist: + - levelist + - $.levelist + levtype: + - levtype + - $.levtype + model: + - model + - $.model + param: + - param + - $.param + realization: + - realization + - $.realization + resolution: + - resolution + - $.resolution + step: + - step + - $.step + stream: + - stream + - $.stream + time: + - time + - $.time + type: + - type + - $.type + products: + DT_EXTREMES: + class: d1 + dataset: extremes-dt + expver: "0001" + stream: oper + type: fc + levtype: sfc + step: "0" + param: "31" + time: "0000" + DT_CLIMATE_ADAPTATION: + activity: ScenarioMIP + class: d1 + dataset: climate-dt + experiment: SSP3-7.0 + expver: "0001" + generation: 1 + model: IFS-NEMO + param: 134/165/166 + realization: 1 + resolution: high + stream: clte + type: fc + levtype: sfc + time: "0000" + download: !plugin + type: HTTPDownload + ssl_verify: true + auth_error_code: 401 + order_enabled: True + order_method: POST + order_on_response: + metadata_mapping: + orderId: '{$.headers.Location#slice_str(-36,,1)}' + _previousOrderId: '{$.json.orderId#replace_str("Not Available","")}' + combinedOrderId: '{orderId#replace_str("Not Available","")}{_previousOrderId}' + orderStatusLink: "https://polytope.lumi.apps.dte.destination-earth.eu/api/v1/requests/{combinedOrderId#replace_str(r'^$','Not Available')}" + order_status: + request: + method: GET + headers: + metadata_mapping: + status: $.json.status + message: $.json.message + error_message: $.null + success: + http_code: 303 + error: + status: failed + on_success: + result_type: json + metadata_mapping: + downloadLink: $.headers.Location + no_auth_download: True + products: + DT_EXTREMES: + outputs_extension: .grib + DT_CLIMATE_ADAPTATION: + outputs_extension: .grib + auth: !plugin + type: OIDCAuthorizationCodeFlowAuth + authorization_uri: https://auth.destine.eu/realms/desp/protocol/openid-connect/auth + redirect_uri: https://polytope.lumi.apps.dte.destination-earth.eu/ + token_uri: https://auth.destine.eu/realms/desp/protocol/openid-connect/token + client_id: polytope-api-public + user_consent_needed: false + token_exchange_post_data_method: data + token_key: access_token + refresh_token_key: refresh_token + token_provision: header + login_form_xpath: //form[@id='kc-form-login'] + authentication_uri_source: login-form +--- + +!provider # MARK: dedl + name: dedl + priority: 0 + roles: + - host + description: DEDL STAC + url: https://hda.data.destination-earth.eu/stac/ + # anchors to avoid duplications + anchor_orderable_mm: &orderable_mm + orderLink: '$.assets.downloadLink.href' + downloadLink: '$.null' + assets: '$.null' + search: !plugin + type: StacSearch + api_endpoint: https://hda.data.destination-earth.eu/stac/search + need_auth: true + timeout: 60 + metadata_mapping: + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + quicklook: '{thumbnail}' + storageStatus: '{$.properties."order:status"#get_group_name((?Psucceeded)|(?Pshipping)|(?Porderable))}' + downloadLink: '$.assets.downloadLink.href' + assets: '$.null' + discover_product_types: + fetch_url: 'https://hda.data.destination-earth.eu/stac/collections' + result_type: json + results_entry: '$.collections[*]' + generic_product_type_id: '$.id' + generic_product_type_parsable_properties: + productType: '$.id' + generic_product_type_parsable_metadata: + abstract: '$.description' + keywords: '{$.keywords#csv_list}' + license: '$.license' + title: '$.title' + missionStartDate: '$.extent.temporal.interval[0][0]' + pagination: + next_page_url_key_path: null + max_items_per_page: 100 + sort: + sort_param_mapping: + id: id + startTimeFromAscendingNode: datetime + creationDate: created + modificationDate: updated + platformSerialIdentifier: platform + resolution: gsd + cloudCover: eo:cloud_cover + download: !plugin + type: HTTPDownload + auth_error_code: 403 + timeout: 20 + ssl_verify: true + extract: true + order_enabled: True + order_method: GET + order_on_response: + metadata_mapping: + orderStatusLink: $.json.location + order_status: + request: + method: GET + metadata_mapping: + status: $.json.status + message: $.json.description + success: + http_code: 200 + on_success: + metadata_mapping: + downloadLink: '{orderStatusLink}' + products: + DT_EXTREMES: + outputs_extension: .grib + DT_CLIMATE_ADAPTATION: + outputs_extension: .grib + auth: !plugin + type: OIDCTokenExchangeAuth + subject: + authorization_uri: https://auth.destine.eu/realms/desp/protocol/openid-connect/auth + redirect_uri: https://hda.data.destination-earth.eu/stac + token_uri: https://auth.destine.eu/realms/desp/protocol/openid-connect/token + client_id: dedl-hda + user_consent_needed: false + exchange_url_error_pattern: + TERMS_AND_CONDITIONS: Terms and conditions are not accepted + token_exchange_post_data_method: data + token_key: access_token + token_provision: header + login_form_xpath: //form[@id='kc-form-login'] + authentication_uri_source: login-form + subject_issuer: desp-oidc + token_uri: https://identity.data.destination-earth.eu/auth/realms/dedl/protocol/openid-connect/token + client_id: hda-public + audience: hda-public + token_key: access_token + products: + # Sentinel 1 + S1_SAR_GRD: + productType: EO.ESA.DAT.SENTINEL-1.L1_GRD + S1_SAR_SLC: + productType: EO.ESA.DAT.SENTINEL-1.L1_SLC + # Sentinel 2 + S2_MSI_L1C: + productType: EO.ESA.DAT.SENTINEL-2.MSI.L1C + S2_MSI_L2A: + productType: EO.ESA.DAT.SENTINEL-2.MSI.L2A + # Sentinel 3 - S3 OLCI L1 + S3_EFR: + productType: EO.EUM.DAT.SENTINEL-3.OL_1_EFR___ + S3_ERR: + productType: EO.EUM.DAT.SENTINEL-3.OL_1_ERR___ + # Sentinel 3 - S3 OLCI L2 + S3_OLCI_L2LRR: + productType: EO.ESA.DAT.SENTINEL-3.OL_2_LRR___ + S3_OLCI_L2LFR: + productType: EO.ESA.DAT.SENTINEL-3.OL_2_LFR___ + S3_OLCI_L2WRR: + productType: EO.EUM.DAT.SENTINEL-3.OL_2_WRR___ + S3_OLCI_L2WFR: + productType: EO.EUM.DAT.SENTINEL-3.OL_2_WFR___ + # Sentinel 3 - S3 SLSTR + S3_SLSTR_L1RBT: + productType: EO.EUM.DAT.SENTINEL-3.SL_1_RBT___ + S3_SLSTR_L2LST: + productType: EO.ESA.DAT.SENTINEL-3.SL_2_LST___ + S3_SLSTR_L2WST: + productType: EO.EUM.DAT.SENTINEL-3.SL_2_WST___ + S3_SLSTR_L2AOD: + productType: EO.EUM.DAT.SENTINEL-3.AOD + S3_SLSTR_L2FRP: + productType: EO.EUM.DAT.SENTINEL-3.FRP + # Sentinel 3 - S3 SRAL + S3_SRA: + productType: EO.EUM.DAT.SENTINEL-3.SR_1_SRA___ + S3_SRA_A: + productType: EO.EUM.DAT.SENTINEL-3.SR_1_SRA_A_ + S3_SRA_BS: + productType: EO.EUM.DAT.SENTINEL-3.SR_1_SRA_BS + S3_LAN: + productType: EO.ESA.DAT.SENTINEL-3.SR_2_LAN___ + S3_WAT: + productType: EO.EUM.DAT.SENTINEL-3.SR_2_WAT___ + # S5 + S5P_L1B_IR_ALL: + productType: EO.ESA.DAT.SENTINEL-5P.TROPOMI.L1 + S5P_L2_IR_ALL: + productType: EO.ESA.DAT.SENTINEL-5P.TROPOMI.L2 + # ECMWF - COPERNICUS CDS + ERA5_SL: + productType: EO.ECMWF.DAT.REANALYSIS_ERA5_SINGLE_LEVELS + ERA5_SL_MONTHLY: + productType: EO.ECMWF.DAT.REANALYSIS_ERA5_SINGLE_LEVELS_MONTHLY_MEANS + ERA5_PL: + productType: EO.ECMWF.DAT.ERA5_HOURLY_VARIABLES_ON_PRESSURE_LEVELS + ERA5_PL_MONTHLY: + productType: EO.ECMWF.DAT.ERA5_MONTHLY_MEANS_VARIABLES_ON_PRESSURE_LEVELS + ERA5_LAND: + productType: EO.ECMWF.DAT.ERA5_LAND_HOURLY + ERA5_LAND_MONTHLY: + productType: EO.ECMWF.DAT.ERA5_LAND_MONTHLY + UERRA_EUROPE_SL: + productType: EO.ECMWF.DAT.REANALYSIS_UERRA_EUROPE_SINGLE_LEVELS + GRIDDED_GLACIERS_MASS_CHANGE: + productType: EO.ECMWF.DAT.GLACIERS_ELEVATION_AND_MASS_CHANGE_DATA_1850_PRESENT + GLACIERS_DIST_RANDOLPH: + productType: EO.ECMWF.DAT.GLACIERS_DISTRIBUTION_DATA_FROM_RANDOLPH_GLACIER_INVENTORY_2000 + SATELLITE_CARBON_DIOXIDE: + productType: EO.ECMWF.DAT.CO2_DATA_FROM_SATELLITE_SENSORS_2002_PRESENT + SATELLITE_METHANE: + productType: EO.ECMWF.DAT.METHANE_DATA_SATELLITE_SENSORS_2002_PRESENT + SEASONAL_POSTPROCESSED_PL: + productType: EO.ECMWF.DAT.SEASONAL_FORECAST_ANOMALIES_ON_PRESSURE_LEVELS_2017_PRESENT + SATELLITE_SEA_LEVEL_BLACK_SEA: + productType: EO.ECMWF.DAT.SEA_LEVEL_DAILY_GRIDDED_DATA_FOR_BLACK_SEA_1993_PRESENT + SATELLITE_SEA_LEVEL_GLOBAL: + productType: EO.ECMWF.DAT.SEA_LEVEL_DAILY_GRIDDED_DATA_FOR_GLOBAL_OCEAN_1993_PRESENT + SATELLITE_SEA_LEVEL_MEDITERRANEAN: + productType: EO.ECMWF.DAT.SEA_LEVEL_DAILY_GRIDDED_DATA_FOR_MEDITERRANEAN_SEA_1993_PRESENT + SATELLITE_SEA_ICE_EDGE_TYPE: + productType: EO.ECMWF.DAT.SATELLITE_SEA_ICE_EDGE_TYPE + SEASONAL_POSTPROCESSED_SL: + productType: EO.ECMWF.DAT.SEASONAL_FORECAST_ANOMALIES_ON_SINGLE_LEVELS_2017_PRESENT + SEASONAL_ORIGINAL_SL: + productType: EO.ECMWF.DAT.SEASONAL_FORECAST_DAILY_DATA_ON_SINGLE_LEVELS_2017_PRESENT + SEASONAL_ORIGINAL_PL: + productType: EO.ECMWF.DAT.SEASONAL_FORECAST_DAILY_DATA_ON_PRESSURE_LEVELS_2017_PRESENT + SEASONAL_MONTHLY_PL: + productType: EO.ECMWF.DAT.SEASONAL_FORECAST_MONTHLY_STATISTICS_ON_PRESSURE_LEVELS_2017_PRESENT + SEASONAL_MONTHLY_SL: + productType: EO.ECMWF.DAT.SEASONAL_FORECAST_MONTHLY_STATISTICS_ON_SINGLE_LEVELS_2017_PRESENT + SIS_HYDRO_MET_PROJ: + productType: EO.ECMWF.DAT.SIS_HYDROLOGY_METEOROLOGY_DERIVED_PROJECTIONS + # ECMWF - CEMS + FIRE_HISTORICAL: + productType: EO.ECMWF.DAT.CEMS_FIRE_HISTORICAL + GLOFAS_FORECAST: + productType: EO.ECMWF.DAT.CEMS_GLOFAS_FORECAST + GLOFAS_HISTORICAL: + productType: EO.ECMWF.DAT.CEMS_GLOFAS_HISTORICAL + GLOFAS_REFORECAST: + productType: EO.ECMWF.DAT.CEMS_GLOFAS_REFORECAST + GLOFAS_SEASONAL: + productType: EO.ECMWF.DAT.CEMS_GLOFAS_SEASONAL + GLOFAS_SEASONAL_REFORECAST: + productType: EO.ECMWF.DAT.CEMS_GLOFAS_SEASONAL_REFORECAST + EFAS_FORECAST: + productType: EO.ECMWF.DAT.EFAS_FORECAST + EFAS_HISTORICAL: + productType: EO.ECMWF.DAT.EFAS_HISTORICAL + EFAS_REFORECAST: + productType: EO.ECMWF.DAT.EFAS_REFORECAST + EFAS_SEASONAL: + productType: EO.ECMWF.DAT.EFAS_SEASONAL + EFAS_SEASONAL_REFORECAST: + productType: EO.ECMWF.DAT.EFAS_SEASONAL_REFORECAST + # COPERNICUS ADS + CAMS_GAC_FORECAST: + productType: EO.ECMWF.DAT.CAMS_GLOBAL_ATMOSHERIC_COMPO_FORECAST + CAMS_EU_AIR_QUALITY_FORECAST: + productType: EO.ECMWF.DAT.CAMS_EUROPE_AIR_QUALITY_FORECASTS + CAMS_GFE_GFAS: + productType: EO.ECMWF.DAT.CAMS_GLOBAL_FIRE_EMISSIONS_GFAS + CAMS_SOLAR_RADIATION: + productType: EO.ECMWF.DAT.CAMS_SOLAR_RADIATION_TIMESERIES + CAMS_GREENHOUSE_INVERSION: + productType: EO.ECMWF.DAT.CAMS_GREENHOUSE_GAS_FLUXES + CAMS_EAC4_MONTHLY: + productType: EO.ECMWF.DAT.CAMS_GLOBAL_REANALYSIS_EAC4_MONTHLY_AV_FIELDS + CAMS_EU_AIR_QUALITY_RE: + productType: EO.ECMWF.DAT.CAMS_EUROPE_AIR_QUALITY_REANALYSES + CAMS_EAC4: + productType: EO.ECMWF.DAT.CAMS_GLOBAL_REANALYSIS_EAC4 + CAMS_GRF_AUX: + productType: EO.ECMWF.DAT.CAMS_GLOBAL_RADIATIVE_FORCING_AUX + CAMS_GRF: + productType: EO.ECMWF.DAT.CAMS_GLOBAL_RADIATIVE_FORCING + CAMS_GREENHOUSE_EGG4_MONTHLY: + productType: EO.ECMWF.DAT.CAMS_GLOBAL_GREENHOUSE_GAS_RANALYSIS_MONTHLY_AV_FIELDS + CAMS_GREENHOUSE_EGG4: + productType: EO.ECMWF.DAT.CAMS_GLOBAL_GREENHOUSE_GAS_RANALYSIS + CAMS_GLOBAL_EMISSIONS: + productType: EO.ECMWF.DAT.CAMS_GLOBAL_EMISSION_INVENTORIES + # COPERNICUS ADS - Digital Elevation Model + COP_DEM_GLO30_DGED: + productType: EO.DEM.DAT.COP-DEM_GLO-30-DGED + COP_DEM_GLO30_DTED: + productType: EO.DEM.DAT.COP-DEM_GLO-30-DTED + COP_DEM_GLO90_DGED: + title: Copernicus DEM GLO-90 DGED + productType: EO.DEM.DAT.COP-DEM_GLO-90-DGED + COP_DEM_GLO90_DTED: + productType: EO.DEM.DAT.COP-DEM_GLO-90-DTED + # CLMS + CLMS_CORINE: + productType: EO.CLMS.DAT.CORINE + CLMS_GLO_DMP_333M: + productType: EO.CLMS.DAT.GLO.DMP300_V1 + CLMS_GLO_FAPAR_333M: + productType: EO.CLMS.DAT.GLO.FAPAR300_V1 + CLMS_GLO_FCOVER_333M: + productType: EO.CLMS.DAT.GLO.FCOVER300_V1 + CLMS_GLO_GDMP_333M: + productType: EO.CLMS.DAT.GLO.GDMP300_V1 + CLMS_GLO_LAI_333M: + productType: EO.CLMS.DAT.GLO.LAI300_V1 + CLMS_GLO_NDVI_1KM_LTS: + productType: EO.CLMS.DAT.GLO.NDVI_1KM_V2 + CLMS_GLO_NDVI_333M: + productType: EO.CLMS.DAT.GLO.NDVI300_V1 + EEA_DAILY_VI: + productType: EO.CLMS.DAT.SENTINEL-2.HRVPP.VI + # Landsat data + LANDSAT_C2L1: + productType: EO.NASA.DAT.LANDSAT.C2_L1 + LANDSAT_C2L2: + productType: EO.NASA.DAT.LANDSAT.C2_L2 + # DT Output + DT_EXTREMES: + productType: EO.ECMWF.DAT.DT_EXTREMES + metadata_mapping: + storageStatus: '{$.null#replace_str("Not Available","OFFLINE")}' + <<: *orderable_mm + DT_CLIMATE_ADAPTATION: + productType: EO.ECMWF.DAT.DT_CLIMATE_ADAPTATION + metadata_mapping: + storageStatus: '{$.null#replace_str("Not Available","OFFLINE")}' + <<: *orderable_mm + GENERIC_PRODUCT_TYPE: + productType: '{productType}' +--- +!provider # MARK: eumetsat_ds + name: eumetsat_ds + priority: 0 + description: EUMETSAT Data Store + roles: + - host + url: https://data.eumetsat.int + search: !plugin + type: QueryStringSearch + api_endpoint: 'https://api.eumetsat.int/data/search-products/1.0.0/os' + need_auth: false + ssl_verify: true + dont_quote: + - '=' + - '&' + pagination: + next_page_url_tpl: '{url}?{search}&c={items_per_page}&pw={page}' + start_page: 0 + total_items_nb_key_path: '$.totalResults' + # 2024/02/01: 500 is the max, no error if greater + max_items_per_page: 500 + sort: + sort_by_default: + - !!python/tuple [startTimeFromAscendingNode, ASC] + sort_by_tpl: '&sort={sort_param},{sort_order}' + sort_param_mapping: + startTimeFromAscendingNode: start,time + publicationDate: publicationDate, + sort_order_mapping: + ascending: '1' + descending: '0' + max_sort_params: 1 + literal_search_params: + format: json + discover_metadata: + auto_discovery: true + metadata_pattern: '^[a-zA-Z0-9_]+$' + search_param: '{metadata}={{{metadata}}}' + metadata_path: '$.properties.*' + discover_product_types: + fetch_url: https://api.eumetsat.int/data/browse/1.0.0/collections?format=json + result_type: json + results_entry: '$.links[*]' + generic_product_type_id: '$.title' + generic_product_type_parsable_properties: + parentIdentifier: '$.title' + generic_product_type_parsable_metadata: + abstract: '$.null' + instrument: '$.null' + platform: '$.null' + platformSerialIdentifier: '$.null' + processingLevel: '$.null' + keywords: '$.null' + license: '$.null' + title: '$.title' + missionStartDate: '$.null' + metadata_mapping: + # Opensearch resource identifier within the search engine context (in our case + # within the context of the data provider) + uid: '$.id' + # OpenSearch Parameters for Collection Search (Table 3) + productType: + - type + - '$.properties.productInformation.productType' + platform: + - sat + - '$.properties.acquisitionInformation[0].platform.platformShortName' + instrument: '$.properties.acquisitionInformation[0].instrument.instrumentShortName' + + # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4) + title: + - title + - '{$.properties.title#remove_extension}' + publicationDate: + - publication + - '$.null' + + # OpenSearch Parameters for Product Search (Table 5) + parentIdentifier: + - pi + - '$.properties.parentIdentifier' + orbitNumber: + - orbit + - '$.properties.acquisitionInformation[0].acquisitionParameters.orbitNumber' + orbitDirection: + - orbitdir + - '$.properties.acquisitionInformation[0].acquisitionParameters.orbitDirection' + modificationDate: '$.properties.updated' + + # OpenSearch Parameters for Acquistion Parameters Search (Table 6) + startTimeFromAscendingNode: + - dtstart + - '{$.properties.date#replace_str(r"\/.*","")}' + completionTimeFromAscendingNode: + - dtend + - '{$.properties.date#replace_str(r".*\/","")}' + # Custom parameters (not defined in the base document referenced above) + id: + - id + - $.properties.identifier + utmZone: + - zone + - '$.null' + tileIdentifier: + - t6 + - '$.null' + # The geographic extent of the product + geometry: + - 'geo={geometry#to_rounded_wkt}' + - '$.geometry' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + # The url of the quicklook + quicklook: '$.properties.links.previews[?(@.title="Quicklook")].href' + # The url to download the product "as is" (literal or as a template to be completed either after the search result + # is obtained from the provider or during the eodag download phase) + downloadLink: '$.properties.links.data[?(@.title="Product download")].href' + # storageStatus set to ONLINE for consistency between providers + storageStatus: '{$.null#replace_str("Not Available","ONLINE")}' + assets: '{$.properties.links.sip-entries#assets_list_to_dict}' + + # Additional metadata provided by the providers but that don't appear in the reference spec + timeliness: + - timeliness + - '$.properties.productInformation.timeliness' + relativeOrbitNumber: + - relorbit + - '$.properties.acquisitionInformation[0].acquisitionParameters.relativeOrbitNumber' + cycleNumber: + - cycle + - '$.properties.acquisitionInformation[0].acquisitionParameters.cycleNumber' + fire: + - fire + - '$.properties.extraInformation.fireDetected' + size: + - size + - '$.properties.productInformation.size' + type: '$.null' + + # set duplicate metadata due to metadata discovery to null + acquisitionInformation: '$.null' + productInformation: '$.null' + extraInformation: '$.null' + products: + # S3 SRAL + S3_SRA: + productType: SR_1_SRA___ + parentIdentifier: EO:EUM:DAT:0406 + S3_SRA_A: + productType: SR_1_SRA_A_ + parentIdentifier: EO:EUM:DAT:0413 + S3_SRA_1A_BC004: + productType: SR_1_SRA_A_ + parentIdentifier: EO:EUM:DAT:0583 + S3_SRA_1A_BC005: + productType: SR_1_SRA_A_ + parentIdentifier: EO:EUM:DAT:0836 + S3_SRA_1B_BC004: + productType: SR_1_SRA___ + parentIdentifier: EO:EUM:DAT:0584 + S3_SRA_1B_BC005: + productType: SR_1_SRA___ + parentIdentifier: EO:EUM:DAT:0833 + S3_SRA_BS: + productType: SR_1_SRA_BS + parentIdentifier: EO:EUM:DAT:0414 + S3_SRA_BS_BC004: + productType: SR_1_SRA_BS + parentIdentifier: EO:EUM:DAT:0585 + S3_SRA_BS_BC005: + productType: SR_1_SRA_BS + parentIdentifier: EO:EUM:DAT:0835 + S3_WAT: + productType: SR_2_WAT___ + parentIdentifier: EO:EUM:DAT:0415 + S3_WAT_BC004: + productType: SR_2_WAT___ + parentIdentifier: EO:EUM:DAT:0586 + S3_WAT_BC005: + productType: SR_2_WAT___ + parentIdentifier: EO:EUM:DAT:0834 + # S3 OLCI + S3_EFR: + productType: OL_1_EFR___ + parentIdentifier: EO:EUM:DAT:0409 + S3_EFR_BC002: + productType: OL_1_EFR___ + parentIdentifier: EO:EUM:DAT:0577 + S3_ERR: + productType: OL_1_ERR___ + parentIdentifier: EO:EUM:DAT:0410 + S3_ERR_BC002: + productType: OL_1_ERR___ + parentIdentifier: EO:EUM:DAT:0578 + S3_OLCI_L2WRR: + productType: OL_2_WRR___ + parentIdentifier: EO:EUM:DAT:0408 + S3_OLCI_L2WRR_BC003: + productType: OL_2_WRR___ + parentIdentifier: EO:EUM:DAT:0557 + S3_OLCI_L2WFR: + productType: OL_2_WFR___ + parentIdentifier: EO:EUM:DAT:0407 + S3_OLCI_L2WFR_BC003: + productType: OL_2_WFR___ + parentIdentifier: EO:EUM:DAT:0556 + # S3 SLSTR + S3_SLSTR_L1RBT: + productType: SL_1_RBT___ + parentIdentifier: EO:EUM:DAT:0411 + S3_SLSTR_L1RBT_BC003: + productType: SL_1_RBT___ + parentIdentifier: EO:EUM:DAT:0581 + S3_SLSTR_L1RBT_BC004: + productType: SL_1_RBT___ + parentIdentifier: EO:EUM:DAT:0615 + S3_SLSTR_L2WST: + productType: SL_2_WST___ + parentIdentifier: EO:EUM:DAT:0412 + S3_SLSTR_L2WST_BC003: + productType: SL_2_WST___ + parentIdentifier: EO:EUM:DAT:0582 + S3_SLSTR_L2AOD: + productType: SL_2_AOD___ + parentIdentifier: EO:EUM:DAT:0416 + S3_SLSTR_L2FRP: + productType: SL_2_FRP___ + parentIdentifier: EO:EUM:DAT:0417 + # METOP + METOP_AMSU_L1: + parentIdentifier: EO:EUM:DAT:METOP:AMSUL1 + METOP_OSI_104: + parentIdentifier: EO:EUM:DAT:METOP:OSI-104 + METOP_OSI_150A: + parentIdentifier: EO:EUM:DAT:METOP:OSI-150-A + METOP_OSI_150B: + parentIdentifier: EO:EUM:DAT:METOP:OSI-150-B + METOP_ASCSZF1B: + parentIdentifier: EO:EUM:DAT:METOP:ASCSZF1B + METOP_ASCSZR1B: + parentIdentifier: EO:EUM:DAT:METOP:ASCSZR1B + METOP_ASCSZO1B: + parentIdentifier: EO:EUM:DAT:METOP:ASCSZO1B + METOP_ASCSZFR02: + parentIdentifier: EO:EUM:CM:METOP:ASCSZFR02 + METOP_ASCSZOR02: + parentIdentifier: EO:EUM:CM:METOP:ASCSZOR02 + METOP_ASCSZRR02: + parentIdentifier: EO:EUM:CM:METOP:ASCSZRR02 + METOP_AVHRRL1: + parentIdentifier: EO:EUM:DAT:METOP:AVHRRL1 + METOP_SOMO12: + parentIdentifier: EO:EUM:DAT:METOP:SOMO12 + METOP_SOMO25: + parentIdentifier: EO:EUM:DAT:METOP:SOMO25 + METOP_AVHRRGACR02: + parentIdentifier: EO:EUM:DAT:0558 + METOP_LSA_002: + parentIdentifier: EO:EUM:DAT:METOP:LSA-002 + METOP_GLB_SST_NC: + parentIdentifier: EO:EUM:DAT:METOP:GLB-SST-NC + METOP_GOMEL1: + parentIdentifier: EO:EUM:DAT:METOP:GOMEL1 + METOP_GOMEL1R03: + parentIdentifier: EO:EUM:DAT:0533 + METOP_IASTHR011: + parentIdentifier: EO:EUM:DAT:0576 + METOP_IASSND02: + parentIdentifier: EO:EUM:DAT:METOP:IASSND02 + METOP_IASIL1C_ALL: + parentIdentifier: EO:EUM:DAT:METOP:IASIL1C-ALL + METOP_MHSL1: + parentIdentifier: EO:EUM:DAT:METOP:MHSL1 + METOP_HIRSL1: + parentIdentifier: EO:EUM:DAT:MULT:HIRSL1 + GENERIC_PRODUCT_TYPE: + productType: '{productType}' + parentIdentifier: '{parentIdentifier}' + download: !plugin + type: HTTPDownload + extract: true + ignore_assets: True + ssl_verify: true + auth: !plugin + type: TokenAuth + auth_uri: 'https://api.eumetsat.int/token' + auth_error_code: 401 + req_data: + grant_type: client_credentials + token_type: json + token_key: access_token + ssl_verify: true + +--- +!provider # MARK: cop_marine + name: cop_marine + priority: 0 + description: Copernicus Marine Data Store + roles: + - host + url: https://marine.copernicus.eu/ + search: !plugin + type: CopMarineSearch + api_endpoint: 'https://stac.marine.copernicus.eu/metadata/{collection}/product.stac.json' + need_auth: false + ssl_verify: true + timeout: 20 + results_entry: links + discover_product_types: + fetch_url: 'https://stac.marine.copernicus.eu/metadata/catalog.stac.json' + result_type: json + results_entry: '$.collections[*]' + generic_product_type_id: '$.id' + generic_product_type_parsable_properties: + collection: '$.id' + generic_product_type_parsable_metadata: + instrument: '$.null' + platform: '$.null' + platformSerialIdentifier: '$.null' + processingLevel: '$.properties.processingLevel' + keywords: '$.keywords' + license: '$.license' + title: '$.title' + missionStartDate: '$.extent.temporal.interval[0][0]' + abstract: '$.description' + providers: '$.providers' + doi: '$.sci:doi' + discover_metadata: + auto_discovery: false + discover_queryables: + fetch_url: null + metadata_mapping: + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + products: + MO_GLOBAL_ANALYSISFORECAST_PHY_001_024: + productType: GLOBAL_ANALYSISFORECAST_PHY_001_024 + MO_GLOBAL_ANALYSISFORECAST_BGC_001_028: + productType: GLOBAL_ANALYSISFORECAST_BGC_001_028 + MO_GLOBAL_ANALYSISFORECAST_WAV_001_027: + productType: GLOBAL_ANALYSISFORECAST_WAV_001_027 + MO_GLOBAL_MULTIYEAR_BGC_001_033: + productType: GLOBAL_MULTIYEAR_BGC_001_033 + MO_GLOBAL_MULTIYEAR_WAV_001_032: + productType: GLOBAL_MULTIYEAR_WAV_001_032 + MO_GLOBAL_MULTIYEAR_PHY_ENS_001_031: + productType: GLOBAL_MULTIYEAR_PHY_ENS_001_031 + MO_INSITU_GLO_PHY_UV_DISCRETE_NRT_013_048: + productType: INSITU_GLO_PHY_UV_DISCRETE_NRT_013_048 + MO_INSITU_GLO_PHY_TS_OA_NRT_013_002: + productType: INSITU_GLO_PHY_TS_OA_NRT_013_002 + MO_INSITU_GLO_PHY_TS_OA_MY_013_052: + productType: INSITU_GLO_PHY_TS_OA_MY_013_052 + MO_MULTIOBS_GLO_BIO_BGC_3D_REP_015_010: + productType: MULTIOBS_GLO_BIO_BGC_3D_REP_015_010 + MO_MULTIOBS_GLO_BIO_CARBON_SURFACE_REP_015_008: + productType: MULTIOBS_GLO_BIO_CARBON_SURFACE_REP_015_008 + MO_MULTIOBS_GLO_BGC_NUTRIENTS_CARBON_PROFILES_MYNRT_015_009: + productType: MULTIOBS_GLO_BGC_NUTRIENTS_CARBON_PROFILES_MYNRT_015_009 + MO_MULTIOBS_GLO_PHY_MYNRT_015_003: + productType: MULTIOBS_GLO_PHY_MYNRT_015_003 + MO_MULTIOBS_GLO_PHY_S_SURFACE_MYNRT_015_013: + productType: MULTIOBS_GLO_PHY_S_SURFACE_MYNRT_015_013 + MO_MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012: + productType: MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012 + MO_MULTIOBS_GLO_PHY_W_3D_REP_015_007: + productType: MULTIOBS_GLO_PHY_W_3D_REP_015_007 + MO_SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_001: + productType: SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_001 + MO_SEAICE_GLO_SEAICE_L4_REP_OBSERVATIONS_011_009: + productType: SEAICE_GLO_SEAICE_L4_REP_OBSERVATIONS_011_009 + MO_SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_006: + productType: SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_006 + MO_SEALEVEL_GLO_PHY_L4_NRT_008_046: + productType: SEALEVEL_GLO_PHY_L4_NRT_008_046 + MO_SEALEVEL_GLO_PHY_MDT_008_063: + productType: SEALEVEL_GLO_PHY_MDT_008_063 + MO_SST_GLO_SST_L3S_NRT_OBSERVATIONS_010_010: + productType: SST_GLO_SST_L3S_NRT_OBSERVATIONS_010_010 + MO_SST_GLO_SST_L4_NRT_OBSERVATIONS_010_001: + productType: SST_GLO_SST_L4_NRT_OBSERVATIONS_010_001 + MO_SST_GLO_SST_L4_REP_OBSERVATIONS_010_011: + productType: SST_GLO_SST_L4_REP_OBSERVATIONS_010_011 + MO_SST_GLO_SST_L4_REP_OBSERVATIONS_010_024: + productType: SST_GLO_SST_L4_REP_OBSERVATIONS_010_024 + MO_WAVE_GLO_WAV_L3_SPC_NRT_OBSERVATIONS_014_002: + productType: WAVE_GLO_WAV_L3_SPC_NRT_OBSERVATIONS_014_002 + MO_WAVE_GLO_PHY_SWH_L3_NRT_014_001: + productType: WAVE_GLO_PHY_SWH_L3_NRT_014_001 + MO_WAVE_GLO_PHY_SWH_L4_NRT_014_003: + productType: WAVE_GLO_PHY_SWH_L4_NRT_014_003 + MO_WIND_GLO_PHY_CLIMATE_L4_MY_012_003: + productType: WIND_GLO_PHY_CLIMATE_L4_MY_012_003 + MO_WIND_GLO_PHY_L3_NRT_012_002: + productType: WIND_GLO_PHY_L3_NRT_012_002 + MO_WIND_GLO_PHY_L3_MY_012_005: + productType: WIND_GLO_PHY_L3_MY_012_005 + MO_WIND_GLO_PHY_L4_NRT_012_004: + productType: WIND_GLO_PHY_L4_NRT_012_004 + MO_WIND_GLO_PHY_L4_MY_012_006: + productType: WIND_GLO_PHY_L4_MY_012_006 + MO_OCEANCOLOUR_GLO_BGC_L3_MY_009_107: + productType: OCEANCOLOUR_GLO_BGC_L3_MY_009_107 + MO_OCEANCOLOUR_GLO_BGC_L3_NRT_009_101: + productType: OCEANCOLOUR_GLO_BGC_L3_NRT_009_101 + MO_OCEANCOLOUR_GLO_BGC_L3_MY_009_103: + productType: OCEANCOLOUR_GLO_BGC_L3_MY_009_103 + MO_OCEANCOLOUR_GLO_BGC_L4_NRT_009_102: + productType: OCEANCOLOUR_GLO_BGC_L4_NRT_009_102 + MO_OCEANCOLOUR_GLO_BGC_L4_MY_009_104: + productType: OCEANCOLOUR_GLO_BGC_L4_MY_009_104 + MO_OCEANCOLOUR_GLO_BGC_L4_MY_009_108: + productType: OCEANCOLOUR_GLO_BGC_L4_MY_009_108 + GENERIC_PRODUCT_TYPE: + productType: '{productType}' + collection: '{collection}' + download: !plugin + type: AwsDownload + base_uri: https://s3.waw3-1.cloudferro.com + bucket_path_level: 0 + auth: !plugin + type: AwsAuth diff --git a/eodag/resources/stac.yml b/eodag/resources/stac.yml index 2de3ea7fa..d0c0ae4cd 100644 --- a/eodag/resources/stac.yml +++ b/eodag/resources/stac.yml @@ -17,63 +17,88 @@ # limitations under the License. stac_version: 1.0.0 -stac_api_version: 1.0.0-rc.3 +stac_api_version: 1.0.0 # Capabilities ---------------------------------------------------------------- # https://stacspec.org/STAC-api.html#operation/getLandingPage landing_page: - title: "EODAG" type: "Catalog" - description: "STAC API provided by EODAG" links: - rel: self type: "application/json" href: "{catalog[root]}/" - rel: service-desc type: "application/vnd.oai.openapi+json;version=3.0" + title: "OpenAPI service description" href: "{catalog[root]}/api" - rel: service-doc type: "text/html" + title: "OpenAPI service documentation" href: "{catalog[root]}/api.html" - rel: conformance type: "application/json" + title: "STAC/WFS3 conformance classes implemented by this server" href: "{catalog[root]}/conformance" - rel: data type: "application/json" href: "{catalog[root]}/collections" - rel: search + type: "application/geo+json" + title: "STAC search" href: "{catalog[root]}/search" method: GET + - rel: search + type: "application/geo+json" + title: "STAC search" + href: "{catalog[root]}/search" + method: POST stac_version: "{stac_version}" - id: eodag-stac-api conformsTo: "{conformance[conformsTo]}" # required by OGC API - Features # http://docs.opengeospatial.org/is/17-069r3/17-069r3.html#_declaration_of_conformance_classes conformance: conformsTo: - - https://api.stacspec.org/v1.0.0-rc.3/core - - https://api.stacspec.org/v1.0.0-rc.3/item-search - - https://api.stacspec.org/v1.0.0-rc.3/ogcapi-features - - https://api.stacspec.org/v1.0.0-rc.3/collections + - https://api.stacspec.org/v1.0.0/core + - https://api.stacspec.org/v1.0.0/item-search + - https://api.stacspec.org/v1.0.0/item-search#query + - https://api.stacspec.org/v1.0.0/item-search#filter + - https://api.stacspec.org/v1.0.0/item-search#sort + - https://api.stacspec.org/v1.0.0/ogcapi-features + - https://api.stacspec.org/v1.0.0/ogcapi-features#query + - https://api.stacspec.org/v1.0.0/ogcapi-features#sort + - https://api.stacspec.org/v1.0.0/collections + - https://api.stacspec.org/v1.0.0/collection-search + - https://api.stacspec.org/v1.0.0/collection-search#free-text + - https://api.stacspec.org/v1.0.0/collection-search#advanced-free-text + - http://www.opengis.net/spec/ogcapi-common-2/1.0/conf/simple-query - http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/core - http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/oas30 - http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/geojson + - http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/filter + - http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/features-filter + - http://www.opengis.net/spec/cql2/1.0/conf/cql2-text + - http://www.opengis.net/spec/cql2/1.0/conf/cql2-json + - http://www.opengis.net/spec/cql2/1.0/conf/basic-cql2 + - http://www.opengis.net/spec/cql2/1.0/conf/basic-spatial-operators + - http://www.opengis.net/spec/cql2/1.0/conf/temporal-operators + - http://www.opengis.net/spec/cql2/1.0/conf/advanced-comparison-operators # https://stacspec.org/STAC-api.html#operation/getCollections collections: + collections: + - "{collection}" links: - - rel: self - title: collections - href: "{collections[url]}" - rel: root + type: "application/json" href: "{collections[root]}/" - rel: parent + type: "application/json" href: "{collections[root]}/" - collections: - - "{collection}" - stac_version: "{stac_version}" + - rel: self + type: "application/json" + href: "{collections[url]}" # https://stacspec.org/STAC-api.html#operation/describeCollection collection: @@ -121,14 +146,6 @@ collection: - '$.product_type.instrument' processing:level: '$.product_type.processingLevel' -provider: - name: '$.provider.name' - description: '$.provider.description' - # one or more of "producer" "licensor" "processor" "host" - roles: '$.provider.roles' - url: '$.provider.url' - priority: '$.provider.priority' - # Data ------------------------------------------------------------------------ # https://stacspec.org/STAC-api.html#operation/getFeatures @@ -147,26 +164,18 @@ items: - rel: parent title: "{catalog[id]}" href: "{catalog[url]}" - # implement next/prev page links - # https://github.com/radiantearth/stac-spec/blob/master/api-spec/api-spec.md#paging-extension - - rel: next - href: '$.search_results.next' - title: Next page - type: application/geo+json - method: '$.search_results.method' - body: '$.search_results.body' # time and date when the response was generated - timeStamp: '$.search_results.timeStamp' + timeStamp: '$.timeStamp' # count request result - numberMatched: '$.search_results.numberMatched' + numberMatched: '$.numberMatched' # len(features) - numberReturned: '$.search_results.numberReturned' + numberReturned: '$.numberReturned' # https://stacspec.org/STAC-api.html#operation/getFeature item: stac_version: "{stac_version}" stac_extensions: - id: '$.product.properties.title' + id: '$.product.properties.id' bbox: - '{item[geometry].bounds[0]}' - '{item[geometry].bounds[1]}' @@ -204,6 +213,7 @@ item: version: '$.product.properties.productVersion' view:sun_elevation: '$.product.properties.illuminationElevationAngle' view:sun_azimuth: '$.product.properties.illuminationAzimuthAngle' + order:status: '{$.product.properties.storageStatus#get_group_name((?PONLINE)|(?PSTAGING)|(?POFFLINE))}' links: - rel: self title: "{item[id]}" @@ -216,20 +226,7 @@ item: - rel: collection title: "{item[collection]}" href: "{catalog[url]}" - assets: - downloadLink: - title: 'Download link' - href: "{catalog[url]}/items/{item[id]}/download" - # https://github.com/radiantearth/stac-spec/blob/master/item-spec/item-spec.md#media-types - type: 'application/zip' - _dc_qs: '$.product.properties._dc_qs' - thumbnail: - title: 'Thumbnail' - href: '$.product.properties.quicklook' - type: 'image/jpeg' - role: thumbnail - # https://github.com/radiantearth/stac-spec/blob/master/item-spec/item-spec.md#media-types - origin_assets: '$.product.assets' + # product properties not needed in items metadata_ignore: - title @@ -242,10 +239,12 @@ metadata_ignore: # extensions mapping {prefix: schema_url,} stac_extensions: eo: 'https://stac-extensions.github.io/eo/v1.0.0/schema.json' + order: 'https://stac-extensions.github.io/order/v1.1.0/schema.json' published: 'https://stac-extensions.github.io/timestamps/v1.0.0/schema.json' processing: 'https://stac-extensions.github.io/processing/v1.0.0/schema.json' sar: 'https://stac-extensions.github.io/sar/v1.0.0/schema.json' sat: 'https://stac-extensions.github.io/sat/v1.0.0/schema.json' + storage: 'https://stac-extensions.github.io/storage/v1.0.0/schema.json' sci: 'https://stac-extensions.github.io/scientific/v1.0.0/schema.json' version: 'https://stac-extensions.github.io/version/v1.0.0/schema.json' view: 'https://stac-extensions.github.io/view/v1.0.0/schema.json' @@ -297,12 +296,7 @@ catalogs: - - "{collection[extent][temporal][interval][0][0]}" - "{collection[extent][temporal][interval][0][1]}" crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84 - keywords: - - "{collection[keywords][0]}" - - "{collection[keywords][1]}" - - "{collection[keywords][2]}" - - "{collection[keywords][3]}" - - "{collection[keywords][4]}" + keywords: "{collection[keywords]}" license: "{collection[license]}" properties: "{collection[properties]}" providers: "{collection[providers]}" diff --git a/eodag/resources/stac_api.yml b/eodag/resources/stac_api.yml index 5415be3d8..5b37bd903 100644 --- a/eodag/resources/stac_api.yml +++ b/eodag/resources/stac_api.yml @@ -107,6 +107,7 @@ paths: description: |- Fetch features in the given catalog provided with `catalogPath`. parameters: + - $ref: '#/components/parameters/provider' - $ref: '#/components/parameters/catalogPath' - $ref: '#/components/parameters/bbox' - $ref: '#/components/parameters/datetime' @@ -130,6 +131,7 @@ paths: Fetch the feature with id `featureId` in the given catalog provided with `cataloPath`. parameters: + - $ref: '#/components/parameters/provider' - $ref: '#/components/parameters/catalogPath' - $ref: '#/components/parameters/featureId' responses: @@ -148,6 +150,7 @@ paths: Download the feature with id `featureId` in the given catalog provided with `catalogPath`. parameters: + - $ref: '#/components/parameters/provider' - $ref: '#/components/parameters/catalogPath' - $ref: '#/components/parameters/featureId' responses: @@ -169,9 +172,14 @@ paths: summary: The feature collections in the dataset. description: A body of Feature Collections that belong or are used together with additional links. Request may not return the full set of metadata per Feature Collection. operationId: getCollections + parameters: + - $ref: '#/components/parameters/provider' + - $ref: '#/components/parameters/q' responses: '200': $ref: '#/components/responses/Collections' + '202': + $ref: '#/components/responses/Accepted' '500': $ref: '#/components/responses/ServerError' /collections/{collectionId}: @@ -225,6 +233,7 @@ paths: tags: - Data parameters: + - $ref: '#/components/parameters/provider' - $ref: '#/components/parameters/collectionId' - $ref: '#/components/parameters/bbox' - $ref: '#/components/parameters/datetime' @@ -254,6 +263,7 @@ paths: tags: - Data parameters: + - $ref: '#/components/parameters/provider' - $ref: '#/components/parameters/collectionId' - $ref: '#/components/parameters/featureId' summary: fetch a single feature @@ -275,6 +285,7 @@ paths: tags: - Data parameters: + - $ref: '#/components/parameters/provider' - $ref: '#/components/parameters/collectionId' - $ref: '#/components/parameters/featureId' summary: download a single feature assets archive @@ -300,24 +311,19 @@ paths: description: |- Retrieve Items matching filters. Intended as a shorthand API for simple queries. - - This method is optional, but you MUST implement `POST /search` if you - want to implement this method. - - If this endpoint is implemented on a server, it is required to add a - link referring to this endpoint with `rel` set to `search` to the - `links` array in `GET /`. As `GET` is the default method, the `method` - may not be set explicitly in the link. operationId: getSearchSTAC tags: - STAC parameters: - - $ref: '#/components/parameters/bbox' - - $ref: '#/components/parameters/datetime' - - $ref: '#/components/parameters/limit' - - $ref: '#/components/parameters/intersects' - - $ref: '#/components/parameters/ids' - - $ref: '#/components/parameters/collectionsArray' + - $ref: '#/components/parameters/bbox' + - $ref: '#/components/parameters/datetime' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/intersects' + - $ref: '#/components/parameters/ids' + - $ref: '#/components/parameters/collectionsArray' + - $ref: '#/components/parameters/provider' + - $ref: '#/components/parameters/filter' + - $ref: '#/components/parameters/sortby' responses: '200': description: A feature collection. @@ -342,22 +348,22 @@ paths: description: |- Retrieve items matching filters. Intended as the standard, full-featured query API. - - This method is mandatory to implement if `GET /search` is implemented. - If this endpoint is implemented on a server, it is required to add a - link referring to this endpoint with `rel` set to `search` and `method` - set to `POST` to the `links` array in `GET /`. tags: - STAC operationId: postSearchSTAC requestBody: description: | - The `POST /search` JSON body specification is detailed in the [STAC specification](https://api.stacspec.org/v1.0.0/item-search/) + The `POST /search` JSON body specification is detailed in the + [STAC specification](https://api.stacspec.org/v1.0.0/item-search/). + Both [Query](https://github.com/stac-api-extensions/query) and + [Filter](https://github.com/stac-api-extensions/filter) extensions are supported. required: true content: application/json: schema: - $ref: '#/components/schemas/searchBody' + allOf: + - $ref: '#/components/schemas/searchBody' + - $ref: 'https://api.stacspec.org/v1.0.0-beta.3/item-search/openapi.yaml#/components/schemas/components-schemas-searchBody' responses: '200': description: A feature collection. @@ -621,6 +627,30 @@ components: required: false schema: type: string + filter: + name: filter + x-stac-api-fragment: filter + in: query + description: |- + A CQL filter expression for filtering items. + required: false + schema: + oneOf: + - $ref: 'https://api.stacspec.org/v1.0.0-beta.3/item-search/openapi.yaml#/components/schemas/booleanValueExpression' + - $ref: '#/components/schemas/filter-cql-text' + sortby: + name: sortby + x-stac-api-fragment: sort + in: query + description: |- + An array of property names, prefixed by either "+" for ascending or + "-" for descending. If no prefix is provided, "+" is assumed. + required: false + schema: + type: string + example: '+start_datetime' + style: form + explode: false schemas: queryProp: description: Apply query operations to a specific property @@ -1125,6 +1155,10 @@ components: type: array items: $ref: '#/components/schemas/link' + filter-cql-text: + description: | + A CQL filter expression in the 'cql-text' encoding. + type: string geometryGeoJSON: oneOf: - $ref: '#/components/schemas/pointGeoJSON' @@ -1454,6 +1488,7 @@ components: description: The search criteria type: object allOf: + - $ref: '#/components/schemas/providerFilter' - $ref: '#/components/schemas/collectionsFilter' - $ref: '#/components/schemas/bboxFilter' - $ref: '#/components/schemas/datetimeFilter' @@ -1470,10 +1505,12 @@ components: - 34 collections: - S2_MSI_L1C - platform: - eq: S2A - eo:cloud_cover: - lte: 80 + query: + platform: + eq: S2A + eo:cloud_cover: + lte: 80 + provider: peps limit: 10 limit: type: integer @@ -1578,6 +1615,9 @@ components: properties: collections: $ref: '#/components/schemas/collectionsArray' + providerFilter: + type: string + description: Only interrogate the specifiec provider queryFilter: description: An object representing a query filter. type: object @@ -1876,6 +1916,12 @@ components: text/html: schema: type: string + Accepted: + description: The request has been accepted, but the data is not yet ready. Please wait a few minutes before trying again. + content: + application/json: + schema: + $ref: '#/components/schemas/exception' Collections: description: >- The feature collections shared by this API. diff --git a/eodag/resources/stac_provider.yml b/eodag/resources/stac_provider.yml index a6acbeff0..cd175373b 100644 --- a/eodag/resources/stac_provider.yml +++ b/eodag/resources/stac_provider.yml @@ -24,6 +24,11 @@ search: next_page_url_key_path: '$.links[?(@.rel="next")].href' next_page_query_obj_key_path: '$.links[?(@.rel="next")].body' next_page_merge_key_path: '$.links[?(@.rel="next")].merge' + sort: + sort_by_tpl: '{{"sortby": [ {{"field": "{sort_param}", "direction": "{sort_order}" }} ] }}' + sort_order_mapping: + ascending: asc + descending: desc discover_metadata: auto_discovery: true metadata_pattern: '^[a-zA-Z0-9_:-]+$' diff --git a/eodag/resources/user_conf_template.yml b/eodag/resources/user_conf_template.yml index 60b9abc47..123b0fd5e 100644 --- a/eodag/resources/user_conf_template.yml +++ b/eodag/resources/user_conf_template.yml @@ -133,15 +133,21 @@ ecmwf: password: cop_ads: priority: # Lower value means lower priority (Default: 0) - api: + search: # Search parameters configuration + download: + extract: outputs_prefix: + auth: credentials: username: password: cop_cds: priority: # Lower value means lower priority (Default: 0) - api: + search: # Search parameters configuration + download: + extract: outputs_prefix: + auth: credentials: username: password: @@ -191,6 +197,15 @@ hydroweb_next: download: outputs_prefix: wekeo: + priority: # Lower value means lower priority (Default: 0) + search: # Search parameters configuration + download: + outputs_prefix: + auth: + credentials: + username: + password: +wekeo_cmems: priority: # Lower value means lower priority (Default: 0) search: download: @@ -199,7 +214,6 @@ wekeo: credentials: username: password: - creodias_s3: priority: # Lower value means lower priority (Default: 0) search: # Search parameters configuration @@ -209,3 +223,37 @@ creodias_s3: credentials: aws_access_key_id: aws_secret_access_key: +dedt_lumi: + priority: # Lower value means lower priority (Default: 0) + search: + download: + outputs_prefix: + auth: + credentials: + username: + password: +dedl: + priority: # Lower value means lower priority (Default: 0) + search: # Search parameters configuration + download: + outputs_prefix: + auth: + credentials: + username: + password: +eumetsat_ds: + priority: # Lower value means lower priority (Default: 0) + search: # Search parameters configuration + outputs_prefix: + auth: + credentials: + username: + password: + download: + outputs_prefix: +cop_marine: + priority: # Lower value means lower priority (Default: 0) + search: # Search parameters configuration + download: + extract: + outputs_prefix: diff --git a/eodag/rest/__init__.py b/eodag/rest/__init__.py index 7c2da36d1..4a740d4f6 100644 --- a/eodag/rest/__init__.py +++ b/eodag/rest/__init__.py @@ -16,3 +16,9 @@ # See the License for the specific language governing permissions and # limitations under the License. """EODAG REST API""" +try: + from fastapi import __version__ # noqa: F401 +except ImportError: + raise ImportError( + f"{__name__} not available, please install eodag[server] or eodag[all]" + ) diff --git a/eodag/rest/cache.py b/eodag/rest/cache.py new file mode 100644 index 000000000..2b98a0ed8 --- /dev/null +++ b/eodag/rest/cache.py @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- +# Copyright 2024, CS GROUP - France, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import logging +from typing import Any, Callable, Coroutine, Dict, TypeVar, cast + +import orjson +from cachetools import LRUCache +from fastapi import FastAPI, Request + +from eodag.rest.config import Settings +from eodag.utils import urlsplit + +logger = logging.getLogger("eodag.rest.utils") + +T = TypeVar("T") + + +def init_cache(app: FastAPI) -> None: + """Connect to local cache""" + settings = Settings.from_environment() + + app.state.cache = LRUCache(maxsize=settings.cache_maxsize) + + +async def cached( + fn: Callable[[], Coroutine[Any, Any, T]], cache_key: str, request: Request +) -> T: + """Either get the result from local cache or run the function and cache the result.""" + settings = Settings.from_environment() + + host = urlsplit(cast(str, request.state.url_root)).netloc + + host_cache_key = f"{cache_key}:{host}" + + try: + c: Dict[str, Any] = request.app.state.cache + + if cached := c.get(host_cache_key): + logger.debug("Cache result hit") + return orjson.loads(cached) # type: ignore + except Exception as e: + logger.error(f"Error in cache: {e}") + if settings.debug: + raise + + result = await fn() + + try: + c[host_cache_key] = orjson.dumps(result) # type: ignore + except Exception as e: + logger.error(f"Error in cache: {e}") + if settings.debug: + raise + + return result diff --git a/eodag/rest/config.py b/eodag/rest/config.py new file mode 100644 index 000000000..f222f32d5 --- /dev/null +++ b/eodag/rest/config.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +# Copyright 2024, CS GROUP - France, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from __future__ import annotations + +from functools import lru_cache +from typing import List, Union + +from pydantic import Field +from pydantic.functional_validators import BeforeValidator +from pydantic_settings import BaseSettings, SettingsConfigDict +from typing_extensions import Doc + +from eodag.rest.constants import DEFAULT_MAXSIZE, DEFAULT_TTL +from eodag.utils import Annotated + + +def str2liststr(raw: Union[str, List[str]]) -> List[str]: + """Convert str to list[str]""" + if isinstance(raw, list): + return raw + return raw.split(",") + + +class Settings(BaseSettings): + """EODAG Server config""" + + # local cache config + cache_ttl: int = Field(default=DEFAULT_TTL) + cache_maxsize: int = Field(default=DEFAULT_MAXSIZE) + + debug: bool = False + + stac_api_title: str = "eodag-stac-api" + stac_api_description: str = "STAC API provided by EODAG" + stac_api_landing_id: str = "eodag-stac-api" + + origin_url_blacklist: Annotated[ + Union[str, List[str]], + BeforeValidator(str2liststr), + Doc( + "Hide from clients items assets' alternative URLs starting with URLs from the list" + ), + ] = Field(default=[]) + + model_config = SettingsConfigDict( + env_prefix="EODAG_", extra="ignore", env_nested_delimiter="__" + ) + + @classmethod + @lru_cache(maxsize=1) + def from_environment(cls) -> Settings: + """Get settings""" + return Settings() diff --git a/eodag/rest/constants.py b/eodag/rest/constants.py new file mode 100644 index 000000000..74df968b3 --- /dev/null +++ b/eodag/rest/constants.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Copyright 2024, CS GROUP - France, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# default cache ttl +DEFAULT_TTL = 600 # 10 min + +DEFAULT_MAXSIZE = 2048 # local cache maxsize + +CACHE_KEY_COLLECTIONS = "collections" +CACHE_KEY_COLLECTION = "collection" +CACHE_KEY_SEARCH = "search" +CACHE_KEY_QUERYABLES = "queryables" +CACHE_KEY_CATALOGS = "catalogs" diff --git a/eodag/rest/core.py b/eodag/rest/core.py new file mode 100644 index 000000000..06c8d5954 --- /dev/null +++ b/eodag/rest/core.py @@ -0,0 +1,757 @@ +# -*- coding: utf-8 -*- +# Copyright 2023, CS GROUP - France, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from __future__ import annotations + +import datetime +import logging +import os +import re +from typing import TYPE_CHECKING, cast +from unittest.mock import Mock + +import dateutil +from cachetools.func import lru_cache +from fastapi.responses import ORJSONResponse, StreamingResponse +from pydantic import ValidationError as pydanticValidationError +from requests.models import Response as RequestsResponse + +import eodag +from eodag import EOProduct +from eodag.api.product.metadata_mapping import ( + NOT_AVAILABLE, + OFFLINE_STATUS, + ONLINE_STATUS, + OSEO_METADATA_MAPPING, + STAGING_STATUS, +) +from eodag.api.search_result import SearchResult +from eodag.config import load_stac_config +from eodag.plugins.crunch.filter_latest_intersect import FilterLatestIntersect +from eodag.plugins.crunch.filter_latest_tpl_name import FilterLatestByName +from eodag.plugins.crunch.filter_overlap import FilterOverlap +from eodag.rest.cache import cached +from eodag.rest.constants import ( + CACHE_KEY_COLLECTION, + CACHE_KEY_COLLECTIONS, + CACHE_KEY_QUERYABLES, +) +from eodag.rest.stac import StacCatalog, StacCollection, StacCommon, StacItem +from eodag.rest.types.eodag_search import EODAGSearch +from eodag.rest.types.queryables import ( + QueryablesGetParams, + StacQueryableProperty, + StacQueryables, +) +from eodag.rest.types.stac_search import SearchPostRequest +from eodag.rest.utils import ( + Cruncher, + file_to_stream, + format_pydantic_error, + get_next_link, +) +from eodag.rest.utils.rfc3339 import rfc3339_str_to_datetime +from eodag.utils import ( + _deprecated, + deepcopy, + dict_items_recursive_apply, + format_dict_items, + obj_md5sum, + urlencode, +) +from eodag.utils.exceptions import ( + MisconfiguredError, + NotAvailableError, + ValidationError, +) + +if TYPE_CHECKING: + from typing import Any, Callable, Dict, List, Optional, Tuple, Union + + from fastapi import Request + from requests.auth import AuthBase + from starlette.responses import Response + + +eodag_api = eodag.EODataAccessGateway() + +logger = logging.getLogger("eodag.rest.core") + +stac_config = load_stac_config() + +crunchers = { + "filterLatestIntersect": Cruncher(FilterLatestIntersect, []), + "filterLatestByName": Cruncher(FilterLatestByName, ["name_pattern"]), + "filterOverlap": Cruncher(FilterOverlap, ["minimum_overlap"]), +} + + +@_deprecated(reason="No more needed with STAC API + Swagger", version="2.6.1") +def get_home_page_content(base_url: str, ipp: Optional[int] = None) -> str: + """Compute eodag service home page content + + :param base_url: The service root URL + :type base_url: str + :param ipp: (optional) Items per page number + :type ipp: int + """ + base_url = base_url.rstrip("/") + "/" + content = f"""

    EODAG Server


    + root
    + service-doc
    + """ + return content + + +@_deprecated( + reason="Function internally used by get_home_page_content, also deprecated", + version="2.6.1", +) +def format_product_types(product_types: List[Dict[str, Any]]) -> str: + """Format product_types + + :param product_types: A list of EODAG product types as returned by the core api + :type product_types: list + """ + result: List[str] = [] + for pt in product_types: + result.append(f'* *__{pt["ID"]}__*: {pt["abstract"]}') + return "\n".join(sorted(result)) + + +def search_stac_items( + request: Request, + search_request: SearchPostRequest, + catalogs: Optional[List[str]] = None, +) -> Dict[str, Any]: + """ + Search and retrieve STAC items from the given catalogs. + + This function takes a search request and optional catalogs list, performs a search using EODAG API, and returns a + dictionary of STAC items. + + :param request: The incoming HTTP request with state information. + :type request: Request + :param search_request: The search criteria for STAC items. + :type search_request: SearchPostRequest + :param catalogs: (optional) A list of catalogs to search within. Defaults to None. + :type catalogs: Optional[List[str]] + :returns: A dictionary containing the STAC items and related metadata. + :rtype: Dict[str, Any] + + The function handles the conversion of search criteria into STAC and EODAG compatible formats, validates the input + using pydantic, and constructs the appropriate URLs for querying the STAC API. It also manages pagination and the + construction of the 'next' link for the response. + + If specific item IDs are provided, it retrieves the corresponding products. Otherwise, it performs a search based on + the provided criteria and time interval overlap checks. + + The results are then formatted into STAC items and returned as part of the response dictionary, which includes the + items themselves, total count, and the next link if applicable. + """ + + stac_args = search_request.model_dump(exclude_none=True) + if search_request.start_date: + stac_args["start_datetime"] = search_request.start_date + if search_request.end_date: + stac_args["end_datetime"] = search_request.end_date + if search_request.spatial_filter: + stac_args["geometry"] = search_request.spatial_filter + try: + eodag_args = EODAGSearch.model_validate( + stac_args, context={"isCatalog": bool(catalogs)} + ) + except pydanticValidationError as e: + raise ValidationError(format_pydantic_error(e)) from e + + catalog_url = re.sub("/items.*", "", request.state.url) + + catalog = StacCatalog( + url=( + catalog_url + if catalogs + else catalog_url.replace( + "/search", f"/collections/{eodag_args.productType}" + ) + ), + stac_config=stac_config, + root=request.state.url_root, + provider=eodag_args.provider, + eodag_api=eodag_api, + catalogs=catalogs or [eodag_args.productType], # type: ignore + ) + + # get products by ids + if eodag_args.ids: + search_results = SearchResult([]) + for item_id in eodag_args.ids: + sr = eodag_api.search( + id=item_id, + productType=catalogs[0] if catalogs else eodag_args.productType, + provider=eodag_args.provider, + ) + search_results.extend(sr) + search_results.number_matched = len(search_results) + total = len(search_results) + + elif time_interval_overlap(eodag_args, catalog): + criteria = { + **catalog.search_args, + **eodag_args.model_dump(exclude_none=True), + } + + search_results = eodag_api.search(count=True, **criteria) + total = search_results.number_matched + if search_request.crunch: + search_results = crunch_products( + search_results, search_request.crunch, **criteria + ) + else: + # return empty results + search_results = SearchResult([], 0) + total = 0 + + for record in search_results: + record.product_type = eodag_api.get_alias_from_product_type(record.product_type) + + items = StacItem( + url=request.state.url, + stac_config=stac_config, + provider=eodag_args.provider, + eodag_api=eodag_api, + root=request.state.url_root, + ).get_stac_items( + search_results=search_results, + total=total, + next_link=get_next_link( + request, search_request, total, eodag_args.items_per_page + ), + catalog={ + **catalog.data, + **{"url": catalog.url, "root": catalog.root}, + }, + ) + return items + + +def download_stac_item( + request: Request, + catalogs: List[str], + item_id: str, + provider: Optional[str] = None, + asset: Optional[str] = None, + **kwargs: Any, +) -> Response: + """Download item + + :param catalogs: Catalogs list (only first is used as product_type) + :type catalogs: list + :param item_id: Product ID + :type item_id: str + :param provider: (optional) Chosen provider + :type provider: str + :param kwargs: additional download parameters + :type kwargs: Any + :returns: a stream of the downloaded data (zip file) + :rtype: Response + """ + product_type = catalogs[0] + + search_results = eodag_api.search( + id=item_id, productType=product_type, provider=provider, **kwargs + ) + if len(search_results) > 0: + product = cast(EOProduct, search_results[0]) + + else: + raise NotAvailableError( + f"Could not find {item_id} item in {product_type} collection" + + (f" for provider {provider}" if provider else "") + ) + auth = product.downloader_auth.authenticate() if product.downloader_auth else None + + try: + if product.properties.get("orderLink"): + _order_and_update(product, auth, kwargs) + + download_stream = product.downloader._stream_download_dict( + product, + auth=auth, + asset=asset, + wait=-1, + timeout=-1, + ) + except NotImplementedError: + logger.warning( + "Download streaming not supported for %s: downloading locally then delete", + product.downloader, + ) + download_stream = file_to_stream( + eodag_api.download(product, extract=False, asset=asset) + ) + except NotAvailableError: + if product.properties.get("storageStatus") != ONLINE_STATUS: + kwargs["orderId"] = kwargs.get("orderId") or product.properties.get( + "orderId" + ) + kwargs["provider"] = provider + qs = urlencode(kwargs, doseq=True) + download_link = f"{request.state.url}?{qs}" + return ORJSONResponse( + status_code=202, + headers={"Location": download_link}, + content={ + "description": "Product is not available yet, please try again using given updated location", + "status": product.properties.get("orderStatus"), + "location": download_link, + }, + ) + else: + raise + + return StreamingResponse( + content=download_stream.content, + headers=download_stream.headers, + media_type=download_stream.media_type, + ) + + +def _order_and_update( + product: EOProduct, + auth: Union[AuthBase, Dict[str, str], None], + query_args: Dict[str, Any], +) -> None: + """Order product if needed and update given kwargs with order-status-dict""" + if product.properties.get("storageStatus") != ONLINE_STATUS and hasattr( + product.downloader, "order_response_process" + ): + # update product (including orderStatusLink) if product was previously ordered + logger.debug("Use given download query arguments to parse order link") + response = Mock(spec=RequestsResponse) + response.status_code = 200 + response.json.return_value = query_args + response.headers = {} + product.downloader.order_response_process(response, product) + + if ( + product.properties.get("storageStatus") != ONLINE_STATUS + and NOT_AVAILABLE in product.properties.get("orderStatusLink", "") + and hasattr(product.downloader, "orderDownload") + ): + # first order + logger.debug("Order product") + order_status_dict = product.downloader.orderDownload(product=product, auth=auth) + query_args.update(order_status_dict or {}) + + if ( + product.properties.get("storageStatus") == OFFLINE_STATUS + and product.properties.get("orderStatusLink") + and NOT_AVAILABLE not in product.properties.get("orderStatusLink", "") + ): + product.properties["storageStatus"] = STAGING_STATUS + + if product.properties.get("storageStatus") == STAGING_STATUS and hasattr( + product.downloader, "orderDownloadStatus" + ): + # check order status if needed + logger.debug("Checking product order status") + product.downloader.orderDownloadStatus(product=product, auth=auth) + + if product.properties.get("storageStatus") != ONLINE_STATUS: + raise NotAvailableError("Product is not available yet") + + +@lru_cache(maxsize=1) +def get_detailled_collections_list() -> List[Dict[str, Any]]: + """Returns detailled collections / product_types list as a list of + config dicts + + :returns: List of config dicts + :rtype: list + """ + return eodag_api.list_product_types(fetch_providers=False) + + +async def all_collections( + request: Request, + provider: Optional[str] = None, + q: Optional[str] = None, + platform: Optional[str] = None, + instrument: Optional[str] = None, + constellation: Optional[str] = None, + datetime: Optional[str] = None, +) -> Dict[str, Any]: + """Build STAC collections + + :param url: Requested URL + :type url: str + :param root: The API root + :type root: str + :param filters: Search collections filters + :type filters: CollectionsSearchRequest + :param provider: (optional) Chosen provider + :type provider: str + :returns: Collections dictionnary + :rtype: dict + """ + + async def _fetch() -> Dict[str, Any]: + stac_collection = StacCollection( + url=request.state.url, + stac_config=stac_config, + provider=provider, + eodag_api=eodag_api, + root=request.state.url_root, + ) + collections = deepcopy(stac_config["collections"]) + collections["collections"] = stac_collection.get_collection_list( + q=q, + platform=platform, + instrument=instrument, + constellation=constellation, + datetime=datetime, + ) + + # # parse f-strings + format_args = deepcopy(stac_config) + format_args["collections"].update( + {"url": stac_collection.url, "root": stac_collection.root} + ) + + collections["links"] = [ + format_dict_items(link, **format_args) for link in collections["links"] + ] + + collections = format_dict_items(collections, **format_args) + return collections + + hashed_collections = hash(f"{provider}:{q}:{platform}:{instrument}:{constellation}") + cache_key = f"{CACHE_KEY_COLLECTIONS}:{hashed_collections}" + return await cached(_fetch, cache_key, request) + + +async def get_collection( + request: Request, collection_id: str, provider: Optional[str] = None +) -> Dict[str, Any]: + """Build STAC collection by id + + :param url: Requested URL + :type url: str + :param root: API root + :type root: str + :param collection_id: Product_type as ID of the collection + :type collection_id: str + :param provider: (optional) Chosen provider + :type provider: str + :returns: Collection dictionary + :rtype: dict + """ + + async def _fetch() -> Dict[str, Any]: + stac_collection = StacCollection( + url=request.state.url, + stac_config=stac_config, + provider=provider, + eodag_api=eodag_api, + root=request.state.url_root, + ) + collection_list = stac_collection.get_collection_list(collection=collection_id) + + if not collection_list: + raise NotAvailableError(f"Collection {collection_id} does not exist.") + + return collection_list[0] + + cache_key = f"{CACHE_KEY_COLLECTION}:{provider}:{collection_id}" + return await cached(_fetch, cache_key, request) + + +async def get_stac_catalogs( + request: Request, + url: str, + catalogs: Optional[Tuple[str, ...]] = None, + provider: Optional[str] = None, +) -> Dict[str, Any]: + """Build STAC catalog + + :param url: Requested URL + :type url: str + :param root: (optional) API root + :type root: str + :param catalogs: (optional) Catalogs list + :type catalogs: list + :param provider: (optional) Chosen provider + :type provider: str + :returns: Catalog dictionary + :rtype: dict + """ + + async def _fetch() -> Dict[str, Any]: + return StacCatalog( + url=url, + stac_config=stac_config, + root=request.state.url_root, + provider=provider, + eodag_api=eodag_api, + catalogs=list(catalogs) if catalogs else None, + ).data + + hashed_catalogs = hash(":".join(catalogs) if catalogs else None) + return await cached( + _fetch, f"{CACHE_KEY_COLLECTION}:{provider}:{hashed_catalogs}", request + ) + + +def time_interval_overlap(eodag_args: EODAGSearch, catalog: StacCatalog) -> bool: + """fix search date filter based on catalog date range""" + # check if time filtering appears both in search arguments and catalog + # (for catalogs built by date: i.e. `year/2020/month/05`) + if not set(["start", "end"]) <= set(eodag_args.model_dump().keys()) or not set( + ["start", "end"] + ) <= set(catalog.search_args.keys()): + return True + + search_date_min = cast( + datetime.datetime, + ( + dateutil.parser.parse(eodag_args.start) # type: ignore + if eodag_args.start + else datetime.datetime.min.replace(tzinfo=datetime.timezone.utc) + ), + ) + search_date_max = cast( + datetime.datetime, + ( + dateutil.parser.parse(eodag_args.end) # type: ignore + if eodag_args.end + else datetime.datetime.now(tz=datetime.timezone.utc) + ), + ) + + catalog_date_min = rfc3339_str_to_datetime(catalog.search_args["start"]) + catalog_date_max = rfc3339_str_to_datetime(catalog.search_args["end"]) + # check if date intervals overlap + if (search_date_min <= catalog_date_max) and (search_date_max >= catalog_date_min): + # use intersection + eodag_args.start = ( + max(search_date_min, catalog_date_min).isoformat().replace("+00:00", "Z") + ) + eodag_args.end = ( + min(search_date_max, catalog_date_max).isoformat().replace("+00:00", "Z") + ) + return True + + logger.warning("Time intervals do not overlap") + return False + + +@lru_cache(maxsize=1) +def get_stac_conformance() -> Dict[str, str]: + """Build STAC conformance + + :returns: conformance dictionnary + :rtype: dict + """ + return stac_config["conformance"] + + +def get_stac_api_version() -> str: + """Get STAC API version + + :returns: STAC API version + :rtype: str + """ + return stac_config["stac_api_version"] + + +@lru_cache(maxsize=1) +def get_stac_extension_oseo(url: str) -> Dict[str, str]: + """Build STAC OGC / OpenSearch Extension for EO + + :param url: Requested URL + :type url: str + :returns: Catalog dictionnary + :rtype: dict + """ + + apply_method: Callable[[str, str], str] = lambda _, x: str(x).replace( + "$.product.", "$." + ) + item_mapping = dict_items_recursive_apply(stac_config["item"], apply_method) + + # all properties as string type by default + oseo_properties = { + "oseo:{}".format(k): { + "type": "string", + "title": k[0].upper() + re.sub(r"([A-Z][a-z]+)", r" \1", k[1:]), + } + for k, v in OSEO_METADATA_MAPPING.items() + if v not in str(item_mapping) + } + + return StacCommon.get_stac_extension( + url=url, stac_config=stac_config, extension="oseo", properties=oseo_properties + ) + + +async def get_queryables( + request: Request, + params: QueryablesGetParams, + provider: Optional[str] = None, +) -> Dict[str, Any]: + """Fetch the queryable properties for a collection. + + :param collection_id: The ID of the collection. + :type collection_id: str + :returns: A set containing the STAC standardized queryable properties for a collection. + :rtype Dict[str, StacQueryableProperty]: set + """ + + async def _fetch() -> Dict[str, Any]: + python_queryables = eodag_api.list_queryables( + provider=provider, **params.model_dump(exclude_none=True, by_alias=True) + ) + python_queryables.pop("start") + python_queryables.pop("end") + + # productType and id are already default in stac collection and id + python_queryables.pop("productType", None) + python_queryables.pop("id", None) + + stac_queryables: Dict[str, StacQueryableProperty] = deepcopy( + StacQueryables.default_properties + ) + for param, queryable in python_queryables.items(): + stac_param = EODAGSearch.to_stac(param) + # only keep "datetime" queryable for dates + if stac_param in stac_queryables or stac_param in ( + "start_datetime", + "end_datetime", + ): + continue + + stac_queryables[ + stac_param + ] = StacQueryableProperty.from_python_field_definition( + stac_param, queryable + ) + + if params.collection: + stac_queryables.pop("collection") + + return StacQueryables( + q_id=request.state.url, + additional_properties=bool(not params.collection), + properties=stac_queryables, + ).model_dump(mode="json", by_alias=True) + + hashed_queryables = hash(params.model_dump_json()) + return await cached( + _fetch, f"{CACHE_KEY_QUERYABLES}:{provider}:{hashed_queryables}", request + ) + + +@_deprecated( + reason="Used to format output from deprecated function get_home_page_content", + version="2.6.1", +) +def get_templates_path() -> str: + """Returns Jinja templates path""" + return os.path.join(os.path.dirname(__file__), "templates") + + +def crunch_products( + products: SearchResult, cruncher_name: str, **kwargs: Any +) -> SearchResult: + """Apply an eodag cruncher to filter products""" + cruncher = crunchers.get(cruncher_name) + if not cruncher: + raise ValidationError( + f'Unknown crunch name. Use one of: {", ".join(crunchers.keys())}' + ) + + cruncher_config: Dict[str, Any] = {} + for config_param in cruncher.config_params: + config_param_value = kwargs.get(config_param) + if not config_param_value: + raise ValidationError( + ( + f"cruncher {cruncher} require additional parameters:" + f' {", ".join(cruncher.config_params)}' + ) + ) + cruncher_config[config_param] = config_param_value + + try: + products = products.crunch(cruncher.clazz(cruncher_config), **kwargs) + except MisconfiguredError as e: + raise ValidationError(str(e)) from e + + return products + + +def eodag_api_init() -> None: + """Init EODataAccessGateway server instance, pre-running all time consuming tasks""" + eodag_api.fetch_product_types_list() + StacCollection.fetch_external_stac_collections(eodag_api) + + # update eodag product_types config form external stac collections + for p, p_f in eodag_api.product_types_config.source.items(): + for key in (p, p_f.get("alias")): + if key is None: + continue + ext_col = StacCollection.ext_stac_collections.get(key) + if not ext_col: + continue + platform: Union[str, List[str]] = ext_col.get("summaries", {}).get( + "platform" + ) + constellation: Union[str, List[str]] = ext_col.get("summaries", {}).get( + "constellation" + ) + # Check if platform or constellation are lists and join them into a string if they are + if isinstance(platform, list): + platform = ",".join(platform) + if isinstance(constellation, list): + constellation = ",".join(constellation) + + update_fields = { + "title": ext_col.get("title"), + "abstract": ext_col["description"], + "keywords": ext_col.get("keywords"), + "instrument": ",".join( + ext_col.get("summaries", {}).get("instruments", []) + ), + "platform": constellation, + "platformSerialIdentifier": platform, + "processingLevel": ext_col.get("summaries", {}).get("processing:level"), + "license": ext_col["license"], + "missionStartDate": ext_col["extent"]["temporal"]["interval"][0][0], + "missionEndDate": ext_col["extent"]["temporal"]["interval"][-1][1], + } + clean = {k: v for k, v in update_fields.items() if v} + p_f.update(clean) + + eodag_api.product_types_config_md5 = obj_md5sum( + eodag_api.product_types_config.source + ) + + eodag_api.build_index() + + # pre-build search plugins + for provider in eodag_api.available_providers(): + next(eodag_api._plugins_manager.get_search_plugins(provider=provider)) diff --git a/eodag/rest/server.py b/eodag/rest/server.py index b2b9b48bf..11936836d 100755 --- a/eodag/rest/server.py +++ b/eodag/rest/server.py @@ -19,9 +19,11 @@ import logging import os +import re import traceback from contextlib import asynccontextmanager from importlib.metadata import version +from json import JSONDecodeError from typing import ( TYPE_CHECKING, Any, @@ -29,37 +31,39 @@ Awaitable, Callable, Dict, - List, Optional, - Union, ) from fastapi import APIRouter as FastAPIRouter from fastapi import FastAPI, HTTPException, Request -from fastapi.encoders import jsonable_encoder from fastapi.middleware.cors import CORSMiddleware from fastapi.openapi.utils import get_openapi -from fastapi.responses import ORJSONResponse, StreamingResponse -from pydantic import BaseModel +from fastapi.responses import ORJSONResponse +from pydantic import ValidationError as pydanticValidationError +from pygeofilter.backends.cql2_json import to_cql2 +from pygeofilter.parsers.cql2_text import parse as parse_cql2_text from starlette.exceptions import HTTPException as StarletteHTTPException from eodag.config import load_stac_api_config -from eodag.rest.types.stac_queryables import StacQueryables -from eodag.rest.utils import ( - download_stac_item_by_id_stream, +from eodag.rest.cache import init_cache +from eodag.rest.core import ( + all_collections, + download_stac_item, eodag_api_init, - fetch_collection_queryable_properties, + get_collection, get_detailled_collections_list, + get_queryables, get_stac_api_version, get_stac_catalogs, - get_stac_collection_by_id, - get_stac_collections, get_stac_conformance, get_stac_extension_oseo, - get_stac_item_by_id, search_stac_items, ) -from eodag.utils import DEFAULT_ITEMS_PER_PAGE, parse_header, update_nested_dict +from eodag.rest.types.eodag_search import EODAGSearch +from eodag.rest.types.queryables import QueryablesGetParams +from eodag.rest.types.stac_search import SearchPostRequest, sortby2list +from eodag.rest.utils import format_pydantic_error, str2json, str2list +from eodag.utils import parse_header, update_nested_dict from eodag.utils.exceptions import ( AuthenticationError, DownloadError, @@ -77,8 +81,15 @@ from fastapi.types import DecoratedCallable from requests import Response +from starlette.responses import Response as StarletteResponse logger = logging.getLogger("eodag.rest.server") +ERRORS_WITH_500_STATUS_CODE = { + "MisconfiguredError", + "AuthenticationError", + "DownloadError", + "RequestError", +} class APIRouter(FastAPIRouter): @@ -118,6 +129,7 @@ def decorator(func: DecoratedCallable) -> DecoratedCallable: async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]: """API init and tear-down""" eodag_api_init() + init_cache(app) yield @@ -127,14 +139,16 @@ async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]: stac_api_config = load_stac_api_config() -@router.get("/api", tags=["Capabilities"], include_in_schema=False) -def eodag_openapi() -> Dict[str, Any]: +@router.api_route( + methods=["GET", "HEAD"], path="/api", tags=["Capabilities"], include_in_schema=False +) +async def eodag_openapi(request: Request) -> Dict[str, Any]: """Customized openapi""" logger.debug("URL: /api") if app.openapi_schema: return app.openapi_schema - root_catalog = get_stac_catalogs(url="", fetch_providers=False) + root_catalog = await get_stac_catalogs(request=request, url="") stac_api_version = get_stac_api_version() openapi_schema = get_openapi( @@ -151,11 +165,11 @@ def eodag_openapi() -> Dict[str, Any]: openapi_schema["components"] = stac_api_config["components"] openapi_schema["tags"] = stac_api_config["tags"] - detailled_collections_list = get_detailled_collections_list(fetch_providers=False) + detailled_collections_list = get_detailled_collections_list() openapi_schema["info"]["description"] = ( root_catalog["description"] - + " (stac-api-spec {})".format(stac_api_version) + + f" (stac-api-spec {stac_api_version})" + "
    Available collections / product types" + "".join( [ @@ -195,8 +209,10 @@ async def forward_middleware( if "forwarded" in request.headers: header_forwarded = parse_header(request.headers["forwarded"]) - forwarded_host = header_forwarded.get_param("host", None) or forwarded_host - forwarded_proto = header_forwarded.get_param("proto", None) or forwarded_proto + forwarded_host = str(header_forwarded.get_param("host", None)) or forwarded_host + forwarded_proto = ( + str(header_forwarded.get_param("proto", None)) or forwarded_proto + ) request.state.url_root = f"{forwarded_proto or request.url.scheme}://{forwarded_host or request.url.netloc}" request.state.url = f"{request.state.url_root}{request.url.path}" @@ -221,13 +237,30 @@ async def default_exception_handler( ) +@app.exception_handler(ValidationError) +async def handle_invalid_usage_with_validation_error( + request: Request, error: ValidationError +) -> ORJSONResponse: + """Invalid usage [400] ValidationError handle""" + if error.parameters: + for error_param in error.parameters: + stac_param = EODAGSearch.to_stac(error_param) + error.message = error.message.replace(error_param, stac_param) + logger.debug(traceback.format_exc()) + return await default_exception_handler( + request, + HTTPException( + status_code=400, + detail=f"{type(error).__name__}: {str(error.message)}", + ), + ) + + @app.exception_handler(NoMatchingProductType) @app.exception_handler(UnsupportedProductType) @app.exception_handler(UnsupportedProvider) -@app.exception_handler(ValidationError) async def handle_invalid_usage(request: Request, error: Exception) -> ORJSONResponse: """Invalid usage [400] errors handle""" - logger.warning(traceback.format_exc()) return await default_exception_handler( request, HTTPException( @@ -254,8 +287,8 @@ async def handle_resource_not_found( @app.exception_handler(MisconfiguredError) @app.exception_handler(AuthenticationError) async def handle_auth_error(request: Request, error: Exception) -> ORJSONResponse: - """AuthenticationError should be sent as internal server error to the client""" - logger.error(f"{type(error).__name__}: {str(error)}") + """These errors should be sent as internal server error to the client""" + logger.error("%s: %s", type(error).__name__, str(error)) return await default_exception_handler( request, HTTPException( @@ -266,9 +299,36 @@ async def handle_auth_error(request: Request, error: Exception) -> ORJSONRespons @app.exception_handler(DownloadError) +async def handle_download_error(request: Request, error: Exception) -> ORJSONResponse: + """DownloadError should be sent as internal server error with details to the client""" + logger.error(f"{type(error).__name__}: {str(error)}") + return await default_exception_handler( + request, + HTTPException( + status_code=500, + detail=f"{type(error).__name__}: {str(error)}", + ), + ) + + @app.exception_handler(RequestError) -async def handle_server_error(request: Request, error: Exception) -> ORJSONResponse: - """These errors should be sent as internal server error with details to the client""" +async def handle_request_error(request: Request, error: RequestError) -> ORJSONResponse: + """RequestError should be sent as internal server error with details to the client""" + if getattr(error, "history", None): + error_history_tmp = list(error.history) + for i, search_error in enumerate(error_history_tmp): + if search_error[1].__class__.__name__ in ERRORS_WITH_500_STATUS_CODE: + search_error[1].args = ("an internal error occured",) + error_history_tmp[i] = search_error + continue + if getattr(error, "parameters", None): + for error_param in error.parameters: + stac_param = EODAGSearch.to_stac(error_param) + search_error[1].args = ( + search_error[1].args[0].replace(error_param, stac_param), + ) + error_history_tmp[i] = search_error + error.history = set(error_history_tmp) logger.error(f"{type(error).__name__}: {str(error)}") return await default_exception_handler( request, @@ -292,164 +352,166 @@ async def handle_timeout(request: Request, error: Exception) -> ORJSONResponse: ) -@router.get("/", tags=["Capabilities"]) -def catalogs_root(request: Request) -> Any: +@router.api_route(methods=["GET", "HEAD"], path="/", tags=["Capabilities"]) +async def catalogs_root(request: Request) -> ORJSONResponse: """STAC catalogs root""" - logger.debug(f"URL: {request.url}") + logger.debug("URL: %s", request.url) - response = get_stac_catalogs( + response = await get_stac_catalogs( + request=request, url=request.state.url, - root=request.state.url_root, - catalogs=[], provider=request.query_params.get("provider", None), ) - return jsonable_encoder(response) + return ORJSONResponse(response) -@router.get("/conformance", tags=["Capabilities"]) -def conformance() -> Any: +@router.api_route(methods=["GET", "HEAD"], path="/conformance", tags=["Capabilities"]) +def conformance() -> ORJSONResponse: """STAC conformance""" logger.debug("URL: /conformance") response = get_stac_conformance() - return jsonable_encoder(response) + return ORJSONResponse(response) -@router.get("/extensions/oseo/json-schema/schema.json", include_in_schema=False) -def stac_extension_oseo(request: Request) -> Any: +@router.api_route( + methods=["GET", "HEAD"], + path="/extensions/oseo/json-schema/schema.json", + include_in_schema=False, +) +def stac_extension_oseo(request: Request) -> ORJSONResponse: """STAC OGC / OpenSearch extension for EO""" - logger.debug(f"URL: {request.url}") + logger.debug("URL: %s", request.url) response = get_stac_extension_oseo(url=request.state.url) - return jsonable_encoder(response) - - -class SearchBody(BaseModel): - """ - class which describes the body of a search request - """ + return ORJSONResponse(response) - provider: Optional[str] = None - collections: Union[List[str], str] - datetime: Optional[str] = None - bbox: Optional[List[Union[int, float]]] = None - intersects: Optional[Dict[str, Any]] = None - limit: Optional[int] = DEFAULT_ITEMS_PER_PAGE - page: Optional[int] = 1 - query: Optional[Dict[str, Any]] = None - ids: Optional[List[str]] = None - -@router.get( - "/collections/{collection_id}/items/{item_id}/download", +@router.api_route( + methods=["GET", "HEAD"], + path="/collections/{collection_id}/items/{item_id}/download", tags=["Data"], include_in_schema=False, ) def stac_collections_item_download( collection_id: str, item_id: str, request: Request -) -> StreamingResponse: +) -> StarletteResponse: """STAC collection item download""" - logger.debug(f"URL: {request.url}") + logger.debug("URL: %s", request.url) arguments = dict(request.query_params) provider = arguments.pop("provider", None) - return download_stac_item_by_id_stream( - catalogs=[collection_id], item_id=item_id, provider=provider, **arguments + return download_stac_item( + request=request, + catalogs=[collection_id], + item_id=item_id, + provider=provider, + **arguments, ) -@router.get( - "/collections/{collection_id}/items/{item_id}/download/{asset_filter}", +@router.api_route( + methods=["GET", "HEAD"], + path="/collections/{collection_id}/items/{item_id}/download/{asset}", tags=["Data"], include_in_schema=False, ) def stac_collections_item_download_asset( - collection_id, item_id, asset_filter, request: Request + collection_id: str, item_id: str, asset: str, request: Request ): """STAC collection item asset download""" - logger.debug(f"URL: {request.url}") + logger.debug("URL: %s", request.url) arguments = dict(request.query_params) provider = arguments.pop("provider", None) - return download_stac_item_by_id_stream( + return download_stac_item( + request=request, catalogs=[collection_id], item_id=item_id, provider=provider, - asset=asset_filter, - **arguments, + asset=asset, ) -@router.get( - "/collections/{collection_id}/items/{item_id}", +@router.api_route( + methods=["GET", "HEAD"], + path="/collections/{collection_id}/items/{item_id}", tags=["Data"], include_in_schema=False, ) -def stac_collections_item(collection_id: str, item_id: str, request: Request) -> Any: +def stac_collections_item( + collection_id: str, item_id: str, request: Request, provider: Optional[str] = None +) -> ORJSONResponse: """STAC collection item by id""" - logger.debug(f"URL: {request.url}") - url = request.state.url - url_root = request.state.url_root + logger.debug("URL: %s", request.url) - arguments = dict(request.query_params) - provider = arguments.pop("provider", None) - - response = get_stac_item_by_id( - url=url, - item_id=item_id, - root=url_root, - catalogs=[collection_id], - provider=provider, - **arguments, + search_request = SearchPostRequest( + provider=provider, ids=[item_id], collections=[collection_id], limit=1 ) - if response: - return jsonable_encoder(response) - else: + item_collection = search_stac_items(request, search_request) + + if not item_collection["features"]: raise HTTPException( status_code=404, - detail="No item found matching `{}` id in collection `{}`".format( - item_id, collection_id - ), + detail=f"Item {item_id} in Collection {collection_id} does not exist.", ) + return ORJSONResponse(item_collection["features"][0]) -@router.get( - "/collections/{collection_id}/items", + +@router.api_route( + methods=["GET", "HEAD"], + path="/collections/{collection_id}/items", tags=["Data"], include_in_schema=False, ) -def stac_collections_items(collection_id: str, request: Request) -> Any: - """STAC collections items""" - logger.debug(f"URL: {request.url}") - url = request.state.url - url_root = request.state.url_root - - arguments = dict(request.query_params) - provider = arguments.pop("provider", None) +def stac_collections_items( + collection_id: str, + request: Request, + provider: Optional[str] = None, + bbox: Optional[str] = None, + datetime: Optional[str] = None, + limit: Optional[int] = None, + query: Optional[str] = None, + page: Optional[int] = None, + sortby: Optional[str] = None, + filter: Optional[str] = None, + filter_lang: Optional[str] = "cql2-text", + crunch: Optional[str] = None, +) -> ORJSONResponse: + """Fetch collection's features""" - response = search_stac_items( - url=url, - arguments=arguments, - root=url_root, + return get_search( + request=request, provider=provider, - catalogs=[collection_id], + collections=collection_id, + bbox=bbox, + datetime=datetime, + limit=limit, + query=query, + page=page, + sortby=sortby, + filter=filter, + filter_lang=filter_lang, + crunch=crunch, ) - return jsonable_encoder(response) -@router.get( - "/collections/{collection_id}/queryables", +@router.api_route( + methods=["GET", "HEAD"], + path="/collections/{collection_id}/queryables", tags=["Capabilities"], include_in_schema=False, response_model_exclude_none=True, ) -def list_collection_queryables( - request: Request, collection_id: str, provider: Optional[str] = None -) -> Any: +async def list_collection_queryables( + request: Request, + collection_id: str, +) -> ORJSONResponse: """Returns the list of queryable properties for a specific collection. This endpoint provides a list of properties that can be used as filters when querying @@ -460,118 +522,117 @@ def list_collection_queryables( :type request: fastapi.Request :param collection_id: The identifier of the collection for which to retrieve queryable properties. :type collection_id: str - :param provider: (optional) The provider for which to retrieve additional properties. - :type provider: str :returns: A json object containing the list of available queryable properties for the specified collection. :rtype: Any """ logger.debug(f"URL: {request.url}") - query_params = request.query_params.items() - additional_params = dict(query_params) - additional_params.pop("provider", None) - - queryables = StacQueryables(q_id=request.state.url, additional_properties=False) + additional_params = dict(request.query_params) + provider = additional_params.pop("provider", None) - collection_queryables = fetch_collection_queryable_properties( - collection_id, provider, **additional_params + queryables = await get_queryables( + request, + QueryablesGetParams(collection=collection_id, **additional_params), + provider=provider, ) - for key, collection_queryable in collection_queryables.items(): - queryables[key] = collection_queryable - queryables.properties.pop("collections") - return jsonable_encoder(queryables) + return ORJSONResponse(queryables) -@router.get( - "/collections/{collection_id}", +@router.api_route( + methods=["GET", "HEAD"], + path="/collections/{collection_id}", tags=["Capabilities"], include_in_schema=False, ) -def collection_by_id(collection_id: str, request: Request) -> Any: +async def collection_by_id( + collection_id: str, request: Request, provider: Optional[str] = None +) -> ORJSONResponse: """STAC collection by id""" - logger.debug(f"URL: {request.url}") - url = request.state.url_root + "/collections" - url_root = request.state.url_root + logger.debug("URL: %s", request.url) - arguments = dict(request.query_params) - provider = arguments.pop("provider", None) - - response = get_stac_collection_by_id( - url=url, - root=url_root, + response = await get_collection( + request=request, collection_id=collection_id, provider=provider, ) - return jsonable_encoder(response) + return ORJSONResponse(response) -@router.get( - "/collections", +@router.api_route( + methods=["GET", "HEAD"], + path="/collections", tags=["Capabilities"], include_in_schema=False, ) -def collections(request: Request) -> Any: +async def collections( + request: Request, + provider: Optional[str] = None, + q: Optional[str] = None, + platform: Optional[str] = None, + instrument: Optional[str] = None, + constellation: Optional[str] = None, + datetime: Optional[str] = None, +) -> ORJSONResponse: """STAC collections - Can be filtered using parameters: instrument, platform, platformSerialIdentifier, sensorType, processingLevel + Can be filtered using parameters: instrument, platform, platformSerialIdentifier, sensorType, + processingLevel """ - logger.debug(f"URL: {request.url}") - url = request.state.url - url_root = request.state.url_root + logger.debug("URL: %s", request.url) - arguments = dict(request.query_params) - provider = arguments.pop("provider", None) - - response = get_stac_collections( - url=url, - root=url_root, - arguments=arguments, - provider=provider, + collections = await all_collections( + request, provider, q, platform, instrument, constellation, datetime ) + return ORJSONResponse(collections) - return jsonable_encoder(response) - -@router.get( - "/catalogs/{catalogs:path}/items/{item_id}/download", +@router.api_route( + methods=["GET", "HEAD"], + path="/catalogs/{catalogs:path}/items/{item_id}/download", tags=["Data"], include_in_schema=False, ) def stac_catalogs_item_download( catalogs: str, item_id: str, request: Request -) -> StreamingResponse: +) -> StarletteResponse: """STAC Catalog item download""" - logger.debug(f"URL: {request.url}") + logger.debug("URL: %s", request.url) arguments = dict(request.query_params) provider = arguments.pop("provider", None) list_catalog = catalogs.strip("/").split("/") - return download_stac_item_by_id_stream( - catalogs=list_catalog, item_id=item_id, provider=provider, **arguments + return download_stac_item( + request=request, + catalogs=list_catalog, + item_id=item_id, + provider=provider, + **arguments, ) -@router.get( - "/catalogs/{catalogs:path}/items/{item_id}/download/{asset_filter}", +@router.api_route( + methods=["GET", "HEAD"], + path="/catalogs/{catalogs:path}/items/{item_id}/download/{asset_filter}", tags=["Data"], include_in_schema=False, ) def stac_catalogs_item_download_asset( - catalogs, item_id, asset_filter, request: Request + catalogs: str, item_id: str, asset_filter: str, request: Request ): """STAC Catalog item asset download""" - logger.debug(f"URL: {request.url}") + logger.debug("URL: %s", request.url) arguments = dict(request.query_params) provider = arguments.pop("provider", None) - catalogs = catalogs.strip("/").split("/") + list_catalog = catalogs.strip("/").split("/") - return download_stac_item_by_id_stream( - catalogs=catalogs, + return download_stac_item( + request, + catalogs=list_catalog, item_id=item_id, provider=provider, asset=asset_filter, @@ -579,99 +640,116 @@ def stac_catalogs_item_download_asset( ) -@router.get( - "/catalogs/{catalogs:path}/items/{item_id}", +@router.api_route( + methods=["GET", "HEAD"], + path="/catalogs/{catalogs:path}/items/{item_id}", tags=["Data"], include_in_schema=False, ) -def stac_catalogs_item(catalogs: str, item_id: str, request: Request): +def stac_catalogs_item( + catalogs: str, item_id: str, request: Request, provider: Optional[str] = None +): """Fetch catalog's single features.""" - logger.debug(f"URL: {request.url}") - url = request.state.url - url_root = request.state.url_root - - arguments = dict(request.query_params) - provider = arguments.pop("provider", None) + logger.debug("URL: %s", request.url) list_catalog = catalogs.strip("/").split("/") - response = get_stac_item_by_id( - url=url, - item_id=item_id, - root=url_root, - catalogs=list_catalog, - provider=provider, - **arguments, - ) - if response: - return jsonable_encoder(response) - else: + search_request = SearchPostRequest(provider=provider, ids=[item_id], limit=1) + + item_collection = search_stac_items(request, search_request, catalogs=list_catalog) + + if not item_collection["features"]: raise HTTPException( status_code=404, - detail="No item found matching `{}` id in catalog `{}`".format( - item_id, catalogs - ), + detail=f"Item {item_id} in Catalog {catalogs} does not exist.", ) + return ORJSONResponse(item_collection["features"][0]) -@router.get( - "/catalogs/{catalogs:path}/items", + +@router.api_route( + methods=["GET", "HEAD"], + path="/catalogs/{catalogs:path}/items", tags=["Data"], include_in_schema=False, ) -def stac_catalogs_items(catalogs: str, request: Request) -> Any: - """Fetch catalog's features - '""" - logger.debug(f"URL: {request.url}") - url = request.state.url - url_root = request.state.url_root +def stac_catalogs_items( + catalogs: str, + request: Request, + provider: Optional[str] = None, + bbox: Optional[str] = None, + datetime: Optional[str] = None, + limit: Optional[int] = None, + page: Optional[int] = None, + sortby: Optional[str] = None, + crunch: Optional[str] = None, +) -> ORJSONResponse: + """Fetch catalog's features""" + logger.debug("URL: %s", request.state.url) - arguments = dict(request.query_params) - provider = arguments.pop("provider", None) + base_args = { + "provider": provider, + "datetime": datetime, + "bbox": str2list(bbox), + "limit": limit, + "page": page, + "sortby": sortby2list(sortby), + "crunch": crunch, + } + + clean = {k: v for k, v in base_args.items() if v is not None and v != []} list_catalog = catalogs.strip("/").split("/") + try: + search_request = SearchPostRequest.model_validate(clean) + except pydanticValidationError as e: + raise HTTPException(status_code=400, detail=format_pydantic_error(e)) from e + response = search_stac_items( - url=url, - arguments=arguments, - root=url_root, + request=request, + search_request=search_request, catalogs=list_catalog, - provider=provider, ) - return jsonable_encoder(response) + return ORJSONResponse(response) -@router.get( - "/catalogs/{catalogs:path}", +@router.api_route( + methods=["GET", "HEAD"], + path="/catalogs/{catalogs:path}", tags=["Capabilities"], include_in_schema=False, ) -def stac_catalogs(catalogs: str, request: Request) -> Any: +async def stac_catalogs( + catalogs: str, request: Request, provider: Optional[str] = None +) -> ORJSONResponse: """Describe the given catalog and list available sub-catalogs""" - logger.debug(f"URL: {request.url}") - url = request.state.url - url_root = request.state.url_root + logger.debug("URL: %s", request.url) - arguments = dict(request.query_params) - provider = arguments.pop("provider", None) + if not catalogs: + raise HTTPException( + status_code=404, + detail="Not found", + ) list_catalog = catalogs.strip("/").split("/") - response = get_stac_catalogs( - url=url, - root=url_root, - catalogs=list_catalog, + response = await get_stac_catalogs( + request=request, + url=request.state.url, + catalogs=tuple(list_catalog), provider=provider, ) - return jsonable_encoder(response) + return ORJSONResponse(response) -@router.get( - "/queryables", +@router.api_route( + methods=["GET", "HEAD"], + path="/queryables", tags=["Capabilities"], response_model_exclude_none=True, include_in_schema=False, ) -def list_queryables(request: Request, provider: Optional[str] = None) -> Any: +async def list_queryables(request: Request) -> ORJSONResponse: """Returns the list of terms available for use when writing filter expressions. This endpoint provides a list of terms that can be used as filters when querying @@ -684,57 +762,118 @@ def list_queryables(request: Request, provider: Optional[str] = None) -> Any: :rtype: Any """ logger.debug(f"URL: {request.url}") - query_params = request.query_params.items() - additional_params = dict(query_params) - additional_params.pop("provider", None) - queryables = StacQueryables(q_id=request.state.url) - if provider: - queryables.properties.update( - fetch_collection_queryable_properties(None, provider, **additional_params) - ) + additional_params = dict(request.query_params.items()) + provider = additional_params.pop("provider", None) + queryables = await get_queryables( + request, QueryablesGetParams(**additional_params), provider=provider + ) - return jsonable_encoder(queryables) + return ORJSONResponse(queryables) -@router.get( - "/search", +@router.api_route( + methods=["GET", "HEAD"], + path="/search", tags=["STAC"], include_in_schema=False, ) -@router.post( - "/search", +def get_search( + request: Request, + provider: Optional[str] = None, + collections: Optional[str] = None, + ids: Optional[str] = None, + bbox: Optional[str] = None, + datetime: Optional[str] = None, + intersects: Optional[str] = None, + limit: Optional[int] = None, + query: Optional[str] = None, + page: Optional[int] = None, + sortby: Optional[str] = None, + filter: Optional[str] = None, # pylint: disable=redefined-builtin + filter_lang: Optional[str] = "cql2-text", + crunch: Optional[str] = None, +) -> ORJSONResponse: + """Handler for GET /search""" + logger.debug("URL: %s", request.state.url) + + query_params = str(request.query_params) + + # Kludgy fix because using factory does not allow alias for filter-lang + if filter_lang is None: + match = re.search(r"filter-lang=([a-z0-9-]+)", query_params, re.IGNORECASE) + if match: + filter_lang = match.group(1) + + base_args = { + "provider": provider, + "collections": str2list(collections), + "ids": str2list(ids), + "datetime": datetime, + "bbox": str2list(bbox), + "intersects": str2json("intersects", intersects), + "limit": limit, + "query": str2json("query", query), + "page": page, + "sortby": sortby2list(sortby), + "crunch": crunch, + } + + if filter: + if filter_lang == "cql2-text": + ast = parse_cql2_text(filter) + base_args["filter"] = str2json("filter", to_cql2(ast)) # type: ignore + base_args["filter-lang"] = "cql2-json" + elif filter_lang == "cql-json": + base_args["filter"] = str2json(filter) + + clean = {k: v for k, v in base_args.items() if v is not None and v != []} + + try: + search_request = SearchPostRequest.model_validate(clean) + except pydanticValidationError as e: + raise HTTPException(status_code=400, detail=format_pydantic_error(e)) from e + + response = search_stac_items( + request=request, + search_request=search_request, + ) + return ORJSONResponse(content=response, media_type="application/json") + + +@router.api_route( + methods=["POST", "HEAD"], + path="/search", tags=["STAC"], include_in_schema=False, ) -def stac_search( - request: Request, search_body: Optional[SearchBody] = None -) -> ORJSONResponse: - """STAC collections items""" - logger.debug(f"URL: {request.url}") - logger.debug(f"Body: {search_body}") +async def post_search(request: Request) -> ORJSONResponse: + """STAC post search""" + logger.debug("URL: %s", request.url) - url = request.state.url - url_root = request.state.url_root + content_type = request.headers.get("Content-Type") - if search_body is None: - body = {} - else: - body = vars(search_body) + if content_type is None: + raise HTTPException(status_code=400, detail="No Content-Type provided") + if content_type != "application/json": + raise HTTPException(status_code=400, detail="Content-Type not supported") - arguments = dict(request.query_params, **body) - provider = arguments.pop("provider", None) + try: + payload = await request.json() + except JSONDecodeError as e: + raise HTTPException(status_code=400, detail="Invalid JSON data") from e + + try: + search_request = SearchPostRequest.model_validate(payload) + except pydanticValidationError as e: + raise HTTPException(status_code=400, detail=format_pydantic_error(e)) from e + + logger.debug("Body: %s", search_request.model_dump(exclude_none=True)) response = search_stac_items( - url=url, - arguments=arguments, - root=url_root, - provider=provider, - method=request.method, - ) - resp = ORJSONResponse( - content=response, status_code=200, media_type="application/json" + request=request, + search_request=search_request, ) - return resp + return ORJSONResponse(content=response, media_type="application/json") app.include_router(router) diff --git a/eodag/rest/stac.py b/eodag/rest/stac.py index 4c6275928..5f042a720 100644 --- a/eodag/rest/stac.py +++ b/eodag/rest/stac.py @@ -21,14 +21,15 @@ import os from collections import defaultdict from datetime import datetime, timezone -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, cast -from urllib.parse import parse_qs, urlencode, urlparse +from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Tuple, cast +from urllib.parse import parse_qs, urlencode, urlparse, urlunparse import dateutil.parser import geojson import shapefile from dateutil import tz from dateutil.relativedelta import relativedelta +from jsonpath_ng.jsonpath import Child from shapely.geometry import shape from shapely.geometry.base import BaseGeometry from shapely.ops import unary_union @@ -38,10 +39,14 @@ format_metadata, get_metadata_path, ) +from eodag.rest.config import Settings +from eodag.rest.utils.rfc3339 import str_to_interval from eodag.utils import ( + DEFAULT_MISSION_START_DATE, deepcopy, dict_items_recursive_apply, format_dict_items, + guess_file_type, jsonpath_parse_dict_items, string_to_jsonpath, update_nested_dict, @@ -50,8 +55,11 @@ from eodag.utils.exceptions import ( NoMatchingProductType, NotAvailableError, + RequestError, + TimeOutError, ValidationError, ) +from eodag.utils.requests import fetch_json if TYPE_CHECKING: from eodag.api.core import EODataAccessGateway @@ -61,9 +69,38 @@ logger = logging.getLogger("eodag.rest.stac") -DEFAULT_MISSION_START_DATE = "2015-01-01T00:00:00Z" STAC_CATALOGS_PREFIX = "catalogs" +# fields not to put in item properties +COLLECTION_PROPERTIES = [ + "abstract", + "instrument", + "platform", + "platformSerialIdentifier", + "processingLevel", + "sensorType", + "md5", + "license", + "title", + "missionStartDate", + "missionEndDate", + "keywords", + "stacCollection", +] +IGNORED_ITEM_PROPERTIES = [ + "_id", + "id", + "keyword", + "quicklook", + "thumbnail", + "downloadLink", + "orderLink", + "_dc_qs", + "qs", + "defaultGeometry", + "_date", +] + class StacCommon: """Stac common object @@ -113,14 +150,15 @@ def update_data(self, data: Dict[str, Any]) -> None: for i, bbox in enumerate(self.data["extent"]["spatial"]["bbox"]): self.data["extent"]["spatial"]["bbox"][i] = [float(x) for x in bbox] # "None" values to None - self.data = dict_items_recursive_apply( - self.data, lambda k, v: None if v == "None" else v + apply_method: Callable[[str, str], Optional[str]] = lambda _, v: ( + None if v == "None" else v ) - + self.data = dict_items_recursive_apply(self.data, apply_method) # ids and titles as str - self.data = dict_items_recursive_apply( - self.data, lambda k, v: str(v) if k in ["title", "id"] else v + apply_method: Callable[[str, str], Optional[str]] = lambda k, v: ( + str(v) if k in ["title", "id"] else v ) + self.data = dict_items_recursive_apply(self.data, apply_method) # empty stac_extensions: "" to [] if not self.data.get("stac_extensions", True): @@ -153,15 +191,20 @@ def get_stac_extension( } return format_dict_items(extension_model, **format_args) - def as_dict(self) -> Dict[str, Any]: - """Returns object data as dictionnary - - :returns: STAC data dictionnary - :rtype: dict - """ - return geojson.loads(geojson.dumps(self.data)) - - __geo_interface__ = property(as_dict) + def get_provider_dict(self, provider: str) -> Dict[str, Any]: + """Generate STAC provider dict""" + provider_config = next( + p + for p in self.eodag_api.providers_config.values() + if provider in [p.name, getattr(p, "group", None)] + ) + return { + "name": getattr(provider_config, "group", provider_config.name), + "description": getattr(provider_config, "description", None), + "roles": getattr(provider_config, "roles", None), + "url": getattr(provider_config, "url", None), + "priority": getattr(provider_config, "priority", None), + } class StacItem(StacCommon): @@ -213,7 +256,6 @@ def __get_item_list( item_model = self.__filter_item_model_properties( self.stac_config["item"], str(search_results[0].product_type) ) - provider_model = deepcopy(self.stac_config["provider"]) # check if some items need to be converted need_conversion: Dict[str, Any] = {} @@ -229,77 +271,62 @@ def __get_item_list( k, item_model["properties"][k] ) + item_props = [ + p.right.fields[0] + for p in item_model["properties"].values() + if isinstance(p, Child) + ] + ignored_props = COLLECTION_PROPERTIES + item_props + IGNORED_ITEM_PROPERTIES + item_list: List[Dict[str, Any]] = [] for product in search_results: - # parse jsonpath - provider_dict = jsonpath_parse_dict_items( - provider_model, - { - "provider": self.eodag_api.providers_config[ - product.provider - ].__dict__ - }, - ) - product_dict = deepcopy(product.__dict__) - if isinstance(product.assets, dict): - product_dict["assets"] = product.assets - else: - product_dict["assets"] = product.assets.as_dict() - product_item = jsonpath_parse_dict_items( + product_item: Dict[str, Any] = jsonpath_parse_dict_items( item_model, { "product": product_dict, - "providers": [provider_dict], + "providers": [self.get_provider_dict(product.provider)], }, ) + # add additional item props + for p in set(product.properties) - set(ignored_props): + prefix = getattr( + self.eodag_api.providers_config[product.provider], + "group", + product.provider, + ) + key = p if ":" in p else f"{prefix}:{p}" + product_item["properties"][key] = product.properties[p] + # parse download link - url_parts = urlparse(str(product_item["assets"]["downloadLink"]["href"])) + downloadlink_href = ( + f"{catalog['url']}/items/{product.properties['id']}/download" + ) + _dc_qs = product.properties.get("_dc_qs") + url_parts = urlparse(downloadlink_href) query_dict = parse_qs(url_parts.query) without_arg_url = ( f"{url_parts.scheme}://{url_parts.netloc}{url_parts.path}" if url_parts.scheme else f"{url_parts.netloc}{url_parts.path}" ) - # add provider to query-args - if self.provider: - query_dict.update(provider=[self.provider]) + p_config = self.eodag_api.providers_config[product.provider] + query_dict.update(provider=[getattr(p_config, "group", p_config.name)]) # add datacube query-string to query-args - _dc_qs = product_item["assets"]["downloadLink"].pop("_dc_qs", None) if _dc_qs: - query_dict.update(_dc_qs=_dc_qs) - - # update download link with up-to-date query-args + query_dict.update(_dc_qs=[_dc_qs]) if query_dict: - product_item["assets"]["downloadLink"][ - "href" - ] = f"{without_arg_url}?{urlencode(query_dict, doseq=True)}" + downloadlink_href = ( + f"{without_arg_url}?{urlencode(query_dict, doseq=True)}" + ) - # move origin asset urls to alternate links and replace with eodag-server ones - origin_assets = product_item["assets"].pop("origin_assets", {}) - if getattr(product, "assets", False): - # replace origin asset urls with eodag-server ones - for asset_key, asset_value in origin_assets.items(): - # use origin asset as default - product_item["assets"][asset_key] = asset_value - # origin assets as alternate link - product_item["assets"][asset_key]["alternate"] = { - "origin": { - "title": "Origin asset link", - "href": asset_value["href"], - } - } - # use server-mode assets download links - asset_value["href"] = without_arg_url - if query_dict: - product_item["assets"][asset_key][ - "href" - ] += f"/{asset_key}?{urlencode(query_dict, doseq=True)}" - else: - product_item["assets"][asset_key]["href"] += f"/{asset_key}" + # generate STAC assets + product_item["assets"] = self._get_assets( + product, downloadlink_href, without_arg_url, query_dict, _dc_qs + ) # apply conversion if needed for prop_key, prop_val in need_conversion.items(): @@ -321,16 +348,19 @@ def __get_item_list( format_args = deepcopy(self.stac_config) format_args["catalog"] = catalog format_args["item"] = product_item - product_item: Dict[str, Any] = format_dict_items( - product_item, **format_args - ) + product_item = format_dict_items(product_item, **format_args) product_item["bbox"] = [float(i) for i in product_item["bbox"]] + # transform shapely geometry to geojson + product_item["geometry"] = geojson.loads( + geojson.dumps(product_item["geometry"]) + ) + # remove empty properties product_item = self.__filter_item_properties_values(product_item) # update item link with datacube query-string - if _dc_qs: + if _dc_qs or self.provider: url_parts = urlparse(str(product_item["links"][0]["href"])) without_arg_url = ( f"{url_parts.scheme}://{url_parts.netloc}{url_parts.path}" @@ -345,8 +375,91 @@ def __get_item_list( return item_list + def _get_assets( + self, + product: EOProduct, + downloadlink_href: str, + without_arg_url: str, + query_dict: Optional[Dict[str, Any]] = None, + _dc_qs: Optional[str] = None, + ) -> Dict[str, Any]: + assets: Dict[str, Any] = {} + settings = Settings.from_environment() + + if _dc_qs: + parsed = urlparse(product.remote_location) + fragments = parsed.fragment.split("?") + parsed = parsed._replace(fragment=f"{fragments[0]}?_dc_qs={_dc_qs}") + origin_href = urlunparse(parsed) + else: + origin_href = product.remote_location + + # update download link with up-to-date query-args + assets["downloadLink"] = { + "title": "Download link", + "href": downloadlink_href, + "type": "application/zip", + } + + if not origin_href.startswith(tuple(settings.origin_url_blacklist)): + assets["downloadLink"]["alternate"] = { + "origin": { + "title": "Origin asset link", + "href": origin_href, + } + } + + if "storageStatus" in product.properties: + assets["downloadLink"]["storage:tier"] = product.properties["storageStatus"] + + # move origin asset urls to alternate links and replace with eodag-server ones + if product.assets: + origin_assets = product.assets.as_dict() + # replace origin asset urls with eodag-server ones + for asset_key, asset_value in origin_assets.items(): + # use origin asset as default + assets[asset_key] = asset_value + # origin assets as alternate link + if not asset_value["href"].startswith( + tuple(settings.origin_url_blacklist) + ): + assets[asset_key]["alternate"] = { + "origin": { + "title": "Origin asset link", + "href": asset_value["href"], + } + } + # use server-mode assets download links + asset_value["href"] = without_arg_url + if query_dict: + assets[asset_key][ + "href" + ] += f"/{asset_key}?{urlencode(query_dict, doseq=True)}" + else: + assets[asset_key]["href"] += f"/{asset_key}" + if asset_type := asset_value.get("type", None): + assets[asset_key]["type"] = asset_type + if origin := assets[asset_key].get("alternate", {}).get("origin"): + origin["type"] = asset_type + + if thumbnail_url := product.properties.get( + "quicklook", product.properties.get("thumbnail", None) + ): + assets["thumbnail"] = { + "title": "Thumbnail", + "href": thumbnail_url, + "role": "thumbnail", + } + if mime_type := guess_file_type(thumbnail_url): + assets["thumbnail"]["type"] = mime_type + return assets + def get_stac_items( - self, search_results: SearchResult, catalog: Dict[str, Any] + self, + search_results: SearchResult, + total: int, + catalog: Dict[str, Any], + next_link: Optional[Dict[str, Any]], ) -> Dict[str, Any]: """Build STAC items from EODAG search results @@ -359,36 +472,30 @@ def get_stac_items( """ items_model = deepcopy(self.stac_config["items"]) - search_results.numberMatched = search_results.properties["totalResults"] - search_results.numberReturned = len(search_results) - - # next page link if "?" in self.url: # search endpoint: use page url as self link for i, _ in enumerate(items_model["links"]): if items_model["links"][i]["rel"] == "self": items_model["links"][i]["href"] = catalog["url"] - search_results.timeStamp = ( - datetime.now(timezone.utc).isoformat().replace("+00:00", "") + "Z" - ) + timestamp = datetime.now(timezone.utc).isoformat().replace("+00:00", "Z") # parse jsonpath items = jsonpath_parse_dict_items( - items_model, {"search_results": search_results.__dict__} + items_model, + { + "numberMatched": total, + "numberReturned": len(search_results), + "timeStamp": timestamp, + }, ) # parse f-strings format_args = deepcopy(self.stac_config) format_args["catalog"] = catalog items = format_dict_items(items, **format_args) - # last page: remove next page link - if ( - search_results.properties["itemsPerPage"] - * search_results.properties["page"] - >= search_results.properties["totalResults"] - ): - items["links"] = [link for link in items["links"] if link["rel"] != "next"] + if next_link: + items["links"].append(next_link) # provide static catalog to build features if "search?" in catalog["url"]: @@ -402,7 +509,7 @@ def get_stac_items( items["features"] = self.__get_item_list(search_results, catalog) self.update_data(items) - return geojson.loads(geojson.dumps(self.data)) + return self.data def __filter_item_model_properties( self, item_model: Dict[str, Any], product_type: str @@ -427,12 +534,10 @@ def __filter_item_model_properties( if pt["ID"] == product_type or ("alias" in pt and pt["alias"] == product_type) ][0] - except IndexError: + except IndexError as e: raise NoMatchingProductType( - "Product type {} not available for {}".format( - product_type, self.provider - ) - ) + f"Product type {product_type} not available for {self.provider}" + ) from e result_item_model = deepcopy(item_model) result_item_model["stac_extensions"] = list( @@ -521,12 +626,6 @@ def get_stac_item_from_product(self, product: EOProduct) -> Dict[str, Any]: item_model = self.__filter_item_model_properties( self.stac_config["item"], product_type ) - provider_model = deepcopy(self.stac_config["provider"]) - - provider_dict = jsonpath_parse_dict_items( - provider_model, - {"provider": self.eodag_api.providers_config[product.provider].__dict__}, - ) catalog = StacCatalog( url=self.url.split("/items")[0], @@ -545,14 +644,15 @@ def get_stac_item_from_product(self, product: EOProduct) -> Dict[str, Any]: item_model, { "product": product_dict, - "providers": provider_dict, + "providers": [self.get_provider_dict(product.provider)], }, ) # parse f-strings format_args = deepcopy(self.stac_config) - format_args["catalog"] = dict( - catalog.as_dict(), **{"url": catalog.url, "root": catalog.root} - ) + format_args["catalog"] = { + **catalog.data, + **{"url": catalog.url, "root": catalog.root}, + } format_args["item"] = product_item product_item = format_dict_items(product_item, **format_args) product_item["bbox"] = [float(i) for i in product_item["bbox"]] @@ -561,7 +661,7 @@ def get_stac_item_from_product(self, product: EOProduct) -> Dict[str, Any]: product_item = self.__filter_item_properties_values(product_item) self.update_data(product_item) - return self.as_dict() + return self.data class StacCollection(StacCommon): @@ -579,6 +679,34 @@ class StacCollection(StacCommon): :type root: str """ + # External STAC collections + ext_stac_collections: Dict[str, Dict[str, Any]] = dict() + + @classmethod + def fetch_external_stac_collections(cls, eodag_api: EODataAccessGateway) -> None: + """Load external STAC collections + + :param eodag_api: EODAG python API instance + :type eodag_api: :class:`eodag.api.core.EODataAccessGateway` + """ + list_product_types = eodag_api.list_product_types(fetch_providers=False) + for product_type in list_product_types: + ext_stac_collection_path = product_type.get("stacCollection") + if not ext_stac_collection_path: + continue + logger.info(f"Fetching external STAC collection for {product_type['ID']}") + + try: + ext_stac_collection = fetch_json(ext_stac_collection_path) + except (RequestError, TimeOutError) as e: + logger.debug(e) + logger.warning( + f"Could not read remote external STAC collection from {ext_stac_collection_path}", + ) + ext_stac_collection = {} + + cls.ext_stac_collections[product_type["ID"]] = ext_stac_collection + def __init__( self, url: str, @@ -595,145 +723,161 @@ def __init__( root=root, ) - def __get_product_types( - self, filters: Optional[Dict[str, Any]] = None - ) -> List[Dict[str, Any]]: - """Returns a list of supported product types + def __list_product_type_providers(self, product_type: Dict[str, Any]) -> List[str]: + """Retrieve a list of providers for a given product type. - :param filters: (optional) Additional filters for product types search - :type filters: dict - :returns: List of corresponding product types + :param product_type: Dictionary containing information about the product type. + :type product_type: dict + :return: A list of provider names. :rtype: list """ - if filters is None: - filters = {} - try: - guessed_product_types = self.eodag_api.guess_product_type(**filters) - except NoMatchingProductType: - guessed_product_types = [] - if guessed_product_types: - product_types = [ - pt - for pt in self.eodag_api.list_product_types(provider=self.provider) - if pt["ID"] in guessed_product_types - ] - else: - product_types = self.eodag_api.list_product_types(provider=self.provider) - return product_types + if self.provider: + return [self.provider] - def __get_collection_list( - self, filters: Optional[Dict[str, Any]] = None - ) -> List[Dict[str, Any]]: - """Build STAC collections list + return [ + plugin.provider + for plugin in self.eodag_api._plugins_manager.get_search_plugins( + product_type=product_type.get("_id", product_type["ID"]) + ) + ] - :param filters: (optional) Additional filters for collections search - :type filters: dict - :returns: STAC collection dicts list - :rtype: list + def __generate_stac_collection( + self, collection_model: Any, product_type: Dict[str, Any] + ) -> Dict[str, Any]: + """Generate a STAC collection dictionary for a given product type. + + :param collection_model: The base model for the STAC collection. + :type collection_model: Any + :param product_type: Dictionary containing information about the product type. + :type product_type: dict + :return: A dictionary representing the STAC collection for the given product type. + :rtype: dict """ - collection_model = deepcopy(self.stac_config["collection"]) - provider_model = deepcopy(self.stac_config["provider"]) + providers = self.__list_product_type_providers(product_type) - product_types = self.__get_product_types(filters) + providers_dict: Dict[str, Dict[str, Any]] = {} + for provider in providers: + p_dict = self.get_provider_dict(provider) + providers_dict.setdefault(p_dict["name"], p_dict) + providers_list = list(providers_dict.values()) - collection_list: List[Dict[str, Any]] = [] - for product_type in product_types: - if self.provider: - providers = [self.provider] - else: - # get available providers for each product_type - providers = [ - plugin.provider - for plugin in self.eodag_api._plugins_manager.get_search_plugins( - product_type=( - product_type.get("_id", None) or product_type["ID"] - ) + # parse jsonpath + product_type_collection = jsonpath_parse_dict_items( + collection_model, + { + "product_type": product_type, + "providers": providers_list, + }, + ) + # override EODAG's collection with the external collection + ext_stac_collection = deepcopy( + self.ext_stac_collections.get(product_type["ID"], {}) + ) + + # update links (keep eodag links as defaults) + ext_stac_collection.setdefault("links", {}) + for link in product_type_collection["links"]: + ext_stac_collection["links"] = [ + x for x in ext_stac_collection["links"] if x["rel"] != link["rel"] + ] + ext_stac_collection["links"].append(link) + + # merge "keywords" lists + if "keywords" in ext_stac_collection: + try: + ext_stac_collection["keywords"] = [ + k + for k in set( + ext_stac_collection["keywords"] + + product_type_collection["keywords"] ) + if k is not None ] - providers_models: List[Dict[str, Any]] = [] - for provider in providers: - provider_m = jsonpath_parse_dict_items( - provider_model, - {"provider": self.eodag_api.providers_config[provider].__dict__}, + except TypeError as e: + logger.warning( + f"Could not merge keywords from external collection for {product_type['ID']}: {str(e)}" + ) + logger.debug( + f"External collection keywords: {str(ext_stac_collection['keywords'])}, ", + f"Product type keywords: {str(product_type_collection['keywords'])}", ) - providers_models.append(provider_m) - # parse jsonpath - product_type_collection = jsonpath_parse_dict_items( - collection_model, - { - "product_type": product_type, - "providers": providers_models, - }, - ) - # parse f-strings - format_args = deepcopy(self.stac_config) - format_args["collection"] = dict( - product_type_collection, - **{"url": f"{self.url}/{product_type['ID']}", "root": self.root}, - ) - product_type_collection = format_dict_items( - product_type_collection, **format_args - ) + # merge providers + if "providers" in ext_stac_collection: + ext_stac_collection["providers"] += product_type_collection["providers"] - collection_list.append(product_type_collection) + product_type_collection.update(ext_stac_collection) - return collection_list + # parse f-strings + format_args = deepcopy(self.stac_config) + format_args["collection"] = { + **product_type_collection, + **{ + "url": self.url + if self.url.endswith(product_type["ID"]) + else f"{self.url}/{product_type['ID']}", + "root": self.root, + }, + } + product_type_collection = format_dict_items( + product_type_collection, **format_args + ) - def get_collections( - self, filters: Optional[Dict[str, Any]] = None - ) -> Dict[str, Any]: - """Build STAC collections + return product_type_collection + + def get_collection_list( + self, + collection: Optional[str] = None, + q: Optional[str] = None, + platform: Optional[str] = None, + instrument: Optional[str] = None, + constellation: Optional[str] = None, + datetime: Optional[str] = None, + ) -> List[Dict[str, Any]]: + """Build STAC collections list :param filters: (optional) Additional filters for collections search :type filters: dict - :returns: Collections dictionnary - :rtype: dict + :returns: STAC collection dicts list + :rtype: list """ - collections = deepcopy(self.stac_config["collections"]) - collections["collections"] = self.__get_collection_list(filters) - - # # parse f-strings - format_args = deepcopy(self.stac_config) - format_args["collections"].update({"url": self.url, "root": self.root}) - - collections["links"] = [ - format_dict_items(link, **format_args) for link in collections["links"] - ] - - collections["links"] += [ - { - "rel": "child", - "title": collec["id"], - "href": [ - link["href"] for link in collec["links"] if link["rel"] == "self" - ][0], - } - for collec in collections["collections"] - ] - - self.update_data(collections) - return self.as_dict() + collection_model = deepcopy(self.stac_config["collection"]) - def get_collection_by_id(self, collection_id: str) -> Dict[str, Any]: - """Build STAC collection by its id + start, end = str_to_interval(datetime) - :param collection_id: Product type as collection ID - :type collection_id: str - :returns: Collection dictionary - :rtype: dict - """ - collection_list = self.__get_collection_list( - filters={"productType": collection_id} + all_pt = self.eodag_api.list_product_types( + provider=self.provider, fetch_providers=False ) - try: - collection = collection_list[0] - except IndexError: - raise NotAvailableError("%s collection not found" % collection_id) + if any((collection, q, platform, instrument, constellation, datetime)): + try: + guessed_product_types = self.eodag_api.guess_product_type( + free_text=q, + platformSerialIdentifier=platform, + instrument=instrument, + platform=constellation, + productType=collection, + missionStartDate=start.isoformat() if start else None, + missionEndDate=end.isoformat() if end else None, + ) + except NoMatchingProductType: + product_types = [] + else: + product_types = [ + pt for pt in all_pt if pt["ID"] in guessed_product_types + ] + else: + product_types = all_pt + + # list product types with all metadata using guessed ids + collection_list: List[Dict[str, Any]] = [] + for product_type in product_types: + stac_collection = self.__generate_stac_collection( + collection_model, product_type + ) + collection_list.append(stac_collection) - self.update_data(collection) - return self.as_dict() + return collection_list class StacCatalog(StacCommon): @@ -751,9 +895,6 @@ class StacCatalog(StacCommon): :type root: str :param catalogs: (optional) Catalogs list :type catalogs: list - :param fetch_providers: (optional) Whether to fetch providers for new product - types or not - :type fetch_providers: bool """ def __init__( @@ -763,8 +904,7 @@ def __init__( provider: Optional[str], eodag_api: EODataAccessGateway, root: str = "/", - catalogs: List[str] = [], - fetch_providers: bool = True, + catalogs: Optional[List[str]] = None, ) -> None: super(StacCatalog, self).__init__( url=url, @@ -791,7 +931,7 @@ def __init__( self.data["links"] += self.children # build catalog - self.__build_stac_catalog(catalogs, fetch_providers=fetch_providers) + self.__build_stac_catalog(catalogs) def __update_data_from_catalog_config(self, catalog_config: Dict[str, Any]) -> bool: """Updates configuration and data using given input catalog config @@ -817,40 +957,43 @@ def __update_data_from_catalog_config(self, catalog_config: Dict[str, Any]) -> b return True - def set_children(self, children: List[Dict[str, Any]] = []) -> bool: + def set_children(self, children: Optional[List[Dict[str, Any]]] = None) -> bool: """Set catalog children / links :param children: (optional) Children list :type children: list """ - self.children = children + self.children = children or [] self.data["links"] = [ link for link in self.data["links"] if link["rel"] != "child" ] - self.data["links"] += children + self.data["links"] += self.children return True def set_stac_product_type_by_id( - self, product_type: str, **kwargs: Any + self, product_type: str, **_: Any ) -> Dict[str, Any]: """Updates catalog with given product_type :param product_type: Product type :type product_type: str """ - collection = StacCollection( + collections = StacCollection( url=self.url, stac_config=self.stac_config, provider=self.provider, eodag_api=self.eodag_api, root=self.root, - ).get_collection_by_id(product_type) + ).get_collection_list(collection=product_type) + + if not collections: + raise NotAvailableError(f"Collection {product_type} does not exist.") cat_model = deepcopy(self.stac_config["catalogs"]["product_type"]["model"]) # parse f-strings format_args = deepcopy(self.stac_config) format_args["catalog"] = defaultdict(str, **self.data) - format_args["collection"] = collection + format_args["collection"] = collections[0] try: parsed_dict: Dict[str, Any] = format_dict_items(cat_model, **format_args) except Exception: @@ -860,13 +1003,13 @@ def set_stac_product_type_by_id( self.update_data(parsed_dict) # update search args - self.search_args.update({"product_type": product_type}) + self.search_args.update({"productType": product_type}) return parsed_dict # get / set dates filters ------------------------------------------------- - def get_stac_years_list(self, **kwargs: Any) -> List[int]: + def get_stac_years_list(self, **_: Any) -> List[int]: """Get catalog available years list :returns: Years list @@ -876,7 +1019,7 @@ def get_stac_years_list(self, **kwargs: Any) -> List[int]: return list(range(extent_date_min.year, extent_date_max.year + 1)) - def get_stac_months_list(self, **kwargs: Any) -> List[int]: + def get_stac_months_list(self, **_: Any) -> List[int]: """Get catalog available months list :returns: Months list @@ -891,7 +1034,7 @@ def get_stac_months_list(self, **kwargs: Any) -> List[int]: ) ) - def get_stac_days_list(self, **kwargs: Any) -> List[int]: + def get_stac_days_list(self, **_: Any) -> List[int]: """Get catalog available days list :returns: Days list @@ -905,7 +1048,7 @@ def get_stac_days_list(self, **kwargs: Any) -> List[int]: ) ) - def set_stac_year_by_id(self, year: str, **kwargs: Any) -> Dict[str, Any]: + def set_stac_year_by_id(self, year: str, **_: Any) -> Dict[str, Any]: """Updates and returns catalog with given year :param year: Year number @@ -916,12 +1059,12 @@ def set_stac_year_by_id(self, year: str, **kwargs: Any) -> Dict[str, Any]: extent_date_min, extent_date_max = self.get_datetime_extent() datetime_min = max( - [extent_date_min, dateutil.parser.parse("{}-01-01T00:00:00Z".format(year))] + [extent_date_min, dateutil.parser.parse(f"{year}-01-01T00:00:00Z")] ) datetime_max = min( [ extent_date_max, - dateutil.parser.parse("{}-01-01T00:00:00Z".format((year))) + dateutil.parser.parse(f"{year}-01-01T00:00:00Z") + relativedelta(years=1), ] ) @@ -932,7 +1075,7 @@ def set_stac_year_by_id(self, year: str, **kwargs: Any) -> Dict[str, Any]: return parsed_dict - def set_stac_month_by_id(self, month: str, **kwargs: Any) -> Dict[str, Any]: + def set_stac_month_by_id(self, month: str, **_: Any) -> Dict[str, Any]: """Updates and returns catalog with given month :param month: Month number @@ -946,13 +1089,13 @@ def set_stac_month_by_id(self, month: str, **kwargs: Any) -> Dict[str, Any]: datetime_min = max( [ extent_date_min, - dateutil.parser.parse("{}-{}-01T00:00:00Z".format(year, month)), + dateutil.parser.parse(f"{year}-{month}-01T00:00:00Z"), ] ) datetime_max = min( [ extent_date_max, - dateutil.parser.parse("{}-{}-01T00:00:00Z".format(year, month)) + dateutil.parser.parse(f"{year}-{month}-01T00:00:00Z") + relativedelta(months=1), ] ) @@ -963,7 +1106,7 @@ def set_stac_month_by_id(self, month: str, **kwargs: Any) -> Dict[str, Any]: return parsed_dict - def set_stac_day_by_id(self, day: str, **kwargs: Any) -> Dict[str, Any]: + def set_stac_day_by_id(self, day: str, **_: Any) -> Dict[str, Any]: """Updates and returns catalog with given day :param day: Day number @@ -978,13 +1121,13 @@ def set_stac_day_by_id(self, day: str, **kwargs: Any) -> Dict[str, Any]: datetime_min = max( [ extent_date_min, - dateutil.parser.parse("{}-{}-{}T00:00:00Z".format(year, month, day)), + dateutil.parser.parse(f"{year}-{month}-{day}T00:00:00Z"), ] ) datetime_max = min( [ extent_date_max, - dateutil.parser.parse("{}-{}-{}T00:00:00Z".format(year, month, day)) + dateutil.parser.parse(f"{year}-{month}-{day}T00:00:00Z") + relativedelta(days=1), ] ) @@ -1049,8 +1192,8 @@ def set_stac_date( "year": datetime_min.year, "month": datetime_min.month, "day": datetime_min.day, - "min": datetime_min.isoformat().replace("+00:00", "") + "Z", - "max": datetime_max.isoformat().replace("+00:00", "") + "Z", + "min": datetime_min.isoformat().replace("+00:00", "Z"), + "max": datetime_max.isoformat().replace("+00:00", "Z"), }, ) parsed_dict: Dict[str, Any] = format_dict_items(catalog_model, **format_args) @@ -1060,15 +1203,15 @@ def set_stac_date( # update search args self.search_args.update( { - "dtstart": datetime_min.isoformat().split("T")[0], - "dtend": datetime_max.isoformat().split("T")[0], + "start": datetime_min.isoformat().replace("+00:00", "Z"), + "end": datetime_max.isoformat().replace("+00:00", "Z"), } ) return parsed_dict # get / set cloud_cover filter -------------------------------------------- - def get_stac_cloud_covers_list(self, **kwargs: Any) -> List[int]: + def get_stac_cloud_covers_list(self, **_: Any) -> List[int]: """Get cloud_cover list :returns: cloud_cover list @@ -1076,9 +1219,7 @@ def get_stac_cloud_covers_list(self, **kwargs: Any) -> List[int]: """ return list(range(0, 101, 10)) - def set_stac_cloud_cover_by_id( - self, cloud_cover: str, **kwargs: Any - ) -> Dict[str, Any]: + def set_stac_cloud_cover_by_id(self, cloud_cover: str, **_: Any) -> Dict[str, Any]: """Updates and returns catalog with given max cloud_cover :param cloud_cover: Cloud_cover number @@ -1096,7 +1237,7 @@ def set_stac_cloud_cover_by_id( self.update_data(parsed_dict) # update search args - self.search_args.update({"query": {"eo:cloud_cover": {"lte": cloud_cover}}}) + self.search_args.update({"cloudCover": cloud_cover}) return parsed_dict @@ -1112,23 +1253,21 @@ def get_stac_location_list(self, catalog_name: str) -> List[str]: """ if catalog_name not in self.stac_config["catalogs"]: - logger.warning( - "no entry found for {} in location_config".format(catalog_name) - ) + logger.warning("no entry found for %s in location_config", catalog_name) return [] location_config = self.stac_config["catalogs"][catalog_name] for k in ["path", "attr"]: if k not in location_config.keys(): logger.warning( - "no {} key found for {} in location_config".format(k, catalog_name) + "no %s key found for %s in location_config", k, catalog_name ) return [] path = location_config["path"] attr = location_config["attr"] with shapefile.Reader(path) as shp: - countries_list: List[str] = [rec[attr] for rec in shp.records()] + countries_list: List[str] = [rec[attr] for rec in shp.records()] # type: ignore # remove duplicates countries_list = list(set(countries_list)) @@ -1153,7 +1292,7 @@ def set_stac_location_by_id( if location_list_cat_key not in self.stac_config["catalogs"]: logger.warning( - "no entry found for {}'s list in location_config".format(catalog_name) + "no entry found for %s's list in location_config", catalog_name ) return {} location_config = self.stac_config["catalogs"][location_list_cat_key] @@ -1161,9 +1300,7 @@ def set_stac_location_by_id( for k in ["path", "attr"]: if k not in location_config.keys(): logger.warning( - "no {} key found for {}'s list in location_config".format( - k, catalog_name - ) + "no %s key found for %s's list in location_config", k, catalog_name ) return {} path = location_config["path"] @@ -1176,9 +1313,9 @@ def set_stac_location_by_id( if shaperec.record.as_dict().get(attr, None) == location ] - if len(geom_hits) == 0: + if not geom_hits: logger.warning( - "no feature found in %s matching %s=%s" % (path, attr, location) + "no feature found in %s matching %s=%s", path, attr, location ) return {} @@ -1216,41 +1353,44 @@ def build_locations_config(self) -> Dict[str, str]: ) # set default child/parent for this location - parsed["location"]["parent_key"] = "{}_list".format(loc["name"]) + parsed["location"]["parent_key"] = f"{loc['name']}_list" - locations_config["{}_list".format(loc["name"])] = parsed["locations_list"] + locations_config[f"{loc['name']}_list"] = parsed["locations_list"] locations_config[loc["name"]] = parsed["location"] return locations_config - def __build_stac_catalog( - self, catalogs: List[str] = [], fetch_providers: bool = True - ) -> StacCatalog: + def __build_stac_catalog(self, catalogs: Optional[List[str]] = None) -> StacCatalog: """Build nested catalog from catalag list :param catalogs: (optional) Catalogs list :type catalogs: list - :param fetch_providers: (optional) Whether to fetch providers for new product - types or not - :type fetch_providers: bool :returns: This catalog obj :rtype: :class:`eodag.stac.StacCatalog` """ + settings = Settings.from_environment() + # update conf with user shp locations locations_config = self.build_locations_config() - self.stac_config["catalogs"] = dict( - deepcopy(self.stac_config["catalogs"]), **locations_config - ) + self.stac_config["catalogs"] = { + **deepcopy(self.stac_config["catalogs"]), + **locations_config, + } - if len(catalogs) == 0: + if not catalogs: # Build root catalog combined with landing page self.__update_data_from_catalog_config( { - "model": dict( - deepcopy(self.stac_config["landing_page"]), - **{"provider": self.provider}, - ) + "model": { + **deepcopy(self.stac_config["landing_page"]), + **{ + "provider": self.provider, + "id": settings.stac_api_landing_id, + "title": settings.stac_api_title, + "description": settings.stac_api_description, + }, + } } ) @@ -1258,7 +1398,7 @@ def __build_stac_catalog( product_types_list = [ pt for pt in self.eodag_api.list_product_types( - provider=self.provider, fetch_providers=fetch_providers + provider=self.provider, fetch_providers=False ) ] self.set_children( @@ -1268,16 +1408,17 @@ def __build_stac_catalog( "href": urljoin( self.url, f"{STAC_CATALOGS_PREFIX}/{product_type['ID']}" ), - "title": product_type["ID"], + "title": product_type["title"], } for product_type in product_types_list ] ) - else: - # use product_types_list as base for building nested catalogs - self.__update_data_from_catalog_config( - deepcopy(self.stac_config["catalogs"]["product_types_list"]) - ) + return self + + # use product_types_list as base for building nested catalogs + self.__update_data_from_catalog_config( + deepcopy(self.stac_config["catalogs"]["product_types_list"]) + ) for idx, cat in enumerate(catalogs): if idx % 2 == 0: @@ -1286,12 +1427,11 @@ def __build_stac_catalog( cat_data_value = cat # update data + cat_data_name_dict = self.stac_config["catalogs"][cat_data_name] set_data_method_name = ( - "set_stac_%s_by_id" % cat_data_name - if "catalog_type" - not in self.stac_config["catalogs"][cat_data_name].keys() - else "set_stac_%s_by_id" - % self.stac_config["catalogs"][cat_data_name]["catalog_type"] + f"set_stac_{cat_data_name}_by_id" + if "catalog_type" not in cat_data_name_dict.keys() + else f"set_stac_{cat_data_name_dict['catalog_type']}_by_id" ) set_data_method = getattr(self, set_data_method_name) set_data_method(cat_data_value, catalog_name=cat_data_name) @@ -1355,21 +1495,20 @@ def __build_stac_catalog( for c in self.stac_config["catalogs"].keys() if self.stac_config["catalogs"][c]["model"]["id"] == cat ][0] - except IndexError: + except IndexError as e: raise ValidationError( - "Bad settings for %s in stac_config catalogs" % cat - ) + f"Bad settings for {cat} in stac_config catalogs" + ) from e cat_config = deepcopy(self.stac_config["catalogs"][cat_key]) # update data self.__update_data_from_catalog_config(cat_config) # get filtering values list get_data_method_name = ( - "get_stac_%s" % cat_key + f"get_stac_{cat_key}" if "catalog_type" not in self.stac_config["catalogs"][cat_key].keys() - else "get_stac_%s" - % self.stac_config["catalogs"][cat_key]["catalog_type"] + else f"get_stac_{self.stac_config['catalogs'][cat_key]['catalog_type']}" ) get_data_method = getattr(self, get_data_method_name) cat_data_list = get_data_method(catalog_name=cat_key) @@ -1388,11 +1527,3 @@ def __build_stac_catalog( ) return self - - def get_stac_catalog(self) -> Dict[str, Any]: - """Get nested STAC catalog as data dict - - :returns: Catalog dictionnary - :rtype: dict - """ - return self.as_dict() diff --git a/eodag/rest/types/collections_search.py b/eodag/rest/types/collections_search.py new file mode 100644 index 000000000..ddbc62228 --- /dev/null +++ b/eodag/rest/types/collections_search.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Copyright 2023, CS GROUP - France, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import Any, Dict, Optional + +from pydantic import ( + BaseModel, + ConfigDict, + Field, + SerializerFunctionWrapHandler, + model_serializer, +) + +from eodag.rest.types.eodag_search import EODAGSearch + + +class CollectionsSearchRequest(BaseModel): + """Search args for GET collections""" + + model_config = ConfigDict(frozen=True) + + q: Optional[str] = Field(default=None, serialization_alias="free_text") + platform: Optional[str] = Field(default=None) + instrument: Optional[str] = Field(default=None) + constellation: Optional[str] = Field(default=None) + + @model_serializer(mode="wrap") + def _serialize(self, handler: SerializerFunctionWrapHandler) -> Dict[str, Any]: + dumped: Dict[str, Any] = handler(self) + return {EODAGSearch.to_eodag(k): v for k, v in dumped.items()} diff --git a/eodag/rest/types/eodag_search.py b/eodag/rest/types/eodag_search.py index 937a64f31..d619bbf05 100644 --- a/eodag/rest/types/eodag_search.py +++ b/eodag/rest/types/eodag_search.py @@ -15,16 +15,24 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -from typing import Any, Dict, List, Optional, Tuple, Union +from __future__ import annotations + +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union, cast from pydantic import ( + AliasChoices, + AliasPath, BaseModel, ConfigDict, Field, + ValidationError, ValidationInfo, field_validator, model_validator, ) +from pydantic.alias_generators import to_camel, to_snake +from pydantic_core import InitErrorDetails, PydanticCustomError +from pygeofilter.parsers.cql2_json import parse as parse_json from shapely.geometry import ( GeometryCollection, LinearRing, @@ -36,8 +44,16 @@ Polygon, ) +from eodag.rest.utils import flatten_list, is_dict_str_any, list_to_str_list +from eodag.rest.utils.cql_evaluate import EodagEvaluator from eodag.utils import DEFAULT_ITEMS_PER_PAGE +if TYPE_CHECKING: + try: + from typing import Self + except ImportError: + from _typeshed import Self + Geometry = Union[ Dict[str, Any], Point, @@ -61,17 +77,25 @@ class EODAGSearch(BaseModel): productType: Optional[str] = Field(None, alias="collections", validate_default=True) provider: Optional[str] = Field(None) ids: Optional[List[str]] = Field(None) - id: Optional[List[str]] = Field(None, alias="ids") + id: Optional[List[str]] = Field( + None, alias="ids" + ) # TODO: remove when updating queryables geom: Optional[Geometry] = Field(None, alias="geometry") start: Optional[str] = Field(None, alias="start_datetime") end: Optional[str] = Field(None, alias="end_datetime") + startTimeFromAscendingNode: Optional[str] = Field( + None, + alias="start_datetime", + validation_alias=AliasChoices("start_datetime", "datetime"), + ) + completionTimeFromAscendingNode: Optional[str] = Field(None, alias="end_datetime") publicationDate: Optional[str] = Field(None, alias="published") creationDate: Optional[str] = Field(None, alias="created") modificationDate: Optional[str] = Field(None, alias="updated") platformSerialIdentifier: Optional[str] = Field(None, alias="platform") instrument: Optional[str] = Field(None, alias="instruments") platform: Optional[str] = Field(None, alias="constellation") - resolution: Optional[int] = Field(None, alias="gsd") + resolution: Optional[Union[int, str]] = Field(None, alias="gsd") cloudCover: Optional[int] = Field(None, alias="eo:cloud_cover") snowCover: Optional[int] = Field(None, alias="eo:snow_cover") processingLevel: Optional[str] = Field(None, alias="processing:level") @@ -83,7 +107,6 @@ class EODAGSearch(BaseModel): polarizationChannels: Optional[List[str]] = Field(None, alias="sar:polarizations") dopplerFrequency: Optional[str] = Field(None, alias="sar:frequency_band") doi: Optional[str] = Field(None, alias="sci:doi") - productVersion: Optional[str] = Field(None, alias="version") illuminationElevationAngle: Optional[float] = Field( None, alias="view:sun_elevation" ) @@ -91,32 +114,198 @@ class EODAGSearch(BaseModel): page: Optional[int] = Field(1) items_per_page: int = Field(DEFAULT_ITEMS_PER_PAGE, alias="limit") sortBy: Optional[List[Tuple[str, str]]] = Field(None, alias="sortby") + raise_errors: bool = False - @model_validator(mode="before") - @classmethod - def remove_custom_extensions(cls, values: Dict[str, Any]) -> Dict[str, Any]: + _to_eodag_map: Dict[str, str] + + @model_validator(mode="after") + def set_raise_errors(self) -> Self: + """Set raise_errors to True if provider is set""" + if self.provider: + self.raise_errors = True + return self + + @model_validator(mode="after") + def remove_timeFromAscendingNode(self) -> Self: # pylint: disable=invalid-name + """TimeFromAscendingNode are just used for translation and not for search""" + self.startTimeFromAscendingNode = None # pylint: disable=invalid-name + self.completionTimeFromAscendingNode = None # pylint: disable=invalid-name + return self + + @model_validator(mode="after") + def parse_extra_fields(self) -> Self: """process unknown and oseo EODAG custom extensions fields""" # Transform EODAG custom extensions OSEO and UNK. + if not self.__pydantic_extra__: + return self + keys_to_update: Dict[str, str] = {} - for key in values.keys(): + for key in self.__pydantic_extra__.keys(): if key.startswith("unk:"): keys_to_update[key] = key[len("unk:") :] elif key.startswith("oseo:"): keys_to_update[key] = key[len("oseo:") :] for old_key, new_key in keys_to_update.items(): - values[cls.snake_to_camel(new_key)] = values.pop(old_key) + self.__pydantic_extra__[ + to_camel(to_snake(new_key)) + ] = self.__pydantic_extra__.pop(old_key) - return values + return self @model_validator(mode="before") @classmethod def remove_keys(cls, values: Dict[str, Any]) -> Dict[str, Any]: """Remove 'datetime', 'crunch', 'intersects', and 'bbox' keys""" - for key in ["datetime", "crunch", "intersects", "bbox"]: + for key in ["datetime", "crunch", "intersects", "bbox", "filter_lang"]: values.pop(key, None) return values + @model_validator(mode="before") + @classmethod + def parse_collections( + cls, values: Dict[str, Any], info: ValidationInfo + ) -> Dict[str, Any]: + """convert collections to productType""" + + if collections := values.pop("collections", None): + if len(collections) > 1: + raise ValueError("Only one collection is supported per search") + values["productType"] = collections[0] + else: + if not getattr(info, "context", None) or not info.context.get( # type: ignore + "isCatalog" + ): + raise ValueError("A collection is required") + + return values + + @model_validator(mode="before") + @classmethod + def parse_query(cls, values: Dict[str, Any]) -> Dict[str, Any]: + """ + Convert a STAC query parameter filter with the "eq" operator to a dict. + """ + + def add_error(error_message: str, input: Any) -> None: + errors.append( + InitErrorDetails( + type=PydanticCustomError("invalid_query", error_message), # type: ignore + loc=("query",), + input=input, + ) + ) + + query = values.pop("query", None) + if not query: + return values + + query_props: Dict[str, Any] = {} + errors: List[InitErrorDetails] = [] + for property_name, conditions in cast(Dict[str, Any], query).items(): + # Remove the prefix "properties." if present + prop = property_name.replace("properties.", "", 1) + + # Check if exactly one operator is specified per property + if not is_dict_str_any(conditions) or len(conditions) != 1: # type: ignore + add_error( + "Exactly 1 operator must be specified per property", + query[property_name], + ) + continue + + # Retrieve the operator and its value + operator, value = next(iter(cast(Dict[str, Any], conditions).items())) + + # Validate the operator + # only eq, in and lte are allowed + # lte is only supported with eo:cloud_cover + # eo:cloud_cover only accept lte operator + if ( + operator not in ("eq", "lte", "in") + or (operator == "lte" and prop != "eo:cloud_cover") + or (prop == "eo:cloud_cover" and operator != "lte") + ): + add_error( + f'operator "{operator}" is not supported for property "{prop}"', + query[property_name], + ) + continue + if operator == "in" and not isinstance(value, list): + add_error( + f'operator "{operator}" requires a value of type list for property "{prop}"', + query[property_name], + ) + continue + + query_props[prop] = value + + if errors: + raise ValidationError.from_exception_data( + title=cls.__name__, line_errors=errors + ) + + return {**values, **query_props} + + @model_validator(mode="before") + @classmethod + def parse_cql(cls, values: Dict[str, Any]) -> Dict[str, Any]: + """ + Process cql2 filter + """ + + def add_error(error_message: str) -> None: + errors.append( + InitErrorDetails( + type=PydanticCustomError("invalid_filter", error_message), # type: ignore + loc=("filter",), + ) + ) + + filter_ = values.pop("filter", None) + if not filter_: + return values + + errors: List[InitErrorDetails] = [] + try: + parsing_result = EodagEvaluator().evaluate(parse_json(filter_)) # type: ignore + except (ValueError, NotImplementedError) as e: + add_error(str(e)) + raise ValidationError.from_exception_data( + title=cls.__name__, line_errors=errors + ) from e + + if not is_dict_str_any(parsing_result): + add_error("The parsed filter is not a proper dictionary") + raise ValidationError.from_exception_data( + title=cls.__name__, line_errors=errors + ) + + cql_args: Dict[str, Any] = cast(Dict[str, Any], parsing_result) + + invalid_keys = { + "collections": 'Use "collection" instead of "collections"', + "ids": 'Use "id" instead of "ids"', + } + for k, m in invalid_keys.items(): + if k in cql_args: + add_error(m) + + if errors: + raise ValidationError.from_exception_data( + title=cls.__name__, line_errors=errors + ) + + # convert collection to EODAG collections + if col := cql_args.pop("collection", None): + cql_args["collections"] = col if isinstance(col, list) else [col] + + # convert id to EODAG ids + if id := cql_args.pop("id", None): + cql_args["ids"] = id if isinstance(id, list) else [id] + + return {**values, **cql_args} + @field_validator("instrument", mode="before") @classmethod def join_instruments(cls, v: Union[str, List[str]]) -> str: @@ -127,33 +316,27 @@ def join_instruments(cls, v: Union[str, List[str]]) -> str: @field_validator("sortBy", mode="before") @classmethod - def convert_stac_to_eodag_sortby( + def parse_sortby( cls, sortby_post_params: List[Dict[str, str]], ) -> List[Tuple[str, str]]: """ Convert STAC POST sortby to EODAG sortby """ - eodag_sortby: List[Tuple[str, str]] = [] - for sortby_post_param in sortby_post_params: - field = cls.snake_to_camel(cls.to_eodag(sortby_post_param["field"])) - eodag_sortby.append((field, sortby_post_param["direction"])) - return eodag_sortby - - @field_validator("productType") - @classmethod - def verify_producttype_is_present( - cls, v: Optional[str], info: ValidationInfo - ) -> Optional[str]: - """Verify productType is present when required""" - if not v and ( - not info - or not getattr(info, "context", None) - or not info.context.get("isCatalog") # type: ignore - ): - raise ValueError("A collection is required") - - return v + special_fields = { + "start": "startTimeFromAscendingNode", + "end": "completionTimeFromAscendingNode", + } + return [ + ( + special_fields.get( + to_camel(to_snake(cls.to_eodag(param["field"]))), + to_camel(to_snake(cls.to_eodag(param["field"]))), + ), + param["direction"], + ) + for param in sortby_post_params + ] @field_validator("start", "end") @classmethod @@ -164,21 +347,27 @@ def cleanup_dates(cls, v: str) -> str: return v @classmethod - def snake_to_camel(cls, snake_str: str) -> str: - """Convert snake_case to camelCase""" - # Split the string by underscore and capitalize each component except the first one - components = snake_str.split("_") - return components[0] + "".join(x.title() for x in components[1:]) + def _create_to_eodag_map(cls) -> None: + """Create mapping to convert fields from STAC to EODAG""" + cls._to_eodag_map = {} + for name, field_info in cls.model_fields.items(): + if field_info.validation_alias: + if isinstance(field_info.validation_alias, (AliasChoices, AliasPath)): + for a in list_to_str_list( + flatten_list(field_info.validation_alias.convert_to_aliases()) + ): + cls._to_eodag_map[a] = name + else: + cls._to_eodag_map[field_info.validation_alias] = name + elif field_info.alias: + cls._to_eodag_map[field_info.alias] = name @classmethod def to_eodag(cls, value: str) -> str: """Convert a STAC parameter to its matching EODAG name""" - alias_map = { - field_info.alias: name - for name, field_info in cls.model_fields.items() - if field_info.alias - } - return alias_map.get(value, value) + if not isinstance(cls._to_eodag_map, dict) or not cls._to_eodag_map: + cls._create_to_eodag_map() + return cls._to_eodag_map.get(value, value) @classmethod def to_stac(cls, field_name: str) -> str: diff --git a/eodag/rest/types/stac_queryables.py b/eodag/rest/types/queryables.py similarity index 51% rename from eodag/rest/types/stac_queryables.py rename to eodag/rest/types/queryables.py index 36cc9a324..2b6237474 100644 --- a/eodag/rest/types/stac_queryables.py +++ b/eodag/rest/types/queryables.py @@ -17,10 +17,20 @@ # limitations under the License. from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union - -from pydantic import BaseModel, Field - +from typing import TYPE_CHECKING, Any, ClassVar, Dict, List, Optional, Union + +from pydantic import ( + BaseModel, + ConfigDict, + Field, + SerializationInfo, + SerializerFunctionWrapHandler, + computed_field, + model_serializer, +) + +from eodag.rest.types.eodag_search import EODAGSearch +from eodag.rest.utils.rfc3339 import str_to_interval from eodag.types import python_field_definition_to_json from eodag.utils import Annotated @@ -28,6 +38,34 @@ from pydantic.fields import FieldInfo +class QueryablesGetParams(BaseModel): + """Store GET Queryables query params""" + + collection: Optional[str] = Field(default=None, serialization_alias="productType") + datetime: Optional[str] = Field(default=None) + + model_config = ConfigDict(extra="allow", frozen=True) + + @model_serializer(mode="wrap") + def _serialize(self, handler: SerializerFunctionWrapHandler) -> Dict[str, Any]: + dumped: Dict[str, Any] = handler(self) + return {EODAGSearch.to_eodag(k): v for k, v in dumped.items()} + + @computed_field + @property + def start_datetime(self) -> Optional[str]: + """Extract start_datetime property from datetime""" + start = str_to_interval(self.datetime)[0] + return start.strftime("%Y-%m-%dT%H:%M:%SZ") if start else None + + @computed_field + @property + def end_datetime(self) -> Optional[str]: + """Extract end_datetime property from datetime""" + end = str_to_interval(self.datetime)[1] + return end.strftime("%Y-%m-%dT%H:%M:%SZ") if end else None + + class StacQueryableProperty(BaseModel): """A class representing a queryable property. @@ -44,6 +82,10 @@ class StacQueryableProperty(BaseModel): type: Optional[Union[str, List[str]]] = None enum: Optional[List[Any]] = None value: Optional[Any] = None + min: Optional[Union[int, List[Union[int, None]]]] = None + max: Optional[Union[int, List[Union[int, None]]]] = None + oneOf: Optional[List[Any]] = None + items: Optional[Any] = None @classmethod def from_python_field_definition( @@ -57,6 +99,16 @@ def from_python_field_definition( return cls(**def_dict) + @model_serializer(mode="wrap") + def remove_none( + self, + handler: SerializerFunctionWrapHandler, + _: SerializationInfo, + ): + """Remove none value property fields during serialization""" + props: Dict[str, Any] = handler(self) + return {k: v for k, v in props.items() if v is not None} + class StacQueryables(BaseModel): """A class representing queryable properties for the STAC API. @@ -87,48 +139,34 @@ class StacQueryables(BaseModel): description: str = Field( default="Queryable names for the EODAG STAC API Item Search filter." ) - properties: Dict[str, StacQueryableProperty] = Field( - default={ - "ids": StacQueryableProperty( - description="ID", - ref="https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json#/id", - ), - "collections": StacQueryableProperty( - description="Collection", - ref="https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json#/collection", - ), - "geometry": StacQueryableProperty( - description="Geometry", - ref="https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json#/geometry", - ), - "datetime": StacQueryableProperty( - description="Datetime - use parameters year, month, day, time instead if available", - ref="https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/datetime.json#/properties/datetime", - ), - } - ) + default_properties: ClassVar[Dict[str, StacQueryableProperty]] = { + "id": StacQueryableProperty( + description="ID", + ref="https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json#/id", + ), + "collection": StacQueryableProperty( + description="Collection", + ref="https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json#/collection", + ), + "geometry": StacQueryableProperty( + description="Geometry", + ref="https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json#/geometry", + ), + "datetime": StacQueryableProperty( + description="Datetime - use parameters year, month, day, time instead if available", + ref="https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/datetime.json#/properties/datetime", + ), + "bbox": StacQueryableProperty( + description="BBox", + type="array", + oneOf=[{"minItems": 4, "maxItems": 4}, {"minItems": 6, "maxItems": 6}], + items={"type": "number"}, + ), + } + properties: Dict[str, StacQueryableProperty] = Field() additional_properties: bool = Field( default=True, serialization_alias="additionalProperties" ) - def get_properties(self) -> Dict[str, StacQueryableProperty]: - """Get the queryable properties. - - :returns: A dictionary containing queryable properties. - :rtype: typing.Dict[str, StacQueryableProperty] - """ - properties = {} - for key, property in self.properties.items(): - property = StacQueryableProperty( - description=property.description, type=property.type - ) - properties[key] = property - return properties - def __contains__(self, name: str) -> bool: return name in self.properties - - def __setitem__(self, name: str, qprop: StacQueryableProperty) -> None: - # only keep "datetime" queryable for dates - if name not in ("start_datetime", "end_datetime"): - self.properties[name] = qprop diff --git a/eodag/rest/types/stac_search.py b/eodag/rest/types/stac_search.py new file mode 100644 index 000000000..fe3c13829 --- /dev/null +++ b/eodag/rest/types/stac_search.py @@ -0,0 +1,277 @@ +# -*- coding: utf-8 -*- +# Copyright 2023, CS GROUP - France, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Model describing a STAC search POST request""" +from __future__ import annotations + +from typing import TYPE_CHECKING, Any, Dict, List, Literal, Optional, Tuple, Union + +import geojson +from pydantic import ( + BaseModel, + ConfigDict, + Field, + PositiveInt, + StringConstraints, + field_serializer, + field_validator, + model_validator, +) +from shapely.geometry import ( + GeometryCollection, + LineString, + MultiLineString, + MultiPoint, + MultiPolygon, + Point, + Polygon, + shape, +) +from shapely.geometry.base import GEOMETRY_TYPES, BaseGeometry +from typing_extensions import Annotated + +from eodag.rest.utils.rfc3339 import rfc3339_str_to_datetime, str_to_interval +from eodag.utils.exceptions import ValidationError + +if TYPE_CHECKING: + try: + from typing import Self + except ImportError: + from _typeshed import Self + +NumType = Union[float, int] + +BBox = Union[ + Tuple[NumType, NumType, NumType, NumType], + Tuple[NumType, NumType, NumType, NumType, NumType, NumType], +] + +Geometry = Union[ + Point, + MultiPoint, + LineString, + MultiLineString, + Polygon, + MultiPolygon, + GeometryCollection, +] + + +Direction = Annotated[Literal["asc", "desc"], StringConstraints(min_length=1)] + + +class Sortby(BaseModel): + """ + A class representing a parameter with which we want to sort results and its sorting order in a + POST search + + :param field: The name of the parameter with which we want to sort results + :type field: str + :param direction: The sorting order of the parameter + :type direction: str + """ + + __pydantic_config__ = ConfigDict(extra="forbid") + + field: Annotated[str, StringConstraints(min_length=1, strip_whitespace=True)] + direction: Direction + + +class SearchPostRequest(BaseModel): + """ + class which describes the body of a search request + + Overrides the validation for datetime and spatial filter from the base request model. + """ + + model_config = ConfigDict(populate_by_name=True, arbitrary_types_allowed=True) + + provider: Optional[str] = None + collections: Optional[List[str]] = None + ids: Optional[List[str]] = None + bbox: Optional[BBox] = None + intersects: Optional[Geometry] = None + datetime: Optional[str] = None + limit: Optional[PositiveInt] = Field( # type: ignore + default=None, description="Maximum number of items per page." + ) + page: Optional[PositiveInt] = Field( # type: ignore + default=None, description="Page number, must be a positive integer." + ) + query: Optional[Dict[str, Any]] = None + filter: Optional[Dict[str, Any]] = None + filter_lang: Optional[str] = Field( + default=None, + alias="filter-lang", + description="The language used for filtering.", + validate_default=True, + ) + sortby: Optional[List[Sortby]] = None + crunch: Optional[str] = None + + @field_serializer("intersects") + def serialize_intersects( + self, intersects: Optional[Geometry] + ) -> Optional[Dict[str, Any]]: + """Serialize intersects from shapely to a proper dict""" + if intersects: + return geojson.loads(geojson.dumps(intersects)) # type: ignore + return None + + @model_validator(mode="after") + def check_filter_lang(self) -> Self: + """Verify filter-lang has correct value""" + if not self.filter_lang and self.filter: + self.filter_lang = "cql2-json" + if self.filter_lang and not self.filter: + raise ValueError("filter-lang is set but filter is missing") + if self.filter_lang != "cql2-json" and self.filter: + raise ValueError('Only filter language "cql2-json" is accepted') + return self + + @model_validator(mode="before") + @classmethod + def only_one_spatial(cls, values: Dict[str, Any]) -> Dict[str, Any]: + """Check bbox and intersects are not both supplied.""" + if "intersects" in values and "bbox" in values: + raise ValueError("intersects and bbox parameters are mutually exclusive") + return values + + @property + def start_date(self) -> Optional[str]: + """Extract the start date from the datetime string.""" + start = str_to_interval(self.datetime)[0] + return start.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] + "Z" if start else None + + @property + def end_date(self) -> Optional[str]: + """Extract the end date from the datetime string.""" + end = str_to_interval(self.datetime)[1] + return end.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] + "Z" if end else None + + @field_validator("ids", "collections", mode="before") + @classmethod + def str_to_str_list(cls, v: Union[str, List[str]]) -> List[str]: + """Convert ids and collections strings to list of strings""" + if isinstance(v, str): + return [i.strip() for i in v.split(",")] + return v + + @field_validator("intersects", mode="before") + @classmethod + def validate_intersects(cls, v: Union[Dict[str, Any], Geometry]) -> Geometry: + """Verify format of intersects""" + if isinstance(v, BaseGeometry): + return v + + if isinstance(v, dict) and v.get("type") in GEOMETRY_TYPES: # type: ignore + return shape(v) + + raise ValueError("Not a valid geometry") + + @field_validator("bbox") + @classmethod + def validate_bbox(cls, v: BBox) -> BBox: + """Check order of supplied bbox coordinates.""" + # Validate order + if len(v) == 4: + xmin, ymin, xmax, ymax = v + else: + xmin, ymin, min_elev, xmax, ymax, max_elev = v + if max_elev < min_elev: + raise ValueError( + "Maximum elevation must greater than minimum elevation" + ) + + if xmax < xmin: + raise ValueError("Maximum longitude must be greater than minimum longitude") + + if ymax < ymin: + raise ValueError("Maximum longitude must be greater than minimum longitude") + + # Validate against WGS84 + if xmin < -180 or ymin < -90 or xmax > 180 or ymax > 90: + raise ValueError("Bounding box must be within (-180, -90, 180, 90)") + + return v + + @field_validator("datetime") + @classmethod + def validate_datetime(cls, v: str) -> str: + """Validate datetime.""" + if "/" in v: + values = v.split("/") + else: + # Single date is interpreted as end date + values = ["..", v] + + dates: List[str] = [] + for value in values: + if value == ".." or value == "": + dates.append("..") + continue + + try: + dates.append( + rfc3339_str_to_datetime(value).strftime("%Y-%m-%dT%H:%M:%SZ") + ) + except ValidationError as e: + raise ValueError(e) + + if dates[0] == ".." and dates[1] == "..": + raise ValueError( + "Invalid datetime range, both ends of range may not be open" + ) + + if ".." not in dates and dates[0] > dates[1]: + raise ValueError( + "Invalid datetime range, must match format (begin_date, end_date)" + ) + + return v + + @property + def spatial_filter(self) -> Optional[Geometry]: + """Return a geojson-pydantic object representing the spatial filter for the search + request. + + Check for both because the ``bbox`` and ``intersects`` parameters are + mutually exclusive. + """ + if self.bbox: + return Polygon.from_bounds(*self.bbox) # type: ignore + + if self.intersects: + return self.intersects + return None + + +def sortby2list( + v: Optional[str], +) -> Optional[List[Sortby]]: + """ + Convert sortby filter parameter GET syntax to POST syntax + """ + if not v: + return None + sortby: List[Sortby] = [] + for sortby_param in v.split(","): + sortby_param = sortby_param.strip() + direction: Direction = "desc" if sortby_param.startswith("-") else "asc" + field = sortby_param.lstrip("+-") + sortby.append(Sortby(field=field, direction=direction)) + return sortby diff --git a/eodag/rest/utils.py b/eodag/rest/utils.py deleted file mode 100644 index 524a52edd..000000000 --- a/eodag/rest/utils.py +++ /dev/null @@ -1,1133 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2018, CS Systemes d'Information, https://www.csgroup.eu/ -# -# This file is part of EODAG project -# https://www.github.com/CS-SI/EODAG -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -from __future__ import annotations - -import ast -import datetime -import glob -import json -import logging -import os -import re -from shutil import make_archive, rmtree -from typing import ( - TYPE_CHECKING, - Any, - Callable, - Dict, - Iterator, - List, - NamedTuple, - Optional, - Tuple, - Union, -) -from urllib.parse import urlencode - -import dateutil.parser -from dateutil import tz -from fastapi.responses import StreamingResponse -from shapely.geometry import Polygon, shape - -import eodag -from eodag import EOProduct -from eodag.api.product.metadata_mapping import OSEO_METADATA_MAPPING -from eodag.api.search_result import SearchResult -from eodag.config import load_stac_config, load_stac_provider_config -from eodag.plugins.crunch.filter_latest_intersect import FilterLatestIntersect -from eodag.plugins.crunch.filter_latest_tpl_name import FilterLatestByName -from eodag.plugins.crunch.filter_overlap import FilterOverlap -from eodag.rest.stac import StacCatalog, StacCollection, StacCommon, StacItem -from eodag.rest.types.eodag_search import EODAGSearch -from eodag.rest.types.stac_queryables import StacQueryableProperty -from eodag.utils import ( - DEFAULT_ITEMS_PER_PAGE, - DEFAULT_PAGE, - GENERIC_PRODUCT_TYPE, - _deprecated, - dict_items_recursive_apply, - string_to_jsonpath, -) -from eodag.utils.exceptions import ( - MisconfiguredError, - NoMatchingProductType, - NotAvailableError, - RequestError, - UnsupportedProductType, - ValidationError, -) - -if TYPE_CHECKING: - from io import BufferedReader - - from shapely.geometry.base import BaseGeometry - - -logger = logging.getLogger("eodag.rest.utils") - -eodag_api = eodag.EODataAccessGateway() - - -class Cruncher(NamedTuple): - """Type hinted Cruncher namedTuple""" - - clazz: Callable[..., Any] - config_params: List[str] - - -crunchers = { - "latestIntersect": Cruncher(FilterLatestIntersect, []), - "latestByName": Cruncher(FilterLatestByName, ["name_pattern"]), - "overlap": Cruncher(FilterOverlap, ["minimum_overlap"]), -} -stac_config = load_stac_config() -stac_provider_config = load_stac_provider_config() - -STAC_QUERY_PATTERN = "query.*.*" - - -@_deprecated( - reason="Function internally used by get_home_page_content, also deprecated", - version="2.6.1", -) -def format_product_types(product_types: List[Dict[str, Any]]) -> str: - """Format product_types - - :param product_types: A list of EODAG product types as returned by the core api - :type product_types: list - """ - result: List[str] = [] - for pt in product_types: - result.append("* *__{ID}__*: {abstract}".format(**pt)) - return "\n".join(sorted(result)) - - -def get_detailled_collections_list( - provider: Optional[str] = None, fetch_providers: bool = True -) -> List[Dict[str, Any]]: - """Returns detailled collections / product_types list for a given provider as a list of config dicts - - :param provider: (optional) Chosen provider - :type provider: str - :param fetch_providers: (optional) Whether to fetch providers for new product - types or not - :type fetch_providers: bool - :returns: List of config dicts - :rtype: list - """ - return eodag_api.list_product_types( - provider=provider, fetch_providers=fetch_providers - ) - - -@_deprecated(reason="No more needed with STAC API + Swagger", version="2.6.1") -def get_home_page_content(base_url: str, ipp: Optional[int] = None) -> str: - """Compute eodag service home page content - - :param base_url: The service root URL - :type base_url: str - :param ipp: (optional) Items per page number - :type ipp: int - """ - base_url = base_url.rstrip("/") + "/" - content = f"""

    EODAG Server


    - root
    - service-doc
    - """ - return content - - -@_deprecated( - reason="Used to format output from deprecated function get_home_page_content", - version="2.6.1", -) -def get_templates_path() -> str: - """Returns Jinja templates path""" - return os.path.join(os.path.dirname(__file__), "templates") - - -def get_product_types( - provider: Optional[str] = None, filters: Optional[Dict[str, Any]] = None -) -> List[Dict[str, Any]]: - """Returns a list of supported product types - - :param provider: (optional) Provider name - :type provider: str - :param filters: (optional) Additional filters for product types search - :type filters: dict - :returns: A list of corresponding product types - :rtype: list - """ - if filters is None: - filters = {} - try: - guessed_product_types = eodag_api.guess_product_type( - instrument=filters.get("instrument"), - platform=filters.get("platform"), - platformSerialIdentifier=filters.get("platformSerialIdentifier"), - sensorType=filters.get("sensorType"), - processingLevel=filters.get("processingLevel"), - ) - except NoMatchingProductType: - guessed_product_types = [] - if guessed_product_types: - product_types = [ - pt - for pt in eodag_api.list_product_types(provider=provider) - if pt["ID"] in guessed_product_types - ] - else: - product_types = eodag_api.list_product_types(provider=provider) - return product_types - - -def search_bbox(request_bbox: str) -> Optional[Dict[str, float]]: - """Transform request bounding box as a bbox suitable for eodag search""" - - eodag_bbox = None - search_bbox_keys = ["lonmin", "latmin", "lonmax", "latmax"] - - if not request_bbox: - return None - - try: - request_bbox_list = [float(coord) for coord in request_bbox.split(",")] - except ValueError as e: - raise ValidationError("invalid box coordinate type: %s" % e) - - eodag_bbox = dict(zip(search_bbox_keys, request_bbox_list)) - if len(eodag_bbox) != 4: - raise ValidationError("input box is invalid: %s" % request_bbox) - - return eodag_bbox - - -def get_date(date: Optional[str]) -> Optional[str]: - """Check if the input date can be parsed as a date""" - - if not date: - return None - try: - return ( - dateutil.parser.parse(date) - .replace(tzinfo=tz.UTC) - .isoformat() - .replace("+00:00", "") - ) - except ValueError as e: - exc = ValidationError("invalid input date: %s" % e) - raise exc - - -def get_int(input: Optional[Any]) -> Optional[int]: - """Check if the input can be parsed as an integer""" - - if input is None: - return None - - try: - val = int(input) - except ValueError as e: - raise ValidationError("invalid input integer value: %s" % e) - return val - - -def filter_products( - products: SearchResult, arguments: Dict[str, Any], **kwargs: Any -) -> SearchResult: - """Apply an eodag cruncher to filter products""" - filter_name = arguments.get("filter") - if filter_name: - cruncher = crunchers.get(filter_name) - if not cruncher: - raise ValidationError("unknown filter name") - - cruncher_config: Dict[str, Any] = dict() - for config_param in cruncher.config_params: - config_param_value = arguments.get(config_param) - if not config_param_value: - raise ValidationError( - "filter additional parameters required: %s" - % ", ".join(cruncher.config_params) - ) - cruncher_config[config_param] = config_param_value - - try: - products = products.crunch(cruncher.clazz(cruncher_config), **kwargs) - except MisconfiguredError as e: - raise ValidationError(str(e)) - - return products - - -def get_pagination_info( - arguments: Dict[str, Any] -) -> Tuple[Optional[int], Optional[int]]: - """Get pagination arguments""" - page = get_int(arguments.pop("page", DEFAULT_PAGE)) - # items_per_page can be specified using limit or itemsPerPage - items_per_page = get_int(arguments.pop("limit", DEFAULT_ITEMS_PER_PAGE)) - items_per_page = get_int(arguments.pop("itemsPerPage", items_per_page)) - - if page is not None and page < 0: - raise ValidationError("invalid page number. Must be positive integer") - if items_per_page is not None and items_per_page < 0: - raise ValidationError( - "invalid number of items per page. Must be positive integer" - ) - return page, items_per_page - - -def get_geometry(arguments: Dict[str, Any]) -> Optional[BaseGeometry]: - """Get geometry from arguments""" - if arguments.get("intersects") and arguments.get("bbox"): - raise ValidationError("Only one of bbox and intersects can be used at a time.") - - if arguments.get("bbox"): - request_bbox = arguments.pop("bbox") - if isinstance(request_bbox, str): - request_bbox = request_bbox.split(",") - elif not isinstance(request_bbox, list): - raise ValidationError("bbox argument type should be Array") - - try: - request_bbox = [float(coord) for coord in request_bbox] - except ValueError as e: - raise ValidationError(f"invalid bbox coordinate type: {e}") - - if len(request_bbox) == 4: - min_x, min_y, max_x, max_y = request_bbox - elif len(request_bbox) == 6: - min_x, min_y, _, max_x, max_y, _ = request_bbox - else: - raise ValidationError( - f"invalid bbox length ({len(request_bbox)}) for bbox {request_bbox}" - ) - - geom = Polygon([(min_x, min_y), (min_x, max_y), (max_x, max_y), (max_x, min_y)]) - - elif arguments.get("intersects"): - intersects_value = arguments.pop("intersects") - if isinstance(intersects_value, str): - try: - intersects_dict = json.loads(intersects_value) - except json.JSONDecodeError: - raise ValidationError( - "The 'intersects' parameter is not a valid JSON string." - ) - else: - intersects_dict = intersects_value - - try: - geom = shape(intersects_dict) - except Exception as e: - raise ValidationError( - f"The 'intersects' parameter does not represent a valid geometry: {str(e)}" - ) - - else: - geom = None - - return geom - - -def get_datetime(arguments: Dict[str, Any]) -> Tuple[Optional[str], Optional[str]]: - """Get the datetime criterias from the search arguments - - :param arguments: Request args - :type arguments: dict - :returns: Start date and end date from datetime string. - :rtype: Tuple[Optional[str], Optional[str]] - """ - datetime_str = arguments.pop("datetime", None) - - if datetime_str: - datetime_split = datetime_str.split("/") - if len(datetime_split) > 1: - dtstart = datetime_split[0] if datetime_split[0] != ".." else None - dtend = datetime_split[1] if datetime_split[1] != ".." else None - elif len(datetime_split) == 1: - # same time for start & end if only one is given - dtstart, dtend = datetime_split[0:1] * 2 - else: - return None, None - - return get_date(dtstart), get_date(dtend) - - else: - # return already set (dtstart, dtend) or None - dtstart = get_date(arguments.pop("dtstart", None)) - dtend = get_date(arguments.pop("dtend", None)) - return get_date(dtstart), get_date(dtend) - - -def get_metadata_query_paths(metadata_mapping: Dict[str, Any]) -> Dict[str, Any]: - """Get dict of query paths and their names from metadata_mapping - - :param metadata_mapping: STAC metadata mapping (see 'resources/stac_provider.yml') - :type metadata_mapping: dict - :returns: Mapping of query paths with their corresponding names - :rtype: dict - """ - metadata_query_paths: Dict[str, Any] = {} - for metadata_name, metadata_spec in metadata_mapping.items(): - # When metadata_spec have a length of 1 the query path is not specified - if len(metadata_spec) == 2: - metadata_query_template = metadata_spec[0] - try: - # We create the dict corresponding to the metadata query of the metadata - metadata_query_dict = ast.literal_eval( - metadata_query_template.format(**{metadata_name: None}) - ) - # We check if our query path pattern matches one or more of the dict path - matches = [ - (str(match.full_path)) - for match in string_to_jsonpath( - STAC_QUERY_PATTERN, force=True - ).find(metadata_query_dict) - ] - if matches: - metadata_query_path = matches[0] - metadata_query_paths[metadata_query_path] = metadata_name - except KeyError: - pass - return metadata_query_paths - - -def get_arguments_query_paths(arguments: Dict[str, Any]) -> Dict[str, Any]: - """Get dict of query paths and their values from arguments - - Build a mapping of the query paths present in the arguments - with their values. All matching paths of our STAC_QUERY_PATTERN - ('query.*.*') are used. - - :param arguments: Request args - :type arguments: dict - :returns: Mapping of query paths with their corresponding values - :rtype: dict - """ - return dict( - (str(match.full_path), match.value) - for match in string_to_jsonpath(STAC_QUERY_PATTERN, force=True).find(arguments) - ) - - -def get_criterias_from_metadata_mapping( - metadata_mapping: Dict[str, Any], arguments: Dict[str, Any] -) -> Dict[str, Any]: - """Get criterias from the search arguments with the metadata mapping config - - :param metadata_mapping: STAC metadata mapping (see 'resources/stac_provider.yml') - :type metadata_mapping: dict - :param arguments: Request args - :type arguments: dict - :returns: Mapping of criterias with their corresponding values - :rtype: dict - """ - criterias: Dict[str, Any] = {} - metadata_query_paths = get_metadata_query_paths(metadata_mapping) - arguments_query_paths = get_arguments_query_paths(arguments) - for query_path in arguments_query_paths: - if query_path in metadata_query_paths: - criteria_name = metadata_query_paths[query_path] - else: - # The criteria is custom and we must read - # its name from the query path - criteria_name = query_path.split(".")[1] - criteria_value = arguments_query_paths[query_path] - criterias[criteria_name] = criteria_value - return criterias - - -def search_products( - product_type: str, arguments: Dict[str, Any], stac_formatted: bool = True -) -> Union[Dict[str, Any], SearchResult]: - """Returns product search results - - :param product_type: The product type criteria - :type product_type: str - :param arguments: Request args - :type arguments: dict - :param stac_formatted: Whether input is STAC-formatted or not - :type stac_formatted: bool - :returns: A search result - :rtype serialized GeoJSON response""" - - try: - arg_product_type = arguments.pop("product_type", None) - provider = arguments.pop("provider", None) - - unserialized = arguments.pop("unserialized", None) - - page, items_per_page = get_pagination_info(arguments) - dtstart, dtend = get_datetime(arguments) - geom = get_geometry(arguments) - - criterias = { - "productType": product_type if product_type else arg_product_type, - "page": page, - "items_per_page": items_per_page, - "start": dtstart, - "end": dtend, - "geom": geom, - "provider": provider, - } - - if stac_formatted: - stac_provider_metadata_mapping = stac_provider_config.get("search", {}).get( - "metadata_mapping", {} - ) - extra_criterias = get_criterias_from_metadata_mapping( - stac_provider_metadata_mapping, arguments - ) - criterias.update(extra_criterias) - else: - criterias.update(arguments) - - if provider: - criterias["raise_errors"] = True - - # We remove potential None values to use the default values of the search method - criterias = dict((k, v) for k, v in criterias.items() if v is not None) - - products, total = eodag_api.search(**criterias) - - if not products and eodag_api.search_errors: - search_error = RequestError( - "No result could be obtained from any available provider and following " - "error(s) appeared while searching:" - ) - search_error.history = eodag_api.search_errors - raise search_error - - products = filter_products(products, arguments, **criterias) - - response: Union[Dict[str, Any], SearchResult] - if not unserialized: - response = products.as_geojson_object() - response.update( - { - "properties": { - "page": page, - "itemsPerPage": items_per_page, - "totalResults": total, - } - } - ) - else: - response = products - response.properties = { - "page": page, - "itemsPerPage": items_per_page, - "totalResults": total, - } - - except ValidationError as e: - raise e - except RuntimeError as e: - raise e - except UnsupportedProductType as e: - raise e - - return response - - -def search_product_by_id( - uid: str, - product_type: Optional[str] = None, - provider: Optional[str] = None, - **kwargs: Any, -) -> SearchResult: - """Search a product by its id - - :param uid: The uid of the EO product - :type uid: str - :param product_type: (optional) The product type - :type product_type: str - :param provider: (optional) The provider to be used - :type provider: str - :param kwargs: additional search parameters - :type kwargs: Any - :returns: A search result - :rtype: :class:`~eodag.api.search_result.SearchResult` - :raises: :class:`~eodag.utils.exceptions.ValidationError` - :raises: RuntimeError - """ - if provider: - kwargs["raise_errors"] = True - try: - products, _ = eodag_api.search( - id=uid, productType=product_type, provider=provider, **kwargs - ) - return products - except ValidationError: - raise - except RuntimeError: - raise - - -# STAC ------------------------------------------------------------------------ - - -def get_stac_conformance() -> Dict[str, str]: - """Build STAC conformance - - :returns: conformance dictionnary - :rtype: dict - """ - return stac_config["conformance"] - - -def get_stac_api_version() -> str: - """Get STAC API version - - :returns: STAC API version - :rtype: str - """ - return stac_config["stac_api_version"] - - -def get_stac_collections( - url: str, root: str, arguments: Dict[str, Any], provider: Optional[str] = None -) -> Dict[str, Any]: - """Build STAC collections - - :param url: Requested URL - :type url: str - :param root: The API root - :type root: str - :param arguments: Request args - :type arguments: dict - :param provider: (optional) Chosen provider - :type provider: str - :returns: Collections dictionnary - :rtype: dict - """ - return StacCollection( - url=url, - stac_config=stac_config, - provider=provider, - eodag_api=eodag_api, - root=root, - ).get_collections(arguments) - - -def get_stac_collection_by_id( - url: str, root: str, collection_id: str, provider: Optional[str] = None -) -> Dict[str, Any]: - """Build STAC collection by id - - :param url: Requested URL - :type url: str - :param root: API root - :type root: str - :param collection_id: Product_type as ID of the collection - :type collection_id: str - :param provider: (optional) Chosen provider - :type provider: str - :returns: Collection dictionary - :rtype: dict - """ - return StacCollection( - url=url, - stac_config=stac_config, - provider=provider, - eodag_api=eodag_api, - root=root, - ).get_collection_by_id(collection_id) - - -def get_stac_item_by_id( - url: str, - item_id: str, - catalogs: List[str], - root: str = "/", - provider: Optional[str] = None, - **kwargs: Any, -) -> Dict[str, Any]: - """Build STAC item by id - - :param url: Requested URL - :type url: str - :param item_id: Product ID - :type item_id: str - :param catalogs: Catalogs list (only first is used as product_type) - :type catalogs: list - :param root: (optional) API root - :type root: str - :param provider: (optional) Chosen provider - :type provider: str - :param kwargs: additional search parameters - :type kwargs: Any - :returns: Collection dictionary - :rtype: dict - """ - product_type = catalogs[0] - _dc_qs = kwargs.get("_dc_qs", None) - - found_products = search_product_by_id( - item_id, product_type=product_type, provider=provider, _dc_qs=_dc_qs - ) - - if len(found_products) > 0: - found_products[0].product_type = eodag_api.get_alias_from_product_type( - found_products[0].product_type - ) - return StacItem( - url=url, - stac_config=stac_config, - provider=provider, - eodag_api=eodag_api, - root=root, - ).get_stac_item_from_product(product=found_products[0]) - else: - return None - - -def download_stac_item_by_id_stream( - catalogs: List[str], - item_id: str, - provider: Optional[str] = None, - asset: Optional[str] = None, - **kwargs: Any, -) -> StreamingResponse: - """Download item - - :param catalogs: Catalogs list (only first is used as product_type) - :type catalogs: list - :param item_id: Product ID - :type item_id: str - :param provider: (optional) Chosen provider - :type provider: str - :param kwargs: additional download parameters - :type kwargs: Any - :returns: a stream of the downloaded data (zip file) - :rtype: StreamingResponse - """ - product_type = catalogs[0] - _dc_qs = kwargs.get("_dc_qs", None) - - search_plugin = next( - eodag_api._plugins_manager.get_search_plugins(product_type, provider) - ) - provider_product_type_config = search_plugin.config.products.get( - product_type, {} - ) or search_plugin.config.products.get(GENERIC_PRODUCT_TYPE, {}) - if provider_product_type_config.get("storeDownloadUrl", False): - if item_id not in search_plugin.download_info: - logger.error(f"data for item {item_id} not found") - raise NotAvailableError( - f"download url for product {item_id} could not be found, please redo " - f"the search request to fetch the required data" - ) - product_data = search_plugin.download_info[item_id] - properties = { - "id": item_id, - "orderLink": product_data["orderLink"], - "downloadLink": product_data["downloadLink"], - "geometry": "-180 -90 180 90", - } - product = EOProduct(provider or product_data["provider"], properties) - else: - - search_results = search_product_by_id( - item_id, product_type=product_type, provider=provider, _dc_qs=_dc_qs - ) - if len(search_results) > 0: - product = search_results[0] - else: - raise NotAvailableError( - f"Could not find {item_id} item in {product_type} collection for provider {provider}" - ) - - if product.downloader is None: - download_plugin = eodag_api._plugins_manager.get_download_plugin(product) - auth_plugin = eodag_api._plugins_manager.get_auth_plugin( - download_plugin.provider - ) - product.register_downloader(download_plugin, auth_plugin) - - auth = ( - product.downloader_auth.authenticate() - if product.downloader_auth is not None - else product.downloader_auth - ) - try: - download_stream_dict = product.downloader._stream_download_dict( - product, auth=auth, asset=asset - ) - except NotImplementedError: - logger.warning( - f"Download streaming not supported for {product.downloader}: downloading locally then delete" - ) - product_path = eodag_api.download(product, extract=False, asset=asset) - if os.path.isdir(product_path): - # do not zip if dir contains only one file - all_filenames = [ - f - for f in glob.glob( - os.path.join(product_path, "**", "*"), recursive=True - ) - if os.path.isfile(f) - ] - if len(all_filenames) == 1: - filepath_to_stream = all_filenames[0] - else: - filepath_to_stream = f"{product_path}.zip" - logger.debug( - f"Building archive for downloaded product path {filepath_to_stream}" - ) - make_archive(product_path, "zip", product_path) - rmtree(product_path) - else: - filepath_to_stream = product_path - - download_stream_dict = dict( - content=read_file_chunks_and_delete(open(filepath_to_stream, "rb")), - headers={ - "content-disposition": f"attachment; filename={os.path.basename(filepath_to_stream)}", - }, - ) - - return StreamingResponse(**download_stream_dict) - - -def read_file_chunks_and_delete( - opened_file: BufferedReader, chunk_size: int = 64 * 1024 -) -> Iterator[bytes]: - """Yield file chunks and delete file when finished.""" - while True: - data = opened_file.read(chunk_size) - if not data: - opened_file.close() - os.remove(opened_file.name) - logger.debug(f"{opened_file.name} deleted after streaming complete") - break - yield data - yield data - - -def get_stac_catalogs( - url: str, - root: str = "/", - catalogs: List[str] = [], - provider: Optional[str] = None, - fetch_providers: bool = True, -) -> Dict[str, Any]: - """Build STAC catalog - - :param url: Requested URL - :type url: str - :param root: (optional) API root - :type root: str - :param catalogs: (optional) Catalogs list - :type catalogs: list - :param provider: (optional) Chosen provider - :type provider: str - :param fetch_providers: (optional) Whether to fetch providers for new product - types or not - :type fetch_providers: bool - :returns: Catalog dictionary - :rtype: dict - """ - return StacCatalog( - url=url, - stac_config=stac_config, - root=root, - provider=provider, - eodag_api=eodag_api, - catalogs=catalogs, - fetch_providers=fetch_providers, - ).get_stac_catalog() - - -def search_stac_items( - url: str, - arguments: Dict[str, Any], - root: str = "/", - catalogs: List[str] = [], - provider: Optional[str] = None, - method: Optional[str] = "GET", -) -> Dict[str, Any]: - """Get items collection dict for given catalogs list - - :param url: Requested URL - :type url: str - :param arguments: Request args - :type arguments: dict - :param root: (optional) API root - :type root: str - :param catalogs: (optional) Catalogs list - :type catalogs: list - :param provider: (optional) Chosen provider - :type provider: str - :param method: (optional) search request HTTP method ('GET' or 'POST') - :type method: str - :returns: Catalog dictionnary - :rtype: dict - """ - collections = arguments.get("collections", None) - - catalog_url = url.replace("/items", "") - - next_page_kwargs = { - key: value for key, value in arguments.copy().items() if value is not None - } - next_page_id = ( - int(next_page_kwargs["page"]) + 1 if "page" in next_page_kwargs else 2 - ) - next_page_kwargs["page"] = next_page_id - - # use catalogs from path or if it is empty, collections from args - if catalogs: - result_catalog = StacCatalog( - url=catalog_url, - stac_config=stac_config, - root=root, - provider=provider, - eodag_api=eodag_api, - catalogs=catalogs, - ) - elif collections: - # get collection as product_type - if isinstance(collections, str): - collections = collections.split(",") - elif not isinstance(collections, list): - raise ValidationError("Collections argument type should be Array") - - result_catalog = StacCatalog( - stac_config=stac_config, - root=root, - provider=provider, - eodag_api=eodag_api, - # handle only one collection - # per request (STAC allows multiple) - catalogs=collections[0:1], - url=catalog_url.replace("/search", f"/collections/{collections[0]}"), - ) - arguments.pop("collections") - else: - raise NoMatchingProductType("Invalid request, collections argument is missing") - - # get products by ids - ids = arguments.get("ids", None) - if isinstance(ids, str): - ids = [ids] - if ids: - search_results = SearchResult([]) - for item_id in ids: - found_products = search_product_by_id( - item_id, product_type=collections[0], provider=provider - ) - if len(found_products) == 1: - search_results.extend(found_products) - search_results.properties = { - "page": 1, - "itemsPerPage": len(search_results), - "totalResults": len(search_results), - } - else: - if "datetime" in arguments.keys() and arguments["datetime"] is not None: - arguments["dtstart"], arguments["dtend"] = get_datetime(arguments) - - search_products_arguments = dict( - arguments, - **result_catalog.search_args, - **{"unserialized": "true", "provider": provider}, - ) - - # check if time filtering appears both in search arguments and catalog - # (for catalogs built by date: i.e. `year/2020/month/05`) - if set(["dtstart", "dtend"]) <= set(arguments.keys()) and set( - ["dtstart", "dtend"] - ) <= set(result_catalog.search_args.keys()): - search_date_min = ( - dateutil.parser.parse(arguments["dtstart"]) - if arguments["dtstart"] - else datetime.datetime.min - ) - search_date_max = ( - dateutil.parser.parse(arguments["dtend"]) - if arguments["dtend"] - else datetime.datetime.now() - ) - catalog_date_min = dateutil.parser.parse( - result_catalog.search_args["dtstart"] - ) - catalog_date_max = dateutil.parser.parse( - result_catalog.search_args["dtend"] - ) - # check if date intervals overlap - if (search_date_min <= catalog_date_max) and ( - search_date_max >= catalog_date_min - ): - # use intersection - search_products_arguments["dtstart"] = ( - max(search_date_min, catalog_date_min) - .isoformat() - .replace("+00:00", "") - + "Z" - ) - search_products_arguments["dtend"] = ( - min(search_date_max, catalog_date_max) - .isoformat() - .replace("+00:00", "") - + "Z" - ) - else: - logger.warning("Time intervals do not overlap") - # return empty results - search_results = SearchResult([]) - search_results.properties = { - "page": search_products_arguments.get("page", 1), - "itemsPerPage": search_products_arguments.get( - "itemsPerPage", DEFAULT_ITEMS_PER_PAGE - ), - "totalResults": 0, - } - return StacItem( - url=url, - stac_config=stac_config, - provider=provider, - eodag_api=eodag_api, - root=root, - ).get_stac_items( - search_results=search_results, - catalog=dict( - result_catalog.get_stac_catalog(), - **{"url": result_catalog.url, "root": result_catalog.root}, - ), - ) - - search_results = search_products( - product_type=result_catalog.search_args["product_type"], - arguments=search_products_arguments, - ) - - for record in search_results: - record.product_type = eodag_api.get_alias_from_product_type(record.product_type) - - search_results.method = method - if method == "POST": - search_results.next = f"{url}" - search_results.body = next_page_kwargs - - elif method == "GET": - next_query_string = urlencode(next_page_kwargs) - search_results.next = f"{url}?{next_query_string}" - - items = StacItem( - url=url, - stac_config=stac_config, - provider=provider, - eodag_api=eodag_api, - root=root, - ).get_stac_items( - search_results=search_results, - catalog=dict( - result_catalog.get_stac_catalog(), - **{"url": result_catalog.url, "root": result_catalog.root}, - ), - ) - - return items - - -def get_stac_extension_oseo(url: str) -> Dict[str, str]: - """Build STAC OGC / OpenSearch Extension for EO - - :param url: Requested URL - :type url: str - :returns: Catalog dictionnary - :rtype: dict - """ - - item_mapping = dict_items_recursive_apply( - stac_config["item"], lambda _, x: str(x).replace("$.product.", "$.") - ) - - # all properties as string type by default - oseo_properties = { - "oseo:{}".format(k): { - "type": "string", - "title": k[0].upper() + re.sub(r"([A-Z][a-z]+)", r" \1", k[1:]), - } - for k, v in OSEO_METADATA_MAPPING.items() - if v not in str(item_mapping) - } - - return StacCommon.get_stac_extension( - url=url, stac_config=stac_config, extension="oseo", properties=oseo_properties - ) - - -def fetch_collection_queryable_properties( - collection_id: Optional[str] = None, provider: Optional[str] = None, **kwargs: Any -) -> Dict[str, StacQueryableProperty]: - """Fetch the queryable properties for a collection. - - :param collection_id: The ID of the collection. - :type collection_id: str - :param provider: (optional) The provider. - :type provider: str - :param kwargs: additional filters for queryables (`productType` or other search - arguments) - :type kwargs: Any - :returns: A set containing the STAC standardized queryable properties for a collection. - :rtype Dict[str, StacQueryableProperty]: set - """ - if not collection_id and "collections" in kwargs: - collection_ids = kwargs.pop("collections").split(",") - collection_id = collection_ids[0] - - if collection_id and "productType" in kwargs: - kwargs.pop("productType") - elif "productType" in kwargs: - collection_id = kwargs.pop("productType") - - if "ids" in kwargs: - kwargs["id"] = kwargs.pop("ids") - - if "datetime" in kwargs: - dates = get_datetime(kwargs) - kwargs["start"] = dates[0] - kwargs["end"] = dates[1] - - python_queryables = eodag_api.list_queryables( - provider=provider, productType=collection_id, **kwargs - ) - python_queryables.pop("start") - python_queryables.pop("end") - - stac_queryables = dict() - for param, queryable in python_queryables.items(): - stac_param = EODAGSearch.to_stac(param) - stac_queryables[ - stac_param - ] = StacQueryableProperty.from_python_field_definition(stac_param, queryable) - - return stac_queryables - - -def eodag_api_init() -> None: - """Init EODataAccessGateway server instance, pre-running all time consuming tasks""" - eodag_api.fetch_product_types_list() - - # pre-build search plugins - for provider in eodag_api.available_providers(): - next(eodag_api._plugins_manager.get_search_plugins(provider=provider)) diff --git a/eodag/rest/utils/__init__.py b/eodag/rest/utils/__init__.py new file mode 100644 index 000000000..e1ca70918 --- /dev/null +++ b/eodag/rest/utils/__init__.py @@ -0,0 +1,216 @@ +# -*- coding: utf-8 -*- +# Copyright 2023, CS Systemes d'Information, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""EODAG REST utils""" +from __future__ import annotations + +import glob +import logging +import os +from io import BufferedReader +from shutil import make_archive, rmtree +from typing import ( + TYPE_CHECKING, + Any, + Callable, + Dict, + Iterator, + List, + NamedTuple, + Optional, + Union, +) +from urllib.parse import unquote_plus, urlencode + +import orjson +from fastapi import Request +from pydantic import ValidationError as pydanticValidationError + +from eodag.plugins.crunch.filter_latest_intersect import FilterLatestIntersect +from eodag.plugins.crunch.filter_latest_tpl_name import FilterLatestByName +from eodag.plugins.crunch.filter_overlap import FilterOverlap +from eodag.utils import StreamResponse +from eodag.utils.exceptions import ValidationError +from eodag.utils.rest import get_date, get_datetime + +if TYPE_CHECKING: + from eodag.rest.types.stac_search import SearchPostRequest + +# exportable content +__all__ = ["get_date", "get_datetime"] + +logger = logging.getLogger("eodag.rest.utils") + + +class Cruncher(NamedTuple): + """Type hinted Cruncher namedTuple""" + + clazz: Callable[..., Any] + config_params: List[str] + + +crunchers = { + "latestIntersect": Cruncher(FilterLatestIntersect, []), + "latestByName": Cruncher(FilterLatestByName, ["name_pattern"]), + "overlap": Cruncher(FilterOverlap, ["minimum_overlap"]), +} + + +def format_pydantic_error(e: pydanticValidationError) -> str: + """Format Pydantic ValidationError + + :param e: A Pydantic ValidationError object + :tyype e: pydanticValidationError + """ + error_header = f"{e.error_count()} error(s). " + + error_messages = [ + f'{err["loc"][0]}: {err["msg"]}' if err["loc"] else err["msg"] + for err in e.errors() + ] + return error_header + "; ".join(set(error_messages)) + + +def is_dict_str_any(var: Any) -> bool: + """Verify whether the variable is of type dict[str, Any]""" + if isinstance(var, Dict): + return all(isinstance(k, str) for k in var.keys()) # type: ignore + return False + + +def str2list(v: Optional[str]) -> Optional[List[str]]: + """Convert string to list base on , delimiter.""" + if v: + return v.split(",") + return None + + +def str2json(k: str, v: Optional[str] = None) -> Optional[Dict[str, Any]]: + """decoding a URL parameter and then parsing it as JSON.""" + if not v: + return None + try: + return orjson.loads(unquote_plus(v)) + except orjson.JSONDecodeError as e: + raise ValidationError(f"{k}: Incorrect JSON object") from e + + +def flatten_list(nested_list: Union[Any, List[Any]]) -> List[Any]: + """Flatten a nested list structure into a single list.""" + if not isinstance(nested_list, list): + return [nested_list] + else: + flattened: List[Any] = [] + for element in nested_list: + flattened.extend(flatten_list(element)) + return flattened + + +def list_to_str_list(input_list: List[Any]) -> List[str]: + """Attempt to convert a list of any type to a list of strings.""" + try: + # Try to convert each element to a string + return [str(element) for element in input_list] + except Exception as e: + # Raise an exception if any element cannot be converted + raise TypeError(f"Failed to convert to List[str]: {e}") from e + + +def get_next_link( + request: Request, + search_request: SearchPostRequest, + total_results: Optional[int], + items_per_page: int, +) -> Optional[Dict[str, Any]]: + """Generate next link URL and body""" + body = search_request.model_dump(exclude_none=True) + if "bbox" in body: + # bbox is tuple + body["bbox"] = list(body["bbox"]) + + params = dict(request.query_params) + + page = int(body.get("page", 0) or params.get("page", 0)) or 1 + + if total_results is None or items_per_page * page >= total_results: + return None + + url = str(request.state.url) + if request.method == "POST": + body["page"] = page + 1 + else: + params["page"] = str(page + 1) + url += f"?{urlencode(params)}" + + next: Dict[str, Any] = { + "rel": "next", + "href": url, + "title": "Next page", + "method": request.method, + "type": "application/geo+json", + } + if request.method == "POST": + next["body"] = body + return next + + +def read_file_chunks_and_delete( + opened_file: BufferedReader, chunk_size: int = 64 * 1024 +) -> Iterator[bytes]: + """Yield file chunks and delete file when finished.""" + while True: + data = opened_file.read(chunk_size) + if not data: + opened_file.close() + os.remove(opened_file.name) + logger.debug("%s deleted after streaming complete", opened_file.name) + break + yield data + yield data + + +def file_to_stream( + file_path: str, +) -> StreamResponse: + """Break a file into chunck and return it as a byte stream""" + if os.path.isdir(file_path): + # do not zip if dir contains only one file + all_filenames = [ + f + for f in glob.glob(os.path.join(file_path, "**", "*"), recursive=True) + if os.path.isfile(f) + ] + if len(all_filenames) == 1: + filepath_to_stream = all_filenames[0] + else: + filepath_to_stream = f"{file_path}.zip" + logger.debug( + "Building archive for downloaded product path %s", + filepath_to_stream, + ) + make_archive(file_path, "zip", file_path) + rmtree(file_path) + else: + filepath_to_stream = file_path + + filename = os.path.basename(filepath_to_stream) + return StreamResponse( + content=read_file_chunks_and_delete(open(filepath_to_stream, "rb")), + headers={ + "content-disposition": f"attachment; filename={filename}", + }, + ) diff --git a/eodag/rest/utils/cql_evaluate.py b/eodag/rest/utils/cql_evaluate.py new file mode 100644 index 000000000..b52de2fd4 --- /dev/null +++ b/eodag/rest/utils/cql_evaluate.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +# Copyright 2023, CS Systemes d'Information, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from datetime import datetime as dt +from typing import Any, Dict, List, Optional, Tuple, Union + +from pygeofilter import ast +from pygeofilter.backends.evaluator import Evaluator, handle +from pygeofilter.values import Geometry, Interval + +simpleNode = Union[ast.Attribute, str, int, complex, float, List[Any], Tuple[Any, ...]] + + +class EodagEvaluator(Evaluator): + """ + Evaluate a cql2 json expression and transform it to a STAC args object + """ + + @handle(ast.Attribute, str, int, complex, float, list, tuple) + def attribute(self, node: simpleNode, *_) -> simpleNode: + """handle attribute and literal""" + return node + + @handle(Geometry) + def spatial(self, node: Geometry) -> Dict[str, Any]: + """handle geometry""" + return node.geometry + + @handle(dt) + def temporal(self, node: dt) -> str: + """handle datetime""" + return node.strftime("%Y-%m-%dT%H:%M:%SZ") + + @handle(Interval) + def interval(self, _, *interval: Any) -> List[Any]: + """handle datetime interval""" + return list(interval) + + @handle( + ast.GeometryIntersects, + ast.Equal, + ast.LessEqual, + ast.GreaterEqual, + ast.TimeOverlaps, + ast.In, + ) + def predicate( + self, node: ast.Predicate, lhs: Any, rhs: Any + ) -> Optional[Dict[str, Any]]: + """ + Handle predicates + Verify the property is first attribute in each predicate + """ + if not isinstance(lhs, ast.Attribute): + raise ValueError( + f'invalid cql syntax, first argument in "{node.op.value}" must be a property' + ) + + if isinstance(node, ast.Equal) and not isinstance( + rhs, (int, float, complex, str) + ): + raise ValueError( + f'second argument in property "{lhs.name}" must be a string or a numeric value' + ) + + if isinstance(node, ast.GeometryIntersects) and not lhs.name == "geometry": + raise ValueError( + f'operator {node.op.value} is not supported for property "{lhs.name}"' + ) + + if isinstance(node, (ast.Equal, ast.GeometryIntersects)): + return {lhs.name: rhs} + + if isinstance(node, ast.LessEqual): + if not isinstance(node.rhs, dt): + raise ValueError( + f'operator "<=" is not supported for property "{lhs.name}"' + ) + return {"end_datetime": rhs} + + if isinstance(node, ast.GreaterEqual): + if not isinstance(node.rhs, dt): + raise ValueError( + f'operator ">=" is not supported for property "{lhs.name}"' + ) + return {"start_datetime": rhs} + + if isinstance(node, ast.TimeOverlaps): + return {"start_datetime": rhs[0], "end_datetime": rhs[1]} + + return None + + @handle(ast.In) + def contains(self, node: ast.In, lhs: Any, *rhs: Any): + """handle in keyword""" + if not isinstance(node.sub_nodes, list): # type: ignore + raise ValueError( + f'property "{lhs.name}" expects a value in list format with operator "in"' + ) + return {lhs.name: list(rhs)} + + @handle(ast.And) + def combination(self, _, lhs: Dict[str, str], rhs: Dict[str, str]): + """handle combinations""" + return {**lhs, **rhs} diff --git a/eodag/rest/utils/rfc3339.py b/eodag/rest/utils/rfc3339.py new file mode 100644 index 000000000..ae8ec5dff --- /dev/null +++ b/eodag/rest/utils/rfc3339.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +# Copyright 2023, CS Systemes d'Information, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import datetime +from typing import Optional, Tuple + +from eodag.utils.rest import rfc3339_str_to_datetime + + +def str_to_interval( + interval: Optional[str], +) -> Tuple[Optional[datetime.datetime], Optional[datetime.datetime]]: + """Extract a tuple of datetimes from an interval string. + + Interval strings are defined by + OGC API - Features Part 1 for the datetime query parameter value. These follow the + form '1985-04-12T23:20:50.52Z/1986-04-12T23:20:50.52Z', and allow either the start + or end (but not both) to be open-ended with '..' or ''. + + :param interval: The interval string to convert to a :class:`datetime.datetime` + tuple. + :type interval: str + + :raises: :class:`ValueError` + """ + if not interval: + return (None, None) + + if "/" not in interval: + date = rfc3339_str_to_datetime(interval) + return (date, date) + + values = interval.split("/") + if len(values) != 2: + raise ValueError( + f"Interval string '{interval}' contains more than one forward slash." + ) + + start = None + end = None + if values[0] not in ["..", ""]: + start = rfc3339_str_to_datetime(values[0]) + if values[1] not in ["..", ""]: + end = rfc3339_str_to_datetime(values[1]) + + if start is None and end is None: + raise ValueError("Double open-ended intervals are not allowed.") + if start is not None and end is not None and start > end: + raise ValueError("Start datetime cannot be before end datetime.") + else: + return start, end diff --git a/eodag/types/__init__.py b/eodag/types/__init__.py index 7d950bfc0..a8049e70a 100644 --- a/eodag/types/__init__.py +++ b/eodag/types/__init__.py @@ -18,8 +18,9 @@ """EODAG types""" from __future__ import annotations -from typing import Any, Dict, List, Literal, Optional, Union +from typing import Any, Dict, List, Literal, Optional, Tuple, TypedDict, Union +from annotated_types import Gt, Lt from pydantic import Field from pydantic.fields import FieldInfo @@ -56,13 +57,51 @@ def json_type_to_python(json_type: Union[str, List[str]]) -> type: return type(None) -def python_type_to_json(python_type: type) -> Optional[Union[str, List[str]]]: +def _get_min_or_max(type_info: Union[Lt, Gt, Any]) -> Tuple[str, Any]: + """ + checks if the value from an Annotated object is a minimum or maximum + :param type_info: info from Annotated + :return: "min" or "max" + """ + if isinstance(type_info, Gt): + return "min", type_info.gt + if isinstance(type_info, Lt): + return "max", type_info.lt + return "", None + + +def _get_type_info_from_annotated( + annotated_type: Annotated[type, Any] +) -> Dict[str, Any]: + """ + retrieves type information from an annotated object + :param annotated_type: annotated object + :return: dict containing type and min/max if available + """ + type_args = get_args(annotated_type) + type_data = { + "type": list(JSON_TYPES_MAPPING.keys())[ + list(JSON_TYPES_MAPPING.values()).index(type_args[0]) + ] + } + if len(type_args) >= 2: + min_or_max, value = _get_min_or_max(type_args[1]) + type_data[min_or_max] = value + if len(type_args) > 2: + min_or_max, value = _get_min_or_max(type_args[2]) + type_data[min_or_max] = value + return type_data + + +def python_type_to_json( + python_type: type, +) -> Optional[Union[str, List[Dict[str, Any]]]]: """Get json type from python https://spec.openapis.org/oas/v3.1.0#data-types >>> python_type_to_json(int) 'integer' >>> python_type_to_json(Union[float, str]) - ['number', 'string'] + [{'type': 'number'}, {'type': 'string'}] :param python_type: the python type :returns: the json type @@ -70,18 +109,25 @@ def python_type_to_json(python_type: type) -> Optional[Union[str, List[str]]]: if get_origin(python_type) is Union: json_type = list() for single_python_type in get_args(python_type): + type_data = {} if single_python_type in JSON_TYPES_MAPPING.values(): # JSON_TYPES_MAPPING key from given value single_json_type = list(JSON_TYPES_MAPPING.keys())[ list(JSON_TYPES_MAPPING.values()).index(single_python_type) ] - json_type.append(single_json_type) + type_data["type"] = single_json_type + json_type.append(type_data) + elif get_origin(single_python_type) == Annotated: + type_data = _get_type_info_from_annotated(single_python_type) + json_type.append(type_data) return json_type elif python_type in JSON_TYPES_MAPPING.values(): # JSON_TYPES_MAPPING key from given value return list(JSON_TYPES_MAPPING.keys())[ list(JSON_TYPES_MAPPING.values()).index(python_type) ] + elif get_origin(python_type) == Annotated: + return [_get_type_info_from_annotated(python_type)] else: return None @@ -99,7 +145,9 @@ def json_field_definition_to_python( ... 'title': 'Foo parameter' ... } ... ) - >>> str(result).replace('_extensions', '') # python3.8 compatibility + >>> res_repr = str(result).replace('_extensions', '') # python3.8 compatibility + >>> res_repr = res_repr.replace(', default=None', '') # pydantic >= 2.7.0 compatibility + >>> res_repr "typing.Annotated[bool, FieldInfo(annotation=NoneType, required=False, title='Foo parameter')]" :param json_field_definition: the json field definition @@ -159,13 +207,39 @@ def python_field_definition_to_json( # enum & type if get_origin(python_field_args[0]) is Literal: enum_args = get_args(python_field_args[0]) - json_field_definition["type"] = python_type_to_json(type(enum_args[0])) + type_data = python_type_to_json(type(enum_args[0])) + if isinstance(type_data, str): + json_field_definition["type"] = type_data + else: + json_field_definition["type"] = [row["type"] for row in type_data] + json_field_definition["min"] = [ + row["min"] if "min" in row else None for row in type_data + ] + json_field_definition["max"] = [ + row["max"] if "max" in row else None for row in type_data + ] json_field_definition["enum"] = list(enum_args) # type else: field_type = python_type_to_json(python_field_args[0]) - if field_type is not None: - json_field_definition["type"] = python_type_to_json(python_field_args[0]) + if isinstance(field_type, str): + json_field_definition["type"] = field_type + else: + json_field_definition["type"] = [row["type"] for row in field_type] + json_field_definition["min"] = [ + row["min"] if "min" in row else None for row in field_type + ] + json_field_definition["max"] = [ + row["max"] if "max" in row else None for row in field_type + ] + if "min" in json_field_definition and json_field_definition["min"].count( + None + ) == len(json_field_definition["min"]): + json_field_definition.pop("min") + if "max" in json_field_definition and json_field_definition["max"].count( + None + ) == len(json_field_definition["max"]): + json_field_definition.pop("max") if len(python_field_args) < 2: return json_field_definition @@ -204,7 +278,9 @@ def model_fields_to_annotated( >>> from pydantic import create_model >>> some_model = create_model("some_model", foo=(str, None)) >>> fields_definitions = model_fields_to_annotated(some_model.model_fields) - >>> str(fields_definitions).replace('_extensions', '') # python3.8 compatibility + >>> fd_repr = str(fields_definitions).replace('_extensions', '') # python3.8 compatibility + >>> fd_repr = fd_repr.replace(', default=None', '') # pydantic >= 2.7.0 compatibility + >>> fd_repr "{'foo': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False)]}" :param model_fields: BaseModel.model_fields to convert @@ -217,3 +293,17 @@ def model_fields_to_annotated( new_field_info.annotation = None annotated_model_fields[param] = Annotated[field_type, new_field_info] return annotated_model_fields + + +class ProviderSortables(TypedDict): + """A class representing sortable parameter(s) of a provider and the allowed + maximum number of used sortable(s) in a search request with the provider + + :param sortables: The list of sortable parameter(s) of a provider + :type sortables: list[str] + :param max_sort_params: (optional) The allowed maximum number of sortable(s) in a search request with the provider + :type max_sort_params: int + """ + + sortables: List[str] + max_sort_params: Annotated[Optional[int], Gt(0)] diff --git a/eodag/types/bbox.py b/eodag/types/bbox.py index 612f29d64..5d79ec2c2 100644 --- a/eodag/types/bbox.py +++ b/eodag/types/bbox.py @@ -15,9 +15,9 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -from typing import Any, Dict, List, Tuple, Union +from typing import Dict, List, Tuple, Union -from pydantic import BaseModel, validator +from pydantic import BaseModel, ValidationInfo, field_validator from shapely.geometry.polygon import Polygon NumType = Union[float, int] @@ -36,7 +36,7 @@ class BBox(BaseModel): lonmax: NumType latmax: NumType - def __init__(__pydantic_self__, bboxArgs: BBoxArgs) -> None: # type: ignore + def __init__(__pydantic_self__, bboxArgs: BBoxArgs) -> None: # type: ignore # pylint: disable=no-self-argument """ Constructs all the necessary attributes for the BBox object. @@ -55,11 +55,12 @@ def __init__(__pydantic_self__, bboxArgs: BBoxArgs) -> None: # type: ignore values = bboxArgs else: raise ValueError( - "Expected a dictionary, list or tuple with 4 values for lonmin, latmin, lonmax, latmax" + "Expected a dictionary,", + " list or tuple with 4 values for lonmin, latmin, lonmax, latmax", ) super().__init__(**values) - @validator("lonmin", "lonmax") + @field_validator("lonmin", "lonmax") @classmethod def validate_longitude(cls, v: NumType) -> NumType: """ @@ -72,7 +73,7 @@ def validate_longitude(cls, v: NumType) -> NumType: raise ValueError("Longitude values must be between -180 and 180") return v - @validator("latmin", "latmax") + @field_validator("latmin", "latmax") @classmethod def validate_latitude(cls, v: NumType) -> NumType: """ @@ -85,31 +86,31 @@ def validate_latitude(cls, v: NumType) -> NumType: raise ValueError("Latitude values must be between -90 and 90") return v - @validator("lonmax") + @field_validator("lonmax") @classmethod - def validate_lonmax(cls, v: NumType, values: Dict[str, Any]) -> NumType: + def validate_lonmax(cls, v: NumType, info: ValidationInfo) -> NumType: """ Validates that lonmax is greater than lonmin. :param v: The lonmax value to be validated. - :param values: A dictionary containing the current attribute values. + :param info: Additional validation informations. :return: The validated lonmax value. """ - if "lonmin" in values and v < values["lonmin"]: + if "lonmin" in info.data and v < info.data["lonmin"]: raise ValueError("lonmax must be greater than lonmin") return v - @validator("latmax") + @field_validator("latmax") @classmethod - def validate_latmax(cls, v: NumType, values: Dict[str, Any]) -> NumType: + def validate_latmax(cls, v: NumType, info: ValidationInfo) -> NumType: """ Validates that latmax is greater than latmin. :param v: The latmax value to be validated. - :param values: A dictionary containing the current attribute values. + :param info: Additional validation informations. :return: The validated latmax value. """ - if "latmin" in values and v < values["latmin"]: + if "latmin" in info.data and v < info.data["latmin"]: raise ValueError("latmax must be greater than latmin") return v diff --git a/eodag/types/download_args.py b/eodag/types/download_args.py new file mode 100644 index 000000000..99e4a4ef0 --- /dev/null +++ b/eodag/types/download_args.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Copyright 2024, CS GROUP - France, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from __future__ import annotations + +from typing import Dict, TypedDict + + +class DownloadConf(TypedDict, total=False): + """Download configuration""" + + outputs_prefix: str + outputs_extension: str + extract: bool + dl_url_params: Dict[str, str] + delete_archive: bool + asset: str diff --git a/eodag/types/search_args.py b/eodag/types/search_args.py index ea2ca24d5..e3f5510c7 100644 --- a/eodag/types/search_args.py +++ b/eodag/types/search_args.py @@ -15,9 +15,11 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +import re from datetime import datetime -from typing import Dict, List, Optional, Tuple, Union, cast +from typing import Any, Dict, List, Optional, Tuple, Union, cast +from annotated_types import MinLen from pydantic import BaseModel, ConfigDict, Field, conint, field_validator from shapely import wkt from shapely.errors import GEOSException @@ -25,12 +27,14 @@ from shapely.geometry.base import GEOMETRY_TYPES, BaseGeometry from eodag.types.bbox import BBox -from eodag.utils import DEFAULT_ITEMS_PER_PAGE, DEFAULT_PAGE +from eodag.utils import DEFAULT_ITEMS_PER_PAGE, DEFAULT_PAGE, Annotated +from eodag.utils.exceptions import ValidationError NumType = Union[float, int] GeomArgs = Union[List[NumType], Tuple[NumType], Dict[str, NumType], str, BaseGeometry] PositiveInt = conint(gt=0) +SortByList = Annotated[List[Tuple[str, str]], MinLen(1)] class SearchArgs(BaseModel): @@ -47,6 +51,7 @@ class SearchArgs(BaseModel): locations: Optional[Dict[str, str]] = Field(None) page: Optional[int] = Field(DEFAULT_PAGE, gt=0) # type: ignore items_per_page: Optional[PositiveInt] = Field(DEFAULT_ITEMS_PER_PAGE) # type: ignore + sortBy: Optional[SortByList] = Field(None) # type: ignore @field_validator("start", "end", mode="before") @classmethod @@ -60,24 +65,70 @@ def check_date_format(cls, v: str) -> str: @field_validator("geom", mode="before") @classmethod - def check_geom(cls, v: GeomArgs) -> BaseGeometry: + def check_geom(cls, v: Any) -> BaseGeometry: """Validate geom""" # GeoJSON geometry - if isinstance(v, dict) and v.get("type") in GEOMETRY_TYPES: + if isinstance(v, dict) and v.get("type") in GEOMETRY_TYPES: # type: ignore return cast(BaseGeometry, shape(v)) # Bounding Box if isinstance(v, (list, tuple, dict)): - return BBox(v).to_polygon() + return BBox(v).to_polygon() # type: ignore if isinstance(v, str): # WKT geometry try: - return cast(Polygon, wkt.loads(v)) - except GEOSException as e: + return cast(Polygon, wkt.loads(v)) # type: ignore + except GEOSException as e: # type: ignore raise ValueError(f"Invalid geometry WKT string: {v}") from e if isinstance(v, BaseGeometry): return v raise TypeError(f"Invalid geometry type: {type(v)}") + + @field_validator("sortBy", mode="before") + @classmethod + def check_sort_by_arg( + cls, sort_by_arg: Optional[SortByList] # type: ignore + ) -> Optional[SortByList]: # type: ignore + """Check if the sortBy argument is correct + + :param sort_by_arg: The sortBy argument + :type sort_by_arg: str + :returns: The sortBy argument with sorting order parsed (whitespace(s) are + removed and only the 3 first letters in uppercase are kept) + :rtype: str + """ + if sort_by_arg is None: + return None + + assert isinstance( + sort_by_arg, list + ), f"Sort argument must be a list of tuple(s), got a '{type(sort_by_arg)}' instead" + sort_order_pattern = r"^(ASC|DES)[a-zA-Z]*$" + for i, sort_by_tuple in enumerate(sort_by_arg): + assert isinstance( + sort_by_tuple, tuple + ), f"Sort argument must be a list of tuple(s), got a list of '{type(sort_by_tuple)}' instead" + # get sorting elements by removing leading and trailing whitespace(s) if exist + sort_param = sort_by_tuple[0].strip() + sort_order = sort_by_tuple[1].strip().upper() + assert re.match(sort_order_pattern, sort_order) is not None, ( + "Sorting order must be set to 'ASC' (ASCENDING) or 'DESC' (DESCENDING), " + f"got '{sort_order}' with '{sort_param}' instead" + ) + sort_by_arg[i] = (sort_param, sort_order[:3]) + # remove duplicates + pruned_sort_by_arg: SortByList = list(set(sort_by_arg)) # type: ignore + for i, sort_by_tuple in enumerate(pruned_sort_by_arg): + for j, sort_by_tuple_tmp in enumerate(pruned_sort_by_arg): + # since duplicated tuples or dictionnaries have been removed, if two sorting parameters are equal, + # then their sorting order is different and there is a contradiction that would raise an error + if i != j and sort_by_tuple[0] == sort_by_tuple_tmp[0]: + raise ValidationError( + f"'{sort_by_tuple[0]}' parameter is called several times to sort results with different " + "sorting orders. Please set it to only one ('ASC' (ASCENDING) or 'DESC' (DESCENDING))", + set([sort_by_tuple[0]]), + ) + return pruned_sort_by_arg diff --git a/eodag/types/whoosh.py b/eodag/types/whoosh.py new file mode 100644 index 000000000..c2c405667 --- /dev/null +++ b/eodag/types/whoosh.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- +# Copyright 2024, CS Systemes d'Information, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import List + +from whoosh.fields import Schema +from whoosh.matching import NullMatcher +from whoosh.qparser import OrGroup, QueryParser, plugins +from whoosh.query.positional import Phrase +from whoosh.query.qcore import QueryError + + +class RobustPhrase(Phrase): + """ + Matches documents containing a given phrase. + """ + + def matcher(self, searcher, context=None): + """ + Override the default to not raise error on match exception but simply return not found + Needed to handle phrase search in whoosh.fields.IDLIST + """ + try: + return super().matcher(searcher, context) + except QueryError: + return NullMatcher() + + +class EODAGQueryParser(QueryParser): + """ + A hand-written query parser built on modular plug-ins. + + Override the default to include specific EODAG configuration + """ + + def __init__( + self, + filters: List[str], + schema: Schema, + ): + """ + EODAG QueryParser initialization + + :param filters: list of fieldnames to filter on + :type filters: List[str] + :param schema: Whoosh Schema + :type schma: :class:whoosh.fields.Schema + """ + super().__init__( + None, + schema=schema, + plugins=[ + plugins.SingleQuotePlugin(), + plugins.FieldsPlugin(), + plugins.WildcardPlugin(), + plugins.PhrasePlugin(), + plugins.GroupPlugin(), + plugins.OperatorsPlugin(), + plugins.BoostPlugin(), + plugins.EveryPlugin(), + plugins.RangePlugin(), + plugins.PlusMinusPlugin(), + plugins.MultifieldPlugin(filters, fieldboosts=None), + ], + phraseclass=RobustPhrase, + group=OrGroup, + ) diff --git a/eodag/utils/__init__.py b/eodag/utils/__init__.py index 76469f8a7..b7236d540 100644 --- a/eodag/utils/__init__.py +++ b/eodag/utils/__init__.py @@ -20,6 +20,7 @@ Everything that does not fit into one of the specialised categories of utilities in this package should go here """ + from __future__ import annotations import ast @@ -29,15 +30,19 @@ import hashlib import inspect import logging as py_logging +import mimetypes import os import re import shutil +import ssl import string +import sys import types import unicodedata import warnings from collections import defaultdict from copy import deepcopy as copy_deepcopy +from dataclasses import dataclass from datetime import datetime as dt from email.message import Message from glob import glob @@ -52,10 +57,12 @@ Dict, Iterator, List, + Mapping, Optional, Tuple, Type, Union, + cast, ) # All modules using these should import them from utils package @@ -71,12 +78,16 @@ ) from urllib.request import url2pathname -try: +if sys.version_info >= (3, 9): from typing import Annotated, get_args, get_origin # noqa -except ImportError: - # for python < 3.9 +else: from typing_extensions import Annotated, get_args, get_origin # type: ignore # noqa +if sys.version_info >= (3, 12): + from typing import Unpack # type: ignore # noqa +else: + from typing_extensions import Unpack # noqa + import click import orjson import shapefile @@ -89,7 +100,7 @@ from jsonpath_ng.jsonpath import Child, Fields, Index, Root, Slice from requests import HTTPError from shapely.geometry import Polygon, shape -from shapely.geometry.base import BaseGeometry +from shapely.geometry.base import GEOMETRY_TYPES, BaseGeometry from tqdm.auto import tqdm from eodag.utils import logging as eodag_logging @@ -128,6 +139,9 @@ # (DEFAULT_ITEMS_PER_PAGE) to increase it to the known and current minimum value (mundi) DEFAULT_MAX_ITEMS_PER_PAGE = 50 +# default product-types start date +DEFAULT_MISSION_START_DATE = "2015-01-01T00:00:00Z" + def _deprecated(reason: str = "", version: Optional[str] = None) -> Callable[..., Any]: """Simple decorator to mark functions/methods/classes as deprecated. @@ -822,7 +836,7 @@ def list_items_recursive_apply( def items_recursive_sort( - input_obj: Union[List[Any], Dict[Any, Any]] + input_obj: Union[List[Any], Dict[Any, Any]], ) -> Union[List[Any], Dict[Any, Any]]: """Recursive sort dict items contained in input object (dict or list) @@ -1083,7 +1097,10 @@ def get_geometry_from_various( geom_arg = query_args["geometry"] bbox_keys = ["lonmin", "latmin", "lonmax", "latmax"] - if isinstance(geom_arg, dict) and all(k in geom_arg for k in bbox_keys): + if isinstance(geom_arg, dict) and geom_arg.get("type") in GEOMETRY_TYPES: + # geojson geometry + geom = cast(BaseGeometry, shape(geom_arg)) + elif isinstance(geom_arg, dict) and all(k in geom_arg for k in bbox_keys): # bbox dict geom = Polygon( ( @@ -1230,7 +1247,9 @@ def cached_parse(str_to_parse: str) -> JSONPath: @functools.lru_cache() def _mutable_cached_yaml_load(config_path: str) -> Any: - with open(os.path.abspath(os.path.realpath(config_path)), "r") as fh: + with open( + os.path.abspath(os.path.realpath(config_path)), mode="r", encoding="utf-8" + ) as fh: return yaml.load(fh, Loader=yaml.SafeLoader) @@ -1289,8 +1308,9 @@ def get_bucket_name_and_prefix( prefix = path elif bucket_path_level is not None: parts = path.split("/") - bucket, prefix = parts[bucket_path_level], "/".join( - parts[(bucket_path_level + 1) :] + bucket, prefix = ( + parts[bucket_path_level], + "/".join(parts[(bucket_path_level + 1) :]), ) return bucket, prefix @@ -1409,3 +1429,46 @@ def cast_scalar_value(value: Any, new_type: Any) -> Any: return eval(value.capitalize()) return new_type(value) + + +@dataclass +class StreamResponse: + """Represents a streaming response""" + + content: Iterator[bytes] + headers: Optional[Mapping[str, str]] = None + media_type: Optional[str] = None + status_code: Optional[int] = None + + +def guess_file_type(file: str) -> Optional[str]: + """guess the mime type of a file or URL based on its extension""" + mimetypes.add_type("text/xml", ".xsd") + mimetypes.add_type("application/x-grib", ".grib") + mime_type, _ = mimetypes.guess_type(file, False) + return mime_type + + +def guess_extension(type: str) -> Optional[str]: + """guess extension from mime type""" + mimetypes.add_type("text/xml", ".xsd") + mimetypes.add_type("application/x-grib", ".grib") + return mimetypes.guess_extension(type, strict=False) + + +def get_ssl_context(ssl_verify: bool) -> ssl.SSLContext: + """ + Returns an SSL context based on ssl_verify argument. + :param ssl_verify: ssl_verify parameter + :type ssl_verify: bool + :returns: An SSL context object. + :rtype: ssl.SSLContext + """ + ctx = ssl.create_default_context() + if not ssl_verify: + ctx.check_hostname = False + ctx.verify_mode = ssl.CERT_NONE + else: + ctx.check_hostname = True + ctx.verify_mode = ssl.CERT_REQUIRED + return ctx diff --git a/eodag/utils/constraints.py b/eodag/utils/constraints.py index e59d4f7bf..a4bc15361 100644 --- a/eodag/utils/constraints.py +++ b/eodag/utils/constraints.py @@ -19,13 +19,14 @@ import logging from typing import Any, Dict, List, Set, Union -import requests +from requests.auth import AuthBase from eodag.api.product.metadata_mapping import get_provider_queryable_key from eodag.plugins.apis.base import Api from eodag.plugins.search.base import Search -from eodag.utils import HTTP_REQ_TIMEOUT, USER_AGENT, deepcopy -from eodag.utils.exceptions import TimeOutError, ValidationError +from eodag.utils import deepcopy +from eodag.utils.exceptions import RequestError, ValidationError +from eodag.utils.requests import fetch_json logger = logging.getLogger("eodag.constraints") @@ -73,8 +74,20 @@ def get_constraint_queryables_with_additional_params( if provider_key and provider_key in constraint: eodag_provider_key_mapping[provider_key] = param params_available[param] = True - if value in constraint[provider_key]: + if ( + isinstance(value, list) + and all([v in constraint[provider_key] for v in value]) + or not isinstance(value, list) + and value in constraint[provider_key] + ): params_matched[param] = True + elif isinstance(value, str): + # for Copernicus providers, values can be multiple and represented with a string + # separated by slashes (example: time = "0000/0100/0200") + values = value.split("/") + params_matched[param] = all( + [v in constraint[provider_key] for v in values] + ) values_available[param].update(constraint[provider_key]) # match with default values of params for default_param, default_value in defaults.items(): @@ -167,42 +180,29 @@ def fetch_constraints( :returns: list of constraints fetched from the provider :rtype: List[Dict[Any, Any]] """ + auth = ( + plugin.auth + if hasattr(plugin, "auth") and isinstance(plugin.auth, AuthBase) + else None + ) try: - headers = USER_AGENT - logger.debug("fetching constraints from %s", constraints_url) - if hasattr(plugin, "auth"): - res = requests.get( - constraints_url, - headers=headers, - auth=plugin.auth, - timeout=HTTP_REQ_TIMEOUT, - ) - else: - res = requests.get( - constraints_url, headers=headers, timeout=HTTP_REQ_TIMEOUT - ) - res.raise_for_status() - except requests.exceptions.Timeout as exc: - raise TimeOutError(exc, timeout=HTTP_REQ_TIMEOUT) from exc - except requests.exceptions.HTTPError as err: - logger.error( - "constraints could not be fetched from %s, error: %s", - constraints_url, - str(err), - ) + constraints_data = fetch_json(constraints_url, auth=auth) + except RequestError as err: + logger.error(str(err)) + return [] + + config = plugin.config.__dict__ + if ( + "constraints_entry" in config + and config["constraints_entry"] + and config["constraints_entry"] in constraints_data + ): + constraints = constraints_data[config["constraints_entry"]] + elif config.get("stop_without_constraints_entry_key", False): return [] else: - constraints_data = res.json() - config = plugin.config.__dict__ - if ( - "constraints_entry" in config - and config["constraints_entry"] - and config["constraints_entry"] in constraints_data - ): - constraints = constraints_data[config["constraints_entry"]] - else: - constraints = constraints_data - return constraints + constraints = constraints_data + return constraints def _get_other_possible_values_for_values_with_defaults( diff --git a/eodag/utils/exceptions.py b/eodag/utils/exceptions.py index d12f18a9a..6dcc12365 100644 --- a/eodag/utils/exceptions.py +++ b/eodag/utils/exceptions.py @@ -23,77 +23,83 @@ from typing import Optional, Set, Tuple -class ValidationError(Exception): +class EodagError(Exception): + """General EODAG error""" + + +class ValidationError(EodagError): """Error validating data""" - def __init__(self, message: str) -> None: + def __init__(self, message: str, parameters: Set[str] = set()) -> None: self.message = message + self.parameters = parameters -class PluginNotFoundError(Exception): +class PluginNotFoundError(EodagError): """Error when looking for a plugin class that was not defined""" -class PluginImplementationError(Exception): +class PluginImplementationError(EodagError): """Error when a plugin does not behave as expected""" -class MisconfiguredError(Exception): +class MisconfiguredError(EodagError): """An error indicating a Search Plugin that is not well configured""" -class AddressNotFound(Exception): +class AddressNotFound(EodagError): """An error indicating the address of a subdataset was not found""" -class UnsupportedProvider(Exception): +class UnsupportedProvider(EodagError): """An error indicating that eodag does not support a provider""" -class UnsupportedProductType(Exception): +class UnsupportedProductType(EodagError): """An error indicating that eodag does not support a product type""" def __init__(self, product_type: str) -> None: self.product_type = product_type -class UnsupportedDatasetAddressScheme(Exception): +class UnsupportedDatasetAddressScheme(EodagError): """An error indicating that eodag does not yet support an address scheme for accessing raster subdatasets""" -class AuthenticationError(Exception): +class AuthenticationError(EodagError): """An error indicating that an authentication plugin did not succeeded authenticating a user""" -class DownloadError(Exception): +class DownloadError(EodagError): """An error indicating something wrong with the download process""" -class NotAvailableError(Exception): +class NotAvailableError(EodagError): """An error indicating that the product is not available for download""" -class RequestError(Exception): +class RequestError(EodagError): """An error indicating that a request has failed. Usually eodag functions and methods should catch and skip this""" - history: Set[Tuple[Exception, str]] = set() + history: Set[Tuple[str, Exception]] = set() + parameters: Set[str] = set() def __str__(self): repr = super().__str__() for err_tuple in self.history: - repr += f"\n- {str(err_tuple)}" + repr += f"- {str(err_tuple)}" return repr -class NoMatchingProductType(Exception): +class NoMatchingProductType(EodagError): """An error indicating that eodag was unable to derive a product type from a set of search parameters""" -class STACOpenerError(Exception): +class STACOpenerError(EodagError): """An error indicating that a STAC file could not be opened""" diff --git a/eodag/utils/requests.py b/eodag/utils/requests.py new file mode 100644 index 000000000..9fda6e135 --- /dev/null +++ b/eodag/utils/requests.py @@ -0,0 +1,138 @@ +# -*- coding: utf-8 -*- +# Copyright 2024, CS GROUP - France, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from __future__ import annotations + +import logging +import os +from typing import Any, Optional, Tuple + +import requests + +from eodag.utils import HTTP_REQ_TIMEOUT, USER_AGENT, path_to_uri, uri_to_path +from eodag.utils.exceptions import RequestError, TimeOutError + +logger = logging.getLogger("eodag.utils.requests") + + +def fetch_json( + file_url: str, + req_session: Optional[requests.Session] = None, + auth: Optional[requests.AuthBase] = None, + timeout: float = HTTP_REQ_TIMEOUT, +) -> Any: + """ + Fetches http/distant or local json file + + :param file_url: url from which the file can be fetched + :type file_url: str + :param req_session: (optional) requests session + :type req_session: requests.Session + :param auth: (optional) authenticated object if request needs authentication + :type auth: Optional[requests.AuthBase] + :param timeout: (optional) authenticated object + :type timeout: float + :returns: json file content + :rtype: Any + """ + if req_session is None: + req_session = requests.Session() + try: + if not file_url.lower().startswith("http"): + file_url = path_to_uri(os.path.abspath(file_url)) + req_session.mount("file://", LocalFileAdapter()) + + headers = USER_AGENT + logger.debug(f"fetching {file_url}") + res = req_session.get( + file_url, + headers=headers, + auth=auth, + timeout=timeout, + ) + res.raise_for_status() + except requests.exceptions.Timeout as exc: + raise TimeOutError(exc, timeout=HTTP_REQ_TIMEOUT) from exc + except requests.exceptions.RequestException as exc: + raise RequestError( + f"Unable to fetch {file_url}: {str(exc)}", + ) from exc + else: + return res.json() + + +class LocalFileAdapter(requests.adapters.BaseAdapter): + """Protocol Adapter to allow Requests to GET file:// URLs inspired + by https://stackoverflow.com/questions/10123929/fetch-a-file-from-a-local-url-with-python-requests/27786580 + `LocalFileAdapter` class available for the moment (on the 2024-04-22) + """ + + @staticmethod + def _chkpath(method: str, path: str) -> Tuple[int, str]: + """Return an HTTP status for the given filesystem path. + + :param method: method of the request + :type method: str + :param path: path of the given file + :type path: str + :returns: HTTP status and its associated message + :rtype: Tuple[int, str] + """ + if method.lower() in ("put", "delete"): + return 501, "Not Implemented" # TODO + elif method.lower() not in ("get", "head"): + return 405, "Method Not Allowed" + elif os.path.isdir(path): + return 400, "Path Not A File" + elif not os.path.isfile(path): + return 404, "File Not Found" + elif not os.access(path, os.R_OK): + return 403, "Access Denied" + else: + return 200, "OK" + + def send(self, req: requests.PreparedRequest, **kwargs: Any) -> requests.Response: + """Wraps a file, described in request, in a Response object. + + :param req: The PreparedRequest being "sent". + :type req: :class:`~requests.PreparedRequest` + :param kwargs: (not used) additionnal arguments of the request + :type kwargs: Any + :returns: a Response object containing the file + :rtype: :class:`~requests.Response` + """ + response = requests.Response() + + path_url = uri_to_path(req.url) + + if req.method is None or req.url is None: + raise RequestError("Method or url of the request is missing") + response.status_code, response.reason = self._chkpath(req.method, path_url) + if response.status_code == 200 and req.method.lower() != "head": + try: + response.raw = open(path_url, "rb") + except (OSError, IOError) as err: + response.status_code = 500 + response.reason = str(err) + response.url = req.url + response.request = req + + return response + + def close(self): + """Closes without cleaning up adapter specific items.""" + pass diff --git a/eodag/utils/rest.py b/eodag/utils/rest.py new file mode 100644 index 000000000..eaa1cd1f7 --- /dev/null +++ b/eodag/utils/rest.py @@ -0,0 +1,104 @@ +# -*- coding: utf-8 -*- +# Copyright 2018, CS GROUP - France, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""eodag.rest.utils methods that must be importable without eodag[server] installed""" + +from __future__ import annotations + +import datetime +import re +from typing import Any, Dict, Optional, Tuple + +import dateutil.parser +from dateutil import tz + +from eodag.utils.exceptions import ValidationError + +RFC3339_PATTERN = ( + r"^(\d{4})-(\d{2})-(\d{2})" + r"(?:T(\d{2}):(\d{2}):(\d{2})(\.\d+)?" + r"(Z|([+-])(\d{2}):(\d{2}))?)?$" +) + + +def get_datetime(arguments: Dict[str, Any]) -> Tuple[Optional[str], Optional[str]]: + """Get start and end dates from a dict containing `/` separated dates in `datetime` item + + :param arguments: dict containing a single date or `/` separated dates in `datetime` item + :type arguments: dict + :returns: Start date and end date from datetime string (duplicate value if only one date as input) + :rtype: Tuple[Optional[str], Optional[str]] + """ + datetime_str = arguments.pop("datetime", None) + + if datetime_str: + datetime_split = datetime_str.split("/") + if len(datetime_split) > 1: + dtstart = datetime_split[0] if datetime_split[0] != ".." else None + dtend = datetime_split[1] if datetime_split[1] != ".." else None + elif len(datetime_split) == 1: + # same time for start & end if only one is given + dtstart, dtend = datetime_split[0:1] * 2 + else: + return None, None + + return get_date(dtstart), get_date(dtend) + + else: + # return already set (dtstart, dtend) or None + dtstart = get_date(arguments.pop("dtstart", None)) + dtend = get_date(arguments.pop("dtend", None)) + return get_date(dtstart), get_date(dtend) + + +def get_date(date: Optional[str]) -> Optional[str]: + """Check if the input date can be parsed as a date""" + + if not date: + return None + try: + return ( + dateutil.parser.parse(date) + .replace(tzinfo=tz.UTC) + .isoformat() + .replace("+00:00", "") + ) + except ValueError as e: + exc = ValidationError("invalid input date: %s" % e) + raise exc + + +def rfc3339_str_to_datetime(s: str) -> datetime.datetime: + """Convert a string conforming to RFC 3339 to a :class:`datetime.datetime`. + + :param s: The string to convert to :class:`datetime.datetime` + :type s: str + + :returns: The datetime represented by the ISO8601 (RFC 3339) formatted string + :rtype: :class:`datetime.datetime` + + raises: :class:`ValidationError` + """ + # Uppercase the string + s = s.upper() + + # Match against RFC3339 regex. + result = re.match(RFC3339_PATTERN, s) + if not result: + raise ValidationError("Invalid RFC3339 datetime.") + + return dateutil.parser.isoparse(s).replace(tzinfo=datetime.timezone.utc) diff --git a/eodag/utils/stac_reader.py b/eodag/utils/stac_reader.py index ac2772af3..54fdd7183 100644 --- a/eodag/utils/stac_reader.py +++ b/eodag/utils/stac_reader.py @@ -27,8 +27,9 @@ import concurrent.futures import orjson import pystac +from pystac.stac_object import STACObjectType -from eodag.utils import HTTP_REQ_TIMEOUT +from eodag.utils import HTTP_REQ_TIMEOUT, get_ssl_context from eodag.utils.exceptions import STACOpenerError logger = logging.getLogger("eodag.utils.stac_reader") @@ -38,10 +39,11 @@ class _TextOpener: """Exhaust read methods for pystac.StacIO in the order defined in the openers list""" - def __init__(self, timeout: int) -> None: + def __init__(self, timeout: int, ssl_verify: bool) -> None: self.openers = [self.read_local_json, self.read_http_remote_json] # Only used by read_http_remote_json self.timeout = timeout + self.ssl_verify = ssl_verify @staticmethod def read_local_json(url: str, as_json: bool = False) -> Any: @@ -54,13 +56,14 @@ def read_local_json(url: str, as_json: bool = False) -> Any: with open(url) as f: return f.read() except OSError: - logger.debug("read_local_json is not the right STAC opener") - raise STACOpenerError + raise STACOpenerError("read_local_json is not the right STAC opener") def read_http_remote_json(self, url: str, as_json: bool = False) -> Any: """Read JSON remote HTTP file""" + ssl_ctx = get_ssl_context(self.ssl_verify) + try: - res = urlopen(url, timeout=self.timeout) + res = urlopen(url, timeout=self.timeout, context=ssl_ctx) content_type = res.getheader("Content-Type") if content_type is None: encoding = "utf-8" @@ -79,17 +82,19 @@ def read_http_remote_json(self, url: str, as_json: bool = False) -> Any: f"{url} with a timeout of {self.timeout} seconds" ) from None else: - logger.debug("read_http_remote_json is not the right STAC opener") - raise STACOpenerError + raise STACOpenerError( + "read_http_remote_json is not the right STAC opener" + ) def __call__(self, url: str, as_json: bool = False) -> Any: + openers = self.openers[:] res = None - while self.openers: + while openers: try: - res = self.openers[0](url, as_json) + res = openers[0](url, as_json) except STACOpenerError: # Remove the opener that just failed - self.openers.pop(0) + openers.pop(0) if res is not None: break if res is None: @@ -102,6 +107,7 @@ def fetch_stac_items( recursive: bool = False, max_connections: int = 100, timeout: int = HTTP_REQ_TIMEOUT, + ssl_verify: bool = True, ) -> List[Dict[str, Any]]: """Fetch STAC item from a single item file or items from a catalog. @@ -112,14 +118,16 @@ def fetch_stac_items( :param max_connections: (optional) Maximum number of connections for HTTP requests :type max_connections: int :param timeout: (optional) Timeout in seconds for each internal HTTP request - :type timeout: float + :type timeout: int + :param ssl_verify: (optional) SSL Verification for HTTP request + :type ssl_verify: bool :returns: The items found in `stac_path` :rtype: :class:`list` """ # URI opener used by PySTAC internally, instantiated here # to retrieve the timeout. - _text_opener = _TextOpener(timeout) + _text_opener = _TextOpener(timeout, ssl_verify) pystac.StacIO.read_text = _text_opener stac_obj = pystac.read_file(stac_path) @@ -142,6 +150,8 @@ def _fetch_stac_items_from_catalog( _text_opener: Callable[[str, bool], Any], ) -> List[Any]: """Fetch items from a STAC catalog""" + items: List[Dict[Any, Any]] = [] + # pystac cannot yet return links from a single file catalog, see: # https://github.com/stac-utils/pystac/issues/256 extensions: Optional[Union[List[str], str]] = getattr(cat, "stac_extensions", None) @@ -151,8 +161,7 @@ def _fetch_stac_items_from_catalog( items = [feature for feature in cat.to_dict()["features"]] return items - # Making the links absolutes allow for both relative and absolute links - # to be handled. + # Making the links absolutes allow for both relative and absolute links to be handled. if not recursive: hrefs: List[Optional[str]] = [ link.get_absolute_href() for link in cat.get_item_links() @@ -164,7 +173,6 @@ def _fetch_stac_items_from_catalog( link.get_absolute_href() for link in parent_catalog.get_item_links() ] - items: List[Dict[Any, Any]] = [] if hrefs: logger.debug("Fetching %s items", len(hrefs)) with concurrent.futures.ThreadPoolExecutor( @@ -176,5 +184,81 @@ def _fetch_stac_items_from_catalog( for future in concurrent.futures.as_completed(future_to_href): item = future.result() if item: - items.append(future.result()) + items.append(item) return items + + +def fetch_stac_collections( + stac_path: str, + collection: Optional[str] = None, + max_connections: int = 100, + timeout: int = HTTP_REQ_TIMEOUT, + ssl_verify: bool = True, +) -> List[Dict[str, Any]]: + """Fetch STAC collection(s) from a catalog. + + :param stac_path: A STAC object filepath + :type stac_path: str + :param collection: the collection to fetch + :type collection: Optional[str] + :param max_connections: (optional) Maximum number of connections for HTTP requests + :type max_connections: int + :param timeout: (optional) Timeout in seconds for each internal HTTP request + :type timeout: int + :param ssl_verify: (optional) SSL Verification for HTTP request + :type ssl_verify: bool + :returns: The collection(s) found in `stac_path` + :rtype: :class:`list` + """ + + # URI opener used by PySTAC internally, instantiated here to retrieve the timeout. + _text_opener = _TextOpener(timeout, ssl_verify) + pystac.StacIO.read_text = _text_opener + + stac_obj = pystac.read_file(stac_path) + if isinstance(stac_obj, pystac.Catalog): + return _fetch_stac_collections_from_catalog( + stac_obj, collection, max_connections, _text_opener + ) + else: + raise STACOpenerError(f"{stac_path} must be a STAC catalog") + + +def _fetch_stac_collections_from_catalog( + cat: pystac.Catalog, + collection: Optional[str], + max_connections: int, + _text_opener: Callable[[str, bool], Any], +) -> List[Any]: + """Fetch collections from a STAC catalog""" + collections: List[Dict[Any, Any]] = [] + + # Making the links absolutes allow for both relative and absolute links to be handled. + hrefs: List[Optional[str]] = [ + link.get_absolute_href() + for link in cat.get_child_links() + if collection is not None and link.title == collection + ] + if len(hrefs) == 0: + hrefs = [link.get_absolute_href() for link in cat.get_child_links()] + + if hrefs: + with concurrent.futures.ThreadPoolExecutor( + max_workers=max_connections + ) as executor: + future_to_href = ( + executor.submit(_text_opener, str(href), True) for href in hrefs + ) + for future in concurrent.futures.as_completed(future_to_href): + fetched_collection = future.result() + if ( + fetched_collection + and fetched_collection["type"] == STACObjectType.COLLECTION + and ( + collection is None + or collection is not None + and fetched_collection.get("id") == collection + ) + ): + collections.append(fetched_collection) + return collections diff --git a/pyproject.toml b/pyproject.toml index 781cdd35b..fdf223aed 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,13 +3,10 @@ requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"] build-backend = "setuptools.build_meta" [tool.setuptools_scm] -fallback_version = "2.12.2.dev0" +fallback_version = "3.0.0b2.dev0" [[tool.mypy.overrides]] module = [ - "boto3", - "botocore.*", - "cdsapi", "click", "click.*", "ecmwfapi", @@ -18,13 +15,13 @@ module = [ "geojson", "IPython.display", "owslib.*", - "requests_ftp", "shapefile", "shapely", "shapely.*", "stream_zip", "jsonpath_ng", "jsonpath_ng.*", + "rasterio", "usgs", "usgs.*", "whoosh", diff --git a/setup.cfg b/setup.cfg index a346cc3d0..d2f543e09 100644 --- a/setup.cfg +++ b/setup.cfg @@ -3,7 +3,7 @@ name = eodag description = Earth Observation Data Access Gateway long_description = file:README.rst long_description_content_type = text/x-rst -author = CS GROUP - France (CSSI) +author = CS GROUP - France author_email = eodag@csgroup.space url = https://github.com/CS-SI/eodag license = Apache 2.0 @@ -37,39 +37,65 @@ packages = find: include_package_data = True python_requires = >=3.6 install_requires = + annotated-types + boto3 + botocore click - requests - urllib3 + geojson + jsonpath-ng < 1.6.0 + lxml + orjson < 3.10.0;python_version>='3.12' and platform_system=='Windows' + orjson;python_version<'3.12' or platform_system!='Windows' + pydantic >= 2.1.0 + pydantic_core + pyproj >= 2.1.0 + pyshp + pystac >= 1.0.0b1 python-dateutil PyYAML + requests + setuptools + shapely >= 2.0.0 + stream-zip tqdm - shapely - pyshp + typing_extensions >= 4.8.0 + urllib3 + Whoosh + +[options.extras_require] +all = + eodag[all-providers,csw,server,tutorials] +all-providers = + eodag[ecmwf,usgs] +csw = OWSLib >=0.27.1 - orjson - geojson - pyproj >= 2.1.0 +ecmwf = + ecmwf-api-client +usgs = usgs >= 0.3.1 - boto3 - botocore +server = fastapi >= 0.93.0 + pygeofilter starlette - uvicorn - jsonpath-ng < 1.6.0 - lxml - Whoosh - pystac >= 1.0.0b1 - ecmwf-api-client - cdsapi - stream-zip - requests-ftp - pydantic >= 2.1.0 - typing_extensions - annotated-types - setuptools + uvicorn[standard] + pydantic-settings + cachetools + +notebook = tqdm[notebook] +tutorials = + eodag[notebook] + eodag-cube >= 0.2.0 + jupyter + ipyleaflet >= 0.10.0 + ipywidgets + matplotlib + folium + imageio + rasterio + netcdf4 -[options.extras_require] dev = + eodag[all-providers,csw,server] pytest pytest-cov # pytest-html max version set and py requirement added @@ -89,28 +115,13 @@ dev = responses < 0.24.0 fastapi[all] stdlib-list - -notebook = tqdm[notebook] -tutorials = - eodag-cube >= 0.2.0 - jupyter - ipyleaflet >= 0.10.0 - ipywidgets - matplotlib - folium - imageio - rasterio - netcdf4 + boto3-stubs[essential] + types-lxml docs = + eodag[all] sphinx - sphinx-book-theme < 1.0.0 + sphinx-book-theme sphinx-copybutton - sphinxcontrib-applehelp < 1.0.8 - sphinxcontrib-devhelp < 1.0.6 - sphinxcontrib-htmlhelp < 2.0.5 - sphinxcontrib-qthelp < 1.0.7 - sphinxcontrib-serializinghtml < 1.1.10 - sphinxcontrib-jquery nbsphinx [options.packages.find] @@ -130,9 +141,8 @@ exclude = console_scripts = eodag = eodag.cli:eodag eodag.plugins.api = - UsgsApi = eodag.plugins.apis.usgs:UsgsApi - EcmwfApi = eodag.plugins.apis.ecmwf:EcmwfApi - CdsApi = eodag.plugins.apis.cds:CdsApi + UsgsApi = eodag.plugins.apis.usgs:UsgsApi [usgs] + EcmwfApi = eodag.plugins.apis.ecmwf:EcmwfApi [ecmwf] eodag.plugins.auth = GenericAuth = eodag.plugins.authentication.generic:GenericAuth HTTPHeaderAuth = eodag.plugins.authentication.header:HTTPHeaderAuth @@ -140,6 +150,7 @@ eodag.plugins.auth = OAuth = eodag.plugins.authentication.oauth:OAuth TokenAuth = eodag.plugins.authentication.token:TokenAuth OIDCAuthorizationCodeFlowAuth = eodag.plugins.authentication.openid_connect:OIDCAuthorizationCodeFlowAuth + OIDCTokenExchangeAuth = eodag.plugins.authentication.token_exchange:OIDCTokenExchangeAuth KeycloakOIDCPasswordAuth = eodag.plugins.authentication.keycloak:KeycloakOIDCPasswordAuth HttpQueryStringAuth = eodag.plugins.authentication.qsauth:HttpQueryStringAuth SASAuth = eodag.plugins.authentication.sas_auth:SASAuth @@ -155,16 +166,17 @@ eodag.plugins.download = S3RestDownload = eodag.plugins.download.s3rest:S3RestDownload CreodiasS3Download = eodag.plugins.download.creodias_s3:CreodiasS3Download eodag.plugins.search = - CSWSearch = eodag.plugins.search.csw:CSWSearch + CSWSearch = eodag.plugins.search.csw:CSWSearch [csw] QueryStringSearch = eodag.plugins.search.qssearch:QueryStringSearch - AwsSearch = eodag.plugins.search.qssearch:AwsSearch ODataV4Search = eodag.plugins.search.qssearch:ODataV4Search PostJsonSearch = eodag.plugins.search.qssearch:PostJsonSearch StacSearch = eodag.plugins.search.qssearch:StacSearch StaticStacSearch = eodag.plugins.search.static_stac_search:StaticStacSearch + BuildSearchResult = eodag.plugins.search.build_search_result:BuildSearchResult BuildPostSearchResult = eodag.plugins.search.build_search_result:BuildPostSearchResult DataRequestSearch = eodag.plugins.search.data_request_search:DataRequestSearch CreodiasS3Search = eodag.plugins.search.creodias_s3:CreodiasS3Search + CopMarineSearch = eodag.plugins.search.cop_marine:CopMarineSearch [flake8] ignore = E203, W503 diff --git a/tests/__init__.py b/tests/__init__.py index 135899e8a..c947c90f9 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -16,6 +16,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import contextlib import io import os import random @@ -49,7 +50,7 @@ def setUp(self): "https://zipper.creodias.eu/download/8ff765a2-e089-465d-a48f-cc27008a0962" ) self.local_filename = ( - "S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911.SAFE" + "S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911" ) self.local_product_abspath = os.path.abspath( jp(TEST_RESOURCES_PATH, "products", self.local_filename) @@ -335,6 +336,7 @@ def __init__(response): response.__zip_buffer = io.BytesIO(fh.read()) cl = response.__zip_buffer.getbuffer().nbytes response.headers = {"content-length": cl} + response.url = "http://foo.bar" def __enter__(response): return response @@ -354,3 +356,19 @@ def raise_for_status(response): pass return Response() + + +@contextlib.contextmanager +def temporary_environment(**env_vars): + # Save the original environment variables + original_env = os.environ.copy() + + # Set the new temporary environment variables + os.environ.update(env_vars) + + try: + yield + finally: + # Restore the original environment variables + os.environ.clear() + os.environ.update(original_env) diff --git a/tests/context.py b/tests/context.py index 72b07403c..abb7c6c18 100644 --- a/tests/context.py +++ b/tests/context.py @@ -33,6 +33,7 @@ format_metadata, OFFLINE_STATUS, ONLINE_STATUS, + STAGING_STATUS, properties_from_json, NOT_AVAILABLE, ) @@ -63,11 +64,12 @@ ) from eodag.plugins.download.http import HTTPDownload from eodag.plugins.manager import PluginManager +from eodag.plugins.search import PreparedSearch from eodag.plugins.search.base import Search -from eodag.rest.stac import DEFAULT_MISSION_START_DATE from eodag.types import model_fields_to_annotated from eodag.types.queryables import CommonQueryables, Queryables from eodag.utils import ( + DEFAULT_MISSION_START_DATE, DEFAULT_STREAM_REQUESTS_TIMEOUT, HTTP_REQ_TIMEOUT, USER_AGENT, @@ -88,7 +90,9 @@ cached_parse, sanitize, parse_header, + get_ssl_context, ) +from eodag.utils.requests import fetch_json from eodag.utils.exceptions import ( AddressNotFound, AuthenticationError, @@ -107,3 +111,4 @@ from eodag.utils.stac_reader import fetch_stac_items, _TextOpener from tests import TEST_RESOURCES_PATH from usgs.api import USGSAuthExpiredError, USGSError +from usgs.api import TMPFILE as USGS_TMPFILE diff --git a/tests/integration/test_core_config.py b/tests/integration/test_core_config.py index ce09a7956..2033b59b4 100644 --- a/tests/integration/test_core_config.py +++ b/tests/integration/test_core_config.py @@ -85,7 +85,7 @@ def test_core_providers_config_update( ) self.dag.set_preferred_provider("foo_provider") - prods, _ = self.dag.search(raise_errors=True) + prods = self.dag.search(raise_errors=True) self.assertEqual(prods[0].properties["title"], "foo") # update provider which have metadata_mapping already built as jsonpath by search() @@ -98,7 +98,7 @@ def test_core_providers_config_update( """ ) mock__request.return_value.json.side_effect = mock__request_side_effect - prods, _ = self.dag.search(raise_errors=True) + prods = self.dag.search(raise_errors=True) self.assertEqual(prods[0].properties["title"], "baz") # update provider with new plugin entry @@ -255,6 +255,7 @@ def test_core_discover_product_types_auth( auth=mock.ANY, headers=USER_AGENT, timeout=HTTP_REQ_TIMEOUT, + verify=True, ) mock_urlopen.return_value.json.return_value = {} diff --git a/tests/integration/test_core_search.py b/tests/integration/test_core_search.py index 2dfa238e3..73b7a8c30 100644 --- a/tests/integration/test_core_search.py +++ b/tests/integration/test_core_search.py @@ -29,6 +29,7 @@ NoMatchingProductType, RequestError, USGSError, + ValidationError, ) from tests.utils import mock @@ -77,9 +78,14 @@ def test_core_search_errors_qssearch( ): # QueryStringSearch / peps self.dag.set_preferred_provider("peps") - self.assertRaises(RequestError, self.dag.search, raise_errors=True) + self.assertRaises(ValidationError, self.dag.search, raise_errors=True) + self.assertRaises( + RequestError, self.dag.search, productType="foo", raise_errors=True + ) # search iterator - self.assertRaises(RequestError, next, self.dag.search_iter_page()) + self.assertRaises( + RequestError, next, self.dag.search_iter_page(productType="foo") + ) @mock.patch( "eodag.plugins.search.qssearch.requests.post", @@ -147,9 +153,14 @@ def test_core_search_errors_odata( ): # ODataV4Search / onda self.dag.set_preferred_provider("onda") - self.assertRaises(RequestError, self.dag.search, raise_errors=True) + self.assertRaises(ValidationError, self.dag.search, raise_errors=True) + self.assertRaises( + RequestError, self.dag.search, productType="foo", raise_errors=True + ) # search iterator - self.assertRaises(RequestError, next, self.dag.search_iter_page()) + self.assertRaises( + RequestError, next, self.dag.search_iter_page(productType="foo") + ) @mock.patch( "eodag.plugins.apis.usgs.api.scene_search", autospec=True, side_effect=USGSError @@ -225,12 +236,19 @@ def test_core_search_fallback_find_nothing( available_providers = self.dag.available_providers(product_type) self.assertListEqual( available_providers, - ["cop_dataspace", "creodias", "onda", "peps", "sara", "wekeo"], + [ + "peps", + "cop_dataspace", + "creodias", + "onda", + "sara", + "wekeo", + ], ) - products, count = self.dag.search(productType="S1_SAR_SLC") - self.assertEqual(len(products), 0) - self.assertEqual(count, 0) + search_result = self.dag.search(productType="S1_SAR_SLC", count=True) + self.assertEqual(len(search_result), 0) + self.assertEqual(search_result.number_matched, 0) self.assertEqual( mock_get.call_count + mock_post.call_count + mock_request.call_count, len(available_providers), @@ -253,7 +271,14 @@ def test_core_search_fallback_raise_errors(self, mock_get, mock_request): available_providers = self.dag.available_providers(product_type) self.assertListEqual( available_providers, - ["cop_dataspace", "creodias", "onda", "peps", "sara", "wekeo"], + [ + "peps", + "cop_dataspace", + "creodias", + "onda", + "sara", + "wekeo", + ], ) self.assertRaises( @@ -280,7 +305,14 @@ def test_core_search_fallback_find_on_first(self, mock_get, mock_request): available_providers = self.dag.available_providers(product_type) self.assertListEqual( available_providers, - ["cop_dataspace", "creodias", "onda", "peps", "sara", "wekeo"], + [ + "peps", + "cop_dataspace", + "creodias", + "onda", + "sara", + "wekeo", + ], ) # peps comes 1st by priority @@ -293,8 +325,8 @@ def test_core_search_fallback_find_on_first(self, mock_get, mock_request): mock_get.return_value.json.return_value = peps_resp_search_file_content - products, _ = self.dag.search(productType="S1_SAR_SLC") - self.assertEqual(len(products), peps_resp_search_results_count) + search_result = self.dag.search(productType="S1_SAR_SLC", count=True) + self.assertEqual(len(search_result), peps_resp_search_results_count) self.assertEqual( mock_get.call_count + mock_request.call_count, 1, @@ -313,6 +345,8 @@ def test_core_search_fallback_find_on_first(self, mock_get, mock_request): @mock.patch( "eodag.plugins.search.qssearch.requests.Request", autospec=True, + # fail on creodias, then succeeds on onda (count and search) + side_effect=[RequestException, mock.DEFAULT, mock.DEFAULT], ) @mock.patch( "eodag.plugins.search.qssearch.requests.get", @@ -327,7 +361,14 @@ def test_core_search_fallback_find_on_fourth( available_providers = self.dag.available_providers(product_type) self.assertListEqual( available_providers, - ["cop_dataspace", "creodias", "onda", "peps", "sara", "wekeo"], + [ + "peps", + "cop_dataspace", + "creodias", + "onda", + "sara", + "wekeo", + ], ) # onda comes 3rd by priority @@ -344,8 +385,8 @@ def test_core_search_fallback_find_on_fourth( onda_resp_search_file_content, ] - products, _ = self.dag.search(productType="S1_SAR_SLC") - self.assertEqual(len(products), onda_resp_search_results_count) + search_result = self.dag.search(productType="S1_SAR_SLC", count=True) + self.assertEqual(len(search_result), onda_resp_search_results_count) self.assertEqual( mock_get.call_count + mock_request.call_count, 4, @@ -362,7 +403,14 @@ def test_core_search_fallback_find_on_fourth_empty_results(self, mock_query): available_providers = self.dag.available_providers(product_type) self.assertListEqual( available_providers, - ["cop_dataspace", "creodias", "onda", "peps", "sara", "wekeo"], + [ + "peps", + "cop_dataspace", + "creodias", + "onda", + "sara", + "wekeo", + ], ) mock_query.side_effect = [ @@ -372,9 +420,9 @@ def test_core_search_fallback_find_on_fourth_empty_results(self, mock_query): ([EOProduct("onda", dict(geometry="POINT (0 0)", id="a"))], 1), ] - products, count = self.dag.search(productType="S1_SAR_SLC") - self.assertEqual(len(products), 1) - self.assertEqual(count, 1) + search_result = self.dag.search(productType="S1_SAR_SLC", count=True) + self.assertEqual(len(search_result), 1) + self.assertEqual(search_result.number_matched, 1) self.assertEqual( mock_query.call_count, 4, "4 provider out of 6 must have been requested" ) @@ -389,14 +437,23 @@ def test_core_search_fallback_given_provider(self, mock_query): available_providers = self.dag.available_providers(product_type) self.assertListEqual( available_providers, - ["cop_dataspace", "creodias", "onda", "peps", "sara", "wekeo"], + [ + "peps", + "cop_dataspace", + "creodias", + "onda", + "sara", + "wekeo", + ], ) mock_query.return_value = ([], 0) - products, count = self.dag.search(productType="S1_SAR_SLC", provider="onda") - self.assertEqual(len(products), 0) - self.assertEqual(count, 0) + search_result = self.dag.search( + productType="S1_SAR_SLC", provider="onda", count=True + ) + self.assertEqual(len(search_result), 0) + self.assertEqual(search_result.number_matched, 0) self.assertEqual( mock_query.call_count, 1, diff --git a/tests/integration/test_core_search_results.py b/tests/integration/test_core_search_results.py index 1fff5fe7d..a995b0e9a 100644 --- a/tests/integration/test_core_search_results.py +++ b/tests/integration/test_core_search_results.py @@ -259,7 +259,7 @@ def test_core_search_results_registered(self, mock_query): mock_query.return_value = (products.data, len(products)) - search_results, count = self.dag.search(productType="S2_MSI_L1C") + search_results = self.dag.search(productType="S2_MSI_L1C") for search_result in search_results: self.assertIsInstance(search_result.downloader, PluginTopic) @@ -279,8 +279,28 @@ def test_core_search_with_provider(self, mock_query): search_results_peps = json.load(f) mock_query.return_value = search_results_peps["features"] - search_results, count = self.dag.search( - productType="S2_MSI_L1C", provider="peps" - ) + search_results = self.dag.search(productType="S2_MSI_L1C", provider="peps") # use given provider and not preferred provider self.assertEqual("peps", search_results[0].provider) + + @mock.patch("eodag.plugins.search.qssearch.urlopen", autospec=True) + def test_core_search_with_count(self, mock_urlopen): + """The core search must use the count parameter""" + + # count disabled by default + search_results = self.dag.search(productType="S2_MSI_L1C", provider="creodias") + self.assertNotIn( + self.dag.providers_config["creodias"].search.pagination["count_tpl"], + mock_urlopen.call_args_list[-1][0][0].full_url, + ) + self.assertIsNone(search_results.number_matched) + + # count enabled + search_results = self.dag.search( + productType="S2_MSI_L1C", provider="creodias", count=True + ) + self.assertIn( + self.dag.providers_config["creodias"].search.pagination["count_tpl"], + mock_urlopen.call_args_list[-1][0][0].full_url, + ) + self.assertIsNotNone(search_results.number_matched) diff --git a/tests/integration/test_search_stac_static.py b/tests/integration/test_search_stac_static.py index bfeca00e8..2a150b4f0 100644 --- a/tests/integration/test_search_stac_static.py +++ b/tests/integration/test_search_stac_static.py @@ -81,7 +81,6 @@ def setUp(self): download: type: HTTPDownload base_uri: https://fake-endpoint - flatten_top_dirs: True """ ) self.dag.set_preferred_provider(self.static_stac_provider) @@ -92,10 +91,16 @@ def tearDown(self): self.expanduser_mock.stop() self.tmp_home_dir.cleanup() + @mock.patch( + "eodag.plugins.search.qssearch.QueryStringSearch.discover_product_types", + autospec=True, + ) @mock.patch( "eodag.api.core.EODataAccessGateway.fetch_product_types_list", autospec=True ) - def test_search_stac_static_load_child(self, mock_fetch_product_types_list): + def test_search_stac_static_load_child( + self, mock_fetch_product_types_list, mock_discover_produc_types + ): """load_stac_items from child catalog must provide items""" with pytest.warns( DeprecationWarning, @@ -110,11 +115,15 @@ def test_search_stac_static_load_child(self, mock_fetch_product_types_list): # if no product_type is provided, product_type should be guessed from properties self.assertEqual(items[0].product_type, "S2_MSI_L1C") + @mock.patch( + "eodag.plugins.search.qssearch.QueryStringSearch.discover_product_types", + autospec=True, + ) @mock.patch( "eodag.api.core.EODataAccessGateway.fetch_product_types_list", autospec=True ) def test_search_stac_static_load_root_not_recursive( - self, mock_fetch_product_types_list + self, mock_fetch_product_types_list, mock_discover_product_types ): """load_stac_items from root must provide an empty list when no recursive""" with pytest.warns( @@ -148,16 +157,22 @@ def test_search_stac_static_load_root_recursive(self): ) def test_search_stac_static(self, mock_fetch_product_types_list): """Use StaticStacSearch plugin to search all items""" - items, nb = self.dag.search() - self.assertEqual(len(items), self.root_cat_len) - self.assertEqual(nb, self.root_cat_len) - for item in items: + search_result = self.dag.search(count=True) + self.assertEqual(len(search_result), self.root_cat_len) + self.assertEqual(search_result.number_matched, self.root_cat_len) + for item in search_result: self.assertEqual(item.provider, self.static_stac_provider) @mock.patch( "eodag.api.core.EODataAccessGateway.fetch_product_types_list", autospec=True ) - def test_search_stac_static_load_item(self, mock_fetch_product_types_list): + @mock.patch( + "eodag.plugins.search.qssearch.QueryStringSearch.discover_product_types", + autospec=True, + ) + def test_search_stac_static_load_item( + self, mock_fetch_product_types_list, mock_discover_product_types + ): """load_stac_items from a single item must provide it""" with pytest.warns( DeprecationWarning, @@ -170,11 +185,15 @@ def test_search_stac_static_load_item(self, mock_fetch_product_types_list): # if no product_type is provided, product_type should be guessed from properties self.assertEqual(item[0].product_type, "S2_MSI_L1C") + @mock.patch( + "eodag.plugins.search.qssearch.QueryStringSearch.discover_product_types", + autospec=True, + ) @mock.patch( "eodag.api.core.EODataAccessGateway.fetch_product_types_list", autospec=True ) def test_search_stac_static_load_item_updated_provider( - self, mock_fetch_product_types_list + self, mock_fetch_product_types_list, mock_discover_product_types ): """load_stac_items from a single item using updated provider""" with pytest.warns( @@ -262,10 +281,10 @@ def test_search_stac_static_crunch_filter_date(self): ) def test_search_stac_static_by_date(self, mock_fetch_product_types_list): """Use StaticStacSearch plugin to search by date""" - filtered_items, nb = self.dag.search(start="2018-01-01", end="2019-01-01") - self.assertEqual(len(filtered_items), self.child_cat_len) - self.assertEqual(nb, self.child_cat_len) - for item in filtered_items: + filtered_sr = self.dag.search(start="2018-01-01", end="2019-01-01", count=True) + self.assertEqual(len(filtered_sr), self.child_cat_len) + self.assertEqual(filtered_sr.number_matched, self.child_cat_len) + for item in filtered_sr: self.assertIn("2018", item.properties["startTimeFromAscendingNode"]) def test_search_stac_static_crunch_filter_overlap(self): @@ -333,11 +352,9 @@ def test_search_stac_static_crunch_filter_overlap(self): ) def test_search_stac_static_by_geom(self, mock_fetch_product_types_list): """Use StaticStacSearch plugin to search by geometry""" - items, nb = self.dag.search( - geom=self.extent_big, - ) - self.assertEqual(len(items), 3) - self.assertEqual(nb, 3) + search_result = self.dag.search(geom=self.extent_big, count=True) + self.assertEqual(len(search_result), 3) + self.assertEqual(search_result.number_matched, 3) def test_search_stac_static_crunch_filter_property(self): """load_stac_items from root and filter by property""" @@ -371,18 +388,18 @@ def test_search_stac_static_crunch_filter_property(self): ) def test_search_stac_static_by_property(self, mock_fetch_product_types_list): """Use StaticStacSearch plugin to search by property""" - items, nb = self.dag.search(orbitNumber=110) - self.assertEqual(len(items), 3) - self.assertEqual(nb, 3) + search_result = self.dag.search(orbitNumber=110, count=True) + self.assertEqual(len(search_result), 3) + self.assertEqual(search_result.number_matched, 3) @mock.patch( "eodag.api.core.EODataAccessGateway.fetch_product_types_list", autospec=True ) def test_search_stac_static_by_cloudcover(self, mock_fetch_product_types_list): """Use StaticStacSearch plugin to search by cloud cover""" - items, nb = self.dag.search(cloudCover=10) - self.assertEqual(len(items), 1) - self.assertEqual(nb, 1) + search_result = self.dag.search(cloudCover=10, count=True) + self.assertEqual(len(search_result), 1) + self.assertEqual(search_result.number_matched, 1) def test_search_stac_static_crunch_filter_lastest_by_name(self): """load_stac_items from root and filter by name""" diff --git a/tests/resources/NOTICE b/tests/resources/NOTICE index fa9ade2ee..9a89f4ad6 100644 --- a/tests/resources/NOTICE +++ b/tests/resources/NOTICE @@ -15,7 +15,7 @@ peps_search.json are results obtained from https://peps.cnes.fr/ catalog and eod eodag_search_result_theia.geojson is derived from results from https://theia.cnes.fr/ catalog. -The product S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911.SAFE found under products and under products/as_archive -was found on https://finder.eocloud.eu/www/ catalog. It has been modified (some files have been removed to keep it lightweighted) +The product S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911 found under products and under products/as_archive +was found on https://creodias.eu/ catalog. It has been modified (some files have been removed to keep it lightweighted) for the purpose of our use. Terms and use of the original product can be found here: https://sentinels.copernicus.eu/documents/247904/690755/Sentinel_Data_Legal_Notice diff --git a/tests/resources/eodag_search_result_creodias.json b/tests/resources/eodag_search_result_creodias.json new file mode 100644 index 000000000..751cc1e31 --- /dev/null +++ b/tests/resources/eodag_search_result_creodias.json @@ -0,0 +1 @@ +{"@odata.context":"$metadata#Products(Attributes())","@odata.count":3123749,"value":[{"@odata.mediaContentType":"application/octet-stream","Id":"78d5c597-78e9-56e8-b4ea-3c2aa92a5d4e","Name":"S1A_IW_GRDH_1SSV_20141004T005844_20141004T005913_002673_002FAB_4FCD.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:00:24.811Z","PublicationDate":"2017-12-16T09:13:28.955Z","ModificationDate":"2017-12-16T09:13:28.955Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T005844_20141004T005913_002673_002FAB_4FCD.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T00:58:44.620Z","End":"2014-10-04T00:59:13.611Z"},"Footprint":"geography'SRID=4326;POLYGON ((-105.359001 28.981216, -102.76075 29.394079, -102.414383 27.64957, -104.969788 27.233603, -105.359001 28.981216))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-105.359001,28.981216],[-102.76075,29.394079],[-102.414383,27.64957],[-104.969788,27.233603],[-105.359001,28.981216]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"28.981216,-105.359001 29.394079,-102.760750 27.649570,-102.414383 27.233603,-104.969788 28.981216,-105.359001","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":1,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T00:59:13.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T00:58:44.620Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"7996915b-3dc9-5197-bf4b-ffc69ce5120e","Name":"S1A_IW_GRDH_1SSV_20141004T005913_20141004T005938_002673_002FAB_1265.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:02:11.335Z","PublicationDate":"2017-12-16T09:12:12.382Z","ModificationDate":"2017-12-16T09:12:12.382Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T005913_20141004T005938_002673_002FAB_1265.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T00:59:13.612Z","End":"2014-10-04T00:59:38.611Z"},"Footprint":"geography'SRID=4326;POLYGON ((-105.693146 30.488607, -103.054344 30.898907, -102.760162 29.39426, -105.359024 28.981306, -105.693146 30.488607))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-105.693146,30.488607],[-103.054344,30.898907],[-102.760162,29.39426],[-105.359024,28.981306],[-105.693146,30.488607]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"30.488607,-105.693146 30.898907,-103.054344 29.394260,-102.760162 28.981306,-105.359024 30.488607,-105.693146","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":2,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T00:59:38.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T00:59:13.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"9e18d2e7-1900-5840-9254-637720f5f719","Name":"S1A_IW_GRDH_1SSV_20141004T005938_20141004T010003_002673_002FAB_53D4.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:04:48.218Z","PublicationDate":"2017-12-16T09:10:55.010Z","ModificationDate":"2017-12-16T09:10:55.010Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T005938_20141004T010003_002673_002FAB_53D4.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T00:59:38.612Z","End":"2014-10-04T01:00:03.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-106.031609 31.995399, -103.34903 32.403305, -103.053642 30.899101, -105.693169 30.488699, -106.031609 31.995399))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-106.031609,31.995399],[-103.34903,32.403305],[-103.053642,30.899101],[-105.693169,30.488699],[-106.031609,31.995399]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"31.995399,-106.031609 32.403305,-103.349030 30.899101,-103.053642 30.488699,-105.693169 31.995399,-106.031609","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":3,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:00:03.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T00:59:38.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"b714cbfd-c3c2-556d-84ff-f050a37763f5","Name":"S1A_IW_GRDH_1SSV_20141004T010003_20141004T010028_002673_002FAB_817D.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:07:06.188Z","PublicationDate":"2017-12-16T09:09:07.670Z","ModificationDate":"2017-12-16T09:09:07.670Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010003_20141004T010028_002673_002FAB_817D.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:00:03.612Z","End":"2014-10-04T01:00:28.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-106.37149 33.502102, -103.641792 33.907703, -103.348213 32.403515, -106.031624 31.995491, -106.37149 33.502102))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-106.37149,33.502102],[-103.641792,33.907703],[-103.348213,32.403515],[-106.031624,31.995491],[-106.37149,33.502102]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"33.502102,-106.371490 33.907703,-103.641792 32.403515,-103.348213 31.995491,-106.031624 33.502102,-106.371490","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":4,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:00:28.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:00:03.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"bd905c2f-65db-53f4-9f31-1e5d335ca06e","Name":"S1A_IW_GRDH_1SSV_20141004T010028_20141004T010053_002673_002FAB_57F0.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:09:20.179Z","PublicationDate":"2017-12-16T09:08:27.892Z","ModificationDate":"2017-12-16T09:08:27.892Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010028_20141004T010053_002673_002FAB_57F0.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:00:28.612Z","End":"2014-10-04T01:00:53.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-106.719139 35.00774, -103.938728 35.411278, -103.640846 33.907925, -106.371513 33.50219, -106.719139 35.00774))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-106.719139,35.00774],[-103.938728,35.411278],[-103.640846,33.907925],[-106.371513,33.50219],[-106.719139,35.00774]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"35.007740,-106.719139 35.411278,-103.938728 33.907925,-103.640846 33.502190,-106.371513 35.007740,-106.719139","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":5,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:00:53.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:00:28.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"dfbd23e6-5ec6-5fac-a5a6-8bd317b41fe0","Name":"S1A_IW_GRDH_1SSV_20141004T010053_20141004T010118_002673_002FAB_D5C1.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:10:29.566Z","PublicationDate":"2017-12-16T09:09:37.775Z","ModificationDate":"2017-12-16T09:09:37.775Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010053_20141004T010118_002673_002FAB_D5C1.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:00:53.611Z","End":"2014-10-04T01:01:18.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-107.067474 36.513474, -104.2332 36.914917, -103.938416 35.411404, -106.719154 35.007824, -107.067474 36.513474))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-107.067474,36.513474],[-104.2332,36.914917],[-103.938416,35.411404],[-106.719154,35.007824],[-107.067474,36.513474]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"36.513474,-107.067474 36.914917,-104.233200 35.411404,-103.938416 35.007824,-106.719154 36.513474,-107.067474","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":6,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:01:18.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:00:53.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"bb271992-775f-5ab1-af87-70fd3455c6dc","Name":"S1A_IW_GRDH_1SSV_20141004T010118_20141004T010143_002673_002FAB_D1B9.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:12:41.209Z","PublicationDate":"2017-12-16T09:09:38.775Z","ModificationDate":"2017-12-16T09:09:38.775Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010118_20141004T010143_002673_002FAB_D1B9.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:01:18.611Z","End":"2014-10-04T01:01:43.611Z"},"Footprint":"geography'SRID=4326;POLYGON ((-107.421638 38.018654, -104.529083 38.418228, -104.232224 36.915138, -107.067497 36.513565, -107.421638 38.018654))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-107.421638,38.018654],[-104.529083,38.418228],[-104.232224,36.915138],[-107.067497,36.513565],[-107.421638,38.018654]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"38.018654,-107.421638 38.418228,-104.529083 36.915138,-104.232224 36.513565,-107.067497 38.018654,-107.421638","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":7,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:01:43.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:01:18.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"3a0980b9-9cd9-5c29-a1d1-05d4ead978f1","Name":"S1A_IW_GRDH_1SSV_20141004T010143_20141004T010208_002673_002FAB_E37A.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:15:33.928Z","PublicationDate":"2017-12-16T09:08:26.571Z","ModificationDate":"2017-12-16T09:08:26.571Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010143_20141004T010208_002673_002FAB_E37A.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:01:43.612Z","End":"2014-10-04T01:02:08.611Z"},"Footprint":"geography'SRID=4326;POLYGON ((-107.806076 39.519547, -104.849121 39.918293, -104.527985 38.418457, -107.421669 38.018745, -107.806076 39.519547))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-107.806076,39.519547],[-104.849121,39.918293],[-104.527985,38.418457],[-107.421669,38.018745],[-107.806076,39.519547]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"39.519547,-107.806076 39.918293,-104.849121 38.418457,-104.527985 38.018745,-107.421669 39.519547,-107.806076","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":8,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:02:08.611Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:01:43.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"dd1f5c25-da5b-542f-9235-57dffecd3db8","Name":"S1A_IW_GRDH_1SSV_20141004T010208_20141004T010233_002673_002FAB_58A8.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:17:38.789Z","PublicationDate":"2017-12-16T09:06:21.362Z","ModificationDate":"2017-12-16T09:06:21.362Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010208_20141004T010233_002673_002FAB_58A8.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:02:08.612Z","End":"2014-10-04T01:02:33.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-108.193359 41.020485, -105.16925 41.418285, -104.847984 39.918522, -107.806091 39.519638, -108.193359 41.020485))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-108.193359,41.020485],[-105.16925,41.418285],[-104.847984,39.918522],[-107.806091,39.519638],[-108.193359,41.020485]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"41.020485,-108.193359 41.418285,-105.169250 39.918522,-104.847984 39.519638,-107.806091 41.020485,-108.193359","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":9,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:02:33.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:02:08.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]},{"@odata.mediaContentType":"application/octet-stream","Id":"ff3330d7-98f0-57e0-887a-89a5e9077a2a","Name":"S1A_IW_GRDH_1SSV_20141004T010233_20141004T010258_002673_002FAB_19F2.SAFE","ContentType":"application/octet-stream","ContentLength":0,"OriginDate":"2015-01-13T03:19:28.019Z","PublicationDate":"2017-12-16T09:05:41.123Z","ModificationDate":"2017-12-16T09:05:41.123Z","Online":true,"EvictionDate":"","S3Path":"/eodata/Sentinel-1/SAR/GRD/2014/10/04/S1A_IW_GRDH_1SSV_20141004T010233_20141004T010258_002673_002FAB_19F2.SAFE","Checksum":[],"ContentDate":{"Start":"2014-10-04T01:02:33.612Z","End":"2014-10-04T01:02:58.610Z"},"Footprint":"geography'SRID=4326;POLYGON ((-108.589508 42.520641, -105.493301 42.917763, -105.168915 41.418404, -108.193382 41.020561, -108.589508 42.520641))'","GeoFootprint":{"type":"Polygon","coordinates":[[[-108.589508,42.520641],[-105.493301,42.917763],[-105.168915,41.418404],[-108.193382,41.020561],[-108.589508,42.520641]]]},"Attributes":[{"@odata.type":"#OData.CSC.StringAttribute","Name":"authority","Value":"ESA","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"timeliness","Value":"Fast-24h","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"coordinates","Value":"42.520641,-108.589508 42.917763,-105.493301 41.418404,-105.168915 41.020561,-108.193382 42.520641,-108.589508","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"orbitNumber","Value":2673,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productType","Value":"IW_GRDH_1S","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"sliceNumber","Value":10,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"productClass","Value":"S","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"endingDateTime","Value":"2014-10-04T01:02:58.610Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"orbitDirection","Value":"ASCENDING","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"operationalMode","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"processingLevel","Value":"LEVEL1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"swathIdentifier","Value":"IW","ValueType":"String"},{"@odata.type":"#OData.CSC.DateTimeOffsetAttribute","Name":"beginningDateTime","Value":"2014-10-04T01:02:33.612Z","ValueType":"DateTimeOffset"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformShortName","Value":"SENTINEL-1","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"spatialResolution","Value":"10.0","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"instrumentShortName","Value":"SAR","ValueType":"String"},{"@odata.type":"#OData.CSC.IntegerAttribute","Name":"relativeOrbitNumber","Value":153,"ValueType":"Integer"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"polarisationChannels","Value":"VV","ValueType":"String"},{"@odata.type":"#OData.CSC.StringAttribute","Name":"platformSerialIdentifier","Value":"A","ValueType":"String"}]}],"@odata.nextLink":"https://datahub.creodias.eu/odata/v1/Products?%24filter=Collection%2FName+eq+%27SENTINEL-1%27+and+Attributes%2FOData.CSC.StringAttribute%2Fany%28att%3Aatt%2FName+eq+%27productType%27+and+att%2FOData.CSC.StringAttribute%2FValue+eq+%27GRD%27%29&%24orderby=ContentDate%2FStart+asc&%24top=10&%24skip=10&%24expand=Attributes&%24count=True"} diff --git a/tests/resources/ext_product_types_free_text_search.json b/tests/resources/ext_product_types_free_text_search.json new file mode 100644 index 000000000..498bf4423 --- /dev/null +++ b/tests/resources/ext_product_types_free_text_search.json @@ -0,0 +1,59 @@ +{ + "astraea_eod": { + "providers_config": { + "foo": { + "productType": "foo", + "metadata_mapping": { + "cloudCover": "$.null" + } + }, + "bar": { + "productType": "bar", + "metadata_mapping": { + "cloudCover": "$.null" + } + }, + "foobar": { + "productType": "foobar", + "metadata_mapping": { + "cloudCover": "$.null" + } + } + }, + "product_types_config": { + "foo": { + "abstract": "abstractFOO - This is FOO. FooAndBar", + "instrument": "Not Available", + "platform": "Not Available", + "platformSerialIdentifier": "Not Available", + "processingLevel": "Not Available", + "keywords": "suspendisse", + "license": "WTFPL", + "title": "titleFOO - Lorem FOO collection", + "missionStartDate": "2012-12-12T00:00:00.000Z" + }, + "bar": { + "abstract": "abstractBAR - This is BAR", + "instrument": "Not Available", + "platform": "Not Available", + "platformSerialIdentifier": "Not Available", + "processingLevel": "Not Available", + "keywords": "lectus,lectus_bar_key", + "license": "WTFPL", + "title": "titleBAR - Lorem BAR collection (FooAndBar)", + "missionStartDate": "2012-12-12T00:00:00.000Z" + }, + "foobar": { + "abstract": "abstract FOOBAR - This is FOOBAR", + "instrument": "Not Available", + "platform": "Not Available", + "platformSerialIdentifier": "Not Available", + "processingLevel": "Not Available", + "keywords": "tortor", + "license": "WTFPL", + "title": "titleFOOBAR - Lorem FOOBAR collection", + "missionStartDate": "2012-12-12T00:00:00.000Z" + } + } + } +} diff --git a/tests/resources/file_config_override.yml b/tests/resources/file_config_override.yml index a7e9dd4d8..7116eec89 100644 --- a/tests/resources/file_config_override.yml +++ b/tests/resources/file_config_override.yml @@ -36,7 +36,7 @@ my_new_provider: download: type: AwsDownload base_uri: https://api.my_new_provider - flatten_top_dirs: True + flatten_top_dirs: false auth: type: AwsAuth credentials: diff --git a/tests/resources/products/S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911.SAFE/GRANULE/L1C_T31TDH_A013204_20180101T105435/IMG_DATA/T31TDH_20180101T105441_B01.jp2 b/tests/resources/products/S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911/GRANULE/L1C_T31TDH_A013204_20180101T105435/IMG_DATA/T31TDH_20180101T105441_B01.jp2 similarity index 100% rename from tests/resources/products/S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911.SAFE/GRANULE/L1C_T31TDH_A013204_20180101T105435/IMG_DATA/T31TDH_20180101T105441_B01.jp2 rename to tests/resources/products/S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911/GRANULE/L1C_T31TDH_A013204_20180101T105435/IMG_DATA/T31TDH_20180101T105441_B01.jp2 diff --git a/tests/resources/products/S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911.SAFE/GRANULE/L1C_T31TDH_A013204_20180101T105435/MTD_TL.xml b/tests/resources/products/S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911/GRANULE/L1C_T31TDH_A013204_20180101T105435/MTD_TL.xml similarity index 100% rename from tests/resources/products/S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911.SAFE/GRANULE/L1C_T31TDH_A013204_20180101T105435/MTD_TL.xml rename to tests/resources/products/S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911/GRANULE/L1C_T31TDH_A013204_20180101T105435/MTD_TL.xml diff --git a/tests/resources/products/S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911.SAFE/MTD_MSIL1C.xml b/tests/resources/products/S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911/MTD_MSIL1C.xml similarity index 100% rename from tests/resources/products/S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911.SAFE/MTD_MSIL1C.xml rename to tests/resources/products/S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911/MTD_MSIL1C.xml diff --git a/tests/resources/products/as_archive/Copernicus_DSM_10_S90_00_W141_00.tar b/tests/resources/products/as_archive/Copernicus_DSM_10_S90_00_W141_00.tar new file mode 100644 index 000000000..8fb238ae1 Binary files /dev/null and b/tests/resources/products/as_archive/Copernicus_DSM_10_S90_00_W141_00.tar differ diff --git a/tests/resources/products/as_archive/S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911.SAFE.zip b/tests/resources/products/as_archive/S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911.zip similarity index 100% rename from tests/resources/products/as_archive/S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911.SAFE.zip rename to tests/resources/products/as_archive/S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911.zip diff --git a/tests/resources/stac/queryables.json b/tests/resources/stac/product_type_queryables.json similarity index 94% rename from tests/resources/stac/queryables.json rename to tests/resources/stac/product_type_queryables.json index 31ce3032e..466413993 100644 --- a/tests/resources/stac/queryables.json +++ b/tests/resources/stac/product_type_queryables.json @@ -29,8 +29,8 @@ "type": "string", "title": "Platform" }, - "s1:processing_level":{ - "type":"string" + "s1:processing_level": { + "type": "string" } } } diff --git a/tests/resources/stac/provider_queryables.json b/tests/resources/stac/provider_queryables.json new file mode 100644 index 000000000..77e57a8ce --- /dev/null +++ b/tests/resources/stac/provider_queryables.json @@ -0,0 +1,70 @@ +{ + "$id": "https://planetarycomputer.microsoft.com/api/stac/v1/collections/sentinel-1-grd/queryables", + "type": "object", + "title": "STAC Queryables.", + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "id": { + "$ref": "https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json#/definitions/core/allOf/2/properties/id", + "title": "Item ID", + "description": "Item identifier" + }, + "gsd": { + "type": "number" + }, + "title": { + "type": "string" + }, + "s3:gsd": { + "type": "number" + }, + "datetime": { + "type": "string", + "title": "Acquired", + "format": "date-time", + "pattern": "(\\+00:00|Z)$", + "description": "Datetime" + }, + "geometry": { + "$ref": "https://geojson.org/schema/Feature.json", + "title": "Item Geometry", + "description": "Item Geometry" + }, + "platform": { + "enum": [ + "ALOS", + "ALOS-2", + "GOES-16", + "GOES-17", + "GOES-18", + "landsat-1", + "landsat-2", + "landsat-3", + "landsat-4", + "landsat-5", + "landsat-7", + "landsat-8", + "landsat-9", + "SENTINEL-1A", + "SENTINEL-1B", + "Sentinel-3A", + "Sentinel-3B", + "Sentinel 5 Precursor" + ], + "type": "string", + "title": "Platform" + }, + "processing:level": { + "enum": ["L4"], + "type": "string", + "title": "Processing Level", + "examples": ["RAW", "L1", "L1A", "L1B", "L1C", "L2", "L2A", "L3", "L4"] + }, + "s1:processing_level": { + "type": "string" + }, + "landsat:processing_level": { + "type": "string" + } + } +} diff --git a/tests/resources/wekeo_old_config.yml b/tests/resources/wekeo_old_config.yml new file mode 100644 index 000000000..aef3ff7f8 --- /dev/null +++ b/tests/resources/wekeo_old_config.yml @@ -0,0 +1,183 @@ +wekeo_old: + search: + type: DataRequestSearch + api_endpoint: "https://wekeo-broker.prod.wekeo2.eu/databroker/" + data_request_url: "https://wekeo-broker.prod.wekeo2.eu/databroker/datarequest" + metadata_url: "https://wekeo-broker.prod.wekeo2.eu/databroker/querymetadata/" + status_url: "https://wekeo-broker.prod.wekeo2.eu/databroker/datarequest/status/" + result_url: "https://wekeo-broker.prod.wekeo2.eu/databroker/datarequest/jobs/{jobId}/result?size={items_per_page}&page={page}" + timeout: 60 + need_auth: true + auth_error_code: 401 + results_entry: content + two_passes_id_search: true + dates_required: true + ssl_verify: true + pagination: + start_page: 0 + max_items_per_page: 20 + total_items_nb_key_path: '$.totItems' + discover_product_types: + fetch_url: null + constraints_file_url: "https://wekeo-broker.apps.mercator.dpi.wekeo.eu/databroker/querymetadata/{dataset}" + constraints_entry: constraints + metadata_mapping: + productType: + - '{{"datasetId": "{productType}"}}' + - '$.productInfo.datasetId' + startTimeFromAscendingNode: + - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' + - '$.productInfo.productStartDate' + completionTimeFromAscendingNode: + - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' + - '$.productInfo.productEndDate' + geometry: + - '{{"boundingBoxValues": [{{"name": "bbox", "bbox": {geometry#to_bounds}}}]}}' + - '$.extraInformation.footprint' + cloudCover: '$.extraInformation.cloudCover' + downloadLink: '$.url' + title: '{$.productInfo.product#remove_extension}' + orderLink: 'https://wekeo-broker.prod.wekeo2.eu/databroker/dataorder?{{"uri": "{downloadLink}","jobId":"requestJobId"}}' + storageStatus: 'OFFLINE' + auth: + type: TokenAuth + auth_uri: 'https://wekeo-broker.prod.wekeo2.eu/databroker/gettoken' + token_type: json + token_key: access_token + request_method: GET + ssl_verify: true + headers: + Authorization: Bearer $token + products: + S1_SAR_SLC: + productType: EO:ESA:DAT:SENTINEL-1:SAR + providerProductType: SLC + metadata_mapping: + id: + - '{{"stringChoiceValues": [{{"name": "productType", "value": "SLC"}}, {{"name": "sensorMode", "value": {id#split_id_into_s1_params}["sensorMode"]}}, {{"name": "processingLevel", "value": {id#split_id_into_s1_params}["processingLevel"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s1_params}["startDate"], "end": {id#split_id_into_s1_params}["endDate"]}}]}}' + - '{$.productInfo.product#remove_extension}' + startTimeFromAscendingNode: + - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' + - '$.productInfo.productStartDate' + completionTimeFromAscendingNode: + - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' + - '$.productInfo.productEndDate' + providerProductType: + - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}' + - '$.null' + processingLevel: + - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}' + - '$.null' + sensorMode: + - '{{"stringChoiceValues": [{{"name": "sensorMode", "value": "{sensorMode}"}}]}}' + - '$.null' + swath: + - '{{"stringChoiceValues": [{{"name": "swath", "value": "{swath}"}}]}}' + - '$.null' + timeliness: + - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' + - '$.null' + orbitDirection: + - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}' + - '$.null' + polarisation: + - '{{"stringChoiceValues": [{{"name": "polarisation", "value": "{polarisation}"}}]}}' + - '$.null' + relativeOrbitNumber: + - '{{"stringInputValues": [{{"name": "relativeOrbitNumber", "value": "{relativeOrbitNumber}"}}]}}' + - '$.null' + missionTakeId: + - '{{"stringInputValues": [{{"name": "missionTakeId", "value": "{missionTakeId}"}}]}}' + - '$.null' + S1_SAR_GRD: + productType: EO:ESA:DAT:SENTINEL-1:SAR + providerProductType: "GRD" + metadata_mapping: + id: + - '{{"stringChoiceValues": [{{"name": "productType", "value": "GRD"}}, {{"name": "sensorMode", "value": {id#split_id_into_s1_params}["sensorMode"]}}, {{"name": "processingLevel", "value": {id#split_id_into_s1_params}["processingLevel"]}}], "dateRangeSelectValues": [{{"name": "position", "start": {id#split_id_into_s1_params}["startDate"], "end": {id#split_id_into_s1_params}["endDate"]}}]}}' + - '{$.productInfo.product#remove_extension}' + startTimeFromAscendingNode: + - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' + - '$.productInfo.productStartDate' + completionTimeFromAscendingNode: + - '{{"dateRangeSelectValues": [{{"name": "position", "start": "{startTimeFromAscendingNode#to_iso_utc_datetime}", "end": "{completionTimeFromAscendingNode#to_iso_utc_datetime}"}}]}}' + - '$.productInfo.productEndDate' + providerProductType: + - '{{"stringChoiceValues": [{{"name": "productType", "value": "{providerProductType}"}}]}}' + - '$.null' + processingLevel: + - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}' + - '$.null' + sensorMode: + - '{{"stringChoiceValues": [{{"name": "sensorMode", "value": "{sensorMode}"}}]}}' + - '$.null' + swath: + - '{{"stringChoiceValues": [{{"name": "swath", "value": "{swath}"}}]}}' + - '$.null' + timeliness: + - '{{"stringChoiceValues": [{{"name": "timeliness", "value": "{timeliness}"}}]}}' + - '$.null' + orbitDirection: + - '{{"stringChoiceValues": [{{"name": "orbitDirection", "value": "{orbitDirection}"}}]}}' + - '$.null' + polarisation: + - '{{"stringChoiceValues": [{{"name": "polarisation", "value": "{polarisation}"}}]}}' + - '$.null' + relativeOrbitNumber: + - '{{"stringInputValues": [{{"name": "relativeOrbitNumber", "value": "{relativeOrbitNumber}"}}]}}' + - '$.null' + missionTakeId: + - '{{"stringInputValues": [{{"name": "missionTakeId", "value": "{missionTakeId}"}}]}}' + - '$.null' + S2_MSI_L1C: + productType: EO:ESA:DAT:SENTINEL-2:MSI + processingLevel: S2MSI1C + metadata_mapping: + id: + - '{{"stringInputValues": [{{"name": "productIdentifier", "value": "{id}"}}]}}' + - '{$.productInfo.product#remove_extension}' + processingLevel: + - '{{"stringChoiceValues": [{{"name": "processingLevel", "value": "{processingLevel}"}}]}}' + - '$.null' + cloudCover: + - '{{"stringInputValues": [{{"name": "cloudCover", "value": "{cloudCover}"}}]}}' + - '$.extraInformation.cloudCover' + productIdentifier: + - '{{"stringInputValues": [{{"name": "productIdentifier", "value": "{productIdentifier}"}}]}}' + - '$.null' + COP_DEM_GLO30_DGED: + productType: EO:DEM:DAT:COP-DEM_GLO-30-DGED__2022_1 + metadata_mapping: + id: + - '{{"boundingBoxValues": [{{"name": "bbox", "bbox": {id#split_cop_dem_id}}}]}}' + - '{$.productInfo.product#remove_extension}' + startTimeFromAscendingNode: '$.productInfo.productStartDate' + completionTimeFromAscendingNode: '$.productInfo.productEndDate' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + COP_DEM_GLO90_DGED: + productType: EO:DEM:DAT:COP-DEM_GLO-90-DGED__2022_1 + metadata_mapping: + id: + - '{{"boundingBoxValues": [{{"name": "bbox", "bbox": {id#split_cop_dem_id}}}]}}' + - '{$.productInfo.product#remove_extension}' + startTimeFromAscendingNode: '$.productInfo.productStartDate' + completionTimeFromAscendingNode: '$.productInfo.productEndDate' + defaultGeometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' + CLMS_CORINE: + productType: EO:CLMS:DAT:CORINE + providerProductType: "Corine Land Cover 2018" + format: "GeoTiff100mt" + metadata_mapping: + # the given datetimes are used to determine the product type, i.e. from which year the data will be taken + startTimeFromAscendingNode: '$.productInfo.productStartDate' + completionTimeFromAscendingNode: '$.productInfo.productEndDate' + providerProductType: + - '{{"stringChoiceValues": [{{"name": "product_type", "value": "{providerProductType}"}}]}}' + - '$.null' + format: + - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}]}}' + - '$.null' + id: + - '{{"stringChoiceValues": [{{"name": "format", "value": "{format}"}}, {{"name": "product_type", "value": "{id#split_corine_id}"}}]}}' + - '{$.productInfo.product#remove_extension}' + geometry: 'POLYGON((180 -90, 180 90, -180 90, -180 -90, 180 -90))' # geometry is not available for this product type diff --git a/tests/resources/wrong_credentials_conf.yml b/tests/resources/wrong_credentials_conf.yml index 372d40725..6362ee239 100644 --- a/tests/resources/wrong_credentials_conf.yml +++ b/tests/resources/wrong_credentials_conf.yml @@ -69,3 +69,9 @@ wekeo: credentials: username: "wrong_username" password: "wrong_password" + +eumetsat_ds: + auth: + credentials: + username: "wrong_consumer_key" + password: "wrong_consumer_secret" diff --git a/tests/test_cli.py b/tests/test_cli.py index f54e24bba..bddd5c1fb 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -30,6 +30,7 @@ from packaging import version from pkg_resources import resource_filename +from eodag.api.search_result import SearchResult from eodag.utils import GENERIC_PRODUCT_TYPE from tests import TEST_RESOURCES_PATH from tests.context import ( @@ -207,6 +208,7 @@ def test_eodag_search_bbox_valid(self, dag): productType=product_type, id=None, locations=None, + count=False, ) def test_eodag_search_geom_wkt_invalid(self): @@ -253,6 +255,7 @@ def test_eodag_search_geom_wkt_valid(self, dag): productType=product_type, id=None, locations=None, + count=False, ) def test_eodag_search_bbox_geom_mutually_exclusive(self): @@ -283,7 +286,7 @@ def test_eodag_search_storage_arg(self, dag): """Calling eodag search with specified result filename without .geojson extension""" # noqa with self.user_conf() as conf_file: api_obj = dag.return_value - api_obj.search.return_value = (mock.MagicMock(),) * 2 + api_obj.search.return_value = SearchResult([mock.MagicMock() * 2], 2) self.runner.invoke( eodag, [ @@ -297,7 +300,7 @@ def test_eodag_search_storage_arg(self, dag): ], ) api_obj.serialize.assert_called_with( - api_obj.search.return_value[0], filename="results.geojson" + api_obj.search.return_value, filename="results.geojson" ) @mock.patch("eodag.cli.EODataAccessGateway", autospec=True) @@ -305,7 +308,7 @@ def test_eodag_search_with_cruncher(self, dag): """Calling eodag search with --cruncher arg should call crunch method of search result""" # noqa with self.user_conf() as conf_file: api_obj = dag.return_value - api_obj.search.return_value = (mock.MagicMock(),) * 2 + api_obj.search.return_value = SearchResult([mock.MagicMock() * 2], 2) product_type = "whatever" cruncher = "FilterLatestIntersect" @@ -328,7 +331,7 @@ def test_eodag_search_with_cruncher(self, dag): ["search", "-f", conf_file, "-p", product_type, "--cruncher", cruncher], ) - search_results = api_obj.search.return_value[0] + search_results = api_obj.search.return_value crunch_results = api_obj.crunch.return_value # Assertions @@ -336,7 +339,7 @@ def test_eodag_search_with_cruncher(self, dag): user_conf_file_path=conf_file, locations_conf_path=None ) api_obj.search.assert_called_once_with( - items_per_page=DEFAULT_ITEMS_PER_PAGE, page=1, **criteria + count=False, items_per_page=DEFAULT_ITEMS_PER_PAGE, page=1, **criteria ) api_obj.crunch.assert_called_once_with( search_results, search_criteria=criteria, **{cruncher: {}} @@ -439,6 +442,7 @@ def test_eodag_search_query(self, dag): foo="1", bar=["2", "3"], locations=None, + count=False, ) @mock.patch("eodag.cli.EODataAccessGateway", autospec=True) @@ -474,6 +478,7 @@ def test_eodag_search_locations(self, dag): sensorType=None, id=None, locations={"country": "FRA", "continent": "Africa"}, + count=False, ) @mock.patch("eodag.cli.EODataAccessGateway", autospec=True) @@ -513,6 +518,7 @@ def test_eodag_search_start_date(self, dag): sensorType=None, id=None, locations=None, + count=False, ) @mock.patch("eodag.cli.EODataAccessGateway", autospec=True) @@ -534,6 +540,7 @@ def test_eodag_search_stop_date(self, dag): product_type, "--end", stop_date_str, + "--count", ], ) api_obj = dag.return_value @@ -552,6 +559,7 @@ def test_eodag_search_stop_date(self, dag): sensorType=None, id=None, locations=None, + count=True, ) @mock.patch("eodag.cli.EODataAccessGateway", autospec=True) @@ -575,7 +583,8 @@ def test_eodag_search_locs(self, dag): ) dag.assert_called_once_with( - user_conf_file_path=conf_file, locations_conf_path=locs_file + user_conf_file_path=conf_file, + locations_conf_path=locs_file, ) def test_eodag_list_product_type_ok(self): @@ -615,9 +624,7 @@ def test_eodag_list_product_type_with_provider_ko(self): self.assertEqual(result.exit_code, 1) self.assertIn("Unsupported provider. You may have a typo", result.output) self.assertIn( - "Available providers: {}".format( - ", ".join(sorted(test_core.TestCore.SUPPORTED_PROVIDERS)) - ), + f"Available providers: {', '.join(test_core.TestCore.SUPPORTED_PROVIDERS)}", result.output, ) diff --git a/tests/test_config.py b/tests/test_config.py index e819986ec..baed05490 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -290,7 +290,6 @@ def test_override_config_from_str(self): download: type: AwsDownload base_uri: https://api.my_new_provider - flatten_top_dirs: True auth: type: AwsAuth credentials: @@ -354,7 +353,7 @@ def test_override_config_from_file(self): download: type: AwsDownload base_uri: https://api.my_new_provider - flatten_top_dirs: True + flatten_top_dirs: false auth: type: AwsAuth credentials: @@ -410,7 +409,7 @@ def test_override_config_from_file(self): self.assertEqual( my_new_provider_conf.download.base_uri, "https://api.my_new_provider" ) - self.assertTrue(my_new_provider_conf.download.flatten_top_dirs) + self.assertFalse(my_new_provider_conf.download.flatten_top_dirs) self.assertIsInstance(my_new_provider_conf.auth, config.PluginConfig) self.assertEqual(my_new_provider_conf.auth.type, "AwsAuth") self.assertEqual( diff --git a/tests/test_end_to_end.py b/tests/test_end_to_end.py index 66e84e4c4..b322aeffb 100644 --- a/tests/test_end_to_end.py +++ b/tests/test_end_to_end.py @@ -209,6 +209,13 @@ "2023-01-01", [-180, -90, 180, 90], ] +EUMETSAT_DS_SEARCH_ARGS = [ + "eumetsat_ds", + "S3_OLCI_L2WFR", + "2021-03-11", + "2021-03-11", + [-69.3363, -75.9038, -39.3465, -68.2361], +] @pytest.mark.enable_socket @@ -245,8 +252,7 @@ def execute_search( search_criteria["items_per_page"] = items_per_page if page: search_criteria["page"] = page - self.eodag.set_preferred_provider(provider) - results, nb_results = self.eodag.search(**search_criteria) + results = self.eodag.search(provider=provider, **search_criteria) if offline: results = [ prod @@ -493,21 +499,21 @@ def test_end_to_end_search_download_ecmwf(self): product = self.execute_search( *ECMWF_SEARCH_ARGS, search_kwargs_dict=ECMWF_SEARCH_KWARGS ) - expected_filename = "{}.grib".format(product.properties["title"]) + expected_filename = "{}".format(product.properties["title"]) self.execute_download(product, expected_filename) def test_end_to_end_search_download_cop_ads(self): product = self.execute_search( *COP_ADS_SEARCH_ARGS, search_kwargs_dict=COP_ADS_SEARCH_KWARGS ) - expected_filename = "{}.grib".format(product.properties["title"]) + expected_filename = "{}".format(product.properties["title"]) self.execute_download(product, expected_filename) def test_end_to_end_search_download_cop_cds(self): product = self.execute_search( *COP_CDS_SEARCH_ARGS, search_kwargs_dict=COP_CDS_SEARCH_KWARGS ) - expected_filename = "{}.grib".format(product.properties["title"]) + expected_filename = "{}".format(product.properties["title"]) self.execute_download(product, expected_filename) def test_end_to_end_search_download_sara(self): @@ -517,7 +523,7 @@ def test_end_to_end_search_download_sara(self): def test_end_to_end_search_download_meteoblue(self): product = self.execute_search(*METEOBLUE_SEARCH_ARGS) - expected_filename = "{}.nc".format(product.properties["title"]) + expected_filename = "{}".format(product.properties["title"]) self.execute_download(product, expected_filename) def test_end_to_end_search_download_wekeo(self): @@ -525,6 +531,11 @@ def test_end_to_end_search_download_wekeo(self): expected_filename = "{}.zip".format(product.properties["title"]) self.execute_download(product, expected_filename, timeout_sec=40) + def test_end_to_end_search_download_eumetsat_ds(self): + product = self.execute_search(*EUMETSAT_DS_SEARCH_ARGS) + expected_filename = "{}.zip".format(product.properties["title"]) + self.execute_download(product, expected_filename) + # @unittest.skip("service unavailable for the moment") def test_get_quicklook_peps(self): product = self.execute_search( @@ -570,7 +581,7 @@ def test_search_by_tile(self): tile_id = "31TCJ" for provider, product_type in supported_providers_product_types: - products, _ = self.eodag.search( + products = self.eodag.search( productType=product_type, start="2021-06-01", end="2021-06-30", @@ -783,7 +794,7 @@ def test_end_to_end_complete_peps(self): # Search for products that are ONLINE and as small as possible today = datetime.date.today() month_span = datetime.timedelta(weeks=4) - search_results, _ = self.eodag.search( + search_results = self.eodag.search( productType="S2_MSI_L1C", start=(today - month_span).isoformat(), end=today.isoformat(), @@ -834,8 +845,9 @@ def test_end_to_end_complete_peps(self): record_dir = os.path.join(self.tmp_download_path, ".downloaded") self.assertTrue(os.path.isdir(record_dir)) # It must contain a file per product downloade, whose name is - # the MD5 hash of the product's remote location - expected_hash = hashlib.md5(product.remote_location.encode("utf-8")).hexdigest() + # the MD5 hash of the product's ``product_type`` and ``properties['id']`` + expected_hash = product.product_type + "-" + product.properties["id"] + expected_hash = hashlib.md5(expected_hash.encode("utf-8")).hexdigest() record_file = os.path.join(record_dir, expected_hash) self.assertTrue(os.path.isfile(record_file)) # Its content must be the product's remote location @@ -890,11 +902,8 @@ def test_end_to_end_complete_peps(self): self.assertNotEqual(prev_location, product.location) # The location must follow the file URI scheme self.assertTrue(product.location.startswith("file://")) - # The location must point to a SAFE directory - self.assertTrue(product.location.endswith("SAFE")) - # The path must point to a SAFE directory + # The path must point to a directory self.assertTrue(os.path.isdir(product_dir_path)) - self.assertTrue(product_dir_path.endswith("SAFE")) # The downloaded & extracted product should not be downloaded again if # the download method is executed again @@ -971,7 +980,7 @@ def test_end_to_end_wrong_credentials_peps(self): def test_end_to_end_wrong_apikey_search_aws_eos(self): self.eodag.set_preferred_provider(AWSEOS_SEARCH_ARGS[0]) with self.assertRaises(AuthenticationError): - results, _ = self.eodag.search( + self.eodag.search( raise_errors=True, **dict( zip(["productType", "start", "end", "geom"], AWSEOS_SEARCH_ARGS[1:]) @@ -999,7 +1008,7 @@ def test_end_to_end_good_apikey_wrong_credentials_aws_eos(self): user_conf_file_path=os.path.join(TEST_RESOURCES_PATH, "user_conf.yml") ) eodag.set_preferred_provider(AWSEOS_SEARCH_ARGS[0]) - results, nb_results = eodag.search( + results = eodag.search( raise_errors=True, **dict( zip(["productType", "start", "end", "geom"], AWSEOS_SEARCH_ARGS[1:]) @@ -1035,7 +1044,7 @@ def test_end_to_end_wrong_credentials_search_usgs(self): # It should already fail while searching for the products. self.eodag.set_preferred_provider(USGS_RECENT_SEARCH_ARGS[0]) with self.assertRaises(AuthenticationError): - results, _ = self.eodag.search( + self.eodag.search( raise_errors=True, **dict( zip( @@ -1049,7 +1058,7 @@ def test_end_to_end_wrong_credentials_search_meteoblue(self): # It should already fail while searching for the products. self.eodag.set_preferred_provider(METEOBLUE_SEARCH_ARGS[0]) with self.assertRaises(AuthenticationError): - results, _ = self.eodag.search( + self.eodag.search( raise_errors=True, **dict( zip( @@ -1063,7 +1072,7 @@ def test_end_to_end_wrong_credentials_search_hydroweb_next(self): # It should already fail while searching for the products. self.eodag.set_preferred_provider(HYDROWBEB_NEXT_SEARCH_ARGS[0]) with self.assertRaises(AuthenticationError): - results, _ = self.eodag.search( + self.eodag.search( raise_errors=True, **dict( zip( @@ -1077,7 +1086,7 @@ def test_end_to_end_wrong_credentials_search_wekeo(self): # It should already fail while searching for the products. self.eodag.set_preferred_provider(WEKEO_SEARCH_ARGS[0]) with self.assertRaises(AuthenticationError): - results, _ = self.eodag.search( + self.eodag.search( raise_errors=True, **dict( zip( @@ -1086,3 +1095,8 @@ def test_end_to_end_wrong_credentials_search_wekeo(self): ) ), ) + + def test_end_to_end_wrong_credentials_search_eumetsat_ds(self): + product = self.execute_search(*EUMETSAT_DS_SEARCH_ARGS) + with self.assertRaises(AuthenticationError): + self.eodag.download(product) diff --git a/tests/test_requirements.py b/tests/test_requirements.py index 86e155153..9ef2dc9bb 100644 --- a/tests/test_requirements.py +++ b/tests/test_requirements.py @@ -19,12 +19,15 @@ import ast import configparser import os +import re import unittest +from typing import Any, Dict, Iterator, Set import importlib_metadata from packaging.requirements import Requirement from stdlib_list import stdlib_list +from eodag.config import PluginConfig, load_default_config from tests.context import MisconfiguredError project_path = "./eodag" @@ -32,7 +35,7 @@ allowed_missing_imports = ["eodag"] -def get_imports(filepath): +def get_imports(filepath: str) -> Iterator[Any]: """Get python imports from the given file path""" with open(filepath, "r") as file: try: @@ -55,7 +58,7 @@ def get_imports(filepath): yield node.module.split(".")[0] -def get_project_imports(project_path): +def get_project_imports(project_path: str) -> Set[str]: """Get python imports from the project path""" imports = set() for dirpath, dirs, files in os.walk(project_path): @@ -66,7 +69,7 @@ def get_project_imports(project_path): return imports -def get_setup_requires(setup_cfg_path): +def get_setup_requires(setup_cfg_path: str): """Get requirements from the given setup.cfg file path""" config = configparser.ConfigParser() config.read(setup_cfg_path) @@ -79,12 +82,59 @@ def get_setup_requires(setup_cfg_path): ) +def get_optional_dependencies(setup_cfg_path: str, extra: str) -> Set[str]: + """Get extra requirements from the given setup.cfg file path""" + config = configparser.ConfigParser() + config.read(setup_cfg_path) + deps = set() + for req in config["options.extras_require"][extra].split("\n"): + if req.startswith("eodag["): + for found_extra in re.findall(r"([\w-]+)[,\]]", req): + deps.update(get_optional_dependencies(setup_cfg_path, found_extra)) + elif req: + deps.add(Requirement(req).name) + + return deps + + +def get_resulting_extras(setup_cfg_path: str, extra: str) -> Set[str]: + """Get resulting extras for a single extra from the given setup.cfg file path""" + config = configparser.ConfigParser() + config.read(setup_cfg_path) + extras = set() + for req in config["options.extras_require"][extra].split("\n"): + if req.startswith("eodag["): + extras.update(re.findall(r"([\w-]+)[,\]]", req)) + return extras + + +def get_entrypoints_extras(setup_cfg_path: str) -> Dict[str, str]: + """Get entrypoints and associated extra from the given setup.cfg file path""" + config = configparser.ConfigParser() + config.read(setup_cfg_path) + plugins_extras_dict = dict() + for group in config["options.entry_points"].keys(): + for ep in config["options.entry_points"][group].split("\n"): + # plugin entrypoint with associated extra + match = re.search(r"^(\w+) = [\w\.:]+ \[(\w+)\]$", ep) + if match: + plugins_extras_dict[match.group(1)] = match.group(2) + continue + # plugin entrypoint without extra + match = re.search(r"^(\w+) = [\w\.:]+$", ep) + if match: + plugins_extras_dict[match.group(1)] = None + + return plugins_extras_dict + + class TestRequirements(unittest.TestCase): - def test_requirements(self): + def test_all_requirements(self): """Needed libraries must be in project requirements""" project_imports = get_project_imports(project_path) setup_requires = get_setup_requires(setup_cfg_path) + setup_requires.update(get_optional_dependencies(setup_cfg_path, "all")) import_required_dict = importlib_metadata.packages_distributions() default_libs = stdlib_list() @@ -102,3 +152,24 @@ def test_requirements(self): 0, f"The following libraries were not found in project requirements: {missing_imports}", ) + + def test_plugins_extras(self): + """All optional dependencies needed by providers must be resolved with all-providers extra""" + + plugins_extras_dict = get_entrypoints_extras(setup_cfg_path) + all_providers_extras = get_resulting_extras(setup_cfg_path, "all-providers") + + providers_config = load_default_config() + plugins = set() + for provider_conf in providers_config.values(): + plugins.update( + [ + getattr(provider_conf, x).type + for x in dir(provider_conf) + if isinstance(getattr(provider_conf, x), PluginConfig) + ] + ) + + for plugin in plugins: + if extra := plugins_extras_dict.get(plugin): + self.assertIn(extra, all_providers_extras) diff --git a/tests/units/test_apis_plugins.py b/tests/units/test_apis_plugins.py index 0637fa73a..30cfbb41b 100644 --- a/tests/units/test_apis_plugins.py +++ b/tests/units/test_apis_plugins.py @@ -16,12 +16,9 @@ # See the License for the specific language governing permissions and # limitations under the License. import ast -import io -import json -import logging import os import unittest -from datetime import datetime +from datetime import datetime, timezone from tempfile import TemporaryDirectory from unittest import mock @@ -30,25 +27,24 @@ from ecmwfapi.api import ANONYMOUS_APIKEY_VALUES from shapely.geometry import shape -from eodag.utils import MockResponse -from tests import TEST_RESOURCES_PATH from tests.context import ( DEFAULT_DOWNLOAD_WAIT, DEFAULT_MISSION_START_DATE, ONLINE_STATUS, USER_AGENT, + USGS_TMPFILE, AuthenticationError, EODataAccessGateway, EOProduct, NotAvailableError, PluginManager, + PreparedSearch, SearchResult, USGSAuthExpiredError, USGSError, get_geometry_from_various, load_default_config, path_to_uri, - setup_logging, urlsplit, ) @@ -104,9 +100,10 @@ def setUp(self): "origin": "ecmf", "grid": "0.5/0.5", "param": "59/134/136/146/147/151/165/166/167/168/172/176/177/179/189/235/" - + "228001/228002/228039/228139/228141/228144/228164/228228", + + "228002/228039/228139/228141/228144/228164/228228", "step": 0, "time": "00:00", + "target": "output", } self.custom_query_params = { "origin": "ecmf", @@ -149,7 +146,7 @@ def test_plugins_apis_ecmwf_query_dates_missing(self): ) self.assertIn( eoproduct.properties["completionTimeFromAscendingNode"], - datetime.utcnow().isoformat(), + datetime.now(timezone.utc).isoformat(), ) # missing start & stop and plugin.product_type_config set (set in core._prepare_search) @@ -277,44 +274,60 @@ def test_plugins_apis_ecmwf_download( output_data_path = os.path.join(os.path.expanduser("~"), "data") # public dataset request - results, _ = dag.search( + def create_empty_file_for_public_dataset(*args, **kwargs): + with open(args[1]["target"], "x"): + pass + + mock_ecmwfdataserver_retrieve.side_effect = create_empty_file_for_public_dataset + results = dag.search( **self.query_dates, **self.custom_query_params, ) eoproduct = results[0] expected_path = os.path.join( - output_data_path, "%s.grib" % eoproduct.properties["title"] + output_data_path, "%s" % eoproduct.properties["title"] + ) + arg_path = os.path.join( + output_data_path, + "%s" % eoproduct.properties["title"], + "%s.grib" % eoproduct.properties["title"], ) path = eoproduct.download(outputs_prefix=output_data_path) mock_ecmwfservice_execute.assert_not_called() mock_ecmwfdataserver_retrieve.assert_called_once_with( mock.ANY, # ECMWFDataServer instance dict( - target=expected_path, + target=arg_path, **geojson.loads(urlsplit(eoproduct.remote_location).query), ), ) + assert path == expected_path assert path_to_uri(expected_path) == eoproduct.location mock_ecmwfservice_execute.reset_mock() mock_ecmwfdataserver_retrieve.reset_mock() # operation archive request - def create_empty_file(*args, **kwargs): + def create_empty_file_for_operation_archive(*args, **kwargs): with open(args[2], "x"): pass - mock_ecmwfservice_execute.side_effect = create_empty_file + mock_ecmwfservice_execute.side_effect = create_empty_file_for_operation_archive operation_archive_custom_query_params = self.custom_query_params.copy() operation_archive_custom_query_params.pop("dataset") operation_archive_custom_query_params["format"] = "netcdf" - results, _ = dag.search( + results = dag.search( **self.query_dates, **operation_archive_custom_query_params, ) eoproduct = results[0] expected_path = os.path.join( - output_data_path, "%s.nc" % eoproduct.properties["title"] + output_data_path, "%s" % eoproduct.properties["title"] + ) + arg_path = os.path.join( + output_data_path, + "%s" % eoproduct.properties["title"], + "%s.nc" % eoproduct.properties["title"], ) path = eoproduct.download(outputs_prefix=output_data_path) download_request = geojson.loads(urlsplit(eoproduct.remote_location).query) @@ -324,7 +337,7 @@ def create_empty_file(*args, **kwargs): dict( **download_request, ), - expected_path, + arg_path, ) mock_ecmwfdataserver_retrieve.assert_not_called() assert path == expected_path @@ -349,7 +362,7 @@ def test_plugins_apis_ecmwf_download_all( mock_ecmwfdataserver_retrieve, mock_fetch_product_types_list, ): - """EcmwfApi.download_all must call the appriate ecmwf api service""" + """EcmwfApi.download_all must call the appropriate ecmwf api service""" dag = EODataAccessGateway() dag.set_preferred_provider("ecmwf") @@ -357,16 +370,16 @@ def test_plugins_apis_ecmwf_download_all( eoproducts = SearchResult([]) # public dataset request - results, _ = dag.search( + results = dag.search( **self.query_dates, **self.custom_query_params, - foo="bar", + accuracy="bar", ) eoproducts.extend(results) - results, _ = dag.search( + results = dag.search( **self.query_dates, **self.custom_query_params, - foo="baz", + accuracy="baz", ) eoproducts.extend(results) assert len(eoproducts) == 2 @@ -411,12 +424,26 @@ def test_plugins_apis_usgs_authenticate(self, mock_api_logout, mock_api_login): mock_api_login.reset_mock() mock_api_logout.reset_mock() + # with obsolete `.usgs` API file (USGSError) + mock_api_login.side_effect = [ + USGSError("USGS error"), + None, + ] + with mock.patch("os.remove", autospec=True) as mock_os_remove: + self.api_plugin.authenticate() + self.assertEqual(mock_api_login.call_count, 2) + self.assertEqual(mock_api_logout.call_count, 0) + mock_os_remove.assert_called_once_with(USGS_TMPFILE) + mock_api_login.reset_mock() + mock_api_logout.reset_mock() + # with invalid credentials / USGSError mock_api_login.side_effect = USGSError() - with self.assertRaises(AuthenticationError): - self.api_plugin.authenticate() - self.assertEqual(mock_api_login.call_count, 1) - mock_api_logout.assert_not_called() + with mock.patch("os.remove", autospec=True) as mock_os_remove: + with self.assertRaises(AuthenticationError): + self.api_plugin.authenticate() + self.assertEqual(mock_api_login.call_count, 2) + mock_api_logout.assert_not_called() @mock.patch("usgs.api.login", autospec=True) @mock.patch("usgs.api.logout", autospec=True) @@ -499,8 +526,10 @@ def test_plugins_apis_usgs_query( "startTimeFromAscendingNode": "2020-02-01", "completionTimeFromAscendingNode": "2020-02-10", "geometry": get_geometry_from_various(geometry=[10, 20, 30, 40]), - "items_per_page": 5, - "page": 2, + "prep": PreparedSearch( + items_per_page=5, + page=2, + ), } search_results, total_count = self.api_plugin.query(**search_kwargs) mock_api_scene_search.assert_called_once_with( @@ -627,314 +656,3 @@ def run(): ) run() - - -class TestApisPluginCdsApi(BaseApisPluginTest): - def setUp(self): - self.provider = "cop_ads" - self.api_plugin = self.get_search_plugin(provider=self.provider) - self.query_dates = { - "startTimeFromAscendingNode": "2020-01-01", - "completionTimeFromAscendingNode": "2020-01-02", - } - self.product_type = "CAMS_EAC4" - self.product_dataset = "cams-global-reanalysis-eac4" - self.product_type_params = { - "dataset": self.product_dataset, - "format": "grib", - "variable": "2m_dewpoint_temperature", - "time": "00:00", - } - self.custom_query_params = { - "dataset": "cams-global-ghg-reanalysis-egg4", - "step": 0, - "variable": "carbon_dioxide", - "pressure_level": "10", - "model_level": "1", - "time": "00:00", - "format": "grib", - } - - def test_plugins_apis_cds_logging(self): - """CdsApi must init client with logging level""" - - # auth dict needed for client init - auth_dict = {"key": "foo:some-key", "url": "https://bar"} - - # 0: nothing, 1: only progress bars, 2: INFO, 3: DEBUG - setup_logging(0) - client = self.api_plugin._get_cds_client(**auth_dict) - self.assertEqual(client.logger.level, logging.WARNING) - - setup_logging(1) - client = self.api_plugin._get_cds_client(**auth_dict) - self.assertEqual(client.logger.level, logging.WARNING) - - setup_logging(2) - client = self.api_plugin._get_cds_client(**auth_dict) - self.assertEqual(client.logger.level, logging.INFO) - - setup_logging(3) - client = self.api_plugin._get_cds_client(**auth_dict) - self.assertEqual(client.logger.level, logging.DEBUG) - - logger = logging.getLogger("eodag") - logger.handlers = [] - logger.level = 0 - - def test_plugins_apis_cds_query_dates_missing(self): - """CdsApi.query must use default dates if missing""" - # given start & stop - results, _ = self.api_plugin.query( - productType=self.product_type, - startTimeFromAscendingNode="2020-01-01", - completionTimeFromAscendingNode="2020-01-02", - ) - eoproduct = results[0] - self.assertEqual( - eoproduct.properties["startTimeFromAscendingNode"], "2020-01-01" - ) - self.assertEqual( - eoproduct.properties["completionTimeFromAscendingNode"], "2020-01-02" - ) - - # missing start & stop - results, _ = self.api_plugin.query( - productType=self.product_type, - ) - eoproduct = results[0] - self.assertIn( - eoproduct.properties["startTimeFromAscendingNode"], - DEFAULT_MISSION_START_DATE, - ) - self.assertIn( - eoproduct.properties["completionTimeFromAscendingNode"], - "2015-01-02T00:00:00Z", - ) - - # missing start & stop and plugin.product_type_config set (set in core._prepare_search) - self.api_plugin.config.product_type_config = { - "productType": self.product_type, - "missionStartDate": "1985-10-26", - "missionEndDate": "2015-10-21", - } - results, _ = self.api_plugin.query( - productType=self.product_type, - ) - eoproduct = results[0] - self.assertEqual( - eoproduct.properties["startTimeFromAscendingNode"], "1985-10-26" - ) - self.assertEqual( - eoproduct.properties["completionTimeFromAscendingNode"], "1985-10-27" - ) - - def test_plugins_apis_cds_query_without_producttype(self): - """ - CdsApi.query must build a EOProduct from input parameters without product type. - For test only, result cannot be downloaded. - """ - results, count = self.api_plugin.query( - dataset=self.product_dataset, - **self.query_dates, - ) - assert count == 1 - eoproduct = results[0] - assert eoproduct.geometry.bounds == (-180.0, -90.0, 180.0, 90.0) - assert ( - eoproduct.properties["startTimeFromAscendingNode"] - == self.query_dates["startTimeFromAscendingNode"] - ) - assert ( - eoproduct.properties["completionTimeFromAscendingNode"] - == self.query_dates["completionTimeFromAscendingNode"] - ) - assert eoproduct.properties["title"] == eoproduct.properties["id"] - assert eoproduct.properties["title"].startswith( - f"{self.product_dataset.upper()}" - ) - assert eoproduct.location.startswith("http") - - def test_plugins_apis_cds_query_with_producttype(self): - """CdsApi.query must build a EOProduct from input parameters with predefined product type""" - results, _ = self.api_plugin.query( - **self.query_dates, productType=self.product_type, geometry=[1, 2, 3, 4] - ) - eoproduct = results[0] - assert eoproduct.properties["title"].startswith(self.product_type) - assert eoproduct.geometry.bounds == (1.0, 2.0, 3.0, 4.0) - # check if product_type_params is a subset of eoproduct.properties - assert self.product_type_params.items() <= eoproduct.properties.items() - - # product type default settings can be overwritten using search kwargs - results, _ = self.api_plugin.query( - **self.query_dates, - productType=self.product_type, - variable="temperature", - ) - eoproduct = results[0] - assert eoproduct.properties["variable"] == "temperature" - - def test_plugins_apis_cds_query_with_custom_producttype(self): - """CdsApi.query must build a EOProduct from input parameters with custom product type""" - results, _ = self.api_plugin.query( - **self.query_dates, - **self.custom_query_params, - ) - eoproduct = results[0] - assert eoproduct.properties["title"].startswith( - self.custom_query_params["dataset"].upper() - ) - # check if custom_query_params is a subset of eoproduct.properties - for param in self.custom_query_params: - try: - # for numeric values - assert eoproduct.properties[param] == ast.literal_eval( - self.custom_query_params[param] - ) - except Exception: - assert eoproduct.properties[param] == self.custom_query_params[param] - - @mock.patch("cdsapi.api.Client.status", autospec=True) - def test_plugins_apis_cds_authenticate(self, mock_client_status): - """CdsApi.authenticate must return a credentials dict""" - # auth using eodag credentials - credentials = { - "username": "foo", - "password": "bar", - "api_endpoint": "http://foo.bar.baz", - } - self.api_plugin.config.credentials = credentials - auth_dict = self.api_plugin.authenticate() - assert credentials["username"] in auth_dict["key"] - assert credentials["password"] in auth_dict["key"] - assert auth_dict["url"] == self.api_plugin.config.api_endpoint - del self.api_plugin.config.credentials - - @mock.patch("eodag.plugins.download.http.requests.head", autospec=True) - @mock.patch("eodag.plugins.download.http.requests.get", autospec=True) - @mock.patch( - "eodag.api.core.EODataAccessGateway.fetch_product_types_list", autospec=True - ) - @mock.patch("eodag.plugins.apis.cds.CdsApi.authenticate", autospec=True) - @mock.patch("cdsapi.api.Client._api", autospec=True) - def test_plugins_apis_cds_download( - self, - mock_client_api, - mock_cds_authenticate, - mock_fetch_product_types_list, - mock_get, - mock_head, - ): - """CdsApi.download must call the authenticate function and cdsapi Client retrieve""" - mock_cds_authenticate.return_value = { - "key": "foo:bar", - "url": "http://foo.bar.baz", - } - mock_client_api.return_value.location = "http://somewhere/something" - - mock_get.return_value.__enter__.return_value.iter_content.return_value = ( - io.BytesIO(b"some content") - ) - mock_get.return_value.__enter__.return_value.headers = { - "content-disposition": "" - } - mock_head.return_value.headers = {"content-disposition": ""} - - dag = EODataAccessGateway() - dag.set_preferred_provider("cop_ads") - output_data_path = os.path.join(os.path.expanduser("~"), "data") - - # public dataset request - results, _ = dag.search( - **self.query_dates, - **self.custom_query_params, - ) - eoproduct = results[0] - - query_str = "".join(urlsplit(eoproduct.location).fragment.split("?", 1)[1:]) - expected_download_request = geojson.loads(query_str) - expected_dataset_name = expected_download_request.pop("dataset") - expected_url = f"{mock_cds_authenticate.return_value['url']}/resources/{expected_dataset_name}" - expected_path = os.path.join(output_data_path, eoproduct.properties["title"]) - - path = eoproduct.download(outputs_prefix=output_data_path) - mock_client_api.assert_called_once_with( - mock.ANY, # instance - expected_url, - expected_download_request, - "POST", - ) - - assert path == expected_path - assert path_to_uri(expected_path) == eoproduct.location - - @mock.patch( - "eodag.api.core.EODataAccessGateway.fetch_product_types_list", autospec=True - ) - @mock.patch("eodag.plugins.apis.cds.CdsApi.authenticate", autospec=True) - @mock.patch("eodag.plugins.apis.cds.CdsApi.download", autospec=True) - @mock.patch("cdsapi.api.Client.retrieve", autospec=True) - def test_plugins_apis_cds_download_all( - self, - mock_client_retrieve, - mock_cds_download, - mock_cds_authenticate, - mock_fetch_product_types_list, - ): - """CdsApi.download_all must call download on each product""" - mock_cds_authenticate.return_value = { - "key": "foo:bar", - "url": "http://foo.bar.baz", - } - - dag = EODataAccessGateway() - dag.set_preferred_provider("cop_ads") - - eoproducts = SearchResult([]) - - # public dataset request - results, _ = dag.search( - **self.query_dates, - **self.custom_query_params, - foo="bar", - ) - eoproducts.extend(results) - results, _ = dag.search( - **self.query_dates, - **self.custom_query_params, - foo="baz", - ) - eoproducts.extend(results) - assert len(eoproducts) == 2 - - paths = dag.download_all( - eoproducts, outputs_prefix=os.path.join(os.path.expanduser("~"), "data") - ) - assert mock_cds_download.call_count == len(eoproducts) - assert len(paths) == len(eoproducts) - - @mock.patch("eodag.utils.constraints.requests.get", autospec=True) - def test_plugins_apis_cds_discover_queryables(self, mock_requests_constraints): - constraints_path = os.path.join(TEST_RESOURCES_PATH, "constraints.json") - with open(constraints_path) as f: - constraints = json.load(f) - mock_requests_constraints.return_value = MockResponse( - constraints, status_code=200 - ) - queryables = self.api_plugin.discover_queryables( - productType="CAMS_EU_AIR_QUALITY_RE" - ) - self.assertEqual(11, len(queryables)) - self.assertIn("variable", queryables) - self.assertNotIn("metadata_mapping", queryables) - # with additional param - queryables = self.api_plugin.discover_queryables( - productType="CAMS_EU_AIR_QUALITY_RE", - variable="a", - ) - self.assertEqual(11, len(queryables)) - queryable = queryables.get("variable") - self.assertEqual("a", queryable.__metadata__[0].get_default()) - queryable = queryables.get("month") - self.assertTrue(queryable.__metadata__[0].is_required()) diff --git a/tests/units/test_auth_plugins.py b/tests/units/test_auth_plugins.py index 048525c62..c6d03a7d6 100644 --- a/tests/units/test_auth_plugins.py +++ b/tests/units/test_auth_plugins.py @@ -17,6 +17,7 @@ # limitations under the License. import unittest +from datetime import datetime, timedelta from unittest import mock import responses @@ -25,10 +26,14 @@ from requests.exceptions import RequestException from eodag.config import override_config_from_mapping +from eodag.plugins.authentication.openid_connect import CodeAuthorizedAuth +from eodag.utils import MockResponse +from eodag.utils.exceptions import RequestError from tests.context import ( HTTP_REQ_TIMEOUT, USER_AGENT, AuthenticationError, + HeaderAuth, MisconfiguredError, PluginManager, ) @@ -93,6 +98,30 @@ def setUpClass(cls): "token_key": "token_is_here", }, }, + "provider_text_token_req_data": { + "products": {"foo_product": {}}, + "auth": { + "type": "TokenAuth", + "auth_uri": "http://foo.bar", + "req_data": {"grant_type": "client_credentials"}, + }, + }, + "provider_text_token_get_method": { + "products": {"foo_product": {}}, + "auth": { + "type": "TokenAuth", + "auth_uri": "http://foo.bar", + "request_method": "GET", + }, + }, + "provider_text_token_auth_error_code": { + "products": {"foo_product": {}}, + "auth": { + "type": "TokenAuth", + "auth_uri": "http://foo.bar", + "auth_error_code": 401, + }, + }, }, ) cls.plugins_manager = PluginManager(cls.providers_config) @@ -130,13 +159,13 @@ def test_plugins_auth_tokenauth_validate_credentials_format_url_ok(self): auth_plugin.validate_config_credentials() @mock.patch( - "eodag.plugins.authentication.token.requests.Session.post", autospec=True + "eodag.plugins.authentication.token.requests.Session.request", autospec=True ) def test_plugins_auth_tokenauth_text_token_authenticate(self, mock_requests_post): """TokenAuth.authenticate must return a RequestsTokenAuth object using text token""" auth_plugin = self.get_auth_plugin("provider_text_token_header") - auth_plugin.config.credentials = {"foo": "bar"} + auth_plugin.config.credentials = {"foo": "bar", "baz": "qux"} # mock token post request response mock_requests_post.return_value = mock.Mock() @@ -144,28 +173,31 @@ def test_plugins_auth_tokenauth_text_token_authenticate(self, mock_requests_post # check if returned auth object is an instance of requests.AuthBase auth = auth_plugin.authenticate() - assert isinstance(auth, AuthBase) + self.assertTrue(isinstance(auth, AuthBase)) # check token post request call arguments args, kwargs = mock_requests_post.call_args - assert args[1] == auth_plugin.config.auth_uri - assert kwargs["data"] == auth_plugin.config.credentials - assert kwargs["headers"] == dict(auth_plugin.config.headers, **USER_AGENT) + self.assertEqual(kwargs["url"], auth_plugin.config.auth_uri) + self.assertDictEqual(kwargs["data"], {"foo": "bar", "baz": "qux"}) + self.assertIsNone(kwargs["auth"]) + self.assertDictEqual( + kwargs["headers"], dict(auth_plugin.config.headers, **USER_AGENT) + ) # check if token is integrated to the request req = mock.Mock(headers={}) auth(req) - assert req.headers["Authorization"] == "Bearer this_is_test_token" - assert req.headers["foo"] == "bar" + self.assertEqual(req.headers["Authorization"], "Bearer this_is_test_token") + self.assertEqual(req.headers["foo"], "bar") @mock.patch( - "eodag.plugins.authentication.token.requests.Session.post", autospec=True + "eodag.plugins.authentication.token.requests.Session.request", autospec=True ) def test_plugins_auth_tokenauth_json_token_authenticate(self, mock_requests_post): """TokenAuth.authenticate must return a RequestsTokenAuth object using json token""" auth_plugin = self.get_auth_plugin("provider_json_token_simple_url") - auth_plugin.config.credentials = {"foo": "bar"} + auth_plugin.config.credentials = {"foo": "bar", "baz": "qux"} # mock token post request response mock_requests_post.return_value = mock.Mock() @@ -184,22 +216,181 @@ def test_plugins_auth_tokenauth_json_token_authenticate(self, mock_requests_post assert req.headers["Authorization"] == "Bearer this_is_test_token" @mock.patch( - "eodag.plugins.authentication.token.requests.Session.post", autospec=True + "eodag.plugins.authentication.token.requests.Session.request", autospec=True ) - def test_plugins_auth_tokenauth_request_error(self, mock_requests_post): + def test_plugins_auth_tokenauth_with_data_authenticate(self, mock_requests_post): + """TokenAuth.authenticate must return a RequestsTokenAuth object when 'data' request argument is required""" + auth_plugin = self.get_auth_plugin("provider_text_token_req_data") + + auth_plugin.config.credentials = {"foo": "bar", "baz": "qux"} + + # mock token post request response + mock_requests_post.return_value = mock.Mock() + mock_requests_post.return_value.text = "this_is_test_token" + + # check if returned auth object is an instance of requests.AuthBase + auth = auth_plugin.authenticate() + self.assertTrue(isinstance(auth, AuthBase)) + + # check token post request call arguments + args, kwargs = mock_requests_post.call_args + self.assertEqual(kwargs["url"], auth_plugin.config.auth_uri) + self.assertDictEqual( + kwargs["data"], + {"grant_type": "client_credentials", "foo": "bar", "baz": "qux"}, + ) + self.assertIsNone(kwargs["auth"]) + self.assertDictEqual(kwargs["headers"], USER_AGENT) + + # check if token is integrated to the request + req = mock.Mock(headers={}) + auth(req) + self.assertEqual(req.headers["Authorization"], "Bearer this_is_test_token") + + @mock.patch( + "eodag.plugins.authentication.token.requests.Session.request", autospec=True + ) + def test_plugins_auth_tokenauth_get_method_request_authenticate( + self, mock_requests_get + ): + """TokenAuth.authenticate must return a RequestsTokenAuth object with 'GET' method request""" + auth_plugin = self.get_auth_plugin("provider_text_token_get_method") + + auth_plugin.config.credentials = {"username": "bar", "password": "qux"} + + # mock token get request response + mock_requests_get.return_value = mock.Mock() + mock_requests_get.return_value.text = "this_is_test_token" + + # check if returned auth object is an instance of requests.AuthBase + auth = auth_plugin.authenticate() + self.assertTrue(isinstance(auth, AuthBase)) + + # check token get request call arguments + args, kwargs = mock_requests_get.call_args + self.assertEqual(kwargs["url"], auth_plugin.config.auth_uri) + self.assertNotIn("data", kwargs) + self.assertTupleEqual(kwargs["auth"], ("bar", "qux")) + self.assertDictEqual(kwargs["headers"], USER_AGENT) + + # check if token is integrated to the request + req = mock.Mock(headers={}) + auth(req) + self.assertEqual(req.headers["Authorization"], "Bearer this_is_test_token") + + def test_plugins_auth_tokenauth_request_error(self): """TokenAuth.authenticate must raise an AuthenticationError if a request error occurs""" - auth_plugin = self.get_auth_plugin("provider_json_token_simple_url") + auth_plugin = self.get_auth_plugin("provider_text_token_auth_error_code") + + auth_plugin.config.credentials = {"foo": "bar", "baz": "qux"} + + with self.assertRaisesRegex( + AuthenticationError, + "Could no get authentication token: 404 .* test error message", + ): + # mock token post request response with a different status code from the one in the provider auth config + with responses.RequestsMock( + assert_all_requests_are_fired=True + ) as mock_requests_post: + mock_requests_post.add( + responses.POST, + auth_plugin.config.auth_uri, + status=404, + body=b"test error message", + ) + self.assertNotEqual(auth_plugin.config.auth_error_code, 404) + auth_plugin.authenticate() + + def test_plugins_auth_tokenauth_wrong_credentials_request_error(self): + """TokenAuth.authenticate must raise an AuthenticationError with a + specific message if a request error occurs due to wrong credentials""" + provider = "provider_text_token_auth_error_code" + auth_plugin = self.get_auth_plugin(provider) + + auth_plugin.config.credentials = {"foo": "bar", "baz": "qux"} + + with self.assertRaisesRegex( + AuthenticationError, + f"HTTP Error 401 returned, test error message\nPlease check your credentials for {provider}", + ): + # mock token post request response with the same status code as the one in the provider auth config + with responses.RequestsMock( + assert_all_requests_are_fired=True + ) as mock_requests_post: + mock_requests_post.add( + responses.POST, + auth_plugin.config.auth_uri, + status=401, + body=b"test error message", + ) + self.assertEqual(auth_plugin.config.auth_error_code, 401) + auth_plugin.authenticate() + + +class TestAuthPluginHTTPHeaderAuth(BaseAuthPluginTest): + @classmethod + def setUpClass(cls): + super(TestAuthPluginHTTPHeaderAuth, cls).setUpClass() + override_config_from_mapping( + cls.providers_config, + { + "provider_with_headers_in_conf": { + "products": {"foo_product": {}}, + "auth": { + "type": "HTTPHeaderAuth", + "headers": {"X-API-Key": "{apikey}"}, + }, + }, + "provider_with_no_header_in_conf": { + "products": {"foo_product": {}}, + "auth": { + "type": "HTTPHeaderAuth", + }, + }, + }, + ) + cls.plugins_manager = PluginManager(cls.providers_config) + + def test_plugins_auth_header_validate_credentials_empty(self): + """HTTPHeaderAuth.validate_credentials must raise an error on empty credentials""" + auth_plugin = self.get_auth_plugin("provider_with_headers_in_conf") + self.assertRaises( + MisconfiguredError, + auth_plugin.validate_config_credentials, + ) + + def test_plugins_auth_header_validate_credentials_ok(self): + """HTTPHeaderAuth.validate_credentials must be ok on non-empty credentials""" + auth_plugin = self.get_auth_plugin("provider_with_headers_in_conf") auth_plugin.config.credentials = {"foo": "bar"} + auth_plugin.validate_config_credentials() - # mock token post request response - mock_requests_post.side_effect = RequestException + def test_plugins_auth_qsauth_authenticate(self): + """HTTPHeaderAuth.authenticate must return a HeaderAuth object""" + # auth with headers in conf and wrong credentials + auth_plugin = self.get_auth_plugin("provider_with_headers_in_conf") + auth_plugin.config.credentials = {"foo": "bar"} self.assertRaises( - AuthenticationError, + MisconfiguredError, auth_plugin.authenticate, ) + # auth with headers in conf + auth_plugin = self.get_auth_plugin("provider_with_headers_in_conf") + auth_plugin.config.credentials = {"apikey": "foo"} + auth = auth_plugin.authenticate() + self.assertIsInstance(auth, HeaderAuth) + self.assertDictEqual(auth.auth_headers, {"X-API-Key": "foo"}) + + # auth with headers in credentials + auth_plugin = self.get_auth_plugin("provider_with_no_header_in_conf") + auth_plugin.config.credentials = {"X-API-Key": "foo"} + auth = auth_plugin.authenticate() + self.assertIsInstance(auth, HeaderAuth) + self.assertDictEqual(auth.auth_headers, {"X-API-Key": "foo"}) + class TestAuthPluginHttpQueryStringAuth(BaseAuthPluginTest): @classmethod @@ -251,6 +442,7 @@ def test_plugins_auth_qsauth_authenticate(self, mock_requests_get): timeout=HTTP_REQ_TIMEOUT, headers=USER_AGENT, auth=auth, + verify=True, ) # check auth query string @@ -484,7 +676,7 @@ def test_plugins_auth_keycloak_authenticate(self): self.assertEqual(auth.where, "qs") # check that token has been stored - self.assertEqual(auth_plugin.retrieved_token, "obtained-token") + self.assertEqual(auth_plugin.token_info["access_token"], "obtained-token") # check that stored token is used if new auth request fails with responses.RequestsMock(assert_all_requests_are_fired=True) as rsps: @@ -613,7 +805,7 @@ def test_plugins_auth_keycloak_authenticate_use_refresh_token(self): self.assertEqual(auth.where, "qs") # check that token and refresh token have been stored - self.assertEqual(auth_plugin.retrieved_token, "obtained-token") + self.assertEqual(auth_plugin.token_info["access_token"], "obtained-token") assert auth_plugin.token_info self.assertEqual("abc", auth_plugin.token_info["refresh_token"]) @@ -645,3 +837,887 @@ def test_plugins_auth_keycloak_authenticate_use_refresh_token(self): self.assertEqual(auth.key, "totoken") self.assertEqual(auth.token, "new-token") self.assertEqual(auth.where, "qs") + + +class TestAuthPluginOIDCAuthorizationCodeFlowAuth(BaseAuthPluginTest): + @classmethod + def setUpClass(cls): + super(TestAuthPluginOIDCAuthorizationCodeFlowAuth, cls).setUpClass() + override_config_from_mapping( + cls.providers_config, + { + "provider_token_provision_invalid": { + "products": {"foo_product": {}}, + "auth": { + "type": "OIDCAuthorizationCodeFlowAuth", + "token_provision": "invalid", + }, + }, + "provider_token_qs_key_missing": { + "products": {"foo_product": {}}, + "auth": { + "type": "OIDCAuthorizationCodeFlowAuth", + "token_provision": "qs", + }, + }, + "provider_authentication_uri_missing": { + "products": {"foo_product": {}}, + "auth": { + "type": "OIDCAuthorizationCodeFlowAuth", + "authorization_uri": "http://auth.foo/authorization", + "redirect_uri": "http://provider.bar/redirect", + "token_uri": "http://auth.foo/token", + "client_id": "provider-bar-id", + "user_consent_needed": False, + "token_provision": "header", + "login_form_xpath": "//form[@id='form-login']", + "authentication_uri_source": "config", + }, + }, + "provider_user_consent": { + "products": {"foo_product": {}}, + "auth": { + "type": "OIDCAuthorizationCodeFlowAuth", + "authorization_uri": "http://auth.foo/authorization", + "redirect_uri": "http://provider.bar/redirect", + "token_uri": "http://auth.foo/token", + "client_id": "provider-bar-id", + "user_consent_needed": True, + "user_consent_form_xpath": "//form[@id='form-user-consent']", + "user_consent_form_data": { + "const_key": "const_value", + "xpath_key": 'xpath(//input[@name="input_name"]/@value)', + }, + "token_exchange_post_data_method": "data", + "token_key": "access_token", + "token_provision": "header", + "login_form_xpath": "//form[@id='form-login']", + "authentication_uri_source": "login-form", + }, + }, + "provider_client_sercret": { + "products": {"foo_product": {}}, + "auth": { + "type": "OIDCAuthorizationCodeFlowAuth", + "authorization_uri": "http://auth.foo/authorization", + "redirect_uri": "http://provider.bar/redirect", + "token_uri": "http://auth.foo/token", + "client_id": "provider-bar-id", + "client_secret": "this-is-the-secret", + "user_consent_needed": False, + "token_exchange_post_data_method": "data", + "token_key": "access_token", + "token_provision": "header", + "login_form_xpath": "//form[@id='form-login']", + "authentication_uri_source": "login-form", + }, + }, + "provider_token_qs_key": { + "products": {"foo_product": {}}, + "auth": { + "type": "OIDCAuthorizationCodeFlowAuth", + "authorization_uri": "http://auth.foo/authorization", + "redirect_uri": "http://provider.bar/redirect", + "token_uri": "http://auth.foo/token", + "client_id": "provider-bar-id", + "user_consent_needed": False, + "token_exchange_post_data_method": "data", + "token_key": "access_token", + "token_provision": "qs", + "token_qs_key": "totoken", + "login_form_xpath": "//form[@id='form-login']", + "authentication_uri_source": "login-form", + }, + }, + "provider_token_exchange_params": { + "products": {"foo_product": {}}, + "auth": { + "type": "OIDCAuthorizationCodeFlowAuth", + "authorization_uri": "http://auth.foo/authorization", + "redirect_uri": "http://provider.bar/redirect", + "token_uri": "http://auth.foo/token", + "client_id": "provider-bar-id", + "user_consent_needed": False, + "token_exchange_post_data_method": "data", + "token_exchange_params": { + "redirect_uri": "new_redirect_uri", + "client_id": "new_client_id", + }, + "token_key": "access_token", + "token_provision": "header", + "login_form_xpath": "//form[@id='form-login']", + "authentication_uri_source": "login-form", + }, + }, + "provider_ok": { + "products": {"foo_product": {}}, + "auth": { + "type": "OIDCAuthorizationCodeFlowAuth", + "authorization_uri": "http://auth.foo/authorization", + "redirect_uri": "http://provider.bar/redirect", + "token_uri": "http://auth.foo/token", + "client_id": "provider-bar-id", + "user_consent_needed": False, + "token_exchange_post_data_method": "data", + "token_key": "access_token", + "token_provision": "header", + "login_form_xpath": "//form[@id='form-login']", + "authentication_uri_source": "login-form", + "additional_login_form_data": { + "const_key": "const_value", + "xpath_key": 'xpath(//input[@name="input_name"]/@value)', + }, + "exchange_url_error_pattern": { + "TERMS_AND_CONDITIONS": "Terms and conditions are not accepted" + }, + }, + }, + }, + ) + cls.plugins_manager = PluginManager(cls.providers_config) + + def get_auth_plugin(self, provider): + auth_plugin = super( + TestAuthPluginOIDCAuthorizationCodeFlowAuth, self + ).get_auth_plugin(provider) + # reset token info + auth_plugin.token_info = {} + return auth_plugin + + def test_plugins_auth_codeflowauth_validate_credentials(self): + """OIDCAuthorizationCodeFlowAuth.validate_credentials must raise an error if credentials are not valid""" + # `token_provision` not valid + auth_plugin = self.get_auth_plugin("provider_token_provision_invalid") + auth_plugin.config.credentials = {"foo": "bar"} + with self.assertRaises(MisconfiguredError) as context: + auth_plugin.validate_config_credentials() + self.assertTrue( + '"token_provision" must be one of "qs" or "header"' + in str(context.exception) + ) + # `token_provision=="qs"` but `token_qs_key` is missing + auth_plugin = self.get_auth_plugin("provider_token_qs_key_missing") + auth_plugin.config.credentials = {"foo": "bar"} + with self.assertRaises(MisconfiguredError) as context: + auth_plugin.validate_config_credentials() + self.assertTrue( + '"qs" must have "token_qs_key" config parameter as well' + in str(context.exception) + ) + # Missing credentials + auth_plugin = self.get_auth_plugin("provider_ok") + with self.assertRaises(MisconfiguredError) as context: + auth_plugin.validate_config_credentials() + self.assertTrue("Missing credentials" in str(context.exception)) + + def test_plugins_auth_codeflowauth_validate_credentials_ok(self): + """OIDCAuthorizationCodeFlowAuth.validate_credentials must be ok on non-empty credentials""" + auth_plugin = self.get_auth_plugin("provider_ok") + + auth_plugin.config.credentials = {"foo": "bar"} + auth_plugin.validate_config_credentials() + + @mock.patch( + "eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth._get_token_with_refresh_token", + autospec=True, + ) + @mock.patch( + "eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth._request_new_token", + autospec=True, + ) + def test_plugins_auth_codeflowauth_authenticate_ok( + self, + mock_request_new_token, + mock_get_token_with_refresh_token, + ): + """OIDCAuthorizationCodeFlowAuth.authenticate must check if the token is expired, call the correct + function to get a new one and update the access token""" + auth_plugin = self.get_auth_plugin("provider_ok") + current_time = datetime.now() + json_response = { + "access_token": "obtained-access-token", + "expires_in": "3600", + "refresh_expires_in": "7200", + "refresh_token": "obtained-refresh-token", + } + mock_request_new_token.return_value = json_response + mock_get_token_with_refresh_token.return_value = json_response + + def _authenticate( + called_once: mock.Mock, not_called: mock.Mock, access_token: str + ) -> None: + auth = auth_plugin.authenticate() + called_once.assert_called_once() + not_called.assert_not_called() + self.assertEqual(auth.token, access_token) + called_once.reset_mock() + not_called.reset_mock() + + # No info: first time -> new auth + _authenticate( + mock_request_new_token, + mock_get_token_with_refresh_token, + json_response["access_token"], + ) + # Check internal `token_info`` stores the new data + self.assertEqual( + auth_plugin.token_info["refresh_token"], + json_response["refresh_token"], + ) + self.assertIsNotNone(auth_plugin.token_info["refresh_time"]) + self.assertEqual( + auth_plugin.token_info["access_token"], + json_response["access_token"], + ) + self.assertIsNotNone(auth_plugin.token_info["token_time"]) + self.assertEqual( + auth_plugin.token_info["access_token_expiration"], + float(json_response["expires_in"]), + ) + self.assertEqual( + auth_plugin.token_info["refresh_token_expiration"], + float(json_response["refresh_expires_in"]), + ) + + # Refresh token available but expired -> new auth + auth_plugin.token_info = { + "refresh_token": "old-refresh-token", + "refresh_time": current_time - timedelta(hours=3), + "access_token": "old-access-token", + "token_time": current_time - timedelta(hours=3), + "access_token_expiration": 3600, + "refresh_token_expiration": 7200, + } + _authenticate( + mock_request_new_token, + mock_get_token_with_refresh_token, + json_response["access_token"], + ) + + # Refresh token *not* available and access token expired - new auth + auth_plugin.token_info = { + "access_token": "old-access-token", + "token_time": current_time - timedelta(hours=3), + "access_token_expiration": 3600, + } + _authenticate( + mock_request_new_token, + mock_get_token_with_refresh_token, + json_response["access_token"], + ) + + # Refresh token available and access token expired -> refresh + auth_plugin.token_info = { + "refresh_token": "old-refresh-token", + "refresh_time": current_time - timedelta(seconds=4000), + "access_token": "old-access-token", + "token_time": current_time - timedelta(seconds=4000), + "access_token_expiration": 3600, + "refresh_token_expiration": 7200, + } + _authenticate( + mock_get_token_with_refresh_token, + mock_request_new_token, + json_response["access_token"], + ) + + # Access token not expired -> use already retrieved token + auth_plugin.token_info = { + "refresh_token": "old-refresh-token", + "refresh_time": current_time - timedelta(seconds=1800), + "access_token": "old-access-token", + "token_time": current_time - timedelta(seconds=1800), + "access_token_expiration": 3600, + "refresh_token_expiration": 7200, + } + auth = auth_plugin.authenticate() + mock_request_new_token.assert_not_called() + mock_get_token_with_refresh_token.assert_not_called() + self.assertEqual(auth.token, auth_plugin.token_info["access_token"]) + + @mock.patch( + "eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth.compute_state", + autospec=True, + ) + @mock.patch( + "eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth.exchange_code_for_token", + autospec=True, + ) + @mock.patch( + "eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth.authenticate_user", + autospec=True, + ) + def test_plugins_auth_codeflowauth_authenticate_token_qs_key_ok( + self, + mock_authenticate_user, + mock_exchange_code_for_token, + mock_compute_state, + ): + """OIDCAuthorizationCodeFlowAuth.authenticate must return a CodeAuthorizedAuth object with a `key` + if `token_provision=="qs"`""" + auth_plugin = self.get_auth_plugin("provider_token_qs_key") + state = "1234567890123456789012" + exchange_url = auth_plugin.config.redirect_uri + json_response = { + "access_token": "obtained-access-token", + "expires_in": "3600", + "refresh_expires_in": "0", + "refresh_token": "obtained-refresh-token", + } + mock_authenticate_user.return_value = mock.Mock(url=exchange_url) + mock_compute_state.return_value = state + mock_exchange_code_for_token.return_value = MockResponse(json_response, 200) + + auth = auth_plugin.authenticate() + + mock_authenticate_user.assert_called_once_with(auth_plugin, state) + mock_exchange_code_for_token.assert_called_once_with( + auth_plugin, exchange_url, state + ) + self.assertIsInstance(auth, CodeAuthorizedAuth) + self.assertEqual(auth.token, json_response["access_token"]) + self.assertEqual(auth.where, "qs") + self.assertEqual(auth.key, auth_plugin.config.token_qs_key) + + @mock.patch( + "eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth.authenticate_user", + autospec=True, + return_value=mock.Mock(url="http://foo.bar"), + ) + def test_plugins_auth_codeflowauth_request_new_token_no_redirect( + self, + mock_authenticate_user, + ): + """OIDCAuthorizationCodeFlowAuth.request_new_token must raise and error if the provider doesn't redirect + to `redirect_uri`""" + auth_plugin = self.get_auth_plugin("provider_ok") + self.assertRaises( + AuthenticationError, + auth_plugin._request_new_token, + ) + + @mock.patch( + "eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth.compute_state", + autospec=True, + ) + @mock.patch( + "eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth.exchange_code_for_token", + autospec=True, + ) + @mock.patch( + "eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth.authenticate_user", + autospec=True, + ) + def test_plugins_auth_codeflowauth_request_new_token_ok( + self, + mock_authenticate_user, + mock_exchange_code_for_token, + mock_compute_state, + ): + """OIDCAuthorizationCodeFlowAuth.request_new_token must return the JSON response from the auth server""" + auth_plugin = self.get_auth_plugin("provider_ok") + state = "1234567890123456789012" + exchange_url = auth_plugin.config.redirect_uri + json_response = { + "access_token": "obtained-access-token", + "expires_in": "3600", + "refresh_expires_in": "0", + "refresh_token": "obtained-refresh-token", + } + mock_authenticate_user.return_value = mock.Mock(url=exchange_url) + mock_compute_state.return_value = state + mock_exchange_code_for_token.return_value.json.return_value = json_response + + resp = auth_plugin._request_new_token() + + mock_authenticate_user.assert_called_once_with(auth_plugin, state) + mock_exchange_code_for_token.assert_called_once_with( + auth_plugin, exchange_url, state + ) + # Check returned value is the server's JSON response + self.assertEqual(resp, json_response) + + @mock.patch( + "eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth.grant_user_consent", + autospec=True, + ) + @mock.patch( + "eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth.compute_state", + autospec=True, + ) + @mock.patch( + "eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth.exchange_code_for_token", + autospec=True, + ) + @mock.patch( + "eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth.authenticate_user", + autospec=True, + ) + def test_plugins_auth_codeflowauth_request_new_token_user_consent_needed_ok( + self, + mock_authenticate_user, + mock_exchange_code_for_token, + mock_compute_state, + mock_grant_user_consent, + ): + """OIDCAuthorizationCodeFlowAuth.request_new_token must call `grant_user_consent` + if `user_consent_needed==True`""" + auth_plugin = self.get_auth_plugin("provider_user_consent") + state = "1234567890123456789012" + exchange_url = auth_plugin.config.redirect_uri + json_response = { + "access_token": "obtained-access-token", + "expires_in": "3600", + "refresh_expires_in": "0", + "refresh_token": "obtained-refresh-token", + } + mock_authenticate_user.return_value = mock.Mock( + url=auth_plugin.config.redirect_uri + "/user_consent" + ) + mock_compute_state.return_value = state + mock_exchange_code_for_token.return_value = MockResponse(json_response, 200) + mock_grant_user_consent.return_value = mock.Mock(url=exchange_url) + + resp = auth_plugin._request_new_token() + + mock_authenticate_user.assert_called_once_with(auth_plugin, state) + mock_grant_user_consent.assert_called_once_with( + auth_plugin, + mock_authenticate_user.return_value, + ) + mock_exchange_code_for_token.assert_called_once_with( + auth_plugin, exchange_url, state + ) + self.assertEqual(resp, json_response) + + @mock.patch( + "eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth.authenticate_user", + autospec=True, + return_value=mock.Mock( + url="http://auth.foo/error?err_code=TERMS_AND_CONDITIONS" + ), + ) + def test_plugins_auth_codeflowauth_request_new_token_exchange_url_error_pattern( + self, + mock_authenticate_user, + ): + """OIDCAuthorizationCodeFlowAuth.request_new_token must raise an error if the exchange URL matches the + patter `exchange_url_error_pattern`""" + auth_plugin = self.get_auth_plugin("provider_ok") + with self.assertRaises(AuthenticationError) as context: + auth_plugin._request_new_token() + self.assertEqual( + "Terms and conditions are not accepted", str(context.exception) + ) + + @mock.patch( + "eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth._request_new_token", + autospec=True, + ) + @mock.patch( + "eodag.plugins.authentication.openid_connect.requests.Session.post", + autospec=True, + ) + def test_plugins_auth_codeflowauth_get_token_with_refresh_token_ok( + self, + mock_requests_post, + mock_request_new_token, + ): + """OIDCAuthorizationCodeFlowAuth.get_token_with_refresh_token must call the token URI with a token refresh + request and return the JSON response""" + auth_plugin = self.get_auth_plugin("provider_ok") + auth_plugin.token_info = {"refresh_token": "old-refresh-token"} + token_data = auth_plugin._prepare_token_post_data( + { + "refresh_token": auth_plugin.token_info["refresh_token"], + "grant_type": "refresh_token", + } + ) + json_response = { + "access_token": "obtained-access-token", + "expires_in": "3600", + "refresh_expires_in": "0", + "refresh_token": "obtained-refresh-token", + } + mock_requests_post.return_value = MockResponse(json_response, 200) + + resp = auth_plugin._get_token_with_refresh_token() + post_request_kwargs = { + auth_plugin.config.token_exchange_post_data_method: token_data + } + mock_requests_post.assert_called_once_with( + mock.ANY, + auth_plugin.config.token_uri, + timeout=HTTP_REQ_TIMEOUT, + **post_request_kwargs, + ) + mock_request_new_token.assert_not_called() + self.assertEqual(resp, json_response) + + @mock.patch( + "eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth._request_new_token", + autospec=True, + ) + @mock.patch( + "eodag.plugins.authentication.openid_connect.requests.Session.post", + autospec=True, + ) + def test_plugins_auth_codeflowauth_get_token_with_refresh_token_http_exception( + self, + mock_requests_post, + mock_request_new_token, + ): + """OIDCAuthorizationCodeFlowAuth.get_token_with_refresh_token must call `request_new_token()` if the POST + request raise and exception other than time out""" + auth_plugin = self.get_auth_plugin("provider_ok") + auth_plugin.token_info = {"refresh_token": "old-refresh-token"} + mock_requests_post.return_value = MockResponse({"err": "message"}, 500) + + auth_plugin._get_token_with_refresh_token() + mock_request_new_token.assert_called_once() + + @mock.patch( + "eodag.plugins.authentication.token.requests.Session.post", autospec=True + ) + def test_plugins_auth_codeflowauth_grant_user_consent( + self, + mock_requests_post, + ): + """OIDCAuthorizationCodeFlowAuth.grant_user_consent must read the data from the config or from the consent + form""" + auth_plugin = self.get_auth_plugin("provider_user_consent") + authentication_response = mock.Mock() + authentication_response.text = """ + + + + + + + """ + + auth_plugin.grant_user_consent(authentication_response) + mock_requests_post.assert_called_once_with( + mock.ANY, + auth_plugin.config.authorization_uri, + data={"const_key": "const_value", "xpath_key": "additional value"}, + headers=USER_AGENT, + timeout=HTTP_REQ_TIMEOUT, + ) + + @mock.patch( + "eodag.plugins.authentication.openid_connect.requests.Session.get", + autospec=True, + ) + def test_plugins_auth_codeflowauth_authenticate_user_no_action( + self, + mock_requests_get, + ): + """OIDCAuthorizationCodeFlowAuth.authenticate_user raise an error if the authentication URI is not available. + + The configuration of the plugin used in this test instructs to retrieve the authentication URI + from the login form of the authorization server.""" + auth_plugin = self.get_auth_plugin("provider_ok") + auth_plugin.config.credentials = {"foo": "bar"} + + # Mock get request to the authorization URI (no action attribute in the form) + mock_requests_get.return_value = mock.Mock() + mock_requests_get.return_value.text = """ + + + +
    + + + +
    + + + """ + state = "1234567890123456789012" + self.assertRaises( + RequestError, + auth_plugin.authenticate_user, + state, + ) + + # First and only request: get the authorization URI + mock_requests_get.assert_called_once_with( + mock.ANY, + auth_plugin.config.authorization_uri, + params={ + "client_id": auth_plugin.config.client_id, + "response_type": auth_plugin.RESPONSE_TYPE, + "scope": auth_plugin.SCOPE, + "state": state, + "redirect_uri": auth_plugin.config.redirect_uri, + }, + headers=USER_AGENT, + timeout=HTTP_REQ_TIMEOUT, + ) + + @mock.patch( + "eodag.plugins.authentication.openid_connect.requests.Session.get", + autospec=True, + ) + def test_plugins_auth_codeflowauth_authenticate_user_no_authentication_uri( + self, + mock_requests_get, + ): + """OIDCAuthorizationCodeFlowAuth.authenticate_user raise an error if the authentication URI is not available. + + In this test the authentication URI is in the plugin configuration.""" + auth_plugin = self.get_auth_plugin("provider_authentication_uri_missing") + auth_plugin.config.credentials = {"foo": "bar"} + + # Mock get request to the authorization URI (no action attribute in the form) + mock_requests_get.return_value = mock.Mock() + mock_requests_get.return_value.text = """ + + + +
    + + + +
    + + + """ + state = "1234567890123456789012" + self.assertRaises( + MisconfiguredError, + auth_plugin.authenticate_user, + state, + ) + + # First and only request: get the authorization URI + mock_requests_get.assert_called_once_with( + mock.ANY, + auth_plugin.config.authorization_uri, + params={ + "client_id": auth_plugin.config.client_id, + "response_type": auth_plugin.RESPONSE_TYPE, + "scope": auth_plugin.SCOPE, + "state": state, + "redirect_uri": auth_plugin.config.redirect_uri, + }, + headers=USER_AGENT, + timeout=HTTP_REQ_TIMEOUT, + ) + + @mock.patch( + "eodag.plugins.authentication.openid_connect.requests.Session.post", + autospec=True, + ) + @mock.patch( + "eodag.plugins.authentication.openid_connect.requests.Session.get", + autospec=True, + ) + def test_plugins_auth_codeflowauth_authenticate_user_ok( + self, + mock_requests_get, + mock_requests_post, + ): + """OIDCAuthorizationCodeFlowAuth.authenticate_user must pass the credentials to the the authentication URI""" + auth_plugin = self.get_auth_plugin("provider_ok") + auth_plugin.config.credentials = {"foo": "bar"} + + # Mock get request to the authorization URI + mock_requests_get.return_value = mock.Mock() + mock_requests_get.return_value.text = """ + + + +
    + + + + +
    + + + """ + mock_requests_post.return_value = mock.Mock() + state = "1234567890123456789012" + auth_response = auth_plugin.authenticate_user(state) + + # First request: get the authorization URI + mock_requests_get.assert_called_once_with( + mock.ANY, + auth_plugin.config.authorization_uri, + params={ + "client_id": auth_plugin.config.client_id, + "response_type": auth_plugin.RESPONSE_TYPE, + "scope": auth_plugin.SCOPE, + "state": state, + "redirect_uri": auth_plugin.config.redirect_uri, + }, + headers=USER_AGENT, + timeout=HTTP_REQ_TIMEOUT, + ) + # Second request: post to the authentication URI + mock_requests_post.assert_called_once_with( + mock.ANY, + "http://auth.foo/authentication", + data={ + "foo": "bar", + "const_key": "const_value", + "xpath_key": "additional value", + }, + headers=USER_AGENT, + timeout=HTTP_REQ_TIMEOUT, + ) + # authenticate_user returns the authentication response + self.assertEqual(mock_requests_post.return_value, auth_response) + + def test_plugins_auth_codeflowauth_exchange_code_for_token_state_mismatch( + self, + ): + """OIDCAuthorizationCodeFlowAuth.exchange_code_for_token must raise an error if the returned state is + mismatched""" + auth_plugin = self.get_auth_plugin("provider_ok") + auth_plugin.config.credentials = {"foo": "bar"} + + state = "1234567890123456789012" + authorized_url = f"{auth_plugin.config.redirect_uri}?state=mismatch" + self.assertRaises( + AuthenticationError, + auth_plugin.exchange_code_for_token, + authorized_url, + state, + ) + + @mock.patch( + "eodag.plugins.authentication.token.requests.Session.post", autospec=True + ) + def test_plugins_auth_codeflowauth_exchange_code_for_token_ok( + self, + mock_requests_post, + ): + """OIDCAuthorizationCodeFlowAuth.exchange_code_for_token must post to the `token_uri` the authorization code + and the state""" + auth_plugin = self.get_auth_plugin("provider_ok") + mock_requests_post.return_value = mock.Mock() + json_response = { + "access_token": "obtained-access-token", + "expires_in": "3600", + "refresh_expires_in": "0", + "refresh_token": "obtained-refresh-token", + } + mock_requests_post.return_value = MockResponse(json_response, 200) + state = "1234567890123456789012" + auth_code = "code_abcde" + authorized_url = ( + f"{auth_plugin.config.redirect_uri}?state={state}&code={auth_code}" + ) + auth_plugin.config.credentials = {"foo": "bar"} + + response = auth_plugin.exchange_code_for_token(authorized_url, state) + self.assertEqual(response.json()["access_token"], json_response["access_token"]) + mock_requests_post.assert_called_once_with( + mock.ANY, + auth_plugin.config.token_uri, + headers=USER_AGENT, + timeout=HTTP_REQ_TIMEOUT, + data={ + "redirect_uri": auth_plugin.config.redirect_uri, + "client_id": auth_plugin.config.client_id, + "code": auth_code, + "state": state, + "grant_type": "authorization_code", + }, + ) + + @mock.patch( + "eodag.plugins.authentication.token.requests.Session.post", autospec=True + ) + def test_plugins_auth_codeflowauth_exchange_code_for_token_client_secret_ok( + self, + mock_requests_post, + ): + """OIDCAuthorizationCodeFlowAuth.exchange_code_for_token must authenticated with a BASIC Auth if the + `client_secret` is known""" + auth_plugin = self.get_auth_plugin("provider_client_sercret") + mock_requests_post.return_value = mock.Mock() + json_response = { + "access_token": "obtained-access-token", + "expires_in": "3600", + "refresh_expires_in": "0", + "refresh_token": "obtained-refresh-token", + } + mock_requests_post.return_value = MockResponse(json_response, 200) + state = "1234567890123456789012" + auth_code = "code_abcde" + authorized_url = ( + f"{auth_plugin.config.redirect_uri}?state={state}&code={auth_code}" + ) + auth_plugin.config.credentials = {"foo": "bar"} + + response = auth_plugin.exchange_code_for_token(authorized_url, state) + self.assertEqual(response.json()["access_token"], json_response["access_token"]) + mock_requests_post.assert_called_once_with( + mock.ANY, + auth_plugin.config.token_uri, + headers=USER_AGENT, + timeout=HTTP_REQ_TIMEOUT, + data={ + "redirect_uri": auth_plugin.config.redirect_uri, + "client_id": auth_plugin.config.client_id, + "auth": ( + auth_plugin.config.client_id, + auth_plugin.config.client_secret, + ), + "client_secret": auth_plugin.config.client_secret, + "code": auth_code, + "state": state, + "grant_type": "authorization_code", + }, + ) + + @mock.patch( + "eodag.plugins.authentication.token.requests.Session.post", autospec=True + ) + def test_plugins_auth_codeflowauth_exchange_code_for_token_exchange_params_ok( + self, + mock_requests_post, + ): + """OIDCAuthorizationCodeFlowAuth.exchange_code_for_token must update the POST params if necessary""" + auth_plugin = self.get_auth_plugin("provider_token_exchange_params") + + mock_requests_post.return_value = mock.Mock() + json_response = { + "access_token": "obtained-access-token", + "expires_in": "3600", + "refresh_expires_in": "0", + "refresh_token": "obtained-refresh-token", + } + mock_requests_post.return_value = MockResponse(json_response, 200) + state = "1234567890123456789012" + auth_code = "code_abcde" + authorized_url = ( + f"{auth_plugin.config.redirect_uri}?state={state}&code={auth_code}" + ) + auth_plugin.config.credentials = {"foo": "bar"} + + response = auth_plugin.exchange_code_for_token(authorized_url, state) + self.assertEqual(response.json()["access_token"], json_response["access_token"]) + mock_requests_post.assert_called_once_with( + mock.ANY, + auth_plugin.config.token_uri, + headers=USER_AGENT, + timeout=HTTP_REQ_TIMEOUT, + data={ + auth_plugin.config.token_exchange_params[ + "redirect_uri" + ]: auth_plugin.config.redirect_uri, + auth_plugin.config.token_exchange_params[ + "client_id" + ]: auth_plugin.config.client_id, + "code": auth_code, + "state": state, + "grant_type": "authorization_code", + }, + ) diff --git a/tests/units/test_core.py b/tests/units/test_core.py index e083a27bc..cf4c8f842 100644 --- a/tests/units/test_core.py +++ b/tests/units/test_core.py @@ -27,8 +27,9 @@ import uuid from pathlib import Path from tempfile import TemporaryDirectory +from unittest.mock import Mock -from pkg_resources import resource_filename +from pkg_resources import DistributionNotFound, resource_filename from shapely import wkt from shapely.geometry import LineString, MultiPolygon, Polygon @@ -90,19 +91,20 @@ def tearDownClass(cls): class TestCore(TestCoreBase): SUPPORTED_PRODUCT_TYPES = { - "CAMS_GAC_FORECAST": ["cop_ads"], - "CAMS_EU_AIR_QUALITY_FORECAST": ["cop_ads"], - "CAMS_GFE_GFAS": ["cop_ads"], - "CAMS_GRF": ["cop_ads"], - "CAMS_GRF_AUX": ["cop_ads"], - "CAMS_SOLAR_RADIATION": ["cop_ads"], - "CAMS_GREENHOUSE_EGG4_MONTHLY": ["cop_ads"], - "CAMS_GREENHOUSE_EGG4": ["cop_ads"], - "CAMS_GREENHOUSE_INVERSION": ["cop_ads"], - "CAMS_GLOBAL_EMISSIONS": ["cop_ads"], - "CAMS_EAC4": ["cop_ads"], - "CAMS_EAC4_MONTHLY": ["cop_ads"], - "CAMS_EU_AIR_QUALITY_RE": ["cop_ads"], + "AG_ERA5": ["cop_cds", "wekeo"], + "CAMS_GAC_FORECAST": ["cop_ads", "dedl", "wekeo"], + "CAMS_EU_AIR_QUALITY_FORECAST": ["cop_ads", "dedl", "wekeo"], + "CAMS_GFE_GFAS": ["cop_ads", "dedl"], + "CAMS_GRF": ["cop_ads", "dedl", "wekeo"], + "CAMS_GRF_AUX": ["cop_ads", "dedl", "wekeo"], + "CAMS_SOLAR_RADIATION": ["cop_ads", "dedl", "wekeo"], + "CAMS_GREENHOUSE_EGG4_MONTHLY": ["cop_ads", "dedl", "wekeo"], + "CAMS_GREENHOUSE_EGG4": ["cop_ads", "dedl", "wekeo"], + "CAMS_GREENHOUSE_INVERSION": ["cop_ads", "dedl", "wekeo"], + "CAMS_GLOBAL_EMISSIONS": ["cop_ads", "dedl", "wekeo"], + "CAMS_EAC4": ["cop_ads", "dedl", "wekeo"], + "CAMS_EAC4_MONTHLY": ["cop_ads", "dedl", "wekeo"], + "CAMS_EU_AIR_QUALITY_RE": ["cop_ads", "dedl", "wekeo"], "CBERS4_AWFI_L2": ["aws_eos"], "CBERS4_AWFI_L4": ["aws_eos"], "CBERS4_MUX_L2": ["aws_eos"], @@ -111,50 +113,63 @@ class TestCore(TestCoreBase): "CBERS4_PAN10M_L4": ["aws_eos"], "CBERS4_PAN5M_L2": ["aws_eos"], "CBERS4_PAN5M_L4": ["aws_eos"], - "CLMS_CORINE": ["wekeo"], - "CLMS_GLO_DMP_333M": ["wekeo"], - "CLMS_GLO_FAPAR_333M": ["wekeo"], - "CLMS_GLO_FCOVER_333M": ["wekeo"], - "CLMS_GLO_GDMP_333M": ["wekeo"], - "CLMS_GLO_LAI_333M": ["wekeo"], - "CLMS_GLO_NDVI_1KM_LTS": ["wekeo"], - "CLMS_GLO_NDVI_333M": ["wekeo"], - "COP_DEM_GLO30_DGED": ["creodias", "creodias_s3", "earth_search", "wekeo"], - "COP_DEM_GLO30_DTED": ["creodias", "creodias_s3"], - "COP_DEM_GLO90_DGED": ["creodias", "creodias_s3", "earth_search", "wekeo"], - "COP_DEM_GLO90_DTED": ["creodias", "creodias_s3"], - "EEA_DAILY_SSM_1KM": ["wekeo"], - "EEA_DAILY_SWI_1KM": ["wekeo"], - "EEA_DAILY_VI": ["wekeo"], - "EFAS_FORECAST": ["cop_cds", "wekeo"], - "EFAS_HISTORICAL": ["cop_cds", "wekeo"], - "EFAS_REFORECAST": ["cop_cds", "wekeo"], - "EFAS_SEASONAL": ["cop_cds", "wekeo"], - "EFAS_SEASONAL_REFORECAST": ["cop_cds", "wekeo"], - "ERA5_LAND": ["cop_cds", "wekeo"], - "ERA5_LAND_MONTHLY": ["cop_cds", "wekeo"], - "ERA5_PL": ["cop_cds", "wekeo"], - "ERA5_PL_MONTHLY": ["cop_cds", "wekeo"], - "ERA5_SL": ["cop_cds", "wekeo"], - "ERA5_SL_MONTHLY": ["cop_cds", "wekeo"], - "FIRE_HISTORICAL": ["cop_cds", "wekeo"], - "GLACIERS_DIST_RANDOLPH": ["cop_cds", "wekeo"], - "GLACIERS_ELEVATION_AND_MASS_CHANGE": ["wekeo"], - "GLOFAS_FORECAST": ["cop_cds", "wekeo"], - "GLOFAS_HISTORICAL": ["cop_cds", "wekeo"], - "GLOFAS_REFORECAST": ["cop_cds", "wekeo"], - "GLOFAS_SEASONAL": ["cop_cds", "wekeo"], - "GLOFAS_SEASONAL_REFORECAST": ["cop_cds", "wekeo"], + "CLMS_CORINE": ["dedl", "wekeo"], + "CLMS_GLO_DMP_333M": ["dedl", "wekeo"], + "CLMS_GLO_FAPAR_333M": ["dedl", "wekeo"], + "CLMS_GLO_FCOVER_333M": ["dedl", "wekeo"], + "CLMS_GLO_GDMP_333M": ["dedl", "wekeo"], + "CLMS_GLO_LAI_333M": ["dedl", "wekeo"], + "CLMS_GLO_NDVI_1KM_LTS": ["dedl", "wekeo"], + "CLMS_GLO_NDVI_333M": ["dedl", "wekeo"], + "COP_DEM_GLO30_DGED": [ + "creodias", + "creodias_s3", + "dedl", + "earth_search", + "wekeo", + ], + "COP_DEM_GLO30_DTED": ["creodias", "creodias_s3", "dedl", "wekeo"], + "COP_DEM_GLO90_DGED": [ + "creodias", + "creodias_s3", + "dedl", + "earth_search", + "wekeo", + ], + "COP_DEM_GLO90_DTED": ["creodias", "creodias_s3", "dedl", "wekeo"], + "DT_EXTREMES": ["dedl", "dedt_lumi"], + "DT_CLIMATE_ADAPTATION": ["dedl", "dedt_lumi"], + "EEA_DAILY_VI": ["dedl", "wekeo"], + "EFAS_FORECAST": ["cop_cds", "dedl", "wekeo"], + "EFAS_HISTORICAL": ["cop_cds", "dedl", "wekeo"], + "EFAS_REFORECAST": ["cop_cds", "dedl", "wekeo"], + "EFAS_SEASONAL": ["cop_cds", "dedl", "wekeo"], + "EFAS_SEASONAL_REFORECAST": ["cop_cds", "dedl", "wekeo"], + "ERA5_LAND": ["cop_cds", "dedl", "wekeo"], + "ERA5_LAND_MONTHLY": ["cop_cds", "dedl", "wekeo"], + "ERA5_PL": ["cop_cds", "dedl", "wekeo"], + "ERA5_PL_MONTHLY": ["cop_cds", "dedl", "wekeo"], + "ERA5_SL": ["cop_cds", "dedl", "wekeo"], + "ERA5_SL_MONTHLY": ["cop_cds", "dedl", "wekeo"], + "FIRE_HISTORICAL": ["cop_cds", "dedl", "wekeo"], + "GLACIERS_DIST_RANDOLPH": ["cop_cds", "dedl", "wekeo"], + "GLOFAS_FORECAST": ["cop_cds", "dedl", "wekeo"], + "GLOFAS_HISTORICAL": ["cop_cds", "dedl", "wekeo"], + "GLOFAS_REFORECAST": ["cop_cds", "dedl", "wekeo"], + "GLOFAS_SEASONAL": ["cop_cds", "dedl", "wekeo"], + "GLOFAS_SEASONAL_REFORECAST": ["cop_cds", "dedl", "wekeo"], + "GRIDDED_GLACIERS_MASS_CHANGE": ["dedl", "wekeo"], "L57_REFLECTANCE": ["theia"], "L8_OLI_TIRS_C1L1": ["aws_eos", "earth_search_gcs", "onda"], "L8_REFLECTANCE": ["theia"], "LANDSAT_C2L1": [ "astraea_eod", + "dedl", "planetary_computer", "usgs", "usgs_satapi_aws", ], - "LANDSAT_C2L2": ["usgs", "planetary_computer", "earth_search"], + "LANDSAT_C2L2": ["dedl", "earth_search", "planetary_computer", "usgs"], "LANDSAT_C2L2ALB_BT": ["usgs_satapi_aws"], "LANDSAT_C2L2ALB_SR": ["usgs_satapi_aws"], "LANDSAT_C2L2ALB_ST": ["usgs_satapi_aws"], @@ -167,8 +182,70 @@ class TestCore(TestCoreBase): "LANDSAT_TM_C1": ["usgs"], "LANDSAT_TM_C2L1": ["usgs"], "LANDSAT_TM_C2L2": ["usgs"], + "METOP_AMSU_L1": ["eumetsat_ds"], + "METOP_ASCSZF1B": ["eumetsat_ds"], + "METOP_ASCSZFR02": ["eumetsat_ds"], + "METOP_ASCSZO1B": ["eumetsat_ds"], + "METOP_ASCSZOR02": ["eumetsat_ds"], + "METOP_ASCSZR1B": ["eumetsat_ds"], + "METOP_ASCSZRR02": ["eumetsat_ds"], + "METOP_AVHRRL1": ["eumetsat_ds"], + "METOP_AVHRRGACR02": ["eumetsat_ds"], + "METOP_GLB_SST_NC": ["eumetsat_ds"], + "METOP_GOMEL1": ["eumetsat_ds"], + "METOP_GOMEL1R03": ["eumetsat_ds"], + "METOP_HIRSL1": ["eumetsat_ds"], + "METOP_IASTHR011": ["eumetsat_ds"], + "METOP_IASSND02": ["eumetsat_ds"], + "METOP_IASIL1C_ALL": ["eumetsat_ds"], + "METOP_LSA_002": ["eumetsat_ds"], + "METOP_MHSL1": ["eumetsat_ds"], + "METOP_OSI_104": ["eumetsat_ds"], + "METOP_OSI_150A": ["eumetsat_ds"], + "METOP_OSI_150B": ["eumetsat_ds"], + "METOP_SOMO12": ["eumetsat_ds"], + "METOP_SOMO25": ["eumetsat_ds"], "MODIS_MCD43A4": ["astraea_eod", "aws_eos", "planetary_computer"], - "NAIP": ["astraea_eod", "aws_eos", "planetary_computer", "earth_search"], + "MO_GLOBAL_ANALYSISFORECAST_PHY_001_024": ["cop_marine"], + "MO_GLOBAL_ANALYSISFORECAST_BGC_001_028": ["cop_marine"], + "MO_GLOBAL_ANALYSISFORECAST_WAV_001_027": ["cop_marine"], + "MO_GLOBAL_MULTIYEAR_BGC_001_033": ["cop_marine"], + "MO_GLOBAL_MULTIYEAR_WAV_001_032": ["cop_marine"], + "MO_GLOBAL_MULTIYEAR_PHY_ENS_001_031": ["cop_marine"], + "MO_INSITU_GLO_PHY_UV_DISCRETE_NRT_013_048": ["cop_marine"], + "MO_INSITU_GLO_PHY_TS_OA_NRT_013_002": ["cop_marine"], + "MO_INSITU_GLO_PHY_TS_OA_MY_013_052": ["cop_marine"], + "MO_MULTIOBS_GLO_BIO_BGC_3D_REP_015_010": ["cop_marine"], + "MO_MULTIOBS_GLO_BIO_CARBON_SURFACE_REP_015_008": ["cop_marine"], + "MO_MULTIOBS_GLO_BGC_NUTRIENTS_CARBON_PROFILES_MYNRT_015_009": ["cop_marine"], + "MO_MULTIOBS_GLO_PHY_MYNRT_015_003": ["cop_marine"], + "MO_MULTIOBS_GLO_PHY_S_SURFACE_MYNRT_015_013": ["cop_marine"], + "MO_MULTIOBS_GLO_PHY_TSUV_3D_MYNRT_015_012": ["cop_marine"], + "MO_MULTIOBS_GLO_PHY_W_3D_REP_015_007": ["cop_marine"], + "MO_SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_001": ["cop_marine"], + "MO_SEAICE_GLO_SEAICE_L4_REP_OBSERVATIONS_011_009": ["cop_marine"], + "MO_SEAICE_GLO_SEAICE_L4_NRT_OBSERVATIONS_011_006": ["cop_marine"], + "MO_SEALEVEL_GLO_PHY_L4_NRT_008_046": ["cop_marine"], + "MO_SEALEVEL_GLO_PHY_MDT_008_063": ["cop_marine"], + "MO_SST_GLO_SST_L3S_NRT_OBSERVATIONS_010_010": ["cop_marine"], + "MO_SST_GLO_SST_L4_NRT_OBSERVATIONS_010_001": ["cop_marine"], + "MO_SST_GLO_SST_L4_REP_OBSERVATIONS_010_011": ["cop_marine"], + "MO_SST_GLO_SST_L4_REP_OBSERVATIONS_010_024": ["cop_marine"], + "MO_WAVE_GLO_WAV_L3_SPC_NRT_OBSERVATIONS_014_002": ["cop_marine"], + "MO_WAVE_GLO_PHY_SWH_L3_NRT_014_001": ["cop_marine"], + "MO_WAVE_GLO_PHY_SWH_L4_NRT_014_003": ["cop_marine"], + "MO_WIND_GLO_PHY_CLIMATE_L4_MY_012_003": ["cop_marine"], + "MO_WIND_GLO_PHY_L3_NRT_012_002": ["cop_marine"], + "MO_WIND_GLO_PHY_L3_MY_012_005": ["cop_marine"], + "MO_WIND_GLO_PHY_L4_NRT_012_004": ["cop_marine"], + "MO_WIND_GLO_PHY_L4_MY_012_006": ["cop_marine"], + "MO_OCEANCOLOUR_GLO_BGC_L3_MY_009_107": ["cop_marine"], + "MO_OCEANCOLOUR_GLO_BGC_L3_NRT_009_101": ["cop_marine"], + "MO_OCEANCOLOUR_GLO_BGC_L3_MY_009_103": ["cop_marine"], + "MO_OCEANCOLOUR_GLO_BGC_L4_NRT_009_102": ["cop_marine"], + "MO_OCEANCOLOUR_GLO_BGC_L4_MY_009_104": ["cop_marine"], + "MO_OCEANCOLOUR_GLO_BGC_L4_MY_009_108": ["cop_marine"], + "NAIP": ["astraea_eod", "aws_eos", "earth_search", "planetary_computer"], "NEMSAUTO_TCDC": ["meteoblue"], "NEMSGLOBAL_TCDC": ["meteoblue"], "OSO": ["theia"], @@ -182,6 +259,7 @@ class TestCore(TestCoreBase): "cop_dataspace", "creodias", "creodias_s3", + "dedl", "earth_search", "onda", "peps", @@ -203,6 +281,7 @@ class TestCore(TestCoreBase): "cop_dataspace", "creodias", "creodias_s3", + "dedl", "onda", "peps", "sara", @@ -214,6 +293,7 @@ class TestCore(TestCoreBase): "cop_dataspace", "creodias", "creodias_s3", + "dedl", "earth_search", "earth_search_gcs", "onda", @@ -228,6 +308,7 @@ class TestCore(TestCoreBase): "cop_dataspace", "creodias", "creodias_s3", + "dedl", "onda", "planetary_computer", "sara", @@ -239,13 +320,42 @@ class TestCore(TestCoreBase): "S2_MSI_L2B_MAJA_SNOW": ["theia"], "S2_MSI_L2B_MAJA_WATER": ["theia"], "S2_MSI_L3A_WASP": ["theia"], - "S3_EFR": ["cop_dataspace", "creodias", "creodias_s3", "onda", "sara", "wekeo"], - "S3_ERR": ["cop_dataspace", "creodias", "creodias_s3", "onda", "sara", "wekeo"], - "S3_LAN": ["cop_dataspace", "creodias", "creodias_s3", "onda", "sara", "wekeo"], + "S3_EFR": [ + "cop_dataspace", + "creodias", + "creodias_s3", + "dedl", + "eumetsat_ds", + "onda", + "sara", + "wekeo", + ], + "S3_EFR_BC002": ["eumetsat_ds"], + "S3_ERR": [ + "cop_dataspace", + "creodias", + "creodias_s3", + "dedl", + "eumetsat_ds", + "onda", + "sara", + "wekeo", + ], + "S3_ERR_BC002": ["eumetsat_ds"], + "S3_LAN": [ + "cop_dataspace", + "creodias", + "creodias_s3", + "dedl", + "onda", + "sara", + "wekeo", + ], "S3_OLCI_L2LFR": [ "cop_dataspace", "creodias", "creodias_s3", + "dedl", "onda", "sara", "wekeo", @@ -254,6 +364,7 @@ class TestCore(TestCoreBase): "cop_dataspace", "creodias", "creodias_s3", + "dedl", "onda", "sara", "wekeo", @@ -262,6 +373,8 @@ class TestCore(TestCoreBase): "cop_dataspace", "creodias", "creodias_s3", + "dedl", + "eumetsat_ds", "onda", "sara", "wekeo", @@ -270,6 +383,8 @@ class TestCore(TestCoreBase): "cop_dataspace", "creodias", "creodias_s3", + "dedl", + "eumetsat_ds", "onda", "sara", "wekeo", @@ -279,34 +394,64 @@ class TestCore(TestCoreBase): "cop_dataspace", "creodias", "creodias_s3", + "dedl", + "eumetsat_ds", "onda", "sara", "wekeo", ], + "S3_SLSTR_L1RBT_BC003": ["eumetsat_ds"], "S3_SLSTR_L2": ["wekeo"], - "S3_SLSTR_L2AOD": ["cop_dataspace", "creodias", "creodias_s3", "sara", "wekeo"], + "S3_SLSTR_L2AOD": [ + "cop_dataspace", + "creodias", + "creodias_s3", + "dedl", + "eumetsat_ds", + "sara", + ], "S3_SLSTR_L2FRP": [ "cop_dataspace", "creodias", "creodias_s3", + "dedl", + "eumetsat_ds", + "onda", + "sara", + ], + "S3_SLSTR_L2LST": [ + "cop_dataspace", + "creodias", + "creodias_s3", + "dedl", "onda", "sara", - "wekeo", ], - "S3_SLSTR_L2LST": ["cop_dataspace", "creodias", "creodias_s3", "onda", "sara"], "S3_SLSTR_L2WST": [ "cop_dataspace", "creodias", "creodias_s3", + "dedl", + "eumetsat_ds", + "onda", + "sara", + ], + "S3_SRA": [ + "cop_dataspace", + "creodias", + "creodias_s3", + "dedl", + "eumetsat_ds", "onda", "sara", "wekeo", ], - "S3_SRA": ["cop_dataspace", "creodias", "creodias_s3", "onda", "sara", "wekeo"], "S3_SRA_A": [ "cop_dataspace", "creodias", "creodias_s3", + "dedl", + "eumetsat_ds", "onda", "sara", "wekeo", @@ -315,39 +460,44 @@ class TestCore(TestCoreBase): "cop_dataspace", "creodias", "creodias_s3", + "dedl", + "eumetsat_ds", "onda", "sara", "wekeo", ], "S3_SY_AOD": ["cop_dataspace", "creodias", "creodias_s3", "onda", "sara"], - "S3_SY_SYN": [ + "S3_SY_SYN": ["cop_dataspace", "creodias", "creodias_s3", "onda", "sara"], + "S3_SY_V10": ["cop_dataspace", "creodias", "creodias_s3", "onda", "sara"], + "S3_SY_VG1": ["cop_dataspace", "creodias", "creodias_s3", "onda", "sara"], + "S3_SY_VGP": ["cop_dataspace", "creodias", "creodias_s3", "onda", "sara"], + "S3_WAT": [ "cop_dataspace", "creodias", "creodias_s3", + "dedl", + "eumetsat_ds", "onda", "sara", "wekeo", ], - "S3_SY_V10": ["cop_dataspace", "creodias", "creodias_s3", "onda", "sara"], - "S3_SY_VG1": ["cop_dataspace", "creodias", "creodias_s3", "onda", "sara"], - "S3_SY_VGP": ["cop_dataspace", "creodias", "creodias_s3", "onda", "sara"], - "S3_WAT": ["cop_dataspace", "creodias", "creodias_s3", "onda", "sara", "wekeo"], - "S3_OLCI_L2WFR_BC003": ["wekeo"], - "S3_OLCI_L2WRR_BC003": ["wekeo"], - "S3_SRA_1A_BC004": ["wekeo"], - "S3_SRA_1B_BC004": ["wekeo"], - "S3_SRA_BS_BC004": ["wekeo"], - "S3_WAT_BC004": ["wekeo"], - "S3_SLSTR_L1RBT_BC004": ["wekeo"], - "S3_SLSTR_L2WST_BC003": ["wekeo"], - "S3_OLCI_L4BALTIC": ["wekeo"], - "S6_P4_L1AHR_F06": ["wekeo"], - "S6_P4_L1BLR_F06": ["wekeo"], - "S6_P4_L1BAHR_F06": ["wekeo"], - "S6_P4_L2LR_F06": ["wekeo"], - "S6_P4_L2HR_F06": ["wekeo"], - "S6_AMR_L2_F06": ["wekeo"], - "S5P_L1B2_IR_ALL": ["wekeo"], + "S3_LAN_HY": ["wekeo"], + "S3_LAN_SI": ["wekeo"], + "S3_LAN_LI": ["wekeo"], + "S5P_L1B_IR_ALL": ["dedl", "wekeo"], + "S5P_L2_IR_ALL": ["dedl", "wekeo"], + "S3_OLCI_L2WFR_BC003": ["eumetsat_ds"], + "S3_OLCI_L2WRR_BC003": ["eumetsat_ds"], + "S3_SRA_1A_BC004": ["eumetsat_ds"], + "S3_SRA_1A_BC005": ["eumetsat_ds"], + "S3_SRA_1B_BC004": ["eumetsat_ds"], + "S3_SRA_1B_BC005": ["eumetsat_ds"], + "S3_SRA_BS_BC004": ["eumetsat_ds"], + "S3_SRA_BS_BC005": ["eumetsat_ds"], + "S3_WAT_BC004": ["eumetsat_ds"], + "S3_WAT_BC005": ["eumetsat_ds"], + "S3_SLSTR_L1RBT_BC004": ["eumetsat_ds"], + "S3_SLSTR_L2WST_BC003": ["eumetsat_ds"], "S5P_L1B_IR_SIR": ["cop_dataspace", "creodias", "creodias_s3"], "S5P_L1B_IR_UVN": ["cop_dataspace", "creodias", "creodias_s3"], "S5P_L1B_RA_BD1": ["cop_dataspace", "creodias", "creodias_s3", "onda"], @@ -372,21 +522,27 @@ class TestCore(TestCoreBase): "S5P_L2_O3_PR": ["cop_dataspace", "creodias", "creodias_s3", "onda"], "S5P_L2_O3_TCL": ["cop_dataspace", "creodias", "creodias_s3"], "S5P_L2_SO2": ["cop_dataspace", "creodias", "creodias_s3", "onda"], - "SATELLITE_CARBON_DIOXIDE": ["cop_cds", "wekeo"], - "SATELLITE_METHANE": ["cop_cds", "wekeo"], - "SATELLITE_SEA_LEVEL_BLACK_SEA": ["cop_cds", "wekeo"], - "SEASONAL_MONTHLY_PL": ["cop_cds", "wekeo"], - "SEASONAL_MONTHLY_SL": ["cop_cds", "wekeo"], - "SEASONAL_ORIGINAL_PL": ["cop_cds", "wekeo"], - "SEASONAL_ORIGINAL_SL": ["cop_cds", "wekeo"], - "SEASONAL_POSTPROCESSED_PL": ["cop_cds", "wekeo"], - "SEASONAL_POSTPROCESSED_SL": ["cop_cds", "wekeo"], - "SIS_HYDRO_MET_PROJ": ["cop_cds", "wekeo"], + "SATELLITE_CARBON_DIOXIDE": ["cop_cds", "dedl", "wekeo"], + "SATELLITE_FIRE_BURNED_AREA": ["cop_cds", "wekeo"], + "SATELLITE_METHANE": ["cop_cds", "dedl", "wekeo"], + "SATELLITE_SEA_LEVEL_BLACK_SEA": ["cop_cds", "dedl", "wekeo"], + "SATELLITE_SEA_ICE_EDGE_TYPE": ["cop_cds", "dedl", "wekeo"], + "SATELLITE_SEA_LEVEL_GLOBAL": ["cop_cds", "dedl", "wekeo"], + "SATELLITE_SEA_LEVEL_MEDITERRANEAN": ["cop_cds", "dedl", "wekeo"], + "SATELLITE_SEA_ICE_CONCENTRATION": ["cop_cds", "wekeo"], + "SATELLITE_SEA_ICE_THICKNESS": ["cop_cds", "wekeo"], + "SEASONAL_MONTHLY_PL": ["cop_cds", "dedl", "wekeo"], + "SEASONAL_MONTHLY_SL": ["cop_cds", "dedl", "wekeo"], + "SEASONAL_ORIGINAL_PL": ["cop_cds", "dedl", "wekeo"], + "SEASONAL_ORIGINAL_SL": ["cop_cds", "dedl", "wekeo"], + "SEASONAL_POSTPROCESSED_PL": ["cop_cds", "dedl", "wekeo"], + "SEASONAL_POSTPROCESSED_SL": ["cop_cds", "dedl", "wekeo"], + "SIS_HYDRO_MET_PROJ": ["cop_cds", "dedl"], "SPOT5_SPIRIT": ["theia"], "SPOT_SWH": ["theia"], "SPOT_SWH_OLD": ["theia"], "TIGGE_CF_SFC": ["ecmwf"], - "UERRA_EUROPE_SL": ["cop_cds", "wekeo"], + "UERRA_EUROPE_SL": ["cop_cds", "dedl", "wekeo"], "VENUS_L1C": ["theia"], "VENUS_L2A_MAJA": ["theia"], "VENUS_L3A_MAJA": ["theia"], @@ -409,30 +565,36 @@ class TestCore(TestCoreBase): "planetary_computer", "hydroweb_next", "creodias_s3", + "dedl", ], } SUPPORTED_PROVIDERS = [ "peps", - "usgs", - "theia", - "creodias", - "onda", - "aws_eos", "astraea_eod", - "usgs_satapi_aws", + "aws_eos", + "cop_ads", + "cop_cds", + "cop_dataspace", + "cop_marine", + "creodias", + "creodias_s3", + "dedl", + "dedt_lumi", "earth_search", "earth_search_cog", "earth_search_gcs", "ecmwf", - "cop_ads", - "cop_cds", - "sara", + "eumetsat_ds", + "hydroweb_next", "meteoblue", - "cop_dataspace", + "onda", "planetary_computer", - "hydroweb_next", + "sara", + "theia", + "usgs", + "usgs_satapi_aws", "wekeo", - "creodias_s3", + "wekeo_cmems", ] def setUp(self): @@ -491,11 +653,15 @@ def test_list_product_types_for_provider_ok(self): self.assertListProductTypesRightStructure(product_type) if product_type["ID"] in self.SUPPORTED_PRODUCT_TYPES: self.assertIn( - provider, self.SUPPORTED_PRODUCT_TYPES[product_type["ID"]] + provider, + self.SUPPORTED_PRODUCT_TYPES[product_type["ID"]], + f"missing in supported providers for {product_type['ID']}", ) else: self.assertIn( - provider, self.SUPPORTED_PRODUCT_TYPES[product_type["_id"]] + provider, + self.SUPPORTED_PRODUCT_TYPES[product_type["_id"]], + f"missing in supported providers for {product_type['_id']}", ) def test_list_product_types_for_unsupported_provider(self): @@ -517,6 +683,75 @@ def test_list_product_types_fetch_providers(self, mock_fetch_product_types_list) self.dag.list_product_types(provider="peps", fetch_providers=True) mock_fetch_product_types_list.assert_called_once_with(self.dag, provider="peps") + def test_guess_product_type_with_filter(self): + """Testing the search terms""" + + with open( + os.path.join(TEST_RESOURCES_PATH, "ext_product_types_free_text_search.json") + ) as f: + ext_product_types_conf = json.load(f) + self.dag.update_product_types_list(ext_product_types_conf) + + # Search any filter contains filter value + filter = "ABSTRACTFOO" + product_types_ids = self.dag.guess_product_type(filter) + self.assertListEqual(product_types_ids, ["foo"]) + # Search the exact phrase. Search is case insensitive + filter = '"THIS IS FOO. fooandbar"' + product_types_ids = self.dag.guess_product_type(filter) + self.assertListEqual(product_types_ids, ["foo"]) + + # Free text search: match in the keywords + filter = "LECTUS_BAR_KEY" + product_types_ids = self.dag.guess_product_type(filter) + self.assertListEqual(product_types_ids, ["bar"]) + + # Free text search: match the phrase in title + filter = '"FOOBAR COLLECTION"' + product_types_ids = self.dag.guess_product_type(filter) + self.assertListEqual(product_types_ids, ["foobar"]) + + # Free text search: Using OR term match + filter = "FOOBAR,BAR" + product_types_ids = self.dag.guess_product_type(filter) + self.assertListEqual(sorted(product_types_ids), ["bar", "foobar"]) + + filter = "FOOBAR BAR" + product_types_ids = self.dag.guess_product_type(filter) + self.assertListEqual(sorted(product_types_ids), ["bar", "foobar"]) + + filter = "FOOBAR OR BAR" + product_types_ids = self.dag.guess_product_type(filter) + self.assertListEqual(sorted(product_types_ids), ["bar", "foobar"]) + + # Free text search: using OR term match with additional filter UNION + filter = "FOOBAR OR BAR" + product_types_ids = self.dag.guess_product_type(filter, title="FOO*") + self.assertListEqual(sorted(product_types_ids), ["bar", "foo", "foobar"]) + + # Free text search: Using AND term match + filter = "suspendisse AND FOO" + product_types_ids = self.dag.guess_product_type(filter) + self.assertListEqual(sorted(product_types_ids), ["foo"]) + + # Free text search: Parentheses can be used to group terms + filter = "(FOOBAR OR BAR) AND titleFOOBAR" + product_types_ids = self.dag.guess_product_type(filter) + self.assertListEqual(sorted(product_types_ids), ["foobar"]) + + # Free text search: multiple terms joined with param search (INTERSECT) + filter = "FOOBAR OR BAR" + product_types_ids = self.dag.guess_product_type( + filter, intersect=True, title="titleFOO*" + ) + self.assertListEqual(sorted(product_types_ids), ["foobar"]) + + # Free text search: Indicate included and excluded terms using +/- + # This will search for items that INCLUDES "abstractfoo" EXCLUDES "bar" OR CONTAIN "foo" + filter = "foo +abstractfoo -bar" + product_types_ids = self.dag.guess_product_type(filter) + self.assertListEqual(sorted(product_types_ids), ["foo"]) + def test_update_product_types_list(self): """Core api.update_product_types_list must update eodag product types list""" with open(os.path.join(TEST_RESOURCES_PATH, "ext_product_types.json")) as f: @@ -719,7 +954,8 @@ def test_fetch_product_types_list( {"productType": "foo"}, ) self.assertEqual( - self.dag.product_types_config.source["foo"], {"title": "Foo collection"} + self.dag.product_types_config.source["foo"], + {"_id": "foo", "title": "Foo collection"}, ) # update existing provider conf and check that discover_product_types() is launched for it @@ -877,7 +1113,7 @@ def assertListProductTypesRightStructure(self, structure): self.assertIn("platformSerialIdentifier", structure) self.assertIn("processingLevel", structure) self.assertIn("sensorType", structure) - assert ( + self.assertTrue( structure["ID"] in self.SUPPORTED_PRODUCT_TYPES or structure["_id"] in self.SUPPORTED_PRODUCT_TYPES ) @@ -935,6 +1171,27 @@ def test_prune_providers_list(self): os.environ.pop("EODAG__PEPS__SEARCH__NEED_AUTH", None) os.environ.pop("EODAG__PEPS__AUTH__CREDENTIALS__USERNAME", None) + @mock.patch("eodag.plugins.manager.pkg_resources.iter_entry_points", autospec=True) + def test_prune_providers_list_skipped_plugin(self, mock_iter_ep): + """Providers needing skipped plugin must be pruned on init""" + empty_conf_file = resource_filename( + "eodag", os.path.join("resources", "user_conf_template.yml") + ) + + def skip_qssearch(topic): + ep = mock.MagicMock() + if topic == "eodag.plugins.search": + ep.name = "QueryStringSearch" + ep.load = mock.MagicMock(side_effect=DistributionNotFound()) + return [ep] + + mock_iter_ep.side_effect = skip_qssearch + + dag = EODataAccessGateway(user_conf_file_path=empty_conf_file) + self.assertNotIn("peps", dag.available_providers()) + self.assertEqual(dag._plugins_manager.skipped_plugins, ["QueryStringSearch"]) + dag._plugins_manager.skipped_plugins = [] + def test_prune_providers_list_for_search_without_auth(self): """Providers needing auth for search but without auth plugin must be pruned on init""" empty_conf_file = resource_filename( @@ -1075,20 +1332,35 @@ def test_update_providers_config(self): self.dag.update_providers_config(new_config) @mock.patch( - "eodag.plugins.search.qssearch.StacSearch.discover_queryables", autospec=True + "eodag.plugins.manager.PluginManager.get_auth_plugin", + autospec=True, ) @mock.patch( "eodag.api.core.EODataAccessGateway.fetch_product_types_list", autospec=True ) + @mock.patch( + "eodag.plugins.search.qssearch.QueryStringSearch.discover_queryables", + autospec=True, + ) + @mock.patch( + "eodag.plugins.search.qssearch.StacSearch.discover_queryables", autospec=True + ) def test_list_queryables( - self, mock_discover_queryables, mock_fetch_product_types_list - ): + self, + mock_stacsearch_discover_queryables: Mock, + mock_qssearch_discover_queryables: Mock, + mock_fetch_product_types_list: Mock, + mock_auth_plugin: Mock, + ) -> None: """list_queryables must return queryables list adapted to provider and product-type""" + mock_stacsearch_discover_queryables.return_value = {} + mock_qssearch_discover_queryables.return_value = {} + with self.assertRaises(UnsupportedProvider): - self.dag.list_queryables(provider="not_existing_provider") + self.dag.list_queryables(provider="not_supported_provider") with self.assertRaises(UnsupportedProductType): - self.dag.list_queryables(productType="not_existing_product_type") + self.dag.list_queryables(productType="not_supported_product_type") queryables_none_none = self.dag.list_queryables() expected_result = model_fields_to_annotated(CommonQueryables.model_fields) @@ -1118,8 +1390,29 @@ def test_list_queryables( else: self.assertEqual(str(expected_longer_result[key]), str(queryable)) - @mock.patch("eodag.plugins.apis.cds.CdsApi.discover_queryables", autospec=True) - def test_list_queryables_with_constraints(self, mock_discover_queryables): + # when a product type is specified but not the provider, the intersection of the queryables of all providers + # having the product type in its config is returned, using queryables of the provider with the highest priority + queryables_none_s1grd = self.dag.list_queryables(productType="S1_SAR_GRD") + self.assertGreaterEqual(len(queryables_none_s1grd), len(queryables_none_none)) + self.assertLess(len(queryables_none_s1grd), len(queryables_peps_none)) + self.assertLessEqual(len(queryables_none_s1grd), len(queryables_peps_s1grd)) + self.assertLess(len(queryables_none_s1grd), len(expected_longer_result)) + # check that peps gets the highest priority + self.assertEqual(self.dag.get_preferred_provider()[0], "peps") + for key, queryable in queryables_none_s1grd.items(): + # compare obj.__repr__ + if key == "productType": + self.assertEqual("S1_SAR_GRD", queryable.__metadata__[0].get_default()) + else: + self.assertEqual(str(expected_longer_result[key]), str(queryable)) + # queryables intersection comes from peps's queryables + self.assertEqual(str(queryable), str(queryables_peps_s1grd[key])) + + @mock.patch( + "eodag.plugins.search.build_search_result.BuildSearchResult.discover_queryables", + autospec=True, + ) + def test_list_queryables_with_constraints(self, mock_discover_queryables: Mock): plugin = next( self.dag._plugins_manager.get_search_plugins( provider="cop_cds", product_type="ERA5_SL" @@ -1148,6 +1441,7 @@ def test_list_queryables_with_constraints(self, mock_discover_queryables): } mock_discover_queryables.assert_called_once_with(plugin, **params) mock_discover_queryables.reset_mock() + # unset default values self.dag.list_queryables(provider="cop_cds", productType="ERA5_SL", format=None) defaults = { @@ -1159,6 +1453,183 @@ def test_list_queryables_with_constraints(self, mock_discover_queryables): } mock_discover_queryables.assert_called_once_with(plugin, **defaults) + def test_available_sortables(self): + """available_sortables must return available sortable(s) and its (their) + maximum number dict for providers which support the sorting feature""" + self.maxDiff = None + expected_result = { + "peps": None, + "astraea_eod": { + "sortables": ["id", "startTimeFromAscendingNode", "creationDate"], + "max_sort_params": None, + }, + "aws_eos": None, + "cop_ads": None, + "cop_cds": None, + "cop_dataspace": { + "sortables": [ + "startTimeFromAscendingNode", + "completionTimeFromAscendingNode", + "publicationDate", + "modificationDate", + ], + "max_sort_params": 1, + }, + "creodias": { + "sortables": [ + "startTimeFromAscendingNode", + "completionTimeFromAscendingNode", + "publicationDate", + "modificationDate", + ], + "max_sort_params": 1, + }, + "creodias_s3": { + "sortables": [ + "startTimeFromAscendingNode", + "completionTimeFromAscendingNode", + "publicationDate", + "modificationDate", + ], + "max_sort_params": 1, + }, + "dedl": { + "max_sort_params": None, + "sortables": [ + "id", + "startTimeFromAscendingNode", + "creationDate", + "modificationDate", + "platformSerialIdentifier", + "resolution", + "cloudCover", + ], + }, + "dedt_lumi": None, + "earth_search": { + "sortables": [ + "id", + "startTimeFromAscendingNode", + "creationDate", + "modificationDate", + "platformSerialIdentifier", + "resolution", + "cloudCover", + ], + "max_sort_params": None, + }, + "earth_search_gcs": { + "sortables": [ + "id", + "startTimeFromAscendingNode", + "creationDate", + "modificationDate", + "platformSerialIdentifier", + "resolution", + "cloudCover", + ], + "max_sort_params": None, + }, + "earth_search_cog": { + "sortables": [ + "id", + "startTimeFromAscendingNode", + "creationDate", + "modificationDate", + "platform", + "platformSerialIdentifier", + "resolution", + "cloudCover", + ], + "max_sort_params": None, + }, + "ecmwf": None, + "eumetsat_ds": { + "sortables": [ + "startTimeFromAscendingNode", + "publicationDate", + ], + "max_sort_params": 1, + }, + "cop_marine": None, + "hydroweb_next": { + "sortables": [ + "id", + "startTimeFromAscendingNode", + "completionTimeFromAscendingNode", + "productVersion", + "processingLevel", + ], + "max_sort_params": None, + }, + "meteoblue": None, + "onda": { + "sortables": ["startTimeFromAscendingNode", "uid", "storageStatus"], + "max_sort_params": 1, + }, + "planetary_computer": { + "sortables": [ + "id", + "startTimeFromAscendingNode", + "platformSerialIdentifier", + ], + "max_sort_params": None, + }, + "sara": { + "sortables": [ + "startTimeFromAscendingNode", + "completionTimeFromAscendingNode", + "sensorMode", + ], + "max_sort_params": 1, + }, + "theia": None, + "usgs": None, + "usgs_satapi_aws": { + "sortables": [ + "id", + "startTimeFromAscendingNode", + "creationDate", + "modificationDate", + "platformSerialIdentifier", + "illuminationElevationAngle", + "illuminationAzimuthAngle", + "cloudCover", + ], + "max_sort_params": None, + }, + "wekeo": None, + "wekeo_cmems": None, + } + sortables = self.dag.available_sortables() + self.assertDictEqual(sortables, expected_result) + + # check if sortables are set to None when the provider does not support the sorting feature + self.assertFalse(hasattr(self.dag.providers_config["peps"].search, "sort")) + self.assertEqual(sortables["peps"], None) + + # check if sortable parameter(s) and its (their) maximum number of a provider are set + # to their value when the provider supports the sorting feature and has a maximum number of sortables + self.assertTrue(hasattr(self.dag.providers_config["creodias"].search, "sort")) + self.assertTrue( + self.dag.providers_config["creodias"].search.sort.get("max_sort_params") + ) + if sortables["creodias"]: + self.assertIsNotNone(sortables["creodias"]["max_sort_params"]) + + # check if sortable parameter(s) of a provider is set to its value and its (their) maximum number is set + # to None when the provider supports the sorting feature and does not have a maximum number of sortables + self.assertTrue( + hasattr(self.dag.providers_config["planetary_computer"].search, "sort") + ) + self.assertFalse( + self.dag.providers_config["planetary_computer"].search.sort.get( + "max_sort_params" + ) + ) + if sortables["planetary_computer"]: + self.assertIsNone(sortables["planetary_computer"]["max_sort_params"]) + class TestCoreConfWithEnvVar(TestCoreBase): @classmethod @@ -1256,7 +1727,8 @@ def tearDown(self): def execution_involving_conf_dir(self, inspect=None, conf_dir=None): """Check that the path(s) inspected (str, list) are created after the instantation of EODataAccessGateway. If they were already there, rename them (.old), instantiate, - check, delete the new files, and restore the existing files to there previous name.""" + check, delete the new files, and restore the existing files to there previous name. + """ if inspect is not None: if conf_dir is None: conf_dir = os.path.join(os.path.expanduser("~"), ".config", "eodag") @@ -1515,6 +1987,32 @@ def test_guess_product_type_with_kwargs(self): actual = self.dag.guess_product_type(productType="foo") self.assertEqual(actual, ["foo"]) + # with dates + self.assertEqual( + self.dag.product_types_config.source["S2_MSI_L1C"]["missionStartDate"], + "2015-06-23T00:00:00Z", + ) + self.assertNotIn( + "S2_MSI_L1C", self.dag.guess_product_type(missionEndDate="2015-06-01") + ) + self.assertIn( + "S2_MSI_L1C", self.dag.guess_product_type(missionEndDate="2015-07-01") + ) + self.assertEqual( + self.dag.product_types_config.source["S2_MSI_L2AP"]["missionStartDate"], + "2017-05-23T00:00:00Z", + ) + self.assertEqual( + self.dag.product_types_config.source["S2_MSI_L2AP"]["missionEndDate"], + "2018-03-25T00:00:00Z", + ) + self.assertNotIn( + "S2_MSI_L2AP", self.dag.guess_product_type(missionStartDate="2018-04-01") + ) + self.assertIn( + "S2_MSI_L2AP", self.dag.guess_product_type(missionStartDate="2018-03-01") + ) + def test_guess_product_type_without_kwargs(self): """guess_product_type must raise an exception when no kwargs are provided""" with self.assertRaises(NoMatchingProductType): @@ -1752,7 +2250,7 @@ def test__prepare_search_unknown_product_type(self, mock_fetch_product_types_lis @mock.patch( "eodag.api.core.EODataAccessGateway._do_search", autospec=True, - return_value=([mock.Mock()], 1), + return_value=(SearchResult([mock.Mock()], 1)), ) @mock.patch("eodag.plugins.manager.PluginManager.get_auth_plugin", autospec=True) @mock.patch( @@ -1764,6 +2262,21 @@ def test__search_by_id( self, mock_get_search_plugins, mock_get_auth_plugin, mock__do_search ): """_search_by_id must filter search plugins using given kwargs, clear plugin and perform search""" + # max_items_per_page plugin conf + mock_config = mock.Mock() + type(mock_config).pagination = mock.PropertyMock( + return_value={"max_items_per_page": 100} + ) + type(mock_get_search_plugins.return_value[0]).config = mock.PropertyMock( + return_value=mock_config + ) + type( + mock_get_search_plugins.return_value[0] + ).next_page_query_obj = mock.PropertyMock(return_value={}) + # mocked search result id + type(mock__do_search.return_value[0]).properties = mock.PropertyMock( + return_value={"id": "foo"} + ) found = self.dag._search_by_id(uid="foo", productType="bar", provider="baz") @@ -1784,26 +2297,43 @@ def test__search_by_id( mock_get_search_plugins.return_value[0], id="foo", productType="bar", + count=False, + raise_errors=True, + page=1, + items_per_page=100, ) self.assertEqual(found, mock__do_search.return_value) mock__do_search.reset_mock() # return None if more than 1 product is found - m = mock.MagicMock() - p = EOProduct( - "peps", {"id": "a", "geometry": {"type": "Point", "coordinates": [1, 1]}} + mock__do_search.return_value = SearchResult([mock.Mock(), mock.Mock()], 2) + type(mock__do_search.return_value[0]).properties = mock.PropertyMock( + return_value={"id": "foo"} + ) + type(mock__do_search.return_value[1]).properties = mock.PropertyMock( + return_value={"id": "foo"} ) - m.__len__.return_value = 2 - m.__iter__.return_value = [p, p] - mock__do_search.return_value = (m, 2) with self.assertLogs(level="INFO") as cm: found = self.dag._search_by_id(uid="foo", productType="bar", provider="baz") - self.assertEqual(found, (SearchResult([]), 0)) + self.assertEqual(found, SearchResult([], 0)) self.assertIn("Several products found for this id", str(cm.output)) + mock__do_search.reset_mock() + # return 1 result if more than 1 product is found but only 1 has the matching id + mock__do_search.return_value = SearchResult([mock.Mock(), mock.Mock()], 2) + type(mock__do_search.return_value[0]).properties = mock.PropertyMock( + return_value={"id": "foo"} + ) + type(mock__do_search.return_value[1]).properties = mock.PropertyMock( + return_value={"id": "foooooo"} + ) + found = self.dag._search_by_id(uid="foo", productType="bar", provider="baz") + self.assertEqual(found.number_matched, 1) + self.assertEqual(len(found), 1) + @mock.patch("eodag.plugins.search.qssearch.QueryStringSearch", autospec=True) def test__do_search_support_itemsperpage_higher_than_maximum(self, search_plugin): - """_do_search must create a count query by default""" + """_do_search must support itemsperpage higher than maximum""" search_plugin.provider = "peps" search_plugin.query.return_value = ( self.search_results.data, # a list must be returned by .query @@ -1814,17 +2344,23 @@ class DummyConfig: pagination = {"max_items_per_page": 1} search_plugin.config = DummyConfig() - sr, estimate = self.dag._do_search( - search_plugin=search_plugin, - items_per_page=2, - ) - self.assertIsInstance(sr, SearchResult) - self.assertEqual(len(sr), self.search_results_size) - self.assertEqual(estimate, self.search_results_size) + with self.assertLogs(level="WARNING") as cm: + sr = self.dag._do_search( + count=True, + search_plugin=search_plugin, + items_per_page=2, + ) + self.assertIsInstance(sr, SearchResult) + self.assertEqual(len(sr), self.search_results_size) + self.assertEqual(sr.number_matched, self.search_results_size) + self.assertIn( + "Try to lower the value of 'items_per_page'", + str(cm.output), + ) @mock.patch("eodag.plugins.search.qssearch.QueryStringSearch", autospec=True) - def test__do_search_counts_by_default(self, search_plugin): - """_do_search must create a count query by default""" + def test__do_search_counts(self, search_plugin): + """_do_search must create a count query if specified""" search_plugin.provider = "peps" search_plugin.query.return_value = ( self.search_results.data, # a list must be returned by .query @@ -1835,10 +2371,10 @@ class DummyConfig: pagination = {} search_plugin.config = DummyConfig() - sr, estimate = self.dag._do_search(search_plugin=search_plugin) + sr = self.dag._do_search(search_plugin=search_plugin, count=True) self.assertIsInstance(sr, SearchResult) self.assertEqual(len(sr), self.search_results_size) - self.assertEqual(estimate, self.search_results_size) + self.assertEqual(sr.number_matched, self.search_results_size) @mock.patch("eodag.plugins.search.qssearch.QueryStringSearch", autospec=True) def test__do_search_without_count(self, search_plugin): @@ -1854,16 +2390,15 @@ class DummyConfig: search_plugin.config = DummyConfig() - sr, estimate = self.dag._do_search(search_plugin=search_plugin, count=False) - self.assertIsNone(estimate) + sr = self.dag._do_search(search_plugin=search_plugin, count=False) + self.assertIsNone(sr.number_matched) self.assertEqual(len(sr), self.search_results_size) @mock.patch("eodag.plugins.search.qssearch.QueryStringSearch", autospec=True) def test__do_search_paginated_handle_no_count_returned(self, search_plugin): - """_do_search must provide a best estimate when a provider doesn't return a count""" + """_do_search must return None as count if provider does not return the count""" search_plugin.provider = "peps" - # If the provider doesn't return a count, .query returns 0 - search_plugin.query.return_value = (self.search_results.data, 0) + search_plugin.query.return_value = (self.search_results.data, None) class DummyConfig: pagination = {} @@ -1871,52 +2406,18 @@ class DummyConfig: search_plugin.config = DummyConfig() page = 4 - sr, estimate = self.dag._do_search( + sr = self.dag._do_search( + count=True, search_plugin=search_plugin, page=page, items_per_page=2, ) self.assertEqual(len(sr), self.search_results_size) - # The count guess is: page * number_of_products_returned - self.assertEqual(estimate, page * self.search_results_size) - - @mock.patch("eodag.plugins.search.qssearch.QueryStringSearch", autospec=True) - def test__do_search_paginated_handle_fuzzy_count(self, search_plugin): - """_do_search must provide a best estimate when a provider returns a fuzzy count""" - search_plugin.provider = "peps" - search_plugin.query.return_value = ( - self.search_results.data * 4, # 8 products returned - 22, # fuzzy number, less than the real total count - ) - - class DummyConfig: - pagination = {} - - search_plugin.config = DummyConfig() - - page = 4 - items_per_page = 10 - sr, estimate = self.dag._do_search( - search_plugin=search_plugin, - page=page, - items_per_page=items_per_page, - ) - # At page 4 with 10 items_per_page we should have a count of at least 30 - # products available. However the provider returned 22. We know it's wrong. - # So we update the count with our current knowledge: 30 + 8 - # Note that this estimate could still be largely inferior to the real total - # count. - expected_estimate = items_per_page * (page - 1) + len(sr) - self.assertEqual(len(sr), 8) - self.assertEqual(estimate, expected_estimate) + self.assertEqual(sr.number_matched, None) @mock.patch("eodag.plugins.search.qssearch.QueryStringSearch", autospec=True) def test__do_search_paginated_handle_null_count(self, search_plugin): - """_do_search must provide a best estimate when a provider returns a null count""" - # TODO: check the underlying implementation, it doesn't make so much sense since - # this case is already covered with nb_res = len(res) * page. This one uses - # nb_res = items_per_page * (page - 1) whick actually makes more sense. Choose - # one of them. + """_do_search must return provider response even if provider returns a null count""" search_plugin.provider = "peps" search_plugin.query.return_value = ([], 0) @@ -1927,17 +2428,18 @@ class DummyConfig: page = 4 items_per_page = 10 - sr, estimate = self.dag._do_search( + sr = self.dag._do_search( + count=True, search_plugin=search_plugin, page=page, items_per_page=items_per_page, ) - expected_estimate = items_per_page * (page - 1) self.assertEqual(len(sr), 0) - self.assertEqual(estimate, expected_estimate) + self.assertEqual(sr.number_matched, 0) def test__do_search_does_not_raise_by_default(self): """_do_search must not raise any error by default""" + # provider attribute required internally by __do_search for logging purposes. class DummyConfig: pagination = {} @@ -1946,10 +2448,10 @@ class DummySearchPlugin: provider = "peps" config = DummyConfig() - sr, estimate = self.dag._do_search(search_plugin=DummySearchPlugin()) + sr = self.dag._do_search(search_plugin=DummySearchPlugin(), count=True) self.assertIsInstance(sr, SearchResult) self.assertEqual(len(sr), 0) - self.assertEqual(estimate, 0) + self.assertEqual(sr.number_matched, 0) def test__do_search_can_raise_errors(self): """_do_search must not raise errors if raise_errors=True""" @@ -1992,7 +2494,7 @@ class DummyConfig: search_plugin.config = DummyConfig() - sr, _ = self.dag._do_search(search_plugin=search_plugin) + sr = self.dag._do_search(search_plugin=search_plugin) for product in sr: self.assertIsNotNone(product.downloader) @@ -2011,7 +2513,7 @@ class DummyConfig: search_plugin.config = DummyConfig() search_plugin.provider = "peps" search_plugin.query.return_value = ([DummyProduct(), DummyProduct()], 2) - sr, _ = self.dag._do_search(search_plugin=search_plugin) + sr = self.dag._do_search(search_plugin=search_plugin) for product in sr: self.assertIsNone(product.downloader) @@ -2151,6 +2653,223 @@ def test_search_iter_page_must_reset_next_attrs_if_next_mechanism( "dummy_next_page_url_tpl", ) + @mock.patch("eodag.plugins.search.qssearch.PostJsonSearch._request", autospec=True) + @mock.patch( + "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True + ) + @mock.patch( + "eodag.plugins.search.qssearch.QueryStringSearch.normalize_results", + autospec=True, + ) + def test_search_sort_by( + self, + mock_normalize_results, + mock_qssearch__request, + mock_postjsonsearch__request, + ): + """search must sort results by sorting parameter(s) in their sorting order + from the "sortBy" argument or by default sorting parameter if exists""" + mock_qssearch__request.return_value.json.return_value = { + "properties": {"totalResults": 2}, + "features": [], + "links": [{"rel": "next", "href": "url/to/next/page"}], + } + mock_postjsonsearch__request.return_value.json.return_value = { + "meta": {"found": 2}, + "features": [], + "links": [{"rel": "next", "href": "url/to/next/page"}], + } + + p1 = EOProduct( + "dummy", dict(geometry="POINT (0 0)", id="1", eodagSortParam="1") + ) + p1.search_intersection = None + p2 = EOProduct( + "dummy", dict(geometry="POINT (0 0)", id="2", eodagSortParam="2") + ) + p2.search_intersection = None + mock_normalize_results.return_value = [p2, p1] + + dag = EODataAccessGateway() + + # with a GET mode search + dummy_provider_config = """ + dummy_provider: + search: + type: QueryStringSearch + api_endpoint: https://api.my_new_provider/search + pagination: + next_page_url_tpl: '{url}?{search}' + total_items_nb_key_path: '$.properties.totalResults' + sort: + sort_by_tpl: '&sortParam={sort_param}&sortOrder={sort_order}' + sort_param_mapping: + eodagSortParam: providerSortParam + sort_order_mapping: + ascending: asc + descending: desc + metadata_mapping: + dummy: 'dummy' + products: + S2_MSI_L1C: + productType: '{productType}' + """ + dag.update_providers_config(dummy_provider_config) + + dag.search( + provider="dummy_provider", + productType="S2_MSI_L1C", + sortBy=[("eodagSortParam", "DESC")], + ) + + # a provider-specific string has been created to sort by + self.assertIn( + "sortParam=providerSortParam&sortOrder=desc", + mock_qssearch__request.call_args[0][1].url, + ) + + # with a POST mode search + dummy_provider_config = """ + other_dummy_provider: + search: + type: PostJsonSearch + api_endpoint: https://api.my_new_provider/search + pagination: + next_page_query_obj: '{{"limit":{items_per_page},"page":{page}}}' + total_items_nb_key_path: '$.meta.found' + sort: + sort_by_tpl: '{{"sortby": [ {{"field": "{sort_param}", "direction": "{sort_order}" }} ] }}' + sort_param_mapping: + eodagSortParam: providerSortParam + sort_order_mapping: + ascending: asc + descending: desc + metadata_mapping: + dummy: 'dummy' + products: + S2_MSI_L1C: + productType: '{productType}' + """ + dag.update_providers_config(dummy_provider_config) + dag.search( + provider="other_dummy_provider", + productType="S2_MSI_L1C", + sortBy=[("eodagSortParam", "DESC")], + ) + + # a provider-specific dictionnary has been created to sort by + self.assertIn( + "sortby", mock_postjsonsearch__request.call_args[0][1].query_params.keys() + ) + self.assertEqual( + [{"field": "providerSortParam", "direction": "desc"}], + mock_postjsonsearch__request.call_args[0][1].query_params["sortby"], + ) + + # TODO: sort by default sorting parameter and sorting order + + def test_search_sort_by_raise_errors(self): + """search used with "sortBy" argument must raise errors if the argument is incorrect or if the provider does + not support a maximum number of sorting parameter, one sorting parameter or the sorting feature + """ + dag = EODataAccessGateway() + dummy_provider_config = """ + dummy_provider: + search: + type: QueryStringSearch + api_endpoint: https://api.my_new_provider/search + pagination: + next_page_url_tpl: '{url}?{search}{sort_by}&maxRecords={items_per_page}&page={page}&exactCount=1' + total_items_nb_key_path: '$.properties.totalResults' + metadata_mapping: + dummy: 'dummy' + products: + S2_MSI_L1C: + productType: '{productType}' + """ + dag.update_providers_config(dummy_provider_config) + # raise an error with a provider which does not support sorting feature + with self.assertLogs(level="ERROR") as cm_logs: + dag.search( + provider="dummy_provider", + productType="S2_MSI_L1C", + sortBy=[("eodagSortParam", "ASC")], + ) + self.assertIn( + "dummy_provider does not support sorting feature", str(cm_logs.output) + ) + + dummy_provider_config = """ + dummy_provider: + search: + type: QueryStringSearch + api_endpoint: https://api.my_new_provider/search + pagination: + next_page_url_tpl: '{url}?{search}{sort_by}&maxRecords={items_per_page}&page={page}&exactCount=1' + total_items_nb_key_path: '$.properties.totalResults' + sort: + sort_by_tpl: '&sortParam={sort_param}&sortOrder={sort_order}' + sort_param_mapping: + eodagSortParam: providerSortParam + sort_order_mapping: + ascending: asc + descending: desc + metadata_mapping: + dummy: 'dummy' + products: + S2_MSI_L1C: + productType: '{productType}' + """ + dag.update_providers_config(dummy_provider_config) + # raise an error with a parameter not sortable with a provider + with self.assertLogs(level="ERROR") as cm_logs: + dag.search( + provider="dummy_provider", + productType="S2_MSI_L1C", + sortBy=[("otherEodagSortParam", "ASC")], + ) + self.assertIn( + "\\'otherEodagSortParam\\' parameter is not sortable with dummy_provider. " + "Here is the list of sortable parameter(s) with dummy_provider: eodagSortParam", + str(cm_logs.output), + ) + + dummy_provider_config = """ + dummy_provider: + search: + type: QueryStringSearch + api_endpoint: https://api.my_new_provider/search + pagination: + next_page_url_tpl: '{url}?{search}{sort_by}&maxRecords={items_per_page}&page={page}&exactCount=1' + total_items_nb_key_path: '$.properties.totalResults' + sort: + sort_by_tpl: '&sortParam={sort_param}&sortOrder={sort_order}' + sort_param_mapping: + eodagSortParam: providerSortParam + otherEodagSortParam: otherProviderSortParam + sort_order_mapping: + ascending: asc + descending: desc + max_sort_params: 1 + metadata_mapping: + dummy: 'dummy' + products: + S2_MSI_L1C: + productType: '{productType}' + """ + dag.update_providers_config(dummy_provider_config) + # raise an error with more sorting parameters than supported by the provider + with self.assertLogs(level="ERROR") as cm_logs: + dag.search( + provider="dummy_provider", + productType="S2_MSI_L1C", + sortBy=[("eodagSortParam", "ASC"), ("otherEodagSortParam", "ASC")], + ) + self.assertIn( + "Search results can be sorted by only 1 parameter(s) with dummy_provider", + str(cm_logs.output), + ) + @mock.patch("eodag.api.core.EODataAccessGateway._prepare_search", autospec=True) @mock.patch("eodag.plugins.search.qssearch.QueryStringSearch", autospec=True) def test_search_all_must_collect_them_all(self, search_plugin, prepare_seach): @@ -2347,3 +3066,73 @@ def test_get_product_type_from_alias(self): # not existing product type with self.assertRaises(NoMatchingProductType): self.dag.get_product_type_from_alias("JUST_A_TYPE") + + +class TestCoreProviderGroup(TestCoreBase): + group = ("peps", "creodias") + group_name = "testgroup" + + @classmethod + def setUpClass(cls) -> None: + super().setUpClass() + cls.dag = EODataAccessGateway() + providers_configs = cls.dag.providers_config + + setattr(providers_configs[cls.group[0]], "group", cls.group_name) + setattr(providers_configs[cls.group[1]], "group", cls.group_name) + + def test_available_providers_by_group(self) -> None: + """ + The method available_providers returns only one entry for both grouped providers + """ + # drop the grouped names from expected providers, as they are grouped under "testgroup" name + providers = self.dag.available_providers() + providers.remove(self.group[0]) + providers.remove(self.group[1]) + providers.append(self.group_name) + + self.assertCountEqual(self.dag.available_providers(by_group=True), providers) + + def test_list_product_types(self) -> None: + """ + List the product types for the provider group. + EODAG return the merged list of product types from both providers of the group. + """ + + earth_search_products = self.dag.list_product_types( + self.group[0], fetch_providers=False + ) + earth_search_cog_products = self.dag.list_product_types( + self.group[1], fetch_providers=False + ) + + merged_list = list( + { + d["ID"]: d for d in earth_search_products + earth_search_cog_products + }.values() + ) + + self.assertCountEqual( + self.dag.list_product_types(self.group_name, fetch_providers=False), + merged_list, + ) + + def test_get_search_plugins( + self, + ) -> None: + """ + The method _plugins_manager.get_search_plugins is called with provider group + It returns a list containing the 2 grouped plugins + """ + plugin1 = list( + self.dag._plugins_manager.get_search_plugins(provider=self.group[0]) + ) + plugin2 = list( + self.dag._plugins_manager.get_search_plugins(provider=self.group[1]) + ) + + group_plugins = list( + self.dag._plugins_manager.get_search_plugins(provider=self.group_name) + ) + + self.assertCountEqual(group_plugins, [*plugin1, *plugin2]) diff --git a/tests/units/test_download_plugins.py b/tests/units/test_download_plugins.py index d2e6cb608..83b61ccdb 100644 --- a/tests/units/test_download_plugins.py +++ b/tests/units/test_download_plugins.py @@ -19,23 +19,34 @@ import os import shutil import stat +import tarfile import unittest +import zipfile +from itertools import chain from pathlib import Path from tempfile import NamedTemporaryFile, TemporaryDirectory, gettempdir +from typing import Any, Callable, Dict from unittest import mock import responses import yaml +from eodag.api.product.metadata_mapping import DEFAULT_METADATA_MAPPING +from eodag.utils import ProgressCallback +from eodag.utils.exceptions import DownloadError +from tests import TEST_RESOURCES_PATH from tests.context import ( DEFAULT_STREAM_REQUESTS_TIMEOUT, HTTP_REQ_TIMEOUT, + NOT_AVAILABLE, OFFLINE_STATUS, ONLINE_STATUS, USER_AGENT, EOProduct, + HTTPDownload, NotAvailableError, PluginManager, + config, load_default_config, override_config_from_mapping, path_to_uri, @@ -153,39 +164,371 @@ def test_plugins_download_base_prepare_download_dir_permission(self): class TestDownloadPluginHttp(BaseDownloadPluginTest): + def _download_response_archive(self, local_product_as_archive_path: str): + class Response(object): + """Emulation of a response to eodag.plugins.download.http.requests.get method for a zipped product""" + + def __init__(self): + # Using a zipped product file + with open(local_product_as_archive_path, "rb") as fh: + self.__zip_buffer = io.BytesIO(fh.read()) + cl = self.__zip_buffer.getbuffer().nbytes + self.headers = {"content-length": cl} + self.url = "http://foo.bar" + + def __enter__(self): + return self + + def __exit__(self, *args: Any): + pass + + def iter_content(self, **kwargs: Any): + with self.__zip_buffer as fh: + while True: + chunk = fh.read(kwargs["chunk_size"]) + if not chunk: + break + yield chunk + + def raise_for_status(self): + pass + + return Response() + + def _set_download_simulation( + self, + mock_requests_session: Callable[[], None], + local_product_as_archive_path: str, + ): + mock_requests_session.return_value = self._download_response_archive( + local_product_as_archive_path + ) + + def _dummy_product( + self, provider: str, properties: Dict[str, Any], productType: str + ): + return EOProduct( + provider, + properties, + kwargs={"productType": productType}, + ) + + def _dummy_downloadable_product( + self, + mock_requests_session: Callable[[], None], + local_product_as_archive_path: str, + provider: str, + properties: Dict[str, Any], + productType: str, + ): + self._set_download_simulation( + mock_requests_session, local_product_as_archive_path + ) + dl_config = config.PluginConfig.from_mapping( + { + "base_uri": "fake_base_uri", + "outputs_prefix": self.output_dir, + "extract": False, + "delete_archive": False, + } + ) + downloader = HTTPDownload(provider=provider, config=dl_config) + product = self._dummy_product(provider, properties, productType) + product.register_downloader(downloader, None) + return product + @mock.patch("eodag.plugins.download.http.requests.Session.request", autospec=True) - def test_plugins_download_http_ok(self, mock_requests_session_request): - """HTTPDownload.download() must create an outputfile""" + def test_plugins_download_http_zip_file_ok(self, mock_requests_session): + """HTTPDownload.download() must keep the output as it is when it is a zip file""" + + provider = "creodias" + download_url = ( + "https://zipper.creodias.eu/download/8ff765a2-e089-465d-a48f-cc27008a0962" + ) + local_filename = "S2A_MSIL1C_20180101T105441_N0206_R051_T31TDH_20180101T124911" + local_product_as_archive_path = os.path.abspath( + os.path.join( + TEST_RESOURCES_PATH, + "products", + "as_archive", + "{}.zip".format(local_filename), + ) + ) + product_type = "S2_MSI_L1C" + platform = "S2A" + instrument = "MSI" + + eoproduct_props = { + "id": "9deb7e78-9341-5530-8fe8-f81fd99c9f0f", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [0.495928592903789, 44.22596415476343], + [1.870237286761489, 44.24783068396879], + [1.888683014192297, 43.25939191053712], + [0.536772323136669, 43.23826255332707], + [0.495928592903789, 44.22596415476343], + ] + ], + }, + "productType": product_type, + "platform": "Sentinel-2", + "platformSerialIdentifier": platform, + "instrument": instrument, + "title": local_filename, + "downloadLink": download_url, + } + + # Put an empty string as value of properties which are not relevant for the test + eoproduct_props.update( + {key: "" for key in DEFAULT_METADATA_MAPPING if key not in eoproduct_props} + ) + + product = self._dummy_downloadable_product( + mock_requests_session, + local_product_as_archive_path, + provider, + eoproduct_props, + product_type, + ) + outputs_extension = getattr( + product.downloader.config, "outputs_extension", ".zip" + ) + path = product.download() + + self.assertTrue( + path == os.path.join(self.output_dir, product.properties["title"] + ".zip") + and os.path.isfile(path) + and outputs_extension == ".zip" + and zipfile.is_zipfile(path) + ) + + # check if the hidden directory ".downloaded" have been created with the product zip file + self.assertEqual(len(os.listdir(self.output_dir)), 2) + + mock_requests_session.assert_called_once_with( + mock.ANY, + "get", + product.remote_location, + stream=True, + auth=None, + params={}, + headers=USER_AGENT, + timeout=DEFAULT_STREAM_REQUESTS_TIMEOUT, + ) + + @mock.patch("eodag.plugins.download.http.requests.Session.request", autospec=True) + def test_plugins_download_http_tar_file_with_zip_extension_ok( + self, mock_requests_session + ): + """HTTPDownload.download() must change the outputs extension from '.zip' to '.tar' and keep the content + of the output as it is when it is a tar file and outputs extension is set to '.zip'""" + + provider = "wekeo" + download_url = ( + "https://prism-dem-open.copernicus.eu/pd-desk-open-access/prismDownload/" + "COP-DEM_GLO-30-DGED__2022_1/Copernicus_DSM_10_S90_00_W141_00.tar" + ) + local_filename = "Copernicus_DSM_10_S90_00_W141_00" + local_product_as_archive_path = os.path.abspath( + os.path.join( + TEST_RESOURCES_PATH, + "products", + "as_archive", + "{}.tar".format(local_filename), + ) + ) + product_type = "COP_DEM_GLO30_DGED" + platform = None + instrument = None + + eoproduct_props = { + "id": "Copernicus_DSM_10_S90_00_W141_00", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-142, -89], + [-142, -87], + [-140, -87], + [-140, -89], + [-142, -89], + ] + ], + }, + "productType": product_type, + "platform": "TerraSAR", + "platformSerialIdentifier": platform, + "instrument": instrument, + "title": local_filename, + "downloadLink": download_url, + } + + # Put an empty string as value of properties which are not relevant for the test + eoproduct_props.update( + {key: "" for key in DEFAULT_METADATA_MAPPING if key not in eoproduct_props} + ) + + product = self._dummy_downloadable_product( + mock_requests_session, + local_product_as_archive_path, + provider, + eoproduct_props, + product_type, + ) + outputs_extension = getattr( + product.downloader.config, "outputs_extension", ".zip" + ) + path = product.download() + + self.assertTrue( + path == os.path.join(self.output_dir, product.properties["title"] + ".tar") + and os.path.isfile(path) + and outputs_extension == ".zip" + and tarfile.is_tarfile(path) + ) + + # check if the hidden directory ".downloaded" have been created with the product zip file + self.assertEqual(len(os.listdir(self.output_dir)), 2) + + mock_requests_session.assert_called_once_with( + mock.ANY, + "get", + product.remote_location, + stream=True, + auth=None, + params={}, + headers=USER_AGENT, + timeout=DEFAULT_STREAM_REQUESTS_TIMEOUT, + ) + + @mock.patch( + "eodag.plugins.download.http.HTTPDownload._stream_download", autospec=True + ) + def test_plugins_download_http_nonzip_file_with_zip_extension_ok( + self, mock_stream_download + ): + """HTTPDownload.download() must create an output directory + when the result is a non-zip file with a '.zip' outputs extension""" plugin = self.get_download_plugin(self.product) + outputs_extension = getattr(plugin.config, "outputs_extension", ".zip") self.product.location = self.product.remote_location = "http://somewhere" self.product.properties["id"] = "someproduct" + mock_stream_download.return_value = chain(iter([b"a"])) + progress_callback = ProgressCallback(disable=True) - path = plugin.download(self.product, outputs_prefix=self.output_dir) + path = plugin.download( + self.product, + outputs_prefix=self.output_dir, + progress_callback=progress_callback, + ) - self.assertEqual(path, os.path.join(self.output_dir, "dummy_product")) - self.assertTrue(os.path.isfile(path)) + self.assertTrue( + path == os.path.join(self.output_dir, "dummy_product") + and os.path.isdir(path) + and outputs_extension == ".zip" + ) - mock_requests_session_request.assert_called_once() + file_path = os.path.join(path, os.listdir(path)[0]) + self.assertTrue( + len(os.listdir(path)) == 1 + and os.path.isfile(file_path) + and file_path.find(".zip") == -1 + and not (zipfile.is_zipfile(file_path) or tarfile.is_tarfile(file_path)) + ) - @mock.patch("eodag.plugins.download.http.requests.Session.request", autospec=True) + # check if the hidden directory ".downloaded" have been created with the one of the product + self.assertEqual(len(os.listdir(self.output_dir)), 2) + + mock_stream_download.assert_called_once_with( + plugin, + self.product, + None, + progress_callback, + outputs_prefix=self.output_dir, + outputs_extension=outputs_extension, + ) + + @mock.patch( + "eodag.plugins.download.http.HTTPDownload._stream_download", autospec=True + ) + def test_plugins_download_http_file_without_zip_extension_ok( + self, mock_stream_download + ): + """HTTPDownload.download() must create an output directory + when the result is a file without a '.zip' outputs extension""" + + # we use a provider having '.nc' as outputs file extension in its configuration + product = EOProduct( + "meteoblue", + dict( + geometry="POINT (0 0)", + title="dummy_product", + id="dummy", + ), + ) + + mock_stream_download.return_value = chain(iter([b"a"])) + + plugin = self.get_download_plugin(product) + outputs_extension = getattr(plugin.config, "outputs_extension", ".zip") + product.location = product.remote_location = "http://somewhere" + product.properties["id"] = "someproduct" + progress_callback = ProgressCallback(disable=True) + + path = plugin.download( + product, outputs_prefix=self.output_dir, progress_callback=progress_callback + ) + + self.assertTrue( + path == os.path.join(self.output_dir, "dummy_product") + and os.path.isdir(path) + and not outputs_extension == ".zip" + ) + + file_path = os.path.join(path, os.listdir(path)[0]) + self.assertTrue( + len(os.listdir(path)) == 1 + and os.path.isfile(file_path) + and file_path.find(".zip") == -1 + and not (zipfile.is_zipfile(file_path) or tarfile.is_tarfile(file_path)) + ) + + # check if the hidden directory ".downloaded" have been created with the one of the product + self.assertEqual(len(os.listdir(self.output_dir)), 2) + + mock_stream_download.assert_called_once_with( + plugin, + product, + None, + progress_callback, + outputs_prefix=self.output_dir, + outputs_extension=outputs_extension, + ) + + @mock.patch( + "eodag.plugins.download.http.HTTPDownload._stream_download", autospec=True + ) @mock.patch("eodag.plugins.download.http.requests.head", autospec=True) @mock.patch("eodag.plugins.download.http.requests.get", autospec=True) def test_plugins_download_http_ignore_assets( - self, mock_requests_get, mock_requests_head, mock_requests_session + self, mock_requests_get, mock_requests_head, mock_stream_download ): """HTTPDownload.download() must ignore assets if configured to""" plugin = self.get_download_plugin(self.product) self.product.location = ( self.product.remote_location - ) = "http://somewhere/dowload_from_location" + ) = "http://somewhere/download_from_location" self.product.properties["id"] = "someproduct" self.product.assets.clear() self.product.assets.update({"foo": {"href": "http://somewhere/download_asset"}}) mock_requests_get.return_value.__enter__.return_value.iter_content.side_effect = lambda *x, **y: io.BytesIO( b"some content" ) + mock_stream_download.return_value = chain(iter([b"a"])) # download asset if ignore_assets = False plugin.config.ignore_assets = False @@ -197,24 +540,25 @@ def test_plugins_download_http_ignore_assets( params=plugin.config.dl_url_params, headers=USER_AGENT, timeout=DEFAULT_STREAM_REQUESTS_TIMEOUT, + verify=True, ) - mock_requests_session.assert_not_called() + mock_stream_download.assert_not_called() # re-enable product download self.product.location = self.product.remote_location shutil.rmtree(path) mock_requests_get.reset_mock() - mock_requests_session.reset_mock() + mock_stream_download.reset_mock() # download using remote_location if ignore_assets = True plugin.config.ignore_assets = True path = plugin.download(self.product, outputs_prefix=self.output_dir) mock_requests_get.assert_not_called() - mock_requests_session.assert_called_once() + mock_stream_download.assert_called_once() # re-enable product download self.product.location = self.product.remote_location - os.remove(path) + shutil.rmtree(path) mock_requests_get.reset_mock() - mock_requests_session.reset_mock() + mock_stream_download.reset_mock() # download asset if ignore_assets unset del plugin.config.ignore_assets @@ -226,8 +570,41 @@ def test_plugins_download_http_ignore_assets( params=plugin.config.dl_url_params, headers=USER_AGENT, timeout=DEFAULT_STREAM_REQUESTS_TIMEOUT, + verify=True, ) - mock_requests_session.assert_not_called() + mock_stream_download.assert_not_called() + + @mock.patch("eodag.plugins.download.http.requests.head", autospec=True) + @mock.patch("eodag.plugins.download.http.requests.get", autospec=True) + def test_plugins_download_http_ignore_assets_without_ssl( + self, mock_requests_get, mock_requests_head + ): + """HTTPDownload.download() must ignore assets if configured to""" + + plugin = self.get_download_plugin(self.product) + self.product.location = ( + self.product.remote_location + ) = "http://somewhere/download_from_location" + self.product.properties["id"] = "someproduct" + self.product.assets.clear() + self.product.assets.update({"foo": {"href": "http://somewhere/download_asset"}}) + mock_requests_get.return_value.__enter__.return_value.iter_content.side_effect = lambda *x, **y: io.BytesIO( + b"some content" + ) + # download asset if ssl_verify = False + plugin.config.ssl_verify = False + + plugin.download(self.product, outputs_prefix=self.output_dir) + mock_requests_get.assert_called_once_with( + self.product.assets["foo"]["href"], + stream=True, + auth=None, + params=plugin.config.dl_url_params, + headers=USER_AGENT, + timeout=DEFAULT_STREAM_REQUESTS_TIMEOUT, + verify=False, + ) + del plugin.config.ssl_verify @mock.patch("eodag.plugins.download.http.requests.head", autospec=True) @mock.patch("eodag.plugins.download.http.requests.get", autospec=True) @@ -256,11 +633,7 @@ def test_plugins_download_http_assets_filename_from_href( self.assertEqual(path, os.path.join(self.output_dir, "dummy_product")) self.assertTrue(os.path.isdir(path)) self.assertTrue( - os.path.isfile( - os.path.join( - self.output_dir, "dummy_product", "mal_for_matted", "something" - ) - ) + os.path.isfile(os.path.join(self.output_dir, "dummy_product", "something")) ) # Check if the GET request has been called for both size request and download request @@ -272,6 +645,7 @@ def test_plugins_download_http_assets_filename_from_href( params=plugin.config.dl_url_params, headers=USER_AGENT, timeout=DEFAULT_STREAM_REQUESTS_TIMEOUT, + verify=True, ) # Check if the HEAD request has been called once for size & filename request mock_requests_head.assert_called_once_with( @@ -311,6 +685,99 @@ def test_plugins_download_http_assets_filename_from_get( ) ) + @mock.patch( + "eodag.plugins.download.http.ProgressCallback.__call__", + autospec=True, + ) + @mock.patch("eodag.plugins.download.http.requests.head", autospec=True) + @mock.patch("eodag.plugins.download.http.requests.get", autospec=True) + def test_plugins_download_http_assets_interrupt( + self, mock_requests_get, mock_requests_head, mock_progress_callback + ): + """HTTPDownload.download() must download assets to a temporary file""" + + plugin = self.get_download_plugin(self.product) + self.product.location = self.product.remote_location = "http://somewhere" + self.product.properties["id"] = "someproduct" + self.product.assets.clear() + self.product.assets.update({"foo": {"href": "http://somewhere/something"}}) + mock_requests_get.return_value.__enter__.return_value.iter_content.return_value = io.BytesIO( + b"some content" + ) + mock_requests_get.return_value.__enter__.return_value.headers = { + "content-disposition": '; filename = "somethingelse"' + } + mock_requests_head.return_value.headers = {"content-disposition": ""} + # ProgressCallback is called twice in HTTPDownload._download_assets. The + # temporary asset file is created after the first call. + progress_callback_exception = Exception("Interrupt assets download") + mock_progress_callback.side_effect = [ + mock.DEFAULT, + progress_callback_exception, + ] + with self.assertRaises(Exception) as cm: + plugin.download(self.product, outputs_prefix=self.output_dir) + # Interrupted download + self.assertEqual(progress_callback_exception, cm.exception) + # Product location not changed + self.assertEqual(self.product.location, "http://somewhere") + self.assertEqual(self.product.remote_location, "http://somewhere") + # Temp file created + self.assertTrue( + os.path.exists( + os.path.join(self.output_dir, "dummy_product", "somethingelse~") + ) + ) + # Asset file not created + self.assertFalse( + os.path.exists( + os.path.join(self.output_dir, "dummy_product", "somethingelse") + ) + ) + + @mock.patch("eodag.plugins.download.http.requests.head", autospec=True) + @mock.patch("eodag.plugins.download.http.requests.get", autospec=True) + def test_plugins_download_http_assets_resume( + self, mock_requests_get, mock_requests_head + ): + """HTTPDownload.download() must resume the interrupted download of assets""" + + plugin = self.get_download_plugin(self.product) + self.product.location = self.product.remote_location = "http://somewhere" + self.product.properties["id"] = "someproduct" + self.product.assets.clear() + self.product.assets.update({"foo": {"href": "http://somewhere/something"}}) + mock_requests_get.return_value.__enter__.return_value.iter_content.return_value = io.BytesIO( + b"some content" + ) + mock_requests_get.return_value.__enter__.return_value.headers = { + "content-disposition": '; filename = "somethingelse"' + } + mock_requests_head.return_value.headers = {"content-disposition": ""} + # Create directory structure and temp file + os.makedirs(os.path.join(self.output_dir, "dummy_product")) + with open( + os.path.join(self.output_dir, "dummy_product", "somethingelse~"), + "w", + ): + pass + path = plugin.download(self.product, outputs_prefix=self.output_dir) + # Product directory created + self.assertEqual(path, os.path.join(self.output_dir, "dummy_product")) + self.assertTrue(os.path.isdir(path)) + # Asset file created + self.assertTrue( + os.path.isfile( + os.path.join(self.output_dir, "dummy_product", "somethingelse") + ) + ) + # Temp file removed + self.assertFalse( + os.path.exists( + os.path.join(self.output_dir, "dummy_product", "somethingelse~") + ) + ) + @mock.patch("eodag.plugins.download.http.requests.head", autospec=True) @mock.patch("eodag.plugins.download.http.requests.get", autospec=True) def test_plugins_download_http_asset_filter( @@ -469,6 +936,23 @@ def test_plugins_download_http_assets_size( plugin.download(self.product, outputs_prefix=temp_dir) mock_progress_callback_reset.assert_called_once_with(mock.ANY, total=4 + 4) + # unknown size + mock_requests_get.return_value.__enter__.return_value.headers.pop( + "content-disposition" + ) + mock_progress_callback_reset.reset_mock() + self.product.location = "http://somewhere" + self.product.assets.clear() + self.product.assets.update( + { + "foo": {"href": "http://somewhere/a"}, + "bar": {"href": "http://somewhere/b"}, + } + ) + with TemporaryDirectory() as temp_dir: + plugin.download(self.product, outputs_prefix=temp_dir) + mock_progress_callback_reset.assert_called_once_with(mock.ANY, total=None) + def test_plugins_download_http_one_local_asset( self, ): @@ -537,6 +1021,95 @@ def test_plugins_download_http_several_local_assets( # empty product download directory should have been removed self.assertFalse(Path(os.path.join(self.output_dir, "dummy_product")).exists()) + def test_plugins_download_http_order_download_cop_ads( + self, + ): + """HTTPDownload.download must order the product if needed""" + + self.product.provider = "cop_ads" + self.product.product_type = "CAMS_EAC4" + product_dataset = "cams-global-reanalysis-eac4" + + plugin = self.get_download_plugin(self.product) + auth = self.get_auth_plugin(self.product.provider) + auth.config.credentials = {"username": "john", "password": "doe"} + self.product.register_downloader(plugin, auth) + + endpoint = "https://ads.atmosphere.copernicus.eu/api/v2" + self.product.properties["orderLink"] = ( + f"{endpoint}/resources/{product_dataset}" + '?{"foo": "bar"}' + ) + self.product.properties["storageStatus"] = "OFFLINE" + self.product.location = self.product.remote_location = ( + NOT_AVAILABLE + '?{"foo": "bar"}' + ) + + @responses.activate(registry=responses.registries.OrderedRegistry) + def run(): + responses.add( + responses.POST, + f"{endpoint}/resources/{product_dataset}", + status=200, + content_type="application/json", + body=b'{"state": "queued", "request_id": "dummy_request_id"}', + auto_calculate_content_length=True, + ) + responses.add( + responses.GET, + f"{endpoint}/tasks/dummy_request_id", + status=200, + content_type="application/json", + body=b'{"state": "running", "request_id": "dummy_request_id"}', + auto_calculate_content_length=True, + ) + responses.add( + responses.GET, + f"{endpoint}/tasks/dummy_request_id", + status=200, + content_type="application/json", + body=( + b'{"state": "completed", ' + b'"request_id": "dummy_request_id", ' + b'"location": "http://somewhere/download/dummy_request_id"}' + ), + auto_calculate_content_length=True, + ) + responses.add( + responses.GET, + "http://somewhere/download/dummy_request_id", + status=200, + content_type="application/octet-stream", + adding_headers={"content-disposition": ""}, + body=b"some content", + auto_calculate_content_length=True, + ) + + output_data_path = self.output_dir + + # expected values + expected_remote_location = "http://somewhere/download/dummy_request_id" + expected_order_status_link = f"{endpoint}/tasks/dummy_request_id" + expected_path = os.path.join( + output_data_path, self.product.properties["title"] + ) + # download + path = self.product.download( + outputs_prefix=output_data_path, + wait=0.001 / 60, + timeout=0.2 / 60, + ) + self.assertEqual(self.product.remote_location, expected_remote_location) + self.assertEqual( + self.product.properties["downloadLink"], expected_remote_location + ) + self.assertEqual( + self.product.properties["orderStatusLink"], expected_order_status_link + ) + self.assertEqual(path, expected_path) + self.assertEqual(self.product.location, path_to_uri(expected_path)) + + run() + @mock.patch("eodag.plugins.download.http.requests.request", autospec=True) def test_plugins_download_http_order_get(self, mock_request): """HTTPDownload.orderDownload() must request using orderLink and GET protocol""" @@ -544,19 +1117,29 @@ def test_plugins_download_http_order_get(self, mock_request): self.product.properties["orderLink"] = "http://somewhere/order" self.product.properties["storageStatus"] = OFFLINE_STATUS - auth_plugin = self.get_auth_plugin(self.product.provider) - auth_plugin.config.credentials = {"username": "foo", "password": "bar"} - auth = auth_plugin.authenticate() - - plugin.orderDownload(self.product, auth=auth) - - mock_request.assert_called_once_with( - method="get", - url=self.product.properties["orderLink"], - auth=auth, - headers=USER_AGENT, - timeout=HTTP_REQ_TIMEOUT, - ) + # customized timeout + timeout_backup = getattr(plugin.config, "timeout", None) + plugin.config.timeout = 10 + try: + auth_plugin = self.get_auth_plugin(self.product.provider) + auth_plugin.config.credentials = {"username": "foo", "password": "bar"} + auth = auth_plugin.authenticate() + + plugin.orderDownload(self.product, auth=auth) + + mock_request.assert_called_once_with( + method="GET", + url=self.product.properties["orderLink"], + auth=auth, + headers=USER_AGENT, + timeout=10, + verify=True, + ) + finally: + if timeout_backup: + plugin.config.timeout = timeout_backup + else: + del plugin.config.timeout @mock.patch("eodag.plugins.download.http.requests.request", autospec=True) def test_plugins_download_http_order_post(self, mock_request): @@ -573,30 +1156,37 @@ def test_plugins_download_http_order_post(self, mock_request): self.product.properties["orderLink"] = "http://somewhere/order" plugin.orderDownload(self.product, auth=auth) mock_request.assert_called_once_with( - method="post", + method="POST", url=self.product.properties["orderLink"], auth=auth, headers=USER_AGENT, timeout=HTTP_REQ_TIMEOUT, + verify=True, ) # orderLink with query query args mock_request.reset_mock() self.product.properties["orderLink"] = "http://somewhere/order?foo=bar" plugin.orderDownload(self.product, auth=auth) mock_request.assert_called_once_with( - method="post", + method="POST", url="http://somewhere/order", auth=auth, headers=USER_AGENT, timeout=HTTP_REQ_TIMEOUT, json={"foo": ["bar"]}, + verify=True, ) def test_plugins_download_http_order_status(self): """HTTPDownload.orderDownloadStatus() must request status using orderStatusLink""" plugin = self.get_download_plugin(self.product) - plugin.config.order_status_percent = "progress_percentage" - plugin.config.order_status_error = {"that": "failed"} + plugin.config.order_status = { + "metadata_mapping": { + "percent": "$.json.progress_percentage", + "that": "$.json.that", + }, + "error": {"that": "failed"}, + } self.product.properties["orderStatusLink"] = "http://somewhere/order-status" auth_plugin = self.get_auth_plugin(self.product.provider) @@ -613,15 +1203,9 @@ def run(): json={"progress_percentage": 50, "that": "failed"}, ) - with self.assertLogs(level="INFO") as cm: + with self.assertRaises(DownloadError): plugin.orderDownloadStatus(self.product, auth=auth) - self.assertEqual( - [ - f"INFO:eodag.download.http:{self.product.properties['title']} order status: 50%", - 'WARNING:eodag.download.http:{"progress_percentage": 50, "that": "failed"}', - ], - cm.output, - ) + self.assertIn( list(USER_AGENT.items())[0], responses.calls[0].request.headers.items() ) @@ -632,13 +1216,16 @@ def run(): def test_plugins_download_http_order_status_search_again(self): """HTTPDownload.orderDownloadStatus() must search again after success if needed""" plugin = self.get_download_plugin(self.product) - plugin.config.order_status_success = {"status": "great-success"} - plugin.config.order_status_on_success = { - "need_search": True, - "result_type": "xml", - "results_entry": "//entry", - "metadata_mapping": { - "downloadLink": "foo/text()", + plugin.config.order_status = { + "metadata_mapping": {"status": "$.json.status"}, + "success": {"status": "great-success"}, + "on_success": { + "need_search": True, + "result_type": "xml", + "results_entry": "//entry", + "metadata_mapping": { + "downloadLink": "foo/text()", + }, }, } self.product.properties["orderStatusLink"] = "http://somewhere/order-status" @@ -906,7 +1493,7 @@ def test_plugins_download_aws_no_safe_build_no_flatten_top_dirs( plugin.download(self.product, outputs_prefix=self.output_dir) mock_get_authenticated_objects.assert_called_once_with( - plugin, "somebucket", "path/to/some", None + plugin, "somebucket", "path/to/some", {} ) self.assertEqual(mock_get_chunk_dest_path.call_count, 0) self.assertEqual(mock_finalize_s2_safe_product.call_count, 0) @@ -949,7 +1536,7 @@ def test_plugins_download_aws_no_safe_build_flatten_top_dirs( plugin.download(self.product, outputs_prefix=self.output_dir) mock_get_authenticated_objects.assert_called_once_with( - plugin, "somebucket", "path/to/some", None + plugin, "somebucket", "path/to/some", {} ) self.assertEqual(mock_get_chunk_dest_path.call_count, 0) self.assertEqual(mock_finalize_s2_safe_product.call_count, 0) @@ -1014,14 +1601,13 @@ def test_plugins_download_aws_safe_build( self.product.properties["tileInfo"], headers=USER_AGENT, timeout=HTTP_REQ_TIMEOUT, + verify=True, ) self.assertEqual(mock_get_authenticated_objects.call_count, 2) mock_get_authenticated_objects.assert_any_call( - plugin, "somebucket", "path/to/some", None - ) - mock_get_authenticated_objects.assert_any_call( - plugin, "example", "here/is", None + plugin, "somebucket", "path/to/some", {} ) + mock_get_authenticated_objects.assert_any_call(plugin, "example", "here/is", {}) self.assertEqual(mock_get_chunk_dest_path.call_count, 2) mock_get_chunk_dest_path.assert_any_call( plugin, product=self.product, chunk=mock.ANY, build_safe=True @@ -1096,9 +1682,10 @@ def test_plugins_download_aws_safe_build_assets( self.product.properties["tileInfo"], headers=USER_AGENT, timeout=HTTP_REQ_TIMEOUT, + verify=True, ) mock_get_authenticated_objects.assert_called_once_with( - plugin, "example", "", None + plugin, "example", "", {} ) self.assertEqual(mock_get_chunk_dest_path.call_count, 4) mock_get_chunk_dest_path.assert_any_call( diff --git a/tests/units/test_eoproduct.py b/tests/units/test_eoproduct.py index 4e908a173..32af96192 100644 --- a/tests/units/test_eoproduct.py +++ b/tests/units/test_eoproduct.py @@ -22,7 +22,6 @@ import pathlib import shutil import tempfile -import urllib.parse import zipfile import geojson @@ -69,7 +68,7 @@ def test_eoproduct_default_geom(self): self._dummy_product(properties={"geometry": NOT_AVAILABLE}) product = self._dummy_product( - properties={"geometry": NOT_AVAILABLE, "defaultGeometry": "0 0 1 1"} + properties={"geometry": NOT_AVAILABLE, "defaultGeometry": (0, 0, 1, 1)} ) self.assertEqual(product.geometry.bounds, (0.0, 0.0, 1.0, 1.0)) @@ -384,13 +383,15 @@ def test_eoproduct_download_http_extract(self): # Check that the extracted dir has at least one file, there are more # but that should be enough. self.assertGreaterEqual(len(list(product_dir_path.glob("**/*"))), 1) - # The zip file should is around - product_zip_file = product_dir_path.with_suffix(".SAFE.zip") + # The zip file should be around + product_zip_file = product_dir_path.with_suffix(".zip") self.assertTrue(product_zip_file.is_file) finally: # Teardown self._clean_product(product_dir_path) + # TODO: add a test on tarfiles extraction + def test_eoproduct_download_http_dynamic_options(self): """eoproduct.download must accept the download options to be set automatically""" # Setup @@ -426,7 +427,7 @@ def test_eoproduct_download_http_dynamic_options(self): # but that should be enough. self.assertGreaterEqual(len(list(product_dir_path.glob("**/*"))), 1) # The downloaded zip file is still around - product_zip_file = product_dir_path.with_suffix(".SAFE.zip") + product_zip_file = product_dir_path.with_suffix(".zip") self.assertTrue(product_zip_file.is_file) finally: # Teardown (all the created files are within outputs_prefix) @@ -497,9 +498,7 @@ def test_eoproduct_register_downloader_resolve_ok(self): ) self.assertEqual( downloadable_product.properties["otherProperty"], - urllib.parse.quote( - f"{downloadable_product.downloader.config.outputs_prefix}/also/resolved" - ), + f"{downloadable_product.downloader.config.outputs_prefix}/also/resolved", ) def test_eoproduct_register_downloader_resolve_ignored(self): @@ -513,23 +512,23 @@ def test_eoproduct_register_downloader_resolve_ignored(self): properties=dict( self.eoproduct_props, **{ - "downloadLink": "%257B/cannot/be/resolved", - "otherProperty": "%/%s/neither/resolved", + "downloadLink": "%(257B/cannot/be/resolved", + "otherProperty": "%(/%s/neither/resolved", }, ) ) ) - self.assertEqual(downloadable_product.location, "%257B/cannot/be/resolved") + self.assertEqual(downloadable_product.location, "%(257B/cannot/be/resolved") self.assertEqual( - downloadable_product.remote_location, "%257B/cannot/be/resolved" + downloadable_product.remote_location, "%(257B/cannot/be/resolved" ) self.assertEqual( downloadable_product.properties["downloadLink"], - "%257B/cannot/be/resolved", + "%(257B/cannot/be/resolved", ) self.assertEqual( downloadable_product.properties["otherProperty"], - "%/%s/neither/resolved", + "%(/%s/neither/resolved", ) needed_logs = [ diff --git a/tests/units/test_http_server.py b/tests/units/test_http_server.py index a7eb76027..f47acbdbc 100644 --- a/tests/units/test_http_server.py +++ b/tests/units/test_http_server.py @@ -15,6 +15,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +from __future__ import annotations import importlib import json @@ -23,17 +24,30 @@ import unittest from pathlib import Path from tempfile import TemporaryDirectory +from typing import Any, Dict, List, Optional, Union +from unittest.mock import MagicMock, Mock import geojson +import httpx +import responses from fastapi.testclient import TestClient from shapely.geometry import box -from eodag.utils import USER_AGENT, MockResponse -from eodag.utils.exceptions import TimeOutError -from tests import mock +from eodag.config import PluginConfig +from eodag.plugins.authentication.base import Authentication +from eodag.plugins.download.base import Download +from eodag.rest.config import Settings +from eodag.rest.types.queryables import StacQueryables +from eodag.utils import USER_AGENT, MockResponse, StreamResponse +from eodag.utils.exceptions import NotAvailableError, TimeOutError +from tests import mock, temporary_environment from tests.context import ( DEFAULT_ITEMS_PER_PAGE, HTTP_REQ_TIMEOUT, + NOT_AVAILABLE, + OFFLINE_STATUS, + ONLINE_STATUS, + STAGING_STATUS, TEST_RESOURCES_PATH, AuthenticationError, SearchResult, @@ -72,10 +86,10 @@ def setUpClass(cls): ) # import after having mocked home_dir because it launches http server (and EODataAccessGateway) - # reload eodag.rest.utils to prevent eodag_api cache conflicts - import eodag.rest.utils + # reload eodag.rest.core to prevent eodag_api cache conflicts + import eodag.rest.core - importlib.reload(eodag.rest.utils) + importlib.reload(eodag.rest.core) from eodag.rest import server as eodag_http_server cls.eodag_http_server = eodag_http_server @@ -160,62 +174,33 @@ def test_forward(self): resp_json = json.loads(response.content.decode("utf-8")) self.assertEqual(resp_json["links"][0]["href"], "httpz://bar/") - @mock.patch( - "eodag.rest.utils.eodag_api.search", - autospec=True, - return_value=( - SearchResult.from_geojson( - { - "features": [ - { - "properties": { - "snowCover": None, - "resolution": None, - "completionTimeFromAscendingNode": "2018-02-16T00:12:14" - ".035Z", - "keyword": {}, - "productType": "OCN", - "downloadLink": ( - "https://peps.cnes.fr/resto/collections/S1/" - "578f1768-e66e-5b86-9363-b19f8931cc7b/download" - ), - "eodag_provider": "peps", - "eodag_product_type": "S1_SAR_OCN", - "platformSerialIdentifier": "S1A", - "cloudCover": 0, - "title": "S1A_WV_OCN__2SSV_20180215T235323_" - "20180216T001213_020624_023501_0FD3", - "orbitNumber": 20624, - "instrument": "SAR-C SAR", - "abstract": None, - "eodag_search_intersection": { - "coordinates": [ - [ - [89.590721, 2.614019], - [89.771805, 2.575546], - [89.809341, 2.756323], - [89.628258, 2.794767], - [89.590721, 2.614019], - ] - ], - "type": "Polygon", - }, - "organisationName": None, - "startTimeFromAscendingNode": "2018-02-15T23:53:22" - ".871Z", - "platform": None, - "sensorType": None, - "processingLevel": None, - "orbitType": None, - "topicCategory": None, - "orbitDirection": None, - "parentIdentifier": None, - "sensorMode": None, - "quicklook": None, - }, - "id": "578f1768-e66e-5b86-9363-b19f8931cc7b", - "type": "Feature", - "geometry": { + def mock_search_result(self): + """generate eodag_api.search mock results""" + search_result = SearchResult.from_geojson( + { + "features": [ + { + "properties": { + "snowCover": None, + "resolution": None, + "completionTimeFromAscendingNode": "2018-02-16T00:12:14" + ".035Z", + "keyword": {}, + "productType": "OCN", + "downloadLink": ( + "https://peps.cnes.fr/resto/collections/S1/" + "578f1768-e66e-5b86-9363-b19f8931cc7b/download" + ), + "eodag_provider": "peps", + "eodag_product_type": "S1_SAR_OCN", + "platformSerialIdentifier": "S1A", + "cloudCover": 0, + "title": "S1A_WV_OCN__2SSV_20180215T235323_" + "20180216T001213_020624_023501_0FD3", + "orbitNumber": 20624, + "instrument": "SAR-C SAR", + "abstract": None, + "eodag_search_intersection": { "coordinates": [ [ [89.590721, 2.614019], @@ -227,56 +212,57 @@ def test_forward(self): ], "type": "Polygon", }, + "organisationName": None, + "startTimeFromAscendingNode": "2018-02-15T23:53:22" ".871Z", + "platform": None, + "sensorType": None, + "processingLevel": None, + "orbitType": None, + "topicCategory": None, + "orbitDirection": None, + "parentIdentifier": None, + "sensorMode": None, + "quicklook": None, + "storageStatus": ONLINE_STATUS, + "providerProperty": "foo", }, - { - "properties": { - "snowCover": None, - "resolution": None, - "completionTimeFromAscendingNode": "2018-02-17T00:12:14" - ".035Z", - "keyword": {}, - "productType": "OCN", - "downloadLink": ( - "https://peps.cnes.fr/resto/collections/S1/" - "578f1768-e66e-5b86-9363-b19f8931cc7c/download" - ), - "eodag_provider": "peps", - "eodag_product_type": "S1_SAR_OCN", - "platformSerialIdentifier": "S1A", - "cloudCover": 0, - "title": "S1A_WV_OCN__2SSV_20180216T235323_" - "20180217T001213_020624_023501_0FD3", - "orbitNumber": 20624, - "instrument": "SAR-C SAR", - "abstract": None, - "eodag_search_intersection": { - "coordinates": [ - [ - [89.590721, 2.614019], - [89.771805, 2.575546], - [89.809341, 2.756323], - [89.628258, 2.794767], - [89.590721, 2.614019], - ] - ], - "type": "Polygon", - }, - "organisationName": None, - "startTimeFromAscendingNode": "2018-02-16T23:53:22" - ".871Z", - "platform": None, - "sensorType": None, - "processingLevel": None, - "orbitType": None, - "topicCategory": None, - "orbitDirection": None, - "parentIdentifier": None, - "sensorMode": None, - "quicklook": None, - }, - "id": "578f1768-e66e-5b86-9363-b19f8931cc7c", - "type": "Feature", - "geometry": { + "id": "578f1768-e66e-5b86-9363-b19f8931cc7b", + "type": "Feature", + "geometry": { + "coordinates": [ + [ + [89.590721, 2.614019], + [89.771805, 2.575546], + [89.809341, 2.756323], + [89.628258, 2.794767], + [89.590721, 2.614019], + ] + ], + "type": "Polygon", + }, + }, + { + "properties": { + "snowCover": None, + "resolution": None, + "completionTimeFromAscendingNode": "2018-02-17T00:12:14" + ".035Z", + "keyword": {}, + "productType": "OCN", + "downloadLink": ( + "https://peps.cnes.fr/resto/collections/S1/" + "578f1768-e66e-5b86-9363-b19f8931cc7c/download" + ), + "eodag_provider": "peps", + "eodag_product_type": "S1_SAR_OCN", + "platformSerialIdentifier": "S1A", + "cloudCover": 0, + "title": "S1A_WV_OCN__2SSV_20180216T235323_" + "20180217T001213_020624_023501_0FD3", + "orbitNumber": 20624, + "instrument": "SAR-C SAR", + "abstract": None, + "eodag_search_intersection": { "coordinates": [ [ [89.590721, 2.614019], @@ -288,31 +274,66 @@ def test_forward(self): ], "type": "Polygon", }, + "organisationName": None, + "startTimeFromAscendingNode": "2018-02-16T23:53:22" ".871Z", + "platform": None, + "sensorType": None, + "processingLevel": None, + "orbitType": None, + "topicCategory": None, + "orbitDirection": None, + "parentIdentifier": None, + "sensorMode": None, + "quicklook": None, + "storageStatus": OFFLINE_STATUS, }, - ], - "type": "FeatureCollection", - } - ), - 2, - ), - ) + "id": "578f1768-e66e-5b86-9363-b19f8931cc7c", + "type": "Feature", + "geometry": { + "coordinates": [ + [ + [89.590721, 2.614019], + [89.771805, 2.575546], + [89.809341, 2.756323], + [89.628258, 2.794767], + [89.590721, 2.614019], + ] + ], + "type": "Polygon", + }, + }, + ], + "type": "FeatureCollection", + } + ) + config = PluginConfig() + config.priority = 0 + for p in search_result: + p.downloader = Download("peps", config) + p.downloader_auth = Authentication("peps", config) + search_result.number_matched = len(search_result) + return search_result + + @mock.patch("eodag.rest.core.eodag_api.search", autospec=True) def _request_valid_raw( self, - url, - mock_search, - expected_search_kwargs=None, - protocol="GET", - post_data=None, - search_call_count=None, - ): - if protocol == "GET": - response = self.app.get(url, follow_redirects=True) - else: - response = self.app.post( - url, - data=json.dumps(post_data), - follow_redirects=True, - ) + url: str, + mock_search: Mock, + expected_search_kwargs: Union[ + List[Dict[str, Any]], Dict[str, Any], None + ] = None, + method: str = "GET", + post_data: Optional[Any] = None, + search_call_count: Optional[int] = None, + ) -> httpx.Response: + mock_search.return_value = self.mock_search_result() + response = self.app.request( + method, + url, + json=post_data, + follow_redirects=True, + headers={"Content-Type": "application/json"} if method == "POST" else {}, + ) if search_call_count is not None: self.assertEqual(mock_search.call_count, search_call_count) @@ -338,17 +359,19 @@ def _request_valid_raw( def _request_valid( self, - url, - expected_search_kwargs=None, - protocol="GET", - post_data=None, - search_call_count=None, - check_links=True, - ): + url: str, + expected_search_kwargs: Union[ + List[Dict[str, Any]], Dict[str, Any], None + ] = None, + method: str = "GET", + post_data: Optional[Any] = None, + search_call_count: Optional[int] = None, + check_links: bool = True, + ) -> Any: response = self._request_valid_raw( url, expected_search_kwargs=expected_search_kwargs, - protocol=protocol, + method=method, post_data=post_data, search_call_count=search_call_count, ) @@ -361,7 +384,7 @@ def _request_valid( return result - def assert_links_valid(self, element): + def assert_links_valid(self, element: Any): """Checks that element links are valid""" self.assertIsInstance(element, dict) self.assertIn("links", element, f"links not found in {str(element)}") @@ -388,7 +411,9 @@ def assert_links_valid(self, element): self.assertIn(link["rel"], known_rel) # must start with app base-url assert link["href"].startswith(str(self.app.base_url)) - # must be valid + # HEAD must be valid + self._request_valid_raw(link["href"], method="HEAD") + # GET must be valid self._request_valid_raw(link["href"]) if link["rel"] in required_links_rel: @@ -401,21 +426,36 @@ def assert_links_valid(self, element): f"missing {required_links_rel} relation(s) in {links}", ) - def _request_not_valid(self, url): - response = self.app.get(url, follow_redirects=True) + def _request_not_valid( + self, url: str, method: str = "GET", post_data: Optional[Any] = None + ) -> None: + response = self.app.request( + method, + url, + json=post_data, + follow_redirects=True, + headers={"Content-Type": "application/json"} if method == "POST" else {}, + ) response_content = json.loads(response.content.decode("utf-8")) self.assertEqual(400, response.status_code) self.assertIn("description", response_content) - self.assertIn("invalid", response_content["description"].lower()) - def _request_not_found(self, url): + def _request_not_found(self, url: str): response = self.app.get(url, follow_redirects=True) response_content = json.loads(response.content.decode("utf-8")) self.assertEqual(404, response.status_code) self.assertIn("description", response_content) - self.assertIn("not found", response_content["description"]) + self.assertIn("NotAvailableError", response_content["description"]) + + def _request_accepted(self, url: str): + response = self.app.get(url, follow_redirects=True) + response_content = json.loads(response.content.decode("utf-8")) + self.assertEqual(202, response.status_code) + self.assertIn("description", response_content) + self.assertIn("location", response_content) + return response_content def test_request_params(self): self._request_not_valid(f"search?collections={self.tested_product_type}&bbox=1") @@ -435,6 +475,8 @@ def test_request_params(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, + raise_errors=False, + count=True, ), ) self._request_valid( @@ -444,19 +486,66 @@ def test_request_params(self): page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, geom=box(0, 43, 1, 44, ccw=False), + raise_errors=False, + count=True, ), ) + def test_items_response(self): + """Returned items properties must be mapped as expected""" + resp_json = self._request_valid( + f"search?collections={self.tested_product_type}", + ) + res = resp_json.features + self.assertEqual(len(res), 2) + first_props = res[0]["properties"] + self.assertCountEqual( + res[0].keys(), + [ + "type", + "stac_version", + "stac_extensions", + "bbox", + "collection", + "links", + "assets", + "id", + "geometry", + "properties", + ], + ) + self.assertEqual(len(first_props["providers"]), 1) + self.assertCountEqual( + first_props["providers"][0].keys(), + ["name", "description", "roles", "url", "priority"], + ) + self.assertEqual(first_props["providers"][0]["name"], "peps") + self.assertEqual(first_props["providers"][0]["roles"], ["host"]) + self.assertEqual(first_props["providers"][0]["url"], "https://peps.cnes.fr") + self.assertEqual(first_props["datetime"], "2018-02-15T23:53:22.871Z") + self.assertEqual(first_props["start_datetime"], "2018-02-15T23:53:22.871Z") + self.assertEqual(first_props["end_datetime"], "2018-02-16T00:12:14.035Z") + self.assertEqual(first_props["license"], "proprietary") + self.assertEqual(first_props["platform"], "S1A") + self.assertEqual(first_props["instruments"], ["SAR-C SAR"]) + self.assertEqual(first_props["eo:cloud_cover"], 0) + self.assertEqual(first_props["sat:absolute_orbit"], 20624) + self.assertEqual(first_props["sar:product_type"], "OCN") + self.assertEqual(first_props["order:status"], "succeeded") + self.assertEqual(res[0]["assets"]["downloadLink"]["storage:tier"], "ONLINE") + self.assertEqual(res[1]["assets"]["downloadLink"]["storage:tier"], "OFFLINE") + self.assertEqual(res[1]["properties"]["order:status"], "orderable") + def test_not_found(self): """A request to eodag server with a not supported product type must return a 404 HTTP error code""" self._request_not_found("search?collections=ZZZ&bbox=0,43,1,44") @mock.patch( - "eodag.rest.utils.eodag_api.search", + "eodag.rest.core.eodag_api.search", autospec=True, side_effect=AuthenticationError("you are not authorized"), ) - def test_auth_error(self, mock_search): + def test_auth_error(self, mock_search: Mock): """A request to eodag server raising a Authentication error must return a 500 HTTP error code""" with self.assertLogs(level="ERROR") as cm_logs: @@ -472,11 +561,11 @@ def test_auth_error(self, mock_search): self.assertEqual(500, response.status_code) @mock.patch( - "eodag.rest.utils.eodag_api.search", + "eodag.rest.core.eodag_api.search", autospec=True, side_effect=TimeOutError("too long"), ) - def test_timeout_error(self, mock_search): + def test_timeout_error(self, mock_search: Mock): """A request to eodag server raising a Authentication error must return a 500 HTTP error code""" with self.assertLogs(level="ERROR") as cm_logs: response = self.app.get( @@ -496,19 +585,23 @@ def test_filter(self): f"search?collections={self.tested_product_type}&bbox=89.65,2.65,89.7,2.7", expected_search_kwargs=dict( productType=self.tested_product_type, + geom=box(89.65, 2.65, 89.7, 2.7, ccw=False), page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - geom=box(89.65, 2.65, 89.7, 2.7, ccw=False), + raise_errors=False, + count=True, ), ) self.assertEqual(len(result1.features), 2) result2 = self._request_valid( - f"search?collections={self.tested_product_type}&bbox=89.65,2.65,89.7,2.7&filter=latestIntersect", + f"search?collections={self.tested_product_type}&bbox=89.65,2.65,89.7,2.7&crunch=filterLatestIntersect", expected_search_kwargs=dict( productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, geom=box(89.65, 2.65, 89.7, 2.7, ccw=False), + raise_errors=False, + count=True, ), ) # only one product is returned with filter=latestIntersect @@ -522,9 +615,11 @@ def test_date_search(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - start="2018-01-20T00:00:00", - end="2018-01-25T00:00:00", + start="2018-01-20T00:00:00.000Z", + end="2018-01-25T00:00:00.000Z", geom=box(0, 43, 1, 44, ccw=False), + raise_errors=False, + count=True, ), ) self._request_valid( @@ -533,8 +628,10 @@ def test_date_search(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - start="2018-01-20T00:00:00", + start="2018-01-20T00:00:00.000Z", geom=box(0, 43, 1, 44, ccw=False), + raise_errors=False, + count=True, ), ) self._request_valid( @@ -543,8 +640,10 @@ def test_date_search(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - end="2018-01-25T00:00:00", + end="2018-01-25T00:00:00.000Z", geom=box(0, 43, 1, 44, ccw=False), + raise_errors=False, + count=True, ), ) self._request_valid( @@ -553,9 +652,11 @@ def test_date_search(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - start="2018-01-20T00:00:00", - end="2018-01-20T00:00:00", + start="2018-01-20T00:00:00.000Z", + end="2018-01-20T00:00:00.000Z", geom=box(0, 43, 1, 44, ccw=False), + raise_errors=False, + count=True, ), ) @@ -568,6 +669,8 @@ def test_date_search_from_items(self): page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, geom=box(0, 43, 1, 44, ccw=False), + raise_errors=False, + count=True, ), ) self._request_valid( @@ -576,9 +679,11 @@ def test_date_search_from_items(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - start="2018-01-20T00:00:00", - end="2018-01-25T00:00:00", + start="2018-01-20T00:00:00.000Z", + end="2018-01-25T00:00:00.000Z", geom=box(0, 43, 1, 44, ccw=False), + raise_errors=False, + count=True, ), ) @@ -590,9 +695,11 @@ def test_date_search_from_catalog_items(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - start="2018-01-01T00:00:00", - end="2018-02-01T00:00:00", + start="2018-01-01T00:00:00Z", + end="2018-02-01T00:00:00Z", geom=box(0, 43, 1, 44, ccw=False), + raise_errors=False, + count=True, ), ) self.assertEqual(len(results.features), 2) @@ -604,9 +711,11 @@ def test_date_search_from_catalog_items(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - start="2018-01-20T00:00:00", - end="2018-01-25T00:00:00", + start="2018-01-20T00:00:00Z", + end="2018-01-25T00:00:00Z", geom=box(0, 43, 1, 44, ccw=False), + raise_errors=False, + count=True, ), ) self.assertEqual(len(results.features), 2) @@ -618,9 +727,11 @@ def test_date_search_from_catalog_items(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - start="2018-01-20T00:00:00", - end="2018-02-01T00:00:00", + start="2018-01-20T00:00:00Z", + end="2018-02-01T00:00:00Z", geom=box(0, 43, 1, 44, ccw=False), + raise_errors=False, + count=True, ), ) self.assertEqual(len(results.features), 2) @@ -642,15 +753,19 @@ def test_catalog_browse(self): ) def test_catalog_browse_date_search(self): - """Browsing catalogs with date filtering through eodag server should return a valid response""" + """ + Browsing catalogs with date filtering through eodag server should return a valid response + """ self._request_valid( f"catalogs/{self.tested_product_type}/year/2018/month/01/items", expected_search_kwargs=dict( productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - start="2018-01-01T00:00:00", - end="2018-02-01T00:00:00", + start="2018-01-01T00:00:00Z", + end="2018-02-01T00:00:00Z", + raise_errors=False, + count=True, ), ) # args & catalog intersection @@ -660,8 +775,10 @@ def test_catalog_browse_date_search(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - start="2018-01-20T00:00:00", - end="2018-02-01T00:00:00", + start="2018-01-20T00:00:00Z", + end="2018-02-01T00:00:00Z", + raise_errors=False, + count=True, ), ) self._request_valid( @@ -670,8 +787,10 @@ def test_catalog_browse_date_search(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - start="2018-01-20T00:00:00", - end="2018-02-01T00:00:00", + start="2018-01-20T00:00:00Z", + end="2018-02-01T00:00:00Z", + raise_errors=False, + count=True, ), ) self._request_valid( @@ -680,8 +799,10 @@ def test_catalog_browse_date_search(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - start="2018-01-01T00:00:00", - end="2018-01-05T00:00:00", + start="2018-01-01T00:00:00Z", + end="2018-01-05T00:00:00Z", + raise_errors=False, + count=True, ), ) self._request_valid( @@ -690,8 +811,10 @@ def test_catalog_browse_date_search(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - start="2018-01-05T00:00:00", - end="2018-01-05T00:00:00", + start="2018-01-05T00:00:00Z", + end="2018-01-05T00:00:00Z", + raise_errors=False, + count=True, ), ) result = self._request_valid( @@ -699,15 +822,44 @@ def test_catalog_browse_date_search(self): ) self.assertEqual(len(result["features"]), 0) + def test_date_search_from_catalog_items_with_provider(self): + """Search through eodag server catalog/items endpoint using dates filtering should return a valid response + and the provider should be added to the item link + """ + results = self._request_valid( + f"catalogs/{self.tested_product_type}/year/2018/month/01/items?bbox=0,43,1,44&provider=peps", + expected_search_kwargs=dict( + productType=self.tested_product_type, + page=1, + items_per_page=DEFAULT_ITEMS_PER_PAGE, + start="2018-01-01T00:00:00Z", + end="2018-02-01T00:00:00Z", + provider="peps", + geom=box(0, 43, 1, 44, ccw=False), + raise_errors=True, + count=True, + ), + ) + self.assertEqual(len(results.features), 2) + links = results.features[0]["links"] + self_link = None + for link in links: + if link["rel"] == "self": + self_link = link + self.assertIsNotNone(self_link) + self.assertIn("?provider=peps", self_link["href"]) + self.assertEqual( + results["features"][0]["properties"]["peps:providerProperty"], "foo" + ) + def test_search_item_id_from_catalog(self): """Search by id through eodag server /catalog endpoint should return a valid response""" self._request_valid( f"catalogs/{self.tested_product_type}/items/foo", expected_search_kwargs={ "id": "foo", - "provider": None, "productType": self.tested_product_type, - "_dc_qs": None, + "provider": None, }, ) @@ -717,9 +869,8 @@ def test_search_item_id_from_collection(self): f"collections/{self.tested_product_type}/items/foo", expected_search_kwargs={ "id": "foo", - "provider": None, "productType": self.tested_product_type, - "_dc_qs": None, + "provider": None, }, ) @@ -734,7 +885,7 @@ def test_cloud_cover_post_search(self): """POST search with cloudCover filtering through eodag server should return a valid response""" self._request_valid( "search", - protocol="POST", + method="POST", post_data={ "collections": [self.tested_product_type], "bbox": [0, 43, 1, 44], @@ -746,6 +897,8 @@ def test_cloud_cover_post_search(self): items_per_page=DEFAULT_ITEMS_PER_PAGE, cloudCover=10, geom=box(0, 43, 1, 44, ccw=False), + raise_errors=False, + count=True, ), ) @@ -753,7 +906,7 @@ def test_intersects_post_search(self): """POST search with intersects filtering through eodag server should return a valid response""" self._request_valid( "search", - protocol="POST", + method="POST", post_data={ "collections": [self.tested_product_type], "intersects": { @@ -766,6 +919,8 @@ def test_intersects_post_search(self): page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, geom=box(0, 43, 1, 44, ccw=False), + raise_errors=False, + count=True, ), ) @@ -773,7 +928,7 @@ def test_date_post_search(self): """POST search with datetime filtering through eodag server should return a valid response""" self._request_valid( "search", - protocol="POST", + method="POST", post_data={ "collections": [self.tested_product_type], "datetime": "2018-01-20/2018-01-25", @@ -782,13 +937,15 @@ def test_date_post_search(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - start="2018-01-20T00:00:00", - end="2018-01-25T00:00:00", + start="2018-01-20T00:00:00.000Z", + end="2018-01-25T00:00:00.000Z", + raise_errors=False, + count=True, ), ) self._request_valid( "search", - protocol="POST", + method="POST", post_data={ "collections": [self.tested_product_type], "datetime": "2018-01-20/..", @@ -797,12 +954,14 @@ def test_date_post_search(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - start="2018-01-20T00:00:00", + start="2018-01-20T00:00:00.000Z", + raise_errors=False, + count=True, ), ) self._request_valid( "search", - protocol="POST", + method="POST", post_data={ "collections": [self.tested_product_type], "datetime": "../2018-01-25", @@ -811,12 +970,14 @@ def test_date_post_search(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - end="2018-01-25T00:00:00", + end="2018-01-25T00:00:00.000Z", + raise_errors=False, + count=True, ), ) self._request_valid( "search", - protocol="POST", + method="POST", post_data={ "collections": [self.tested_product_type], "datetime": "2018-01-20", @@ -825,8 +986,10 @@ def test_date_post_search(self): productType=self.tested_product_type, page=1, items_per_page=DEFAULT_ITEMS_PER_PAGE, - start="2018-01-20T00:00:00", - end="2018-01-20T00:00:00", + start="2018-01-20T00:00:00.000Z", + end="2018-01-20T00:00:00.000Z", + raise_errors=False, + count=True, ), ) @@ -834,7 +997,7 @@ def test_ids_post_search(self): """POST search with ids filtering through eodag server should return a valid response""" self._request_valid( "search", - protocol="POST", + method="POST", post_data={ "collections": [self.tested_product_type], "ids": ["foo", "bar"], @@ -864,14 +1027,14 @@ def test_search_provider_in_downloadlink(self): """Search through eodag server and check that specified provider appears in downloadLink""" # with provider (get) response = self._request_valid( - f"search?collections={self.tested_product_type}&provider=onda" + f"search?collections={self.tested_product_type}&provider=peps" ) response_items = [f for f in response["features"]] self.assertTrue( all( [ i["assets"]["downloadLink"]["href"].endswith( - "download?provider=onda" + "download?provider=peps" ) for i in response_items ] @@ -880,15 +1043,15 @@ def test_search_provider_in_downloadlink(self): # with provider (post) response = self._request_valid( "search", - protocol="POST", - post_data={"collections": [self.tested_product_type], "provider": "onda"}, + method="POST", + post_data={"collections": [self.tested_product_type], "provider": "peps"}, ) response_items = [f for f in response["features"]] self.assertTrue( all( [ i["assets"]["downloadLink"]["href"].endswith( - "download?provider=onda" + "download?provider=peps" ) for i in response_items ] @@ -900,33 +1063,70 @@ def test_search_provider_in_downloadlink(self): self.assertTrue( all( [ - i["assets"]["downloadLink"]["href"].endswith("download") + i["assets"]["downloadLink"]["href"].endswith( + "download?provider=peps" + ) for i in response_items ] ) ) + def test_assets_alt_url_blacklist(self): + """Search through eodag server must not have alternate link if in blacklist""" + # no blacklist + response = self._request_valid(f"search?collections={self.tested_product_type}") + response_items = [f for f in response["features"]] + self.assertTrue( + all(["alternate" in i["assets"]["downloadLink"] for i in response_items]), + "alternate links are missing", + ) + + # with blacklist + try: + Settings.from_environment.cache_clear() + with temporary_environment( + EODAG_ORIGIN_URL_BLACKLIST="https://peps.cnes.fr" + ): + response = self._request_valid( + f"search?collections={self.tested_product_type}" + ) + response_items = [f for f in response["features"]] + self.assertTrue( + all( + [ + "alternate" not in i["assets"]["downloadLink"] + for i in response_items + ] + ), + "alternate links were not removed", + ) + finally: + Settings.from_environment.cache_clear() + @mock.patch( - "eodag.rest.utils.eodag_api.guess_product_type", autospec=True, return_value=[] + "eodag.rest.core.eodag_api.guess_product_type", autospec=True, return_value=[] ) @mock.patch( - "eodag.rest.utils.eodag_api.list_product_types", + "eodag.rest.core.eodag_api.list_product_types", autospec=True, - return_value=[{"ID": "S2_MSI_L1C"}, {"ID": "S2_MSI_L2A"}], + return_value=[ + {"_id": "S2_MSI_L1C", "ID": "S2_MSI_L1C", "title": "SENTINEL2 Level-1C"}, + {"_id": "S2_MSI_L2A", "ID": "S2_MSI_L2A"}, + ], ) - def test_list_product_types_ok(self, list_pt, guess_pt): + def test_list_product_types_ok(self, list_pt: Mock, guess_pt: Mock): """A simple request for product types with(out) a provider must succeed""" for url in ("/collections",): r = self.app.get(url) - self.assertTrue(guess_pt.called) self.assertTrue(list_pt.called) self.assertEqual(200, r.status_code) self.assertListEqual( ["S2_MSI_L1C", "S2_MSI_L2A"], [ - it["title"] - for it in json.loads(r.content.decode("utf-8")).get("links", []) - if it["rel"] == "child" + col["id"] + for col in json.loads(r.content.decode("utf-8")).get( + "collections", [] + ) ], ) @@ -936,57 +1136,59 @@ def test_list_product_types_ok(self, list_pt, guess_pt): self.assertTrue(guess_pt.called) self.assertTrue(list_pt.called) self.assertEqual(200, r.status_code) + resp_json = json.loads(r.content.decode("utf-8")) self.assertListEqual( ["S2_MSI_L1C"], - [ - it["title"] - for it in json.loads(r.content.decode("utf-8")).get("links", []) - if it["rel"] == "child" - ], + [col["id"] for col in resp_json.get("collections", [])], ) + self.assertEqual(resp_json["collections"][0]["title"], "SENTINEL2 Level-1C") @mock.patch( - "eodag.rest.utils.eodag_api.list_product_types", + "eodag.rest.core.eodag_api.list_product_types", autospec=True, - return_value=[{"ID": "S2_MSI_L1C"}, {"ID": "S2_MSI_L2A"}], + return_value=[ + {"_id": "S2_MSI_L1C", "ID": "S2_MSI_L1C"}, + {"_id": "S2_MSI_L2A", "ID": "S2_MSI_L2A"}, + ], ) - def test_list_product_types_nok(self, list_pt): + def test_list_product_types_nok(self, list_pt: Mock): """A request for product types with a not supported filter must return all product types""" - url = "/collections?platform=gibberish" + url = "/collections?gibberish=gibberish" r = self.app.get(url) self.assertTrue(list_pt.called) self.assertEqual(200, r.status_code) self.assertListEqual( ["S2_MSI_L1C", "S2_MSI_L2A"], [ - it["title"] - for it in json.loads(r.content.decode("utf-8")).get("links", []) - if it["rel"] == "child" + col["id"] + for col in json.loads(r.content.decode("utf-8")).get("collections", []) ], ) @mock.patch( - "eodag.plugins.authentication.generic.GenericAuth.authenticate", + "eodag.plugins.authentication.base.Authentication.authenticate", autospec=True, ) @mock.patch( - "eodag.plugins.download.http.HTTPDownload._stream_download_dict", + "eodag.plugins.download.base.Download._stream_download_dict", autospec=True, ) - def test_download_item_from_catalog(self, mock_download, mock_auth): + def test_download_item_from_catalog_stream( + self, mock_download: Mock, mock_auth: Mock + ): """Download through eodag server catalog should return a valid response""" expected_file = "somewhere.zip" - mock_download.return_value = dict( - content=(i for i in range(0)), + mock_download.return_value = StreamResponse( + content=iter(bytes(i) for i in range(0)), headers={ "content-disposition": f"attachment; filename={expected_file}", }, ) response = self._request_valid_raw( - f"catalogs/{self.tested_product_type}/items/foo/download" + f"catalogs/{self.tested_product_type}/items/foo/download?provider=peps" ) mock_download.assert_called_once() @@ -997,31 +1199,30 @@ def test_download_item_from_catalog(self, mock_download, mock_auth): self.assertEqual(response_filename, expected_file) @mock.patch( - "eodag.plugins.apis.usgs.UsgsApi.authenticate", + "eodag.plugins.authentication.base.Authentication.authenticate", + autospec=True, + ) + @mock.patch( + "eodag.plugins.download.base.Download._stream_download_dict", autospec=True, ) @mock.patch( - "eodag.rest.utils.eodag_api.download", + "eodag.rest.core.eodag_api.download", autospec=True, ) - def test_download_item_from_collection_api_plugin(self, mock_download, mock_auth): + def test_download_item_from_collection_no_stream( + self, mock_download: Mock, mock_stream_download: Mock, mock_auth: Mock + ): """Download through eodag server catalog should return a valid response""" # download should be performed locally then deleted if streaming is not available tmp_dl_dir = TemporaryDirectory() expected_file = f"{tmp_dl_dir.name}.tar" Path(expected_file).touch() mock_download.return_value = expected_file - - # use an external python API provider for this test and reset downloader - self._request_valid_raw.patchings[0].kwargs["return_value"][0][ - 0 - ].provider = "usgs" - self._request_valid_raw.patchings[0].kwargs["return_value"][0][ - 0 - ].downloader = None + mock_stream_download.side_effect = NotImplementedError() self._request_valid_raw( - "collections/some-collection/items/foo/download?provider=usgs" + f"collections/{self.tested_product_type}/items/foo/download?provider=peps" ) mock_download.assert_called_once() # downloaded file should have been immediatly deleted from the server @@ -1029,6 +1230,103 @@ def test_download_item_from_collection_api_plugin(self, mock_download, mock_auth expected_file ), f"File {expected_file} should have been deleted" + @mock.patch( + "eodag.rest.core.eodag_api.search", + autospec=True, + ) + def test_download_offline_item_from_catalog(self, mock_search): + """Download an offline item through eodag server catalog should return a + response with HTTP Status 202""" + # mock_search_result returns 2 search results, only keep one + two_results = self.mock_search_result() + product = two_results[0] + mock_search.return_value = SearchResult([product], 1) + product.downloader_auth = MagicMock() + product.downloader.orderDownload = MagicMock(return_value={"status": "foo"}) + product.downloader.orderDownloadStatus = MagicMock() + product.downloader.order_response_process = MagicMock() + product.downloader._stream_download_dict = MagicMock( + side_effect=NotAvailableError("Product offline. Try again later.") + ) + product.properties["orderLink"] = "http://somewhere?order=foo" + product.properties["orderStatusLink"] = f"{NOT_AVAILABLE}?foo=bar" + + # ONLINE product with error + product.properties["storageStatus"] = ONLINE_STATUS + # status 404 and no order try + self._request_not_found( + f"catalogs/{self.tested_product_type}/items/foo/download" + ) + product.downloader.orderDownload.assert_not_called() + product.downloader.orderDownloadStatus.assert_not_called() + product.downloader.order_response_process.assert_not_called() + product.downloader._stream_download_dict.assert_called_once() + product.downloader._stream_download_dict.reset_mock() + + # OFFLINE product with error + product.properties["storageStatus"] = OFFLINE_STATUS + # status 202 and order once and no status check + resp_json = self._request_accepted( + f"catalogs/{self.tested_product_type}/items/foo/download" + ) + product.downloader.orderDownload.assert_called_once() + product.downloader.orderDownload.reset_mock() + product.downloader.orderDownloadStatus.assert_not_called() + product.downloader.order_response_process.assert_called() + product.downloader.order_response_process.reset_mock() + product.downloader._stream_download_dict.assert_not_called() + self.assertIn("status=foo", resp_json["location"]) + + # OFFLINE product with error and no orderLink + product.properties["storageStatus"] = OFFLINE_STATUS + order_link = product.properties.pop("orderLink") + # status 202 and no order try + resp_json = self._request_accepted( + f"catalogs/{self.tested_product_type}/items/foo/download" + ) + product.downloader.orderDownload.assert_not_called() + product.downloader.orderDownloadStatus.assert_not_called() + product.downloader.order_response_process.assert_not_called() + product.downloader._stream_download_dict.assert_called_once() + product.downloader._stream_download_dict.reset_mock() + + # STAGING product and available orderStatusLink + product.properties["storageStatus"] = STAGING_STATUS + product.properties["orderLink"] = order_link + product.properties["orderStatusLink"] = "http://somewhere?foo=bar" + # status 202 and no order but status checked and no download try + self._request_accepted( + f"catalogs/{self.tested_product_type}/items/foo/download" + ) + product.downloader.orderDownload.assert_not_called() + product.downloader.orderDownloadStatus.assert_called_once() + product.downloader.orderDownloadStatus.reset_mock() + product.downloader.order_response_process.assert_called() + product.downloader.order_response_process.reset_mock() + product.downloader._stream_download_dict.assert_not_called() + + def test_root(self): + """Request to / should return a valid response""" + resp_json = self._request_valid("", check_links=False) + self.assertEqual(resp_json["id"], "eodag-stac-api") + self.assertEqual(resp_json["title"], "eodag-stac-api") + self.assertEqual(resp_json["description"], "STAC API provided by EODAG") + + # customize root info + try: + Settings.from_environment.cache_clear() + with temporary_environment( + EODAG_STAC_API_LANDING_ID="foo-id", + EODAG_STAC_API_TITLE="foo title", + EODAG_STAC_API_DESCRIPTION="foo description", + ): + resp_json = self._request_valid("", check_links=False) + self.assertEqual(resp_json["id"], "foo-id") + self.assertEqual(resp_json["title"], "foo title") + self.assertEqual(resp_json["description"], "foo description") + finally: + Settings.from_environment.cache_clear() + def test_conformance(self): """Request to /conformance should return a valid response""" self._request_valid("conformance", check_links=False) @@ -1056,10 +1354,17 @@ def test_stac_extension_oseo(self): self.assertEqual(response["allOf"][0]["$ref"], "#/definitions/oseo") def test_queryables(self): - """Request to /queryables should return a valid response.""" - resp = self._request_valid("queryables", check_links=False) + """Request to /queryables without parameter should return a valid response.""" + stac_common_queryables = list(StacQueryables.default_properties.keys()) + + # neither provider nor product type are specified + res_no_product_type_no_provider = self._request_valid( + "queryables", check_links=False + ) + + # the response is in StacQueryables class format self.assertListEqual( - list(resp.keys()), + list(res_no_product_type_no_provider.keys()), [ "$schema", "$id", @@ -1070,37 +1375,55 @@ def test_queryables(self): "additionalProperties", ], ) + self.assertTrue(res_no_product_type_no_provider["additionalProperties"]) + + # properties from stac common queryables are added and are the only ones of the response + self.assertListEqual( + list(res_no_product_type_no_provider["properties"].keys()), + stac_common_queryables, + ) @mock.patch("eodag.plugins.search.qssearch.requests.get", autospec=True) - def test_queryables_with_provider(self, mock_requests_get): - resp = self._request_valid( - "queryables?provider=planetary_computer", check_links=False + def test_queryables_with_provider(self, mock_requests_get: Mock): + """Request to /queryables with a valid provider as parameter should return a valid response.""" + queryables_path = os.path.join( + TEST_RESOURCES_PATH, "stac/provider_queryables.json" ) - self.assertListEqual( - list(resp.keys()), - [ - "$schema", - "$id", - "type", - "title", - "description", - "properties", - "additionalProperties", - ], + with open(queryables_path) as f: + provider_queryables = json.load(f) + mock_requests_get.return_value = MockResponse( + provider_queryables, status_code=200 + ) + + stac_common_queryables = list(StacQueryables.default_properties.keys()) + provider_stac_queryables_from_queryables_file = [ + "id", + "gsd", + "title", + "s3:gsd", + "datetime", + "geometry", + "platform", + "processing:level", + "s1:processing_level", + "landsat:processing_level", + ] + + # provider is specified without product type + res_no_product_type_with_provider = self._request_valid( + "queryables?provider=planetary_computer", check_links=False ) + mock_requests_get.assert_called_once_with( url="https://planetarycomputer.microsoft.com/api/stac/v1/search/../queryables", timeout=HTTP_REQ_TIMEOUT, headers=USER_AGENT, + verify=True, ) - def test_product_type_queryables(self): - """Request to /collections/{collection_id}/queryables should return a valid response.""" - resp = self._request_valid( - f"collections/{self.tested_product_type}/queryables", check_links=False - ) + # the response is in StacQueryables class format self.assertListEqual( - list(resp.keys()), + list(res_no_product_type_with_provider.keys()), [ "$schema", "$id", @@ -1111,31 +1434,208 @@ def test_product_type_queryables(self): "additionalProperties", ], ) + self.assertTrue(res_no_product_type_with_provider["additionalProperties"]) + + # properties from stac common queryables are added + for p in stac_common_queryables: + self.assertIn( + p, list(res_no_product_type_with_provider["properties"].keys()) + ) + + # properties from provider queryables are added (here the ones of planetary_computer) + for provider_stac_queryable in provider_stac_queryables_from_queryables_file: + self.assertIn( + provider_stac_queryable, res_no_product_type_with_provider["properties"] + ) + + # properties from eodag general provider metadata mapping may be added (here an example with orbitDirection) + stac_od_property = "sat:orbit_state" + self.assertNotIn( + stac_od_property, provider_stac_queryables_from_queryables_file + ) + self.assertIn(stac_od_property, res_no_product_type_with_provider["properties"]) + + def test_queryables_with_provider_error(self): + """Request to /queryables with a wrong provider as parameter should return a UnsupportedProvider error.""" + response = self.app.get( + "queryables?provider=not_supported_provider", follow_redirects=True + ) + response_content = json.loads(response.content.decode("utf-8")) + + self.assertIn("description", response_content) + self.assertIn("UnsupportedProvider", response_content["description"]) + + self.assertEqual(400, response.status_code) + + @mock.patch("eodag.plugins.manager.PluginManager.get_auth_plugin", autospec=True) + def test_product_type_queryables(self, mock_requests_session_post): + """Request to /collections/{collection_id}/queryables should return a valid response.""" + + @responses.activate(registry=responses.registries.OrderedRegistry) + def run(): + queryables_path = os.path.join( + TEST_RESOURCES_PATH, "stac/product_type_queryables.json" + ) + with open(queryables_path) as f: + provider_queryables = json.load(f) + constraints_path = os.path.join(TEST_RESOURCES_PATH, "constraints.json") + with open(constraints_path) as f: + constraints = json.load(f) + wekeo_constraints = {"constraints": constraints} + + planetary_computer_queryables_url = ( + "https://planetarycomputer.microsoft.com/api/stac/v1/search/../collections/" + "sentinel-1-grd/queryables" + ) + norm_planetary_computer_queryables_url = os.path.normpath( + planetary_computer_queryables_url + ).replace("https:/", "https://") + wekeo_constraints_url = ( + "https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/queryable/" + "EO:ESA:DAT:SENTINEL-1" + ) + + stac_common_queryables = list(StacQueryables.default_properties.keys()) + # when product type is given, "collection" item is not used + stac_common_queryables.remove("collection") + + responses.add( + responses.GET, + planetary_computer_queryables_url, + status=200, + json=provider_queryables, + ) + responses.add( + responses.GET, + wekeo_constraints_url, + status=200, + json=wekeo_constraints, + ) + + # no provider is specified with the product type (2 providers get a queryables or constraints file + # among available providers for S1_SAR_GRD for the moment): queryables intersection returned + res_product_type_no_provider = self._request_valid( + "collections/S1_SAR_GRD/queryables", + check_links=False, + ) + self.assertEqual(len(responses.calls), 2) + + # check the mock call on planetary_computer + self.assertEqual( + norm_planetary_computer_queryables_url, responses.calls[0].request.url + ) + self.assertIn(("timeout", 5), responses.calls[0].request.req_kwargs.items()) + self.assertIn( + list(USER_AGENT.items())[0], responses.calls[0].request.headers.items() + ) + self.assertIn( + ("verify", True), responses.calls[0].request.req_kwargs.items() + ) + # check the mock call on wekeo + self.assertEqual(wekeo_constraints_url, responses.calls[1].request.url) + self.assertIn(("timeout", 5), responses.calls[1].request.req_kwargs.items()) + self.assertIn( + list(USER_AGENT.items())[0], responses.calls[1].request.headers.items() + ) + self.assertIn( + ("verify", True), responses.calls[1].request.req_kwargs.items() + ) + + # the response is in StacQueryables class format + self.assertListEqual( + list(res_product_type_no_provider.keys()), + [ + "$schema", + "$id", + "type", + "title", + "description", + "properties", + "additionalProperties", + ], + ) + self.assertFalse(res_product_type_no_provider["additionalProperties"]) + + # properties from stac common queryables are added and are the only ones of the response + self.assertListEqual( + list(res_product_type_no_provider["properties"].keys()), + stac_common_queryables, + ) + # no property are added from providers queryables because none of them + # is shared with all providers for this product type + pl_s1_sar_grd_planetary_computer_queryable = "s1:processing_level" + pl_s1_sar_grd_wekeo_queryable = "processingLevel" + stac_pl_property = "processing:level" + self.assertIn( + pl_s1_sar_grd_planetary_computer_queryable, + provider_queryables["properties"], + ) + for constraint in wekeo_constraints["constraints"]: + self.assertNotIn(pl_s1_sar_grd_wekeo_queryable, constraint) + self.assertNotIn( + stac_pl_property, res_product_type_no_provider["properties"] + ) + + run() + + def test_product_type_queryables_error(self): + """Request to /collections/{collection_id}/queryables with a wrong collection_id + should return a UnsupportedProductType error.""" + response = self.app.get( + "collections/not_supported_product_type/queryables", follow_redirects=True + ) + response_content = json.loads(response.content.decode("utf-8")) + + self.assertIn("description", response_content) + self.assertIn("UnsupportedProductType", response_content["description"]) + + self.assertEqual(400, response.status_code) @mock.patch("eodag.plugins.search.qssearch.requests.get", autospec=True) def test_product_type_queryables_with_provider(self, mock_requests_get): - """Request a collection-specific list of queryables for a given provider.""" - queryables_path = os.path.join(TEST_RESOURCES_PATH, "stac/queryables.json") + """Request a collection-specific list of queryables for a given provider + using a queryables file should return a valid response.""" + queryables_path = os.path.join( + TEST_RESOURCES_PATH, "stac/product_type_queryables.json" + ) with open(queryables_path) as f: provider_queryables = json.load(f) mock_requests_get.return_value = MockResponse( provider_queryables, status_code=200 ) - # no provider specified (only 1 available for the moment) : queryables intresection returned - res_no_provider = self._request_valid( - "collections/S1_SAR_GRD/queryables", + planetary_computer_queryables_url = ( + "https://planetarycomputer.microsoft.com/api/stac/v1/search/../collections/" + "sentinel-1-grd/queryables" + ) + + stac_common_queryables = list(StacQueryables.default_properties.keys()) + # when product type is given, "collection" item is not used + stac_common_queryables.remove("collection") + provider_stac_queryables_from_queryables_file = [ + "id", + "datetime", + "geometry", + "platform", + "processing:level", + ] + + # provider and product type are specified + res_product_type_with_provider = self._request_valid( + "collections/S1_SAR_GRD/queryables?provider=planetary_computer", check_links=False, ) + mock_requests_get.assert_called_once_with( - url="https://planetarycomputer.microsoft.com/api/stac/v1/search/../collections/" - "sentinel-1-grd/queryables", + url=planetary_computer_queryables_url, timeout=HTTP_REQ_TIMEOUT, headers=USER_AGENT, + verify=True, ) - # returned queryables + + # the response is in StacQueryables class format self.assertListEqual( - list(res_no_provider.keys()), + list(res_product_type_with_provider.keys()), [ "$schema", "$id", @@ -1146,27 +1646,107 @@ def test_product_type_queryables_with_provider(self, mock_requests_get): "additionalProperties", ], ) - self.assertListEqual( - list(res_no_provider["properties"].keys()), - ["ids", "geometry", "datetime"], + self.assertFalse(res_product_type_with_provider["additionalProperties"]) + + # properties from stac common queryables are added + for p in stac_common_queryables: + self.assertIn(p, list(res_product_type_with_provider["properties"].keys())) + + # properties from provider product type queryables are added + # (here the ones of S1_SAR_GRD for planetary_computer) + for provider_stac_queryable in provider_stac_queryables_from_queryables_file: + self.assertIn( + provider_stac_queryable, res_product_type_with_provider["properties"] + ) + + # properties may be updated with info from provider queryables if + # info exist (here an example with platformSerialIdentifier) + stac_psi_property = "platform" + self.assertEqual( + "string", provider_queryables["properties"][stac_psi_property]["type"] + ) + self.assertIn( + "string", + res_product_type_with_provider["properties"][stac_psi_property]["type"], ) - self.assertIn("geometry", res_no_provider["properties"]) - self.assertNotIn("s1:processing_level", res_no_provider["properties"]) - mock_requests_get.reset_mock() + # properties from eodag provider metadata mapping may be added (here an example with orbitDirection) + stac_od_property = "sat:orbit_state" + self.assertNotIn( + stac_od_property, provider_stac_queryables_from_queryables_file + ) + self.assertIn(stac_od_property, res_product_type_with_provider["properties"]) - # provider specified + def test_stac_queryables_type(self): res = self._request_valid( - "collections/S1_SAR_GRD/queryables?provider=planetary_computer", + "collections/S2_MSI_L2A/queryables?provider=creodias", check_links=False, ) - mock_requests_get.assert_called_once_with( - url="https://planetarycomputer.microsoft.com/api/stac/v1/search/../collections/" - "sentinel-1-grd/queryables", - timeout=HTTP_REQ_TIMEOUT, + self.assertIn("eo:cloud_cover", res["properties"]) + cloud_cover = res["properties"]["eo:cloud_cover"] + self.assertIn("type", cloud_cover) + self.assertListEqual(["integer", "null"], cloud_cover["type"]) + self.assertIn("min", cloud_cover) + self.assertListEqual([0, None], cloud_cover["min"]) + self.assertIn("max", cloud_cover) + self.assertListEqual([100, None], cloud_cover["max"]) + self.assertIn("processing:level", res["properties"]) + processing_level = res["properties"]["processing:level"] + self.assertListEqual(["string", "null"], processing_level["type"]) + self.assertNotIn( + "min", processing_level + ) # none values are left out in serialization + + @mock.patch("eodag.utils.requests.requests.Session.get", autospec=True) + def test_product_type_queryables_from_constraints( + self, mock_requests_session_constraints: Mock + ): + """Request a collection-specific list of queryables for a given provider + using a constraints file should return a valid response.""" + constraints_path = os.path.join(TEST_RESOURCES_PATH, "constraints.json") + with open(constraints_path) as f: + constraints = json.load(f) + mock_requests_session_constraints.return_value = MockResponse( + constraints, status_code=200 + ) + + stac_common_queryables = list(StacQueryables.default_properties.keys()) + # when product type is given, "collection" item is not used + stac_common_queryables.remove("collection") + provider_queryables_from_constraints_file = [ + "year", + "month", + "day", + "time", + "variable", + "leadtime_hour", + "type", + "api_product_type", + ] + # queryables properties not shared by all constraints must be removed + not_shared_properties = ["leadtime_hour", "type"] + provider_queryables_from_constraints_file = [ + properties + for properties in provider_queryables_from_constraints_file + if properties not in not_shared_properties + ] + default_provider_stac_properties = ["api_product_type", "time", "format"] + + res = self._request_valid( + "collections/ERA5_SL/queryables?provider=cop_cds", + check_links=False, + ) + + mock_requests_session_constraints.assert_called_once_with( + mock.ANY, + "http://datastore.copernicus-climate.eu/c3s/published-forms/c3sprod/" + "reanalysis-era5-single-levels/constraints.json", headers=USER_AGENT, + auth=None, + timeout=5, ) + # the response is in StacQueryables class format self.assertListEqual( list(res.keys()), [ @@ -1179,34 +1759,156 @@ def test_product_type_queryables_with_provider(self, mock_requests_get): "additionalProperties", ], ) + self.assertFalse(res["additionalProperties"]) - # property added from provider queryables - self.assertIn("s1:processing_level", res["properties"]) - # property updated with info from provider queryables - self.assertIn("platform", res["properties"]) - self.assertEqual("string", res["properties"]["platform"]["type"][0]) + # properties from stac common queryables are added + for p in stac_common_queryables: + self.assertIn(p, list(res["properties"].keys())) - @mock.patch("eodag.utils.constraints.requests.get", autospec=True) - def test_product_type_queryables_from_constraints(self, mock_requests_constraints): - constraints_path = os.path.join(TEST_RESOURCES_PATH, "constraints.json") - with open(constraints_path) as f: - constraints = json.load(f) - mock_requests_constraints.return_value = MockResponse( - constraints, status_code=200 + # properties from provider product type queryables and default properties are added + # (here the ones of ERA5_SL for cop_cds) + for provider_stac_queryable in list( + set( + provider_queryables_from_constraints_file + + default_provider_stac_properties + ) + ): + self.assertIn(provider_stac_queryable, res["properties"]) + + def test_cql_post_search(self): + self._request_valid( + "search", + method="POST", + post_data={ + "filter": { + "op": "and", + "args": [ + { + "op": "in", + "args": [{"property": "id"}, ["foo", "bar"]], + }, + { + "op": "=", + "args": [ + {"property": "collection"}, + self.tested_product_type, + ], + }, + ], + } + }, + search_call_count=2, + expected_search_kwargs=[ + { + "provider": None, + "id": "foo", + "productType": self.tested_product_type, + }, + { + "provider": None, + "id": "bar", + "productType": self.tested_product_type, + }, + ], ) - res = self._request_valid( - "collections/ERA5_SL/queryables?provider=cop_cds", - check_links=False, + + self._request_valid( + "search", + method="POST", + post_data={ + "filter-lang": "cql2-json", + "filter": { + "op": "and", + "args": [ + { + "op": "=", + "args": [ + {"property": "collection"}, + self.tested_product_type, + ], + }, + {"op": "=", "args": [{"property": "eo:cloud_cover"}, 10]}, + { + "op": "t_intersects", + "args": [ + {"property": "datetime"}, + { + "interval": [ + "2018-01-20T00:00:00Z", + "2018-01-25T00:00:00Z", + ] + }, + ], + }, + { + "op": "s_intersects", + "args": [ + {"property": "geometry"}, + { + "type": "Polygon", + "coordinates": [ + [[0, 43], [0, 44], [1, 44], [1, 43], [0, 43]] + ], + }, + ], + }, + ], + }, + }, + expected_search_kwargs={ + "productType": "S2_MSI_L1C", + "geom": { + "type": "Polygon", + "coordinates": [[[0, 43], [0, 44], [1, 44], [1, 43], [0, 43]]], + }, + "start": "2018-01-20T00:00:00Z", + "end": "2018-01-25T00:00:00Z", + "cloudCover": 10, + "page": 1, + "items_per_page": 20, + "raise_errors": False, + "count": True, + }, ) - mock_requests_constraints.assert_called_once_with( - "http://datastore.copernicus-climate.eu/c3s/published-forms/c3sprod/" - "reanalysis-era5-single-levels/constraints.json", - headers=USER_AGENT, - timeout=5, + self._request_not_valid( + "search", + method="POST", + post_data={ + "filter": { + "op": "and", + "args": [ + { + "op": "in", + "args": [{"property": "id"}, "foo", "bar"], + }, + { + "op": "=", + "args": [ + {"property": "collections"}, + self.tested_product_type, + ], + }, + ], + } + }, + ) + + @mock.patch("eodag.rest.core.eodag_api.list_product_types", autospec=True) + @mock.patch("eodag.rest.core.eodag_api.guess_product_type", autospec=True) + def test_collection_free_text_search(self, guess_pt: Mock, list_pt: Mock): + """Test STAC Collection free-text search""" + + url = "/collections?q=TERM1,TERM2" + r = self.app.get(url) + list_pt.assert_called_once_with(provider=None, fetch_providers=False) + guess_pt.assert_called_once_with( + free_text="TERM1,TERM2", + platformSerialIdentifier=None, + instrument=None, + platform=None, + missionStartDate=None, + missionEndDate=None, + productType=None, ) - self.assertEqual(10, len(res["properties"])) - self.assertIn("year", res["properties"]) - self.assertIn("ids", res["properties"]) - self.assertIn("geometry", res["properties"]) - self.assertNotIn("collections", res["properties"]) + self.assertEqual(200, r.status_code) diff --git a/tests/units/test_metadata_mapping.py b/tests/units/test_metadata_mapping.py index 78aa672ac..63ae11839 100644 --- a/tests/units/test_metadata_mapping.py +++ b/tests/units/test_metadata_mapping.py @@ -135,6 +135,12 @@ def test_convert_from_ewkt(self): geom = wkt.loads(wkt_str) self.assertEqual(round(geom.x, 1), 2.9) self.assertEqual(round(geom.y, 1), 43.5) + self.assertEqual( + wkt_str, + format_metadata( + to_format, fieldname="geography'SRID=3857;POINT (321976 5390999)'" + ), + ) def test_convert_to_ewkt(self): to_format = "{fieldname#to_ewkt}" @@ -239,6 +245,16 @@ def test_convert_dict_update(self): "{'a': {'title': 'foo'}, 'b': {'href': 'bar', 'title': 'baz'}}", ) + def test_convert_dict_filter(self): + to_format = '{fieldname#dict_filter($[?(href=~"^s3.*")])}' + self.assertEqual( + format_metadata( + to_format, + fieldname={"a": {"href": "https://foo"}, "b": {"href": "s3://bar"}}, + ), + "{'b': {'href': 's3://bar'}}", + ) + def test_convert_slice_str(self): to_format = "{fieldname#slice_str(1,12,2)}" self.assertEqual( @@ -355,36 +371,6 @@ def test_convert_split_id_into_s1_params(self): str(expected), ) - def test_convert_get_processing_level_from_s1_id(self): - to_format = "{id#get_processing_level_from_s1_id}" - self.assertEqual( - format_metadata( - to_format, - id="S1A_IW_GRDH_1SDV_20141126T230844_20141126T230904_003459_0040CE_E073_COG", - ), - "LEVEL1", - ) - - def test_convert_get_sensor_mode_from_s1_id(self): - to_format = "{id#get_sensor_mode_from_s1_id}" - self.assertEqual( - format_metadata( - to_format, - id="S1A_IW_GRDH_1SDV_20141126T230844_20141126T230904_003459_0040CE_E073_COG", - ), - "IW", - ) - - def test_convert_get_processing_level_from_s2_id(self): - to_format = "{id#get_processing_level_from_s2_id}" - self.assertEqual( - format_metadata( - to_format, - id="S2A_MSIL1C_20160602T065342_N0202_R077_T39KVU_20160602T065342", - ), - "S2MSIL1C", - ) - def test_convert_split_id_into_s3_params(self): to_format = "{id#split_id_into_s3_params}" expected = { @@ -419,16 +405,6 @@ def test_convert_split_id_into_s5p_params(self): str(expected), ) - def test_convert_get_processing_level_from_s5p_id(self): - to_format = "{id#get_processing_level_from_s5p_id}" - self.assertEqual( - format_metadata( - to_format, - id="S5P_RPRO_L2__NP_BD7_20180531T223852_20180601T002220_03271_01_010002_20190528T184222", - ), - "L2", - ) - def test_convert_split_cop_dem_id(self): to_format = "{id#split_cop_dem_id}" self.assertEqual( @@ -450,22 +426,6 @@ def test_convert_split_cop_dem_id(self): str([-120, -60, -118, -58]), ) - def test_convert_split_corine_id(self): - self.assertEqual( - format_metadata( - "{id#split_corine_id}", - id="u2006_clc2000_v2020_20u1_raster100m", - ), - "Corine Land Cover 2000", - ) - self.assertEqual( - format_metadata( - "{id#split_corine_id}", - id="u2006_cha0006_v2020_20u1_raster100m", - ), - "Corine Land Change 2000 2006", - ) - def test_convert_to_datetime_dict(self): to_format = "{date#to_datetime_dict(list)}" expected_result = { @@ -529,6 +489,97 @@ def test_convert_get_dates_from_string(self): ), ) + def test_convert_get_hydrological_year(self): + to_format = "{date#get_hydrological_year}" + self.assertEqual( + format_metadata(to_format, date="2010-01-11T17:42:24Z"), str(["2010_11"]) + ) + + def test_convert_to_longitude_latitude(self): + to_format = "{input_geom_unformatted#to_longitude_latitude}" + geometry = ( + """POLYGON ((1.23 43.42, 1.23 43.76, 1.68 43.76, 1.68 43.42, 1.23 43.42))""" + ) + + self.assertEqual( + format_metadata(to_format, input_geom_unformatted=geometry), + str({"lon": 1.455, "lat": 43.59}), + ) + geometry = """POINT (1.23 43.42)""" + + self.assertEqual( + format_metadata(to_format, input_geom_unformatted=geometry), + str({"lon": 1.23, "lat": 43.42}), + ) + + def test_convert_get_variables_from_path(self): + to_format = "{path#get_variables_from_path}" + self.assertEqual( + format_metadata(to_format, path="productA.nc?depth,latitude"), + str(["depth", "latitude"]), + ) + self.assertEqual( + format_metadata(to_format, path="productA.nc"), + str([]), + ) + + def test_convert_dates_from_cmems_id(self): + to_format = "{product_id#dates_from_cmems_id}" + self.assertEqual( + format_metadata( + to_format, product_id="mfwamglocep_2021121102_R20211212_12H.nc" + ), + str( + {"min_date": "2021-12-11T02:00:00Z", "max_date": "2021-12-12T02:00:00Z"} + ), + ) + self.assertEqual( + format_metadata( + to_format, + product_id="glo12_rg_1d-m_20220601-20220601_3D-uovo_hcst_R20220615.nc", + ), + str( + {"min_date": "2022-06-01T00:00:00Z", "max_date": "2022-06-02T00:00:00Z"} + ), + ) + + def test_convert_assets_list_to_dict(self): + # by default, the name of the asset is searched in "title" value + to_format = "{assets#assets_list_to_dict}" + assets_list = [ + {"href": "foo", "title": "asset1", "name": "foo-name"}, + {"href": "bar", "title": "path/to/asset1", "name": "bar-name"}, + {"href": "baz", "title": "path/to/asset2", "name": "baz-name"}, + {"href": "qux", "title": "asset3", "name": "qux-name"}, + ] + expected_result = { + "asset1": assets_list[0], + "path/to/asset1": assets_list[1], + "asset2": assets_list[2], + "asset3": assets_list[3], + } + self.assertEqual( + format_metadata(to_format, assets=assets_list), str(expected_result) + ) + + # we can adapt if the name of the asset is in the value of a different key + to_format = "{assets#assets_list_to_dict(name)}" + assets_list = [ + {"href": "foo", "title": "foo-title", "name": "asset1"}, + {"href": "bar", "title": "bar-title", "name": "path/to/asset1"}, + {"href": "baz", "title": "baz-title", "name": "path/to/asset2"}, + {"href": "qux", "title": "qux-title", "name": "asset3"}, + ] + expected_result = { + "asset1": assets_list[0], + "path/to/asset1": assets_list[1], + "asset2": assets_list[2], + "asset3": assets_list[3], + } + self.assertEqual( + format_metadata(to_format, assets=assets_list), str(expected_result) + ) + class TestMetadataMappingFunctions(unittest.TestCase): def test_get_provider_queryable_key(self): diff --git a/tests/units/test_safe_build.py b/tests/units/test_safe_build.py index 5abbc0c3e..50c17798c 100644 --- a/tests/units/test_safe_build.py +++ b/tests/units/test_safe_build.py @@ -123,9 +123,7 @@ def chunk(): copyfile( os.path.join(TEST_RESOURCES_PATH, "safe_build", "manifest.safe.S1_SAR_GRD"), - os.path.join( - product_path, "%s.SAFE" % prod.properties["title"], "manifest.safe" - ), + os.path.join(product_path, "manifest.safe"), ) with self.assertLogs(self.logger, logging.WARN) as cm: @@ -167,9 +165,7 @@ def chunk(): copyfile( os.path.join(TEST_RESOURCES_PATH, "safe_build", "manifest.safe.S2_MSI_L2A"), - os.path.join( - product_path, "%s.SAFE" % prod.properties["title"], "manifest.safe" - ), + os.path.join(product_path, "manifest.safe"), ) self.awsd.finalize_s2_safe_product(product_path) @@ -213,9 +209,7 @@ def chunk(): copyfile( os.path.join(TEST_RESOURCES_PATH, "safe_build", "manifest.safe.S2_MSI_L1C"), - os.path.join( - product_path, "%s.SAFE" % prod.properties["title"], "manifest.safe" - ), + os.path.join(product_path, "manifest.safe"), ) self.awsd.finalize_s2_safe_product(product_path) diff --git a/tests/units/test_search_plugins.py b/tests/units/test_search_plugins.py index 7b9e80a6f..0dd28fefd 100644 --- a/tests/units/test_search_plugins.py +++ b/tests/units/test_search_plugins.py @@ -15,31 +15,41 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +import ast import json +import os import re +import ssl import unittest from datetime import datetime, timedelta, timezone from pathlib import Path from unittest import mock +from unittest.mock import call import boto3 +import botocore import dateutil import requests import responses import yaml from botocore.stub import Stubber +from pydantic_core import PydanticUndefined from requests import RequestException +from eodag.api.product.metadata_mapping import get_queryable_from_provider +from eodag.utils import deepcopy from eodag.utils.exceptions import TimeOutError from tests.context import ( DEFAULT_MISSION_START_DATE, HTTP_REQ_TIMEOUT, + NOT_AVAILABLE, TEST_RESOURCES_PATH, USER_AGENT, AuthenticationError, EOProduct, MisconfiguredError, PluginManager, + PreparedSearch, RequestError, cached_parse, get_geometry_from_various, @@ -149,6 +159,7 @@ def setUp(self): headers: Cookie: "seeedtoken={apikey}" """ + mundi_config_dict = yaml.safe_load(mundi_config_yaml) override_config_from_mapping(providers_config, mundi_config_dict) self.plugins_manager = PluginManager(providers_config) @@ -161,7 +172,7 @@ def setUp(self): @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True ) - def test_plugins_search_querystringseach_xml_count_and_search_mundi( + def test_plugins_search_querystringsearch_xml_count_and_search_mundi( self, mock__request ): """A query with a QueryStringSearch (mundi here) must return tuple with a list of EOProduct and a number of available products""" # noqa @@ -171,9 +182,11 @@ def test_plugins_search_querystringseach_xml_count_and_search_mundi( mock__request.return_value.content = mundi_resp_search products, estimate = self.mundi_search_plugin.query( - page=1, - items_per_page=2, - auth=self.mundi_auth_plugin, + prep=PreparedSearch( + page=1, + items_per_page=2, + auth_plugin=self.mundi_auth_plugin, + ), **self.search_criteria_s2_msi_l1c, ) @@ -187,17 +200,12 @@ def test_plugins_search_querystringseach_xml_count_and_search_mundi( mundi_products_count = 47 number_of_products = 2 - mock__request.assert_called_once_with( - mock.ANY, - mundi_url_search, - info_message=mock.ANY, - exception_message=mock.ANY, - ) + mock__request.assert_called_once() + self.assertEqual(mock__request.call_args_list[-1][0][1].url, mundi_url_search) + self.assertEqual(estimate, mundi_products_count) self.assertEqual(len(products), number_of_products) self.assertIsInstance(products[0], EOProduct) - # products count extracted from search results - self.assertEqual(self.mundi_search_plugin.total_items_nb, mundi_products_count) @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch.count_hits", autospec=True @@ -205,7 +213,7 @@ def test_plugins_search_querystringseach_xml_count_and_search_mundi( @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True ) - def test_plugins_search_querystringseach_xml_no_count_and_search_mundi( + def test_plugins_search_querystringsearch_xml_no_count_and_search_mundi( self, mock__request, mock_count_hits ): """A query with a QueryStringSearch (here mundi) without a count""" @@ -215,10 +223,12 @@ def test_plugins_search_querystringseach_xml_no_count_and_search_mundi( mock__request.return_value.content = mundi_resp_search products, estimate = self.mundi_search_plugin.query( - count=False, - page=1, - items_per_page=2, - auth=self.mundi_auth_plugin, + prep=PreparedSearch( + count=False, + page=1, + items_per_page=2, + auth_plugin=self.mundi_auth_plugin, + ), **self.search_criteria_s2_msi_l1c, ) @@ -232,17 +242,12 @@ def test_plugins_search_querystringseach_xml_no_count_and_search_mundi( number_of_products = 2 mock_count_hits.assert_not_called() - mock__request.assert_called_once_with( - mock.ANY, - mundi_url_search, - info_message=mock.ANY, - exception_message=mock.ANY, - ) + mock__request.assert_called_once() + self.assertEqual(mock__request.call_args_list[-1][0][1].url, mundi_url_search) + self.assertIsNone(estimate) self.assertEqual(len(products), number_of_products) self.assertIsInstance(products[0], EOProduct) - # products count should not have been extracted from search results - self.assertIsNone(getattr(self.mundi_search_plugin, "total_items_nb", None)) @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch.count_hits", autospec=True @@ -250,7 +255,7 @@ def test_plugins_search_querystringseach_xml_no_count_and_search_mundi( @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True ) - def test_plugins_search_querystringseach_xml_distinct_product_type_mtd_mapping( + def test_plugins_search_querystringsearch_xml_distinct_product_type_mtd_mapping( self, mock__request, mock_count_hits ): """The metadata mapping for XML QueryStringSearch should not mix specific product-types metadata-mapping""" @@ -268,7 +273,6 @@ def test_plugins_search_querystringseach_xml_distinct_product_type_mtd_mapping( ) products, estimate = search_plugin.query( productType="S1_SAR_GRD", - auth=None, ) self.assertIn("bar", products[0].properties) self.assertEqual(products[0].properties["bar"], "dhus") @@ -279,7 +283,6 @@ def test_plugins_search_querystringseach_xml_distinct_product_type_mtd_mapping( ) products, estimate = search_plugin.query( productType="S1_SAR_SLC", - auth=None, ) self.assertNotIn("bar", products[0].properties) @@ -295,7 +298,10 @@ def setUp(self): @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True ) - def test_plugins_search_querystringseach_count_and_search_peps(self, mock__request): + def test_plugins_search_querystringsearch_count_and_search_peps( + self, mock__request + ): + self.maxDiff = None """A query with a QueryStringSearch (peps here) must return tuple with a list of EOProduct and a number of available products""" # noqa with open(self.provider_resp_dir / "peps_search.json") as f: peps_resp_search = json.load(f) @@ -304,9 +310,11 @@ def test_plugins_search_querystringseach_count_and_search_peps(self, mock__reque peps_resp_search, ] products, estimate = self.peps_search_plugin.query( - page=1, - items_per_page=2, - auth=self.peps_auth_plugin, + prep=PreparedSearch( + page=1, + items_per_page=2, + auth_plugin=self.peps_auth_plugin, + ), **self.search_criteria_s2_msi_l1c, ) @@ -319,17 +327,12 @@ def test_plugins_search_querystringseach_count_and_search_peps(self, mock__reque peps_products_count = 47 number_of_products = 2 - mock__request.assert_called_once_with( - mock.ANY, - peps_url_search, - info_message=mock.ANY, - exception_message=mock.ANY, - ) + mock__request.assert_called_once() + self.assertEqual(mock__request.call_args_list[-1][0][1].url, peps_url_search) + self.assertEqual(estimate, peps_products_count) self.assertEqual(len(products), number_of_products) self.assertIsInstance(products[0], EOProduct) - # products count extracted from search results - self.assertEqual(self.peps_search_plugin.total_items_nb, peps_products_count) @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch.count_hits", autospec=True @@ -337,7 +340,7 @@ def test_plugins_search_querystringseach_count_and_search_peps(self, mock__reque @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True ) - def test_plugins_search_querystringseach_no_count_and_search_peps( + def test_plugins_search_querystringsearch_no_count_and_search_peps( self, mock__request, mock_count_hits ): """A query with a QueryStringSearch (here peps) without a count""" @@ -346,10 +349,12 @@ def test_plugins_search_querystringseach_no_count_and_search_peps( mock__request.return_value = mock.Mock() mock__request.return_value.json.return_value = peps_resp_search products, estimate = self.peps_search_plugin.query( - count=False, - page=1, - items_per_page=2, - auth=self.peps_auth_plugin, + prep=PreparedSearch( + count=False, + page=1, + items_per_page=2, + auth_plugin=self.peps_auth_plugin, + ), **self.search_criteria_s2_msi_l1c, ) @@ -362,17 +367,12 @@ def test_plugins_search_querystringseach_no_count_and_search_peps( number_of_products = 2 mock_count_hits.assert_not_called() - mock__request.assert_called_once_with( - mock.ANY, - peps_url_search, - info_message=mock.ANY, - exception_message=mock.ANY, - ) + mock__request.assert_called_once() + self.assertEqual(mock__request.call_args_list[-1][0][1].url, peps_url_search) + self.assertIsNone(estimate) self.assertEqual(len(products), number_of_products) self.assertIsInstance(products[0], EOProduct) - # products count should not have been extracted from search results - self.assertIsNone(getattr(self.peps_search_plugin, "total_items_nb", None)) @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch.normalize_results", @@ -381,24 +381,24 @@ def test_plugins_search_querystringseach_no_count_and_search_peps( @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True ) - def test_plugins_search_querystringseach_search_cloudcover_peps( + def test_plugins_search_querystringsearch_search_cloudcover_peps( self, mock__request, mock_normalize_results ): """A query with a QueryStringSearch (here peps) must only use cloudCover filtering for non-radar product types""" # noqa self.peps_search_plugin.query(productType="S2_MSI_L1C", cloudCover=50) mock__request.assert_called() - self.assertIn("cloudCover", mock__request.call_args_list[-1][0][1]) + self.assertIn("cloudCover", mock__request.call_args_list[-1][0][1].url) mock__request.reset_mock() self.peps_search_plugin.query(productType="S1_SAR_GRD", cloudCover=50) mock__request.assert_called() - self.assertNotIn("cloudCover", mock__request.call_args_list[-1][0][1]) + self.assertNotIn("cloudCover", mock__request.call_args_list[-1][0][1].url) @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True ) - def test_plugins_search_querystringseach_discover_product_types( + def test_plugins_search_querystringsearch_discover_product_types( self, mock__request ): """QueryStringSearch.discover_product_types must return a well formatted dict""" @@ -443,10 +443,42 @@ def test_plugins_search_querystringseach_discover_product_types( # restore configuration search_plugin.config.discover_product_types["results_entry"] = results_entry + @mock.patch("eodag.plugins.search.qssearch.requests.get", autospec=True) + def test_plugins_search_querystringsearch_discover_product_types_with_query_param( + self, mock__request + ): + """QueryStringSearch.discover_product_types must return a well formatted dict""" + # One of the providers that has a QueryStringSearch Search plugin and discover_product_types configured + provider = "wekeo_cmems" + search_plugin = self.get_search_plugin(provider=provider) + + mock__request.return_value = mock.Mock() + mock__request.return_value.json.side_effect = [ + { + "features": [ + { + "dataset_id": "foo_collection", + "metadata": {"title": "The FOO collection"}, + } + ] + }, + { + "dataset_id": "foo_collection", + "metadata": {"title": "The FOO collection"}, + }, + ] + search_plugin.discover_product_types() + mock__request.assert_called_with( + "https://gateway.prod.wekeo2.eu/hda-broker/api/v1/datasets/foo_collection", + timeout=60, + headers=USER_AGENT, + verify=True, + ) + @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True ) - def test_plugins_search_querystringseach_discover_product_types_keywords( + def test_plugins_search_querystringsearch_discover_product_types_keywords( self, mock__request ): """QueryStringSearch.discover_product_types must return a dict with well formatted keywords""" @@ -491,7 +523,7 @@ def test_plugins_search_querystringseach_discover_product_types_keywords( @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True ) - def test_plugins_search_querystringseach_distinct_product_type_mtd_mapping( + def test_plugins_search_querystringsearch_distinct_product_type_mtd_mapping( self, mock__request ): """The metadata mapping for QueryStringSearch should not mix specific product-types metadata-mapping""" @@ -544,6 +576,108 @@ def test_plugins_search_querystringseach_timeout(self, mock__request): auth=None, ) + @mock.patch("eodag.utils.requests.requests.Session.get", autospec=True) + def test_plugins_search_querystringsearch_discover_queryables( + self, mock_requests_session_constraints + ): + search_plugin = self.get_search_plugin(provider="wekeo") + constraints_path = os.path.join(TEST_RESOURCES_PATH, "constraints.json") + with open(constraints_path) as f: + constraints = json.load(f) + wekeo_constraints = {"constraints": constraints} + mock_requests_session_constraints.return_value = MockResponse( + wekeo_constraints, status_code=200 + ) + + provider_queryables_from_constraints_file = [ + "year", + "month", + "day", + "time", + "variable", + "leadtime_hour", + "type", + "providerProductType", + ] + + queryables = search_plugin.discover_queryables(productType="ERA5_SL_MONTHLY") + self.assertIsNotNone(queryables) + + mock_requests_session_constraints.assert_called_once_with( + mock.ANY, + "https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/queryable/" + "EO:ECMWF:DAT:REANALYSIS_ERA5_SINGLE_LEVELS_MONTHLY_MEANS", + headers=USER_AGENT, + auth=None, + timeout=5, + ) + + # queryables from provider constraints file are added (here the ones of ERA5_SL_MONTHLY for wekeo) + for provider_queryable in provider_queryables_from_constraints_file: + provider_queryable = ( + get_queryable_from_provider( + provider_queryable, + search_plugin.get_metadata_mapping("ERA5_SL_MONTHLY"), + ) + or provider_queryable + ) + self.assertIn(provider_queryable, queryables) + + # default properties in provider config are added and must be default values of the queryables + for property, default_value in search_plugin.config.products[ + "ERA5_SL_MONTHLY" + ].items(): + queryable = queryables.get(property) + if queryable is not None: + self.assertEqual(default_value, queryable.__metadata__[0].get_default()) + # queryables with default values are not required + self.assertFalse(queryable.__metadata__[0].is_required()) + + # queryables without default values are required + queryable = queryables.get("month") + if queryable is not None: + self.assertEqual(PydanticUndefined, queryable.__metadata__[0].get_default()) + self.assertTrue(queryable.__metadata__[0].is_required()) + + # check that queryable constraints from the constraints file are in queryable info + # (here it is a case where all constraints of "variable" queryable can be taken into account) + queryable = queryables.get("variable") + if queryable is not None: + variable_constraints = [] + for constraint in constraints: + if "variable" in constraint: + variable_constraints.extend(constraint["variable"]) + # remove queryable constraints duplicates to make the assertion works + self.assertSetEqual( + set(variable_constraints), set(queryable.__origin__.__args__) + ) + + # reset mock + mock_requests_session_constraints.reset_mock() + + # with additional param + queryables = search_plugin.discover_queryables( + productType="ERA5_SL_MONTHLY", + variable="a", + ) + self.assertIsNotNone(queryables) + + mock_requests_session_constraints.assert_called_once_with( + mock.ANY, + "https://gateway.prod.wekeo2.eu/hda-broker/api/v1/dataaccess/queryable/" + "EO:ECMWF:DAT:REANALYSIS_ERA5_SINGLE_LEVELS_MONTHLY_MEANS", + headers=USER_AGENT, + auth=None, + timeout=5, + ) + + self.assertEqual(10, len(queryables)) + # default properties called in function arguments are added and must be default values of the queryables + queryable = queryables.get("variable") + if queryable is not None: + self.assertEqual("a", queryable.__metadata__[0].get_default()) + self.assertFalse(queryable.__metadata__[0].is_required()) + class TestSearchPluginPostJsonSearch(BaseSearchPluginTest): def setUp(self): @@ -569,9 +703,11 @@ def run(): with self.assertLogs("eodag.search.qssearch", level="DEBUG") as cm: with self.assertRaises(RequestError): products, estimate = self.awseos_search_plugin.query( - page=1, - items_per_page=2, - auth=self.awseos_auth_plugin, + prep=PreparedSearch( + page=1, + items_per_page=2, + auth_plugin=self.awseos_auth_plugin, + ), raise_errors=True, **self.search_criteria_s2_msi_l1c, ) @@ -590,9 +726,11 @@ def run(): with self.assertRaisesRegex(AuthenticationError, "test error message"): products, estimate = self.awseos_search_plugin.query( - page=1, - items_per_page=2, - auth=self.awseos_auth_plugin, + prep=PreparedSearch( + page=1, + items_per_page=2, + auth_plugin=self.awseos_auth_plugin, + ), **self.search_criteria_s2_msi_l1c, ) @@ -608,9 +746,11 @@ def test_plugins_search_postjsonsearch_count_and_search_awseos(self, mock__reque awseos_resp_search, ] products, estimate = self.awseos_search_plugin.query( - page=1, - items_per_page=2, - auth=self.awseos_auth_plugin, + prep=PreparedSearch( + page=1, + items_per_page=2, + auth_plugin=self.awseos_auth_plugin, + ), **self.search_criteria_s2_msi_l1c, ) @@ -618,26 +758,11 @@ def test_plugins_search_postjsonsearch_count_and_search_awseos(self, mock__reque awseos_products_count = 44 number_of_products = 2 - mock__request.assert_any_call( - mock.ANY, - self.awseos_url, - info_message=mock.ANY, - exception_message=mock.ANY, - ) - mock__request.assert_called_with( - mock.ANY, - self.awseos_url, - info_message=mock.ANY, - exception_message=mock.ANY, - ) + self.assertEqual(mock__request.call_args_list[-1][0][1].url, self.awseos_url) self.assertEqual(estimate, awseos_products_count) self.assertEqual(len(products), number_of_products) self.assertIsInstance(products[0], EOProduct) - # products count extracted from search results - self.assertEqual( - self.awseos_search_plugin.total_items_nb, awseos_products_count - ) @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True @@ -657,7 +782,7 @@ def test_plugins_search_postjsonsearch_count_and_search_awseos_s2l2a( mock__request.return_value.json.side_effect = mock_values products, estimate = self.awseos_search_plugin.query( - auth=self.awseos_auth_plugin, + prep=PreparedSearch(auth_plugin=self.awseos_auth_plugin, count=True), **{ "productType": "S2_MSI_L2A", "id": "S2B_MSIL2A_20220101T000459_N0301_R130_T53DMB_20220101T012649", @@ -665,20 +790,15 @@ def test_plugins_search_postjsonsearch_count_and_search_awseos_s2l2a( ) self.assertEqual(mock__request.call_count, 2) - mock__request.assert_any_call( - mock.ANY, + self.assertEqual( + mock__request.call_args_list[0][0][1].url, "https://roda.sentinel-hub.com/sentinel-s2-l2a/tiles/53/D/MB/2022/1/1/0/tileInfo.json", - info_message=mock.ANY, - exception_message=mock.ANY, ) - mock__request.assert_called_with( - mock.ANY, + self.assertEqual( + mock__request.call_args_list[1][0][1].url, "https://roda.sentinel-hub.com/sentinel-s2-l2a/tiles/53/D/MB/2022/1/1/0/productInfo.json", - info_message=mock.ANY, - exception_message=mock.ANY, ) - self.assertEqual(estimate, 1) self.assertEqual(len(products), 1) self.assertIsInstance(products[0], EOProduct) @@ -695,10 +815,12 @@ def test_plugins_search_postjsonsearch_no_count_and_search_awseos( mock__request.return_value = mock.Mock() mock__request.return_value.json.return_value = awseos_resp_search products, estimate = self.awseos_search_plugin.query( - count=False, - page=1, - items_per_page=2, - auth=self.awseos_auth_plugin, + prep=PreparedSearch( + count=False, + page=1, + items_per_page=2, + auth_plugin=self.awseos_auth_plugin, + ), **self.search_criteria_s2_msi_l1c, ) @@ -706,18 +828,15 @@ def test_plugins_search_postjsonsearch_no_count_and_search_awseos( number_of_products = 2 mock_count_hits.assert_not_called() - mock__request.assert_called_once_with( - mock.ANY, - self.awseos_url, - info_message=mock.ANY, - exception_message=mock.ANY, - ) + self.assertEqual(mock__request.call_args_list[0][0][1].url, self.awseos_url) self.assertIsNone(estimate) self.assertEqual(len(products), number_of_products) self.assertIsInstance(products[0], EOProduct) # products count should not have been extracted from search results - self.assertIsNone(getattr(self.awseos_search_plugin, "total_items_nb", None)) + self.assertIsNone( + getattr(mock__request.call_args_list[0][0][1], "total_items_nb", None) + ) @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch.normalize_results", @@ -730,14 +849,18 @@ def test_plugins_search_postjsonsearch_search_cloudcover_awseos( """A query with a PostJsonSearch (here aws_eos) must only use cloudCover filtering for non-radar product types""" # noqa self.awseos_search_plugin.query( - auth=self.awseos_auth_plugin, productType="S2_MSI_L1C", cloudCover=50 + prep=PreparedSearch(auth_plugin=self.awseos_auth_plugin), + productType="S2_MSI_L1C", + cloudCover=50, ) mock_requests_post.assert_called() self.assertIn("cloudCoverage", str(mock_requests_post.call_args_list[-1][1])) mock_requests_post.reset_mock() self.awseos_search_plugin.query( - auth=self.awseos_auth_plugin, productType="S1_SAR_GRD", cloudCover=50 + prep=PreparedSearch(auth_plugin=self.awseos_auth_plugin), + productType="S1_SAR_GRD", + cloudCover=50, ) mock_requests_post.assert_called() self.assertNotIn( @@ -770,8 +893,8 @@ def test_plugins_search_postjsonsearch_distinct_product_type_mtd_mapping( "baz", ) products, estimate = self.awseos_search_plugin.query( + prep=PreparedSearch(auth_plugin=self.awseos_auth_plugin), productType="S1_SAR_GRD", - auth=self.awseos_auth_plugin, ) self.assertIn("bar", products[0].properties) self.assertEqual(products[0].properties["bar"], "baz") @@ -782,8 +905,8 @@ def test_plugins_search_postjsonsearch_distinct_product_type_mtd_mapping( self.awseos_search_plugin.config.products["S2_MSI_L1C"]["metadata_mapping"], ) products, estimate = self.awseos_search_plugin.query( + prep=PreparedSearch(auth_plugin=self.awseos_auth_plugin), productType="S2_MSI_L1C", - auth=self.awseos_auth_plugin, ) self.assertNotIn("bar", products[0].properties) @@ -860,9 +983,11 @@ def test_plugins_search_odatav4search_count_and_search_onda( value=[dict(id="dummy_metadata", value="dummy_metadata_val")] ) products, estimate = self.onda_search_plugin.query( - page=1, - items_per_page=2, - auth=self.onda_auth_plugin, + prep=PreparedSearch( + page=1, + items_per_page=2, + auth=self.onda_auth_plugin, + ), # custom query argument that must be mapped using discovery_metata.search_param foo="bar", **self.search_criteria_s2_msi_l1c, @@ -882,21 +1007,14 @@ def test_plugins_search_odatav4search_count_and_search_onda( 'https://catalogue.onda-dias.eu/dias-catalogue/Products?$format=json&$search="' 'footprint:"Intersects(POLYGON ((137.7729 13.1342, 137.7729 23.8860, 153.7491 23.8860, 153.7491 13.1342, ' '137.7729 13.1342)))" AND productType:S2MSI1C AND beginPosition:[2020-08-08T00:00:00.000Z TO *] ' - 'AND endPosition:[* TO 2020-08-16T00:00:00.000Z] AND foo:bar"&$top=2&$skip=0&$expand=Metadata' + "AND endPosition:[* TO 2020-08-16T00:00:00.000Z] " + 'AND foo:bar"&$orderby=beginPosition asc&$top=2&$skip=0&$expand=Metadata' ) - mock__request.assert_any_call( - mock.ANY, - self.onda_url_count, - info_message=mock.ANY, - exception_message=mock.ANY, - ) - mock__request.assert_called_with( - mock.ANY, - onda_url_search, - info_message=mock.ANY, - exception_message=mock.ANY, + self.assertEqual( + mock__request.call_args_list[0].args[1].url, self.onda_url_count ) + self.assertEqual(mock__request.call_args_list[1].args[1].url, onda_url_search) self.assertEqual(estimate, self.onda_products_count) self.assertEqual(len(products), number_of_products) @@ -904,6 +1022,49 @@ def test_plugins_search_odatav4search_count_and_search_onda( # products count non extracted from search results as count endpoint is specified self.assertFalse(hasattr(self.onda_search_plugin, "total_items_nb")) + @mock.patch("eodag.plugins.search.qssearch.get_ssl_context", autospec=True) + @mock.patch("eodag.plugins.search.qssearch.Request", autospec=True) + @mock.patch("eodag.plugins.search.qssearch.urlopen", autospec=True) + @mock.patch("eodag.plugins.search.qssearch.cast", autospec=True) + def test_plugins_search_odatav4search_with_ssl_context( + self, mock_cast, mock_urlopen, mock_request, mock_get_ssl_context + ): + """A query with a ODataV4Search (here onda) must return tuple with a list of EOProduct and a number of available products""" # noqa + self.onda_search_plugin.config.ssl_verify = False + mock_cast.return_value.json.return_value = 2 + + ssl_ctx = ssl.create_default_context() + ssl_ctx.check_hostname = False + ssl_ctx.verify_mode = ssl.CERT_NONE + + mock_request.return_value = mock.Mock() + + # Mocking return value of get_ssl_context + mock_get_ssl_context.return_value = ssl_ctx + + self.onda_search_plugin.query( + prep=PreparedSearch( + page=1, + items_per_page=2, + auth=self.onda_auth_plugin, + ), + # custom query argument that must be mapped using discovery_metata.search_param + foo="bar", + **self.search_criteria_s2_msi_l1c, + ) + + mock_get_ssl_context.assert_called_with(False) + + # # Asserting that get_ssl_context has been called + self.assertEqual(mock_get_ssl_context.call_count, 2) + + # Asserting that urlopen has been called with the correct arguments + mock_urlopen.assert_called_with( + mock_request.return_value, timeout=60, context=ssl_ctx + ) + + del self.onda_search_plugin.config.ssl_verify + @mock.patch("eodag.plugins.search.qssearch.requests.get", autospec=True) @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True @@ -934,9 +1095,11 @@ def test_plugins_search_odatav4search_count_and_search_onda_per_product_metadata value=[dict(id="dummy_metadata", value="dummy_metadata_val")] ) products, estimate = self.onda_search_plugin.query( - page=1, - items_per_page=2, - auth=self.onda_auth_plugin, + prep=PreparedSearch( + page=1, + items_per_page=2, + auth=self.onda_auth_plugin, + ), # custom query argument that must be mapped using discovery_metata.search_param foo="bar", **self.search_criteria_s2_msi_l1c, @@ -956,7 +1119,7 @@ def test_plugins_search_odatav4search_count_and_search_onda_per_product_metadata products[1].properties["uid"], ) mock_requests_get.assert_called_with( - metadata_url, headers=USER_AGENT, timeout=HTTP_REQ_TIMEOUT + metadata_url, headers=USER_AGENT, timeout=HTTP_REQ_TIMEOUT, verify=True ) # we check that two requests have been called, one per product self.assertEqual(mock_requests_get.call_count, 2) @@ -967,21 +1130,14 @@ def test_plugins_search_odatav4search_count_and_search_onda_per_product_metadata 'https://catalogue.onda-dias.eu/dias-catalogue/Products?$format=json&$search="' 'footprint:"Intersects(POLYGON ((137.7729 13.1342, 137.7729 23.8860, 153.7491 23.8860, 153.7491 13.1342, ' '137.7729 13.1342)))" AND productType:S2MSI1C AND beginPosition:[2020-08-08T00:00:00.000Z TO *] ' - 'AND endPosition:[* TO 2020-08-16T00:00:00.000Z] AND foo:bar"&$top=2&$skip=0&$expand=Metadata' + "AND endPosition:[* TO 2020-08-16T00:00:00.000Z] " + 'AND foo:bar"&$orderby=beginPosition asc&$top=2&$skip=0&$expand=Metadata' ) - mock__request.assert_any_call( - mock.ANY, - self.onda_url_count, - info_message=mock.ANY, - exception_message=mock.ANY, - ) - mock__request.assert_called_with( - mock.ANY, - onda_url_search, - info_message=mock.ANY, - exception_message=mock.ANY, + self.assertEqual( + mock__request.call_args_list[0].args[1].url, self.onda_url_count ) + self.assertEqual(mock__request.call_args_list[1].args[1].url, onda_url_search) self.assertEqual(estimate, self.onda_products_count) self.assertEqual(len(products), number_of_products) @@ -1021,9 +1177,11 @@ def test_plugins_search_odatav4search_count_and_search_onda_per_product_metadata with self.assertLogs(level="ERROR") as cm: products, estimate = self.onda_search_plugin.query( - page=1, - items_per_page=2, - auth=self.onda_auth_plugin, + prep=PreparedSearch( + page=1, + items_per_page=2, + auth=self.onda_auth_plugin, + ), # custom query argument that must be mapped using discovery_metata.search_param foo="bar", **self.search_criteria_s2_msi_l1c, @@ -1074,12 +1232,16 @@ def test_plugins_search_odatav4search_search_cloudcover_onda( ) mock__request.assert_called() - self.assertIn("cloudCoverPercentage", mock__request.call_args_list[-1][0][1]) + self.assertIn( + "cloudCoverPercentage", mock__request.call_args_list[-1][0][1].url + ) mock__request.reset_mock() self.onda_search_plugin.query(productType="S1_SAR_GRD", cloudCover=50) mock__request.assert_called() - self.assertNotIn("cloudCoverPercentage", mock__request.call_args_list[-1][0][1]) + self.assertNotIn( + "cloudCoverPercentage", mock__request.call_args_list[-1][0][1].url + ) @mock.patch( "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True @@ -1163,7 +1325,8 @@ def test_plugins_search_stacsearch_mapping_earthsearch(self, mock__request): search_plugin = self.get_search_plugin(self.product_type, "earth_search") products, estimate = search_plugin.query( - page=1, items_per_page=2, auth=None, **self.search_criteria_s2_msi_l1c + prep=PreparedSearch(page=1, items_per_page=2), + **self.search_criteria_s2_msi_l1c, ) self.assertEqual( products[0].properties["productPath"], @@ -1203,15 +1366,56 @@ def test_plugins_search_stacsearch_default_geometry(self, mock__request): search_plugin = self.get_search_plugin(self.product_type, "earth_search") products, estimate = search_plugin.query( - page=1, - items_per_page=3, - auth=None, + prep=PreparedSearch( + page=1, + items_per_page=3, + ) ) self.assertEqual( products[0].geometry, self.search_criteria_s2_msi_l1c["geometry"] ) self.assertEqual(products[1].geometry.bounds, (-180.0, -90.0, 180.0, 90.0)) + @mock.patch("eodag.plugins.search.qssearch.requests.post", autospec=True) + def test_plugins_search_stacsearch_opened_time_intervals(self, mock_requests_post): + """Opened time intervals must be handled by StacSearch plugin""" + mock_requests_post.return_value = mock.Mock() + mock_requests_post.return_value.json.side_effect = [ + { + "features": [ + { + "id": "foo", + "geometry": None, + }, + ], + }, + ] * 4 + search_plugin = self.get_search_plugin(self.product_type, "earth_search") + + search_plugin.query( + startTimeFromAscendingNode="2020-01-01", + completionTimeFromAscendingNode="2020-01-02", + ) + self.assertEqual( + mock_requests_post.call_args.kwargs["json"]["datetime"], + "2020-01-01T00:00:00.000Z/2020-01-02T00:00:00.000Z", + ) + + search_plugin.query(startTimeFromAscendingNode="2020-01-01") + self.assertEqual( + mock_requests_post.call_args.kwargs["json"]["datetime"], + "2020-01-01T00:00:00.000Z/..", + ) + + search_plugin.query(completionTimeFromAscendingNode="2020-01-02") + self.assertEqual( + mock_requests_post.call_args.kwargs["json"]["datetime"], + "../2020-01-02T00:00:00.000Z", + ) + + search_plugin.query() + self.assertNotIn("datetime", mock_requests_post.call_args.kwargs["json"]) + @mock.patch("eodag.plugins.search.qssearch.StacSearch._request", autospec=True) def test_plugins_search_stacsearch_distinct_product_type_mtd_mapping( self, mock__request @@ -1292,12 +1496,14 @@ class TestSearchPluginBuildPostSearchResult(BaseSearchPluginTest): @mock.patch("eodag.plugins.authentication.qsauth.requests.get", autospec=True) def setUp(self, mock_requests_get): super(TestSearchPluginBuildPostSearchResult, self).setUp() + # enable long diffs in test reports + self.maxDiff = None # One of the providers that has a BuildPostSearchResult Search plugin provider = "meteoblue" self.search_plugin = self.get_search_plugin(provider=provider) self.auth_plugin = self.get_auth_plugin(provider) self.auth_plugin.config.credentials = {"cred": "entials"} - self.search_plugin.auth = self.auth_plugin.authenticate() + self.auth = self.auth_plugin.authenticate() @mock.patch("eodag.plugins.search.qssearch.requests.post", autospec=True) def test_plugins_search_buildpostsearchresult_count_and_search( @@ -1305,8 +1511,11 @@ def test_plugins_search_buildpostsearchresult_count_and_search( ): """A query with a BuildPostSearchResult must return a single result""" + # custom query for meteoblue + custom_query = {"queries": {"foo": "bar"}} products, estimate = self.search_plugin.query( - auth=self.auth_plugin, + prep=PreparedSearch(auth_plugin=self.auth_plugin, auth=self.auth), + **custom_query, ) mock_requests_post.assert_called_with( @@ -1314,10 +1523,31 @@ def test_plugins_search_buildpostsearchresult_count_and_search( json=mock.ANY, headers=USER_AGENT, timeout=HTTP_REQ_TIMEOUT, - auth=self.search_plugin.auth, + auth=self.auth, + verify=True, ) self.assertEqual(estimate, 1) self.assertIsInstance(products[0], EOProduct) + endpoint = "https://my.meteoblue.com/dataset/query" + default_geom = { + "coordinates": [ + [[180, -90], [180, 90], [-180, 90], [-180, -90], [180, -90]] + ], + "type": "Polygon", + } + # check downloadLink + self.assertEqual( + products[0].properties["downloadLink"], + f"{endpoint}?" + json.dumps({"geometry": default_geom, **custom_query}), + ) + # check orderLink + self.assertEqual( + products[0].properties["orderLink"], + f"{endpoint}?" + + json.dumps( + {"geometry": default_geom, "runOnJobQueue": True, **custom_query} + ), + ) class MockResponse: @@ -1335,11 +1565,19 @@ def raise_for_status(self): class TestSearchPluginDataRequestSearch(BaseSearchPluginTest): @mock.patch( - "eodag.plugins.authentication.token.requests.Session.get", autospec=True + "eodag.plugins.authentication.token.requests.Session.request", autospec=True ) def setUp(self, mock_requests_get): super(TestSearchPluginDataRequestSearch, self).setUp() - provider = "wekeo" + providers_config = self.plugins_manager.providers_config + wekeo_old_config_file = os.path.join( + TEST_RESOURCES_PATH, "wekeo_old_config.yml" + ) + with open(wekeo_old_config_file, "r") as file: + wekeo_old_config_dict = yaml.safe_load(file) + override_config_from_mapping(providers_config, wekeo_old_config_dict) + self.plugins_manager = PluginManager(providers_config) + provider = "wekeo_old" self.search_plugin = self.get_search_plugin(self.product_type, provider) self.auth_plugin = self.get_auth_plugin(provider) self.auth_plugin.config.credentials = {"username": "tony", "password": "pass"} @@ -1359,6 +1597,7 @@ def test_plugins_create_data_request(self, mock_requests_get, mock_requests_post json={"datasetId": "EO:DEM:DAT:COP-DEM_GLO-30-DGED__2022_1"}, headers=getattr(self.search_plugin.auth, "headers", ""), timeout=HTTP_REQ_TIMEOUT, + verify=True, ) keywords = { "format": "GeoTiff100mt", @@ -1381,6 +1620,7 @@ def test_plugins_create_data_request(self, mock_requests_get, mock_requests_post }, headers=getattr(self.search_plugin.auth, "headers", ""), timeout=HTTP_REQ_TIMEOUT, + verify=True, ) @mock.patch("eodag.plugins.search.data_request_search.requests.get", autospec=True) @@ -1391,6 +1631,7 @@ def test_plugins_check_request_status(self, mock_requests_get): self.search_plugin.config.status_url + "123", headers=getattr(self.search_plugin.auth, "headers", ""), timeout=HTTP_REQ_TIMEOUT, + verify=True, ) assert successful mock_requests_get.return_value = MockResponse( @@ -1408,8 +1649,24 @@ def test_plugins_get_result_data(self, mock_requests_get): ), headers=getattr(self.search_plugin.auth, "headers", ""), timeout=HTTP_REQ_TIMEOUT, + verify=True, ) + @mock.patch("eodag.plugins.search.data_request_search.requests.get", autospec=True) + def test_plugins_get_result_data_ssl_verify_false(self, mock_requests_get): + self.search_plugin.config.ssl_verify = False + self.search_plugin._get_result_data("123", items_per_page=5, page=1) + mock_requests_get.assert_called_with( + self.search_plugin.config.result_url.format( + jobId="123", items_per_page=5, page=0 + ), + headers=getattr(self.search_plugin.auth, "headers", ""), + timeout=HTTP_REQ_TIMEOUT, + verify=False, + ) + + del self.search_plugin.config.ssl_verify + def test_plugins_search_datareq_distinct_product_type_mtd_mapping(self): """The metadata mapping for data_request_search should not mix specific product-types metadata-mapping""" geojson_geometry = self.search_criteria_s2_msi_l1c["geometry"].__geo_interface__ @@ -1454,7 +1711,6 @@ def run(): ) products, estimate = self.search_plugin.query( productType="S1_SAR_GRD", - auth=None, ) self.assertIn("bar", products[0].properties) self.assertEqual(products[0].properties["bar"], "baz") @@ -1466,7 +1722,6 @@ def run(): ) products, estimate = self.search_plugin.query( productType="S1_SAR_SLC", - auth=None, ) self.assertNotIn("bar", products[0].properties) @@ -1511,7 +1766,6 @@ def run(): products, estimate = self.search_plugin.query( productType="S1_SAR_GRD", - auth=None, ) request_dict = json.loads(responses.calls[0].request.body) @@ -1539,7 +1793,9 @@ def setUp(self): super(TestSearchPluginCreodiasS3Search, self).setUp() self.provider = "creodias_s3" - @mock.patch("eodag.plugins.search.qssearch.requests.get", autospec=True) + @mock.patch( + "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True + ) def test_plugins_search_creodias_s3_links(self, mock_request): # s3 links should be added to products with register_downloader search_plugin = self.get_search_plugin("S1_SAR_GRD", self.provider) @@ -1551,13 +1807,13 @@ def test_plugins_search_creodias_s3_links(self, mock_request): with open(s3_response_file) as f: list_objects_response = json.load(f) creodias_search_result_file = ( - Path(TEST_RESOURCES_PATH) / "eodag_search_result_creodias.geojson" + Path(TEST_RESOURCES_PATH) / "eodag_search_result_creodias.json" ) with open(creodias_search_result_file) as f: creodias_search_result = json.load(f) mock_request.return_value = MockResponse(creodias_search_result, 200) - res = search_plugin.query("S1_SAR_GRD") + res = search_plugin.query(productType="S1_SAR_GRD") for product in res[0]: download_plugin = self.plugins_manager.get_download_plugin(product) auth_plugin = self.plugins_manager.get_auth_plugin(self.provider) @@ -1584,7 +1840,9 @@ def test_plugins_search_creodias_s3_links(self, mock_request): for asset in assets.values(): self.assertIn("s3://eodata/Sentinel-1/SAR/GRD/2014/10/10", asset["href"]) - @mock.patch("eodag.plugins.search.qssearch.requests.get", autospec=True) + @mock.patch( + "eodag.plugins.search.qssearch.QueryStringSearch._request", autospec=True + ) def test_plugins_search_creodias_s3_client_error(self, mock_request): # request error should be raised when there is an error when fetching data from the s3 search_plugin = self.get_search_plugin("S1_SAR_GRD", self.provider) @@ -1592,14 +1850,14 @@ def test_plugins_search_creodias_s3_client_error(self, mock_request): stubber = Stubber(client) creodias_search_result_file = ( - Path(TEST_RESOURCES_PATH) / "eodag_search_result_creodias.geojson" + Path(TEST_RESOURCES_PATH) / "eodag_search_result_creodias.json" ) with open(creodias_search_result_file) as f: creodias_search_result = json.load(f) mock_request.return_value = MockResponse(creodias_search_result, 200) with self.assertRaises(RequestError): - res = search_plugin.query("S1_SAR_GRD") + res = search_plugin.query(productType="S1_SAR_GRD") for product in res[0]: download_plugin = self.plugins_manager.get_download_plugin(product) auth_plugin = self.plugins_manager.get_auth_plugin(self.provider) @@ -1611,3 +1869,646 @@ def test_plugins_search_creodias_s3_client_error(self, mock_request): stubber.activate() setattr(auth_plugin, "s3_client", client) product.register_downloader(download_plugin, auth_plugin) + + +class TestSearchPluginBuildSearchResult(unittest.TestCase): + @classmethod + def setUpClass(cls): + super(TestSearchPluginBuildSearchResult, cls).setUpClass() + providers_config = load_default_config() + cls.plugins_manager = PluginManager(providers_config) + + def setUp(self): + self.provider = "cop_ads" + self.search_plugin = self.get_search_plugin(provider=self.provider) + self.query_dates = { + "startTimeFromAscendingNode": "2020-01-01", + "completionTimeFromAscendingNode": "2020-01-02", + } + self.product_type = "CAMS_EAC4" + self.product_dataset = "cams-global-reanalysis-eac4" + self.product_type_params = { + "dataset": self.product_dataset, + "format": "grib", + "variable": "2m_dewpoint_temperature", + "time": "00:00", + } + self.custom_query_params = { + "dataset": "cams-global-ghg-reanalysis-egg4", + "step": 0, + "variable": "carbon_dioxide", + "pressure_level": "10", + "model_level": "1", + "time": "00:00", + "format": "grib", + } + + def get_search_plugin(self, product_type=None, provider=None): + return next( + self.plugins_manager.get_search_plugins( + product_type=product_type, provider=provider + ) + ) + + def test_plugins_search_buildsearchresult_dates_missing(self): + """BuildSearchResult.query must use default dates if missing""" + # given start & stop + results, _ = self.search_plugin.query( + productType=self.product_type, + startTimeFromAscendingNode="2020-01-01", + completionTimeFromAscendingNode="2020-01-02", + ) + eoproduct = results[0] + self.assertEqual( + eoproduct.properties["startTimeFromAscendingNode"], "2020-01-01" + ) + self.assertEqual( + eoproduct.properties["completionTimeFromAscendingNode"], "2020-01-01" + ) + + # missing start & stop + results, _ = self.search_plugin.query( + productType=self.product_type, + ) + eoproduct = results[0] + self.assertIn( + eoproduct.properties["startTimeFromAscendingNode"], + DEFAULT_MISSION_START_DATE, + ) + self.assertIn( + eoproduct.properties["completionTimeFromAscendingNode"], + "2015-01-01", + ) + + # missing start & stop and plugin.product_type_config set (set in core._prepare_search) + self.search_plugin.config.product_type_config = { + "productType": self.product_type, + "missionStartDate": "1985-10-26", + "missionEndDate": "2015-10-21", + } + results, _ = self.search_plugin.query( + productType=self.product_type, + ) + eoproduct = results[0] + self.assertEqual( + eoproduct.properties["startTimeFromAscendingNode"], "1985-10-26" + ) + self.assertEqual( + eoproduct.properties["completionTimeFromAscendingNode"], "1985-10-26" + ) + + def test_plugins_search_buildsearchresult_without_producttype(self): + """ + BuildSearchResult.query must build a EOProduct from input parameters without product type. + For test only, result cannot be downloaded. + """ + results, count = self.search_plugin.query( + dataset=self.product_dataset, + startTimeFromAscendingNode="2020-01-01", + completionTimeFromAscendingNode="2020-01-02", + ) + assert count == 1 + eoproduct = results[0] + assert eoproduct.geometry.bounds == (-180.0, -90.0, 180.0, 90.0) + assert eoproduct.properties["startTimeFromAscendingNode"] == "2020-01-01" + assert eoproduct.properties["completionTimeFromAscendingNode"] == "2020-01-01" + assert eoproduct.properties["title"] == eoproduct.properties["id"] + assert eoproduct.properties["title"].startswith( + f"{self.product_dataset.upper()}" + ) + assert eoproduct.properties["orderLink"].startswith("http") + assert NOT_AVAILABLE in eoproduct.location + + def test_plugins_search_buildsearchresult_with_producttype(self): + """BuildSearchResult.query must build a EOProduct from input parameters with predefined product type""" + results, _ = self.search_plugin.query( + **self.query_dates, productType=self.product_type, geometry=[1, 2, 3, 4] + ) + eoproduct = results[0] + assert eoproduct.properties["title"].startswith(self.product_type) + assert eoproduct.geometry.bounds == (1.0, 2.0, 3.0, 4.0) + # check if product_type_params is a subset of eoproduct.properties + assert self.product_type_params.items() <= eoproduct.properties.items() + + # product type default settings can be overwritten using search kwargs + results, _ = self.search_plugin.query( + **self.query_dates, + productType=self.product_type, + variable="temperature", + ) + eoproduct = results[0] + assert eoproduct.properties["variable"] == "temperature" + + def test_plugins_search_buildsearchresult_with_custom_producttype(self): + """BuildSearchResult.query must build a EOProduct from input parameters with custom product type""" + results, _ = self.search_plugin.query( + **self.query_dates, + **self.custom_query_params, + ) + eoproduct = results[0] + assert eoproduct.properties["title"].startswith( + self.custom_query_params["dataset"].upper() + ) + # check if custom_query_params is a subset of eoproduct.properties + for param in self.custom_query_params: + try: + # for numeric values + assert eoproduct.properties[param] == ast.literal_eval( + self.custom_query_params[param] + ) + except Exception: + assert eoproduct.properties[param] == self.custom_query_params[param] + + @mock.patch("eodag.utils.requests.requests.Session.get", autospec=True) + def test_plugins_search_buildsearchresult_discover_queryables( + self, mock_requests_session_constraints + ): + constraints_path = os.path.join(TEST_RESOURCES_PATH, "constraints.json") + with open(constraints_path) as f: + constraints = json.load(f) + mock_requests_session_constraints.return_value = MockResponse( + constraints, status_code=200 + ) + + provider_queryables_from_constraints_file = [ + "year", + "month", + "day", + "time", + "variable", + "leadtime_hour", + "type", + "api_product_type", + ] + + queryables = self.search_plugin.discover_queryables( + productType="CAMS_EU_AIR_QUALITY_RE" + ) + self.assertIsNotNone(queryables) + + mock_requests_session_constraints.assert_called_once_with( + mock.ANY, + "https://datastore.copernicus-climate.eu/cams/published-forms/camsprod/" + "cams-europe-air-quality-reanalyses/constraints.json", + headers=USER_AGENT, + auth=None, + timeout=5, + ) + + # queryables from provider constraints file are added (here the ones of CAMS_EU_AIR_QUALITY_RE for cop_ads) + for provider_queryable in provider_queryables_from_constraints_file: + provider_queryable = ( + get_queryable_from_provider( + provider_queryable, + self.search_plugin.get_metadata_mapping("CAMS_EU_AIR_QUALITY_RE"), + ) + or provider_queryable + ) + self.assertIn(provider_queryable, queryables) + + # default properties in provider config are added and must be default values of the queryables + for property, default_value in self.search_plugin.config.products[ + "CAMS_EU_AIR_QUALITY_RE" + ].items(): + queryable = queryables.get(property) + if queryable is not None: + self.assertEqual(default_value, queryable.__metadata__[0].get_default()) + # queryables with default values are not required + self.assertFalse(queryable.__metadata__[0].is_required()) + + # queryables without default values are required + queryable = queryables.get("month") + if queryable is not None: + self.assertEqual(PydanticUndefined, queryable.__metadata__[0].get_default()) + self.assertTrue(queryable.__metadata__[0].is_required()) + + # check that queryable constraints from the constraints file are in queryable info + # (here it is a case where all constraints of "variable" queryable can be taken into account) + queryable = queryables.get("variable") + if queryable is not None: + variable_constraints = [] + for constraint in constraints: + if "variable" in constraint: + variable_constraints.extend(constraint["variable"]) + # remove queryable constraints duplicates to make the assertion works + self.assertSetEqual( + set(variable_constraints), set(queryable.__origin__.__args__) + ) + + # reset mock + mock_requests_session_constraints.reset_mock() + + # with additional param + queryables = self.search_plugin.discover_queryables( + productType="CAMS_EU_AIR_QUALITY_RE", + variable="a", + ) + self.assertIsNotNone(queryables) + + mock_requests_session_constraints.assert_called_once_with( + mock.ANY, + "https://datastore.copernicus-climate.eu/cams/published-forms/camsprod/" + "cams-europe-air-quality-reanalyses/constraints.json", + headers=USER_AGENT, + auth=None, + timeout=5, + ) + + self.assertEqual(9, len(queryables)) + # default properties called in function arguments are added and must be default values of the queryables + queryable = queryables.get("variable") + if queryable is not None: + self.assertEqual("a", queryable.__metadata__[0].get_default()) + self.assertFalse(queryable.__metadata__[0].is_required()) + + def test_plugins_search_buildsearchresult_discover_queryables_with_local_constraints_file( + self, + ): + constraints_path = os.path.join(TEST_RESOURCES_PATH, "constraints.json") + with open(constraints_path) as f: + constraints = json.load(f) + tmp_search_constraints_file_url = self.search_plugin.config.constraints_file_url + self.search_plugin.config.constraints_file_url = constraints_path + + provider_queryables_from_constraints_file = [ + "year", + "month", + "day", + "time", + "variable", + "leadtime_hour", + "type", + "api_product_type", + ] + + queryables = self.search_plugin.discover_queryables( + productType="CAMS_EU_AIR_QUALITY_RE" + ) + self.assertIsNotNone(queryables) + + # queryables from provider constraints file are added (here the ones of CAMS_EU_AIR_QUALITY_RE for cop_ads) + for provider_queryable in provider_queryables_from_constraints_file: + provider_queryable = ( + get_queryable_from_provider( + provider_queryable, + self.search_plugin.get_metadata_mapping("CAMS_EU_AIR_QUALITY_RE"), + ) + or provider_queryable + ) + self.assertIn(provider_queryable, queryables) + + # default properties in provider config are added and must be default values of the queryables + for property, default_value in self.search_plugin.config.products[ + "CAMS_EU_AIR_QUALITY_RE" + ].items(): + queryable = queryables.get(property) + if queryable is not None: + self.assertEqual(default_value, queryable.__metadata__[0].get_default()) + # queryables with default values are not required + self.assertFalse(queryable.__metadata__[0].is_required()) + + # queryables without default values are required + queryable = queryables.get("month") + if queryable is not None: + self.assertEqual(PydanticUndefined, queryable.__metadata__[0].get_default()) + self.assertTrue(queryable.__metadata__[0].is_required()) + + # check that queryable constraints from the constraints file are in queryable info + # (here it is a case where all constraints of "variable" queryable can be taken into account) + queryable = queryables.get("variable") + if queryable is not None: + variable_constraints = [] + for constraint in constraints: + if "variable" in constraint: + variable_constraints.extend(constraint["variable"]) + # remove queryable constraints duplicates to make the assertion works + self.assertSetEqual( + set(variable_constraints), set(queryable.__origin__.__args__) + ) + + # with additional param + queryables = self.search_plugin.discover_queryables( + productType="CAMS_EU_AIR_QUALITY_RE", + variable="a", + ) + self.assertIsNotNone(queryables) + + self.assertEqual(9, len(queryables)) + # default properties called in function arguments are added and must be default values of the queryables + queryable = queryables.get("variable") + if queryable is not None: + self.assertEqual("a", queryable.__metadata__[0].get_default()) + self.assertFalse(queryable.__metadata__[0].is_required()) + + # restore configuration + self.search_plugin.config.constraints_file_url = tmp_search_constraints_file_url + + +class TestSearchPluginCopMarineSearch(BaseSearchPluginTest): + def setUp(self): + super(TestSearchPluginCopMarineSearch, self).setUp() + self.provider = "cop_marine" + self.product_data = { + "id": "PRODUCT_A", + "type": "Collection", + "stac_version": "1.0.0", + "stac_extensions": [ + "https://stac-extensions.github.io/scientific/v1.0.0/schema.json" + ], + "title": "Product A", + "description": "A nice description", + "license": "proprietary", + "providers": [ + {"name": "CLS (France)", "roles": ["producer"]}, + { + "name": "Copernicus Marine Service", + "roles": ["host", "processor"], + "url": "https://marine.copernicus.eu", + }, + ], + "keywords": [ + "oceanographic-geographical-features", + "satellite-observation", + "level-3", + ], + "links": [ + { + "rel": "root", + "href": "../catalog.stac.json", + "title": "Copernicus Marine Data Store", + "type": "application/json", + }, + { + "rel": "parent", + "href": "../catalog.stac.json", + "title": "Copernicus Marine Data Store", + "type": "application/json", + }, + { + "rel": "item", + "href": "dataset-number-one/dataset.stac.json", + "title": "dataset-number-one", + "type": "application/json", + }, + { + "rel": "item", + "href": "dataset-number-two/dataset.stac.json", + "title": "dataset-number-two", + "type": "application/json", + }, + { + "rel": "license", + "href": "https://marine.copernicus.eu/user-corner/service-commitments-and-licence", + "title": "Copernicus Marine Service Commitments and Licence", + "type": "text/html", + }, + ], + "extent": { + "temporal": { + "interval": [ + ["1970-01-01T00:00:00.000000Z", "1970-01-01T00:00:00.000000Z"] + ] + }, + "spatial": {"bbox": [[0, 0, 0, 0]]}, + }, + "assets": { + "thumbnail": { + "href": "https://catalogue.marine.copernicus.eu/documents/IMG/WAVE_GLO_PHY_SPC_L3_MY_014_006.png", + "type": "image/png", + "roles": ["thumbnail"], + "title": "GLOBAL OCEAN L3 SPECTRAL PARAMETERS FROM REPROCESSED SATELLITE MEASUREMENTS thumbnail", + } + }, + "properties": { + "altId": "450bf368-2407-4c2c-8535-f215a4cda963", + "creationDate": "2021-04-23", + "modifiedDate": "2021-04-23", + "contacts": [ + { + "name": "Jim Gabriel", + "organisationName": "Heaven Inc", + "responsiblePartyRole": "custodian", + "email": "jim.gabriel@heaven.com", + } + ], + "projection": "WGS84 / Simple Mercator (EPSG:41001)", + "formats": ["NetCDF-4"], + "featureTypes": ["Swath", "Trajectory"], + "tempResolutions": ["Instantaneous"], + "rank": 15015, + "areas": [ + "Global Ocean", + ], + "times": ["Past"], + "sources": ["Satellite observations"], + "colors": ["Blue Ocean"], + "directives": [ + "Water Framework Directive (WFD)", + "Maritime Spatial Planning (MSP)", + ], + "crs": "EPSG:3857", + "isStaging": False, + "admp_updated": "2023-11-07T16:54:54.688320Z", + }, + "sci:doi": "10.48670/moi-00174", + } + self.dataset1_data = { + "id": "dataset-number-one", + "type": "Feature", + "stac_version": "1.0.0", + "stac_extensions": [ + "https://stac-extensions.github.io/datacube/v2.1.0/schema.json" + ], + "geometry": { + "type": "Polygon", + "coordinates": [[[0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]], + }, + "bbox": [0, 0, 0, 0], + "properties": { + "title": "dataset-number-one", + "datetime": "1970-01-01T00:00:00.000000Z", + }, + "links": [ + { + "rel": "root", + "href": "../../catalog.stac.json", + "title": "Copernicus Marine Data Store", + "type": "application/json", + }, + { + "rel": "parent", + "href": "../product.stac.json", + "title": "PRODUCT A", + "type": "application/json", + }, + { + "rel": "collection", + "href": "../product.stac.json", + "title": "PRODUCT A", + "type": "application/json", + }, + ], + "assets": { + "native": { + "id": "native", + "href": "https://s3.test.com/bucket1/native/PRODUCT_A/dataset-number-one", + "type": "application/x-netcdf", + "roles": ["data"], + "title": "Native dataset", + "description": "The original, non-ARCO version of this dataset, as published by the data provider.", + } + }, + "collection": "PRODUCT_A", + } + self.dataset2_data = deepcopy(self.dataset1_data) + self.dataset2_data["id"] = "dataset-number-two" + self.dataset2_data["properties"]["title"] = "dataset-number-two" + self.dataset2_data["assets"]["native"][ + "href" + ] = "https://s3.test.com/bucket1/native/PRODUCT_A/dataset-number-two" + + self.list_objects_response1 = { + "Contents": [ + { + "Key": "native/PRODUCT_A/dataset-number-one/item_20200102_20200103_hdkIFEKFNEDNF_20210101.nc" + }, + { + "Key": "native/PRODUCT_A/dataset-number-one/item_20200104_20200105_hdkIFEKFNEDNF_20210101.nc" + }, + { + "Key": "native/PRODUCT_A/dataset-number-one/item_20200302_20200303_hdkIFEKFNEDNF_20210101.nc" + }, + ] + } + self.list_objects_response2 = { + "Contents": [ + { + "Key": "native/PRODUCT_A/dataset-number-two/item_20200102_20200103_fizncnqijei_20210101.nc" + }, + { + "Key": "native/PRODUCT_A/dataset-number-two/item_20200204_20200205_niznjvnqkrf_20210101.nc" + }, + { + "Key": "native/PRODUCT_A/dataset-number-two/item_20200302_20200303_fIZHVCOINine_20210101.nc" + }, + ] + } + self.s3 = boto3.client( + "s3", + config=botocore.config.Config( + # Configures to use subdomain/virtual calling format. + s3={"addressing_style": "virtual"}, + signature_version=botocore.UNSIGNED, + ), + ) + + @mock.patch("eodag.plugins.search.cop_marine.requests.get") + def test_plugins_search_cop_marine_query_with_dates(self, mock_requests_get): + + mock_requests_get.return_value.json.side_effect = [ + self.product_data, + self.dataset1_data, + self.dataset2_data, + ] + + search_plugin = self.get_search_plugin("PRODUCT_A", self.provider) + + with mock.patch("eodag.plugins.search.cop_marine._get_s3_client") as s3_stub: + s3_stub.return_value = self.s3 + stubber = Stubber(self.s3) + stubber.add_response( + "list_objects", + self.list_objects_response1, + {"Bucket": "bucket1", "Prefix": "native/PRODUCT_A/dataset-number-one"}, + ) + stubber.add_response( + "list_objects", + self.list_objects_response2, + {"Bucket": "bucket1", "Prefix": "native/PRODUCT_A/dataset-number-two"}, + ) + stubber.activate() + result, num_total = search_plugin.query( + productType="PRODUCT_A", + startTimeFromAscendingNode="2020-01-01T01:00:00Z", + completionTimeFromAscendingNode="2020-02-01T01:00:00Z", + ) + mock_requests_get.assert_has_calls( + calls=[ + call( + "https://stac.marine.copernicus.eu/metadata/PRODUCT_A/product.stac.json" + ), + call().json(), + call( + "https://stac.marine.copernicus.eu/metadata/PRODUCT_A/dataset-number-one/dataset.stac.json" + ), + call().json(), + call( + "https://stac.marine.copernicus.eu/metadata/PRODUCT_A/dataset-number-two/dataset.stac.json" + ), + call().json(), + ] + ) + self.assertEqual(3, num_total) + products_dataset1 = [ + product + for product in result + if product.properties["dataset"] == "dataset-number-one" + ] + products_dataset2 = [ + product + for product in result + if product.properties["dataset"] == "dataset-number-two" + ] + self.assertEqual(2, len(products_dataset1)) + self.assertEqual(1, len(products_dataset2)) + self.assertEqual( + "2020-01-02T00:00:00Z", + products_dataset2[0].properties["startTimeFromAscendingNode"], + ) + self.assertEqual( + "2020-01-03T00:00:00Z", + products_dataset2[0].properties["completionTimeFromAscendingNode"], + ) + + @mock.patch("eodag.plugins.search.cop_marine.requests.get") + def test_plugins_search_cop_marine_query_with_id(self, mock_requests_get): + mock_requests_get.return_value.json.side_effect = [ + self.product_data, + self.dataset1_data, + self.dataset2_data, + ] + + search_plugin = self.get_search_plugin("PRODUCT_A", self.provider) + + with mock.patch("eodag.plugins.search.cop_marine._get_s3_client") as s3_stub: + s3_stub.return_value = self.s3 + stubber = Stubber(self.s3) + stubber.add_response( + "list_objects", + self.list_objects_response1, + {"Bucket": "bucket1", "Prefix": "native/PRODUCT_A/dataset-number-one"}, + ) + stubber.add_response( + "list_objects", + {}, + { + "Bucket": "bucket1", + "Marker": "native/PRODUCT_A/dataset-number-one/item_20200302_20200303_hdkIFEKFNEDNF_20210101.nc", + "Prefix": "native/PRODUCT_A/dataset-number-one", + }, + ) + stubber.add_response( + "list_objects", + self.list_objects_response2, + {"Bucket": "bucket1", "Prefix": "native/PRODUCT_A/dataset-number-two"}, + ) + stubber.activate() + result, num_total = search_plugin.query( + productType="PRODUCT_A", + id="item_20200204_20200205_niznjvnqkrf_20210101", + ) + self.assertEqual(1, num_total) + self.assertEqual( + "item_20200204_20200205_niznjvnqkrf_20210101", + result[0].properties["id"], + ) diff --git a/tests/units/test_search_types.py b/tests/units/test_search_types.py new file mode 100644 index 000000000..747abd834 --- /dev/null +++ b/tests/units/test_search_types.py @@ -0,0 +1,94 @@ +# -*- coding: utf-8 -*- +# Copyright 2024, CS GROUP - France, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import unittest + +from pydantic import ValidationError + +from eodag.types import search_args +from eodag.utils.exceptions import ValidationError as EodagValidationError + + +class TestStacSearch(unittest.TestCase): + def test_search_sort_by_arg(self): + """search used with "sortBy" argument must not raise errors if the argument is correct""" + # "sortBy" argument must be a list of tuples of two elements and the second element must be "ASC" or "DESC" + search_args.SearchArgs.model_validate( + {"productType": "dummy_product_type", "sortBy": [("eodagSortParam", "ASC")]} + ) + search_args.SearchArgs.model_validate( + { + "productType": "dummy_product_type", + "sortBy": [("eodagSortParam", "DESC")], + } + ) + + def test_search_sort_by_arg_with_errors(self): + """search used with "sortBy" argument must raise errors if the argument is incorrect""" + # raise a Pydantic error with an empty list + with self.assertRaises(ValidationError) as context: + search_args.SearchArgs.model_validate( + {"productType": "dummy_product_type", "sortBy": []} + ) + self.assertIn( + "List should have at least 1 item after validation, not 0", + str(context.exception), + ) + # raise a Pydantic error with syntax errors + with self.assertRaises(ValidationError) as context: + search_args.SearchArgs.model_validate( + {"productType": "dummy_product_type", "sortBy": "eodagSortParam ASC"} + ) + self.assertIn( + "Sort argument must be a list of tuple(s), got a '' instead", + str(context.exception), + ) + with self.assertRaises(ValidationError) as context: + search_args.SearchArgs.model_validate( + {"productType": "dummy_product_type", "sortBy": ["eodagSortParam ASC"]} + ) + self.assertIn( + "Sort argument must be a list of tuple(s), got a list of '' instead", + str(context.exception), + ) + # raise a Pydantic error with a wrong sorting order + with self.assertRaises(ValidationError) as context: + search_args.SearchArgs.model_validate( + { + "productType": "dummy_product_type", + "sortBy": [("eodagSortParam", " wrong_order ")], + } + ) + self.assertIn( + "Sorting order must be set to 'ASC' (ASCENDING) or 'DESC' (DESCENDING), " + "got 'WRONG_ORDER' with 'eodagSortParam' instead", + str(context.exception), + ) + # raise an EODAG error with a sorting order called with different values for a same sorting parameter + with self.assertRaises(EodagValidationError) as e: + search_args.SearchArgs.model_validate( + { + "productType": "dummy_product_type", + "sortBy": [("eodagSortParam", "ASC"), ("eodagSortParam", "DESC")], + } + ) + self.assertIn( + "'eodagSortParam' parameter is called several times to sort results with different sorting " + "orders. Please set it to only one ('ASC' (ASCENDING) or 'DESC' (DESCENDING))", + str(e.exception.message), + ) diff --git a/tests/units/test_stac_core.py b/tests/units/test_stac_core.py new file mode 100644 index 000000000..d6d704918 --- /dev/null +++ b/tests/units/test_stac_core.py @@ -0,0 +1,361 @@ +# -*- coding: utf-8 -*- +# Copyright 2018, CS GROUP - France, https://www.csgroup.eu/ +# +# This file is part of EODAG project +# https://www.github.com/CS-SI/EODAG +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import importlib +import json +import os +import unittest +from tempfile import TemporaryDirectory +from unittest.mock import Mock + +import pytest + +from eodag.rest.types.stac_search import SearchPostRequest +from eodag.utils.exceptions import ValidationError +from tests import TEST_RESOURCES_PATH, mock +from tests.context import SearchResult +from tests.utils import mock_request + + +class TestStacCore(unittest.TestCase): + @classmethod + def setUpClass(cls): + super(TestStacCore, cls).setUpClass() + + # Mock home and eodag conf directory to tmp dir + cls.tmp_home_dir = TemporaryDirectory() + cls.expanduser_mock = mock.patch( + "os.path.expanduser", autospec=True, return_value=cls.tmp_home_dir.name + ) + cls.expanduser_mock.start() + + # import after having mocked home_dir because it launches http server (and EODataAccessGateway) + import eodag.rest.core as rest_core + + importlib.reload(rest_core) + + cls.rest_core = rest_core + + search_results_file = os.path.join( + TEST_RESOURCES_PATH, "eodag_search_result_peps.geojson" + ) + with open(search_results_file, encoding="utf-8") as f: + search_results_geojson = json.load(f) + cls.products = SearchResult.from_geojson(search_results_geojson) + cls.arguments = { + "query": {"eo:cloud_cover": {"lte": "10"}}, + "filter": "latestIntersect", + } + cls.criteria = { + "productType": "S2_MSI_L1C", + "page": 1, + "items_per_page": 1, + "raise_errors": True, + "cloudCover": "10", + } + cls.empty_products = SearchResult([]) + cls.empty_arguments = {} + cls.empty_criteria = {} + + # mock os.environ to empty env + cls.mock_os_environ = mock.patch.dict(os.environ, {}, clear=True) + cls.mock_os_environ.start() + + # disable product types fetch + os.environ["EODAG_EXT_PRODUCT_TYPES_CFG_FILE"] = "" + + # create a dictionary obj of a S2_MSI_L1C peps response search + peps_resp_search_file = os.path.join( + TEST_RESOURCES_PATH, "provider_responses", "peps_search.json" + ) + with open(peps_resp_search_file, encoding="utf-8") as f: + cls.peps_resp_search_json = json.load(f) + + # create a dictionary obj of a S2_MSI_L2A earth_search response search + earth_search_resp_search_file = os.path.join( + TEST_RESOURCES_PATH, "provider_responses", "earth_search_search.json" + ) + with open(earth_search_resp_search_file, encoding="utf-8") as f: + cls.earth_search_resp_search_json = json.load(f) + + @classmethod + def tearDownClass(cls): + super(TestStacCore, cls).tearDownClass() + # stop Mock and remove tmp config dir + cls.expanduser_mock.stop() + cls.tmp_home_dir.cleanup() + # stop os.environ + cls.mock_os_environ.stop() + + def test_crunch_products_unknown_cruncher_raise_error(self): + """crunch_products must raise a ValidationError if an unknown cruncher is given""" + with self.assertRaises(ValidationError) as context: + self.rest_core.crunch_products(self.products, "unknown_cruncher") + self.assertTrue("Unknown crunch name" in str(context.exception)) + + def test_crunch_products_missing_additional_parameters_raise_error(self): + """crunch_products must raise a ValidationError if additional parameters are required by the cruncher""" + with self.assertRaises(ValidationError) as context: + self.rest_core.crunch_products(self.products, "filterLatestByName") + self.assertTrue("require additional parameters" in str(context.exception)) + + def test_crunch_products_filter_misuse_raise_error(self): + """crunch_products must raise a ValidationError if the cruncher is not used correctly""" + with self.assertRaises(ValidationError): + self.rest_core.crunch_products( + self.products, + "filterLatestByName", + **{"name_pattern": "MisconfiguredError"}, + ) + + def test_crunch_products(self): + """crunch_products returns a SearchResult corresponding to the filter""" + products_filtered = self.rest_core.crunch_products( + self.products, + "filterLatestByName", + **{"name_pattern": r"S2[AB]_MSIL1C_20(?P\d{6}).*T21NY.*"}, + ) + self.assertNotEqual(self.products, products_filtered) + + @mock.patch( + "eodag.rest.core.eodag_api.list_product_types", + autospec=True, + return_value=[{"ID": "S2_MSI_L1C", "abstract": "test"}], + ) + def test_format_product_types(self, list_pt: Mock): + """format_product_types must return a string representation of the product types""" + product_types = self.rest_core.eodag_api.list_product_types( + fetch_providers=False + ) + with pytest.warns( + DeprecationWarning, + match="Call to deprecated function/method format_product_types", + ): + self.assertEqual( + self.rest_core.format_product_types(product_types), + "* *__S2_MSI_L1C__*: test", + ) + + @mock.patch( + "eodag.rest.core.eodag_api.list_product_types", + autospec=True, + return_value=[{"ID": "S2_MSI_L1C"}], + ) + def test_detailled_collections_list(self, list_pt): + """get_detailled_collections_list returned list is non-empty""" + self.assertTrue(self.rest_core.get_detailled_collections_list()) + self.assertTrue(list_pt.called) + + def test_get_geometry(self): + pass # TODO + + def test_home_page_content(self): + """get_home_page_content runs without any error""" + with pytest.warns( + DeprecationWarning, + match="Call to deprecated function/method get_home_page_content", + ): + self.rest_core.get_home_page_content("http://127.0.0.1/") + + async def test_get_stac_catalogs(self): + """get_stac_catalogs runs without any error""" + + await self.rest_core.get_stac_catalogs(mock_request("/"), url="") + + async def test_get_stac_collection(self): + """get_collection runs without any error""" + r = await self.rest_core.get_collection( + mock_request("/"), collection_id="S2_MSI_L1C" + ) + self.assertIsNotNone(r) + self.assertEqual(8, len(r["providers"])) + self.assertEqual(1, r["providers"][0]["priority"]) + self.assertEqual("peps", r["providers"][0]["name"]) + self.assertEqual(["host"], r["providers"][0]["roles"]) + self.assertEqual("https://peps.cnes.fr", r["providers"][0]["url"]) + self.assertTrue( + r["providers"][0]["description"].startswith( + 'The PEPS platform, the French "mirror site"' + ) + ) + + async def test_get_stac_collections(self): + """get_stac_collections runs without any error""" + await self.rest_core.all_collections(mock_request("/")) + + def test_get_stac_conformance(self): + """get_stac_conformance runs without any error""" + self.rest_core.get_stac_conformance() + + def test_get_stac_extension_oseo(self): + """get_stac_extension_oseo runs without any error""" + self.rest_core.get_stac_extension_oseo(url="") + + def test_search_bbox(self): + pass # TODO + + def test_search_product_by_id(self): + pass # TODO + + @mock.patch( + "eodag.plugins.search.qssearch.PostJsonSearch._request", + autospec=True, + ) + async def test_search_stac_items_with_stac_providers(self, mock__request: Mock): + """search_stac_items runs without any error with stac providers""" + # mock the PostJsonSearch request with the S2_MSI_L1C earth_search response search dictionary + mock__request.return_value = mock.Mock() + mock__request.return_value.json.return_value = ( + self.earth_search_resp_search_json + ) + self.rest_core.eodag_api.set_preferred_provider("peps") + + response = await self.rest_core.search_stac_items( + request=mock_request("http://foo/search"), + search_request=SearchPostRequest.model_validate( + {"collections": "S2_MSI_L1C", "provider": "earth_search"} + ), + ) + + mock__request.assert_called() + + # check that default assets have been added to the response + self.assertTrue( + "downloadLink", "thumbnail" in response["features"][0]["assets"].keys() + ) + # check that assets from the provider response search are reformatted in the response + product_id = self.earth_search_resp_search_json["features"][0]["id"] + for k in self.earth_search_resp_search_json["features"][0]["assets"]: + self.assertIn(k, response["features"][0]["assets"].keys()) + if k == "thumbnail": + self.assertTrue(response["features"][0]["assets"][k]["href"]) + continue + # check asset server-mode download link + self.assertEqual( + response["features"][0]["assets"][k]["href"], + f"http://foo/collections/S2_MSI_L1C/items/{product_id}/download/{k}?provider=earth_search", + ) + # check asset origin download link + self.assertEqual( + response["features"][0]["assets"][k]["alternate"]["origin"]["href"], + self.earth_search_resp_search_json["features"][0]["assets"][k]["href"], + ) + # preferred provider should not be changed + self.assertEqual("peps", self.rest_core.eodag_api.get_preferred_provider()[0]) + + @mock.patch( + "eodag.plugins.search.qssearch.QueryStringSearch._request", + autospec=True, + ) + async def test_search_stac_items_with_non_stac_providers(self, mock__request: Mock): + """search_stac_items runs without any error with non-stac providers""" + # mock the QueryStringSearch request with the S2_MSI_L1C peps response search dictionary + mock__request.return_value = mock.Mock() + mock__request.return_value.json.return_value = self.peps_resp_search_json + + response = await self.rest_core.search_stac_items( + request=mock_request("http://foo/search"), + search_request=SearchPostRequest.model_validate({"provider": "peps"}), + catalogs=["S2_MSI_L1C"], + ) + + mock__request.assert_called() + + # check that default assets have been added to the response + self.assertTrue( + "downloadLink", "thumbnail" in response["features"][0]["assets"].keys() + ) + # check that no other asset have also been added to the response + self.assertEqual(len(response["features"][0]["assets"]), 2) + + @mock.patch( + "eodag.plugins.search.qssearch.QueryStringSearch._request", + autospec=True, + ) + async def test_search_stac_items_get(self, mock__request: Mock): + """search_stac_items runs with GET method""" + # mock the QueryStringSearch request with the S2_MSI_L1C peps response search dictionary + mock__request.return_value = mock.Mock() + mock__request.return_value.json.return_value = self.peps_resp_search_json + + response = await self.rest_core.search_stac_items( + request=mock_request("http://foo/search?collections=S2_MSI_L1C"), + search_request=SearchPostRequest.model_validate( + {"collections": ["S2_MSI_L1C"]} + ), + ) + + mock__request.assert_called() + + next_link = [link for link in response["links"] if link["rel"] == "next"][0] + + self.assertEqual( + next_link, + { + "method": "GET", + "rel": "next", + "href": "http://foo/search?collections=S2_MSI_L1C&page=2", + "title": "Next page", + "type": "application/geo+json", + }, + ) + + @mock.patch( + "eodag.plugins.search.qssearch.QueryStringSearch._request", + autospec=True, + ) + async def test_search_stac_items_post(self, mock__request: Mock): + """search_stac_items runs with GET method""" + # mock the QueryStringSearch request with the S2_MSI_L1C peps response search dictionary + mock__request.return_value = mock.Mock() + mock__request.return_value.json.return_value = self.peps_resp_search_json + + response = await self.rest_core.search_stac_items( + request=mock_request( + url="http://foo/search", + method="POST", + body={"collections": ["S2_MSI_L1C"], "page": "2"}, + ), + search_request=SearchPostRequest.model_validate( + {"collections": ["S2_MSI_L1C"], "page": "2"} + ), + ) + + mock__request.assert_called() + + next_link = [link for link in response["links"] if link["rel"] == "next"][0] + + self.assertEqual( + next_link, + { + "method": "POST", + "rel": "next", + "href": "http://foo/search", + "title": "Next page", + "type": "application/geo+json", + "body": {"collections": ["S2_MSI_L1C"], "page": 3}, + }, + ) + + def test_get_templates_path(self): + """get_templates_path returns an existing dir path""" + with pytest.warns( + DeprecationWarning, + match="Call to deprecated function/method get_templates_path", + ): + self.assertTrue(os.path.isdir(self.rest_core.get_templates_path())) diff --git a/tests/units/test_stac_types.py b/tests/units/test_stac_types.py new file mode 100644 index 000000000..fa0112851 --- /dev/null +++ b/tests/units/test_stac_types.py @@ -0,0 +1,495 @@ +import unittest +from unittest import mock + +from pydantic import ValidationError + +from eodag.rest.types import eodag_search, stac_search + + +class TestStacSearch(unittest.TestCase): + def test_sortby(self): + # Test with valid field and direction + sortby = stac_search.Sortby(field="test", direction="asc") + self.assertEqual(sortby.field, "test") + self.assertEqual(sortby.direction, "asc") + + # Test with invalid direction + with self.assertRaises(ValidationError) as context: + stac_search.Sortby(field="test", direction="invalid") + self.assertTrue("Input should be 'asc' or 'desc'" in str(context.exception)) + + # Test with empty field + with self.assertRaises(ValidationError) as context: + stac_search.Sortby(field="", direction="asc") + + def test_sortby2list(self): + # Test with no input + self.assertEqual(stac_search.sortby2list(None), None) + + # Test with valid input + sortby_list = stac_search.sortby2list("test,+test2,-test3") + self.assertEqual(len(sortby_list), 3) + self.assertEqual(sortby_list[0].field, "test") + self.assertEqual(sortby_list[0].direction, "asc") + self.assertEqual(sortby_list[1].field, "test2") + self.assertEqual(sortby_list[1].direction, "asc") + self.assertEqual(sortby_list[2].field, "test3") + self.assertEqual(sortby_list[2].direction, "desc") + + +class TestSearchPostRequest(unittest.TestCase): + def test_limit(self): + # Test with positive integer + try: + stac_search.SearchPostRequest.model_validate({"limit": 10}) + except ValidationError: + self.fail("SearchPostRequest raised ValidationError unexpectedly!") + + # Test with non-positive integer + with self.assertRaises(ValidationError): + stac_search.SearchPostRequest.model_validate({"limit": -10}) + + def test_page(self): + # Test with positive integer + try: + stac_search.SearchPostRequest.model_validate({"page": 10}) + except ValidationError: + self.fail("SearchPostRequest raised ValidationError unexpectedly!") + + # Test with non-positive integer + with self.assertRaises(ValidationError): + stac_search.SearchPostRequest.model_validate({"page": -10}) + + def test_check_filter_lang(self): + # Test with filter and without filter-lang + values = {"filter": {"test": "value"}} + search_args = stac_search.SearchPostRequest.model_validate(values).model_dump( + exclude_none=True + ) + self.assertEqual( + search_args, {"filter_lang": "cql2-json", "filter": {"test": "value"}} + ) + + # Test with filter-lang and without filter + values = {"filter-lang": "cql2-json"} + with self.assertRaises(ValidationError): + stac_search.SearchPostRequest.model_validate(values) + + # Test with incorrect filter-lang + values = {"filter": {"test": "value"}, "filter-lang": "incorrect"} + with self.assertRaises(ValidationError): + stac_search.SearchPostRequest.model_validate(values) + + # Test with correct filter and filter-lang + values = {"filter": {"test": "value"}, "filter-lang": "cql2-json"} + try: + stac_search.SearchPostRequest.model_validate(values) + except ValidationError: + self.fail("SearchPostRequest raised ValidationError unexpectedly!") + + def test_str_to_str_list(self): + # Test with string + values = {"ids": "id1,id2", "collections": "col1,col2"} + req = stac_search.SearchPostRequest.model_validate(values) + self.assertEqual(req.ids, ["id1", "id2"]) + self.assertEqual(req.collections, ["col1", "col2"]) + + # Test with list of strings + values = {"ids": ["id1", "id2"], "collections": ["col1", "col2"]} + req = stac_search.SearchPostRequest.model_validate(values) + self.assertEqual(req.ids, ["id1", "id2"]) + self.assertEqual(req.collections, ["col1", "col2"]) + + def test_validate_spatial(self): + # Test with both bbox and intersects + values = { + "bbox": [-180, -90, 180, 90], + "intersects": {"type": "Point", "coordinates": [0, 0]}, + } + with self.assertRaises(ValidationError): + stac_search.SearchPostRequest.model_validate(values) + + # Test with incorrect geometry + values = {"intersects": {"type": "Incorrect", "coordinates": [0, 0]}} + with self.assertRaises(ValidationError): + stac_search.SearchPostRequest.model_validate(values) + + # Test with correct geometry + values = {"intersects": {"type": "Point", "coordinates": [0, 0]}} + try: + stac_search.SearchPostRequest.model_validate(values) + except ValidationError: + self.fail("SearchPostRequest raised ValidationError unexpectedly!") + + def test_validate_bbox(self): + # Test with incorrect bbox + values = {"bbox": [180, -90, -180, 90]} + with self.assertRaises(ValidationError): + stac_search.SearchPostRequest.model_validate(values) + + # Test with correct bbox + values = {"bbox": [-180, -90, 180, 90]} + try: + stac_search.SearchPostRequest.model_validate(values) + except ValidationError: + self.fail("SearchPostRequest raised ValidationError unexpectedly!") + + def test_validate_datetime(self): + # Test with single datetime + values = {"datetime": "2023-12-18T19:56:32Z"} + try: + stac_search.SearchPostRequest.model_validate(values) + except ValidationError: + self.fail("SearchPostRequest raised ValidationError unexpectedly!") + + # Test with datetime interval + values = {"datetime": "2023-12-18T19:56:32Z/2023-12-19T19:56:32Z"} + try: + stac_search.SearchPostRequest.model_validate(values) + except ValidationError: + self.fail("SearchPostRequest raised ValidationError unexpectedly!") + + # Test with open datetime interval + values = {"datetime": "../2023-12-19T19:56:32Z"} + try: + stac_search.SearchPostRequest.model_validate(values) + except ValidationError: + self.fail("SearchPostRequest raised ValidationError unexpectedly!") + + # Test with both ends of range open + values = {"datetime": "../.."} + with self.assertRaises(ValidationError): + stac_search.SearchPostRequest.model_validate(values) + + # Test with invalid datetime range + values = {"datetime": "2023-12-19T19:56:32Z/2023-12-18T19:56:32Z"} + with self.assertRaises(ValidationError): + stac_search.SearchPostRequest.model_validate(values) + + # Test with invalid datetime + values = {"datetime": "invalid"} + with self.assertRaises(ValidationError): + stac_search.SearchPostRequest.model_validate(values) + + +class TestEODAGSearch(unittest.TestCase): + def test_remove_custom_extensions(self): + values = {"unk:test1": "value", "oseo:test2": "value", "collections": ["value"]} + self.assertEqual( + eodag_search.EODAGSearch.model_validate(values).model_dump( + exclude_none=True + ), + { + "test1": "value", + "test2": "value", + "productType": "value", + "items_per_page": 20, + "page": 1, + "raise_errors": False, + }, + ) + + def test_remove_keys(self): + values = { + "datetime": "2023-12-18T16:41:35Z", + "collections": ["value"], + "bbox": "value", + "intersects": {"type": "Point", "coordinates": [1, 1]}, + "raise_errors": False, + } + self.assertEqual( + eodag_search.EODAGSearch.model_validate(values).model_dump( + exclude_none=True + ), + { + "productType": "value", + "items_per_page": 20, + "page": 1, + "raise_errors": False, + }, + ) + + def test_assemble_geom(self): + values = { + "geometry": {"type": "Point", "coordinates": [1, 1]}, + "collections": ["value"], + } + self.assertEqual( + eodag_search.EODAGSearch.model_validate(values).model_dump( + exclude_none=True + ), + { + "geom": {"type": "Point", "coordinates": [1, 1]}, + "productType": "value", + "items_per_page": 20, + "page": 1, + "raise_errors": False, + }, + ) + + def test_convert_collections_to_product_type(self): + # Test with one collection in collections + values = {"collections": ["test_collections"], "test": "value"} + self.assertEqual( + eodag_search.EODAGSearch.model_validate(values).model_dump( + exclude_none=True + ), + { + "test": "value", + "productType": "test_collections", + "items_per_page": 20, + "page": 1, + "raise_errors": False, + }, + ) + + # Test with one collection in collection + values = {"collections": ["test_collection"], "test": "value"} + self.assertEqual( + eodag_search.EODAGSearch.model_validate(values).model_dump( + exclude_none=True + ), + { + "test": "value", + "productType": "test_collection", + "items_per_page": 20, + "page": 1, + "raise_errors": False, + }, + ) + + # Test with more than one collection in collections + values = {"collections": ["value1", "value2"], "test": "value"} + with self.assertRaises(ValidationError) as context: + eodag_search.EODAGSearch.model_validate(values) + self.assertTrue( + "Only one collection is supported per search" in str(context.exception) + ) + + def test_convert_query_to_dict(self): + # Test with valid query + values = { + "query": {"properties.test": {"eq": "value"}}, + "collections": ["test_collection"], + } + self.assertEqual( + eodag_search.EODAGSearch.model_validate(values).model_dump( + exclude_none=True + ), + { + "test": "value", + "productType": "test_collection", + "items_per_page": 20, + "page": 1, + "raise_errors": False, + }, + ) + + # Test with invalid query syntax + values = {"query": {"invalid": "invalid"}, "collections": ["test_collection"]} + with self.assertRaises(ValidationError) as context: + eodag_search.EODAGSearch.model_validate(values) + self.assertTrue( + "Exactly 1 operator must be specified per property" + in str(context.exception) + ) + + # Test with multiple operators for a property + values = { + "query": {"properties.test": {"eq": "value", "lte": "value"}}, + "collections": ["test_collection"], + } + with self.assertRaises(ValidationError) as context: + eodag_search.EODAGSearch.model_validate(values) + self.assertTrue( + "Exactly 1 operator must be specified per property" + in str(context.exception) + ) + + # Test with unsupported operator + values = { + "query": {"properties.test": {"neq": "value"}}, + "collections": ["test_collection"], + } + with self.assertRaises(ValidationError) as context: + eodag_search.EODAGSearch.model_validate(values) + self.assertTrue( + 'operator "neq" is not supported for property "test"' + in str(context.exception) + ) + + # Test with "lte" operator for a non-cloud_cover property + values = { + "query": {"properties.test": {"lte": "value"}}, + "collections": ["test_collection"], + } + with self.assertRaises(ValidationError) as context: + eodag_search.EODAGSearch.model_validate(values) + self.assertTrue( + 'operator "lte" is not supported for property "test"' + in str(context.exception) + ) + + @mock.patch("eodag.rest.types.eodag_search.EodagEvaluator") + @mock.patch("eodag.rest.types.eodag_search.parse_json") + @mock.patch("eodag.rest.types.eodag_search.is_dict_str_any") + def test_parse_cql( + self, mock_is_dict_str_any, mock_parse_json, mock_EodagEvaluator + ): + # Set up the mock objects + mock_parse_json.return_value = "parsed_filter" + mock_EodagEvaluator.return_value.evaluate.return_value = { + "parsed_result": "parsed_value" + } + mock_is_dict_str_any.return_value = True + + # Test with no filter + values = {"test": "value"} + expected_result = {"test": "value"} + self.assertEqual(eodag_search.EODAGSearch.parse_cql(values), expected_result) + + # Test with valid filter + values = {"filter": "filter", "test": "value"} + expected_result = {"test": "value", "parsed_result": "parsed_value"} + self.assertEqual(eodag_search.EODAGSearch.parse_cql(values), expected_result) + + # Test with invalid filter + values = {"filter": "filter", "test": "value"} + mock_is_dict_str_any.return_value = False + with self.assertRaises(ValueError) as context: + eodag_search.EODAGSearch.parse_cql(values) + self.assertTrue( + "The parsed filter is not a proper dictionary" in str(context.exception) + ) + + def test_join_instruments(self): + # Test with string + self.assertEqual( + eodag_search.EODAGSearch.model_validate( + {"instruments": "value", "collections": ["test_collection"]} + ).model_dump(exclude_none=True), + { + "instrument": "value", + "productType": "test_collection", + "items_per_page": 20, + "page": 1, + "raise_errors": False, + }, + ) + + # Test with list of strings + self.assertEqual( + eodag_search.EODAGSearch.model_validate( + { + "instruments": ["value1", "value2"], + "collections": ["test_collection"], + } + ).model_dump(exclude_none=True), + { + "instrument": "value1,value2", + "productType": "test_collection", + "items_per_page": 20, + "page": 1, + "raise_errors": False, + }, + ) + + def test_convert_stac_to_eodag_sortby(self): + values = { + "sortby": [{"field": "test", "direction": "desc"}], + "collections": ["test_collection"], + } + self.assertEqual( + eodag_search.EODAGSearch.model_validate(values).model_dump( + exclude_none=True + ), + { + "sortBy": [("test", "desc")], + "productType": "test_collection", + "items_per_page": 20, + "page": 1, + "raise_errors": False, + }, + ) + + def test_verify_producttype_is_present(self): + # Test with no collections and no collection + with self.assertRaises(ValidationError) as context: + eodag_search.EODAGSearch.model_validate({}) + self.assertTrue("A collection is required" in str(context.exception)) + + # test with neither collections nor collection but isCatalog + self.assertEqual( + eodag_search.EODAGSearch.model_validate( + {}, context={"isCatalog": True} + ).model_dump(exclude_none=True), + { + "items_per_page": 20, + "page": 1, + "raise_errors": False, + }, + ) + + def test_cleanup_dates(self): + # Test with date ending with "+00:00" + self.assertEqual( + eodag_search.EODAGSearch.model_validate( + { + "start": "2023-12-18T16:41:35+00:00", + "end": "2023-12-19T16:41:35+00:00", + "collections": ["test_collection"], + } + ).model_dump(exclude_none=True), + { + "start": "2023-12-18T16:41:35Z", + "end": "2023-12-19T16:41:35Z", + "productType": "test_collection", + "items_per_page": 20, + "page": 1, + "raise_errors": False, + }, + ) + + # Test with date not ending with "+00:00" + self.assertEqual( + eodag_search.EODAGSearch.model_validate( + { + "start": "2023-12-20T16:41:35", + "end": "2023-12-21T16:41:35", + "collections": ["test_collection"], + } + ).model_dump(exclude_none=True), + { + "start": "2023-12-20T16:41:35", + "end": "2023-12-21T16:41:35", + "productType": "test_collection", + "items_per_page": 20, + "page": 1, + "raise_errors": False, + }, + ) + + def test_alias_to_property(self): + # Test with valid aliases + self.assertEqual( + eodag_search.EODAGSearch.to_eodag("collections"), "productType" + ) + self.assertEqual( + eodag_search.EODAGSearch.to_eodag("start_datetime"), + "startTimeFromAscendingNode", + ) + self.assertEqual( + eodag_search.EODAGSearch.to_eodag("platform"), + "platformSerialIdentifier", + ) + + # Test with invalid alias + self.assertEqual( + eodag_search.EODAGSearch.to_eodag("invalid_alias"), "invalid_alias" + ) + + # Test with empty string + self.assertEqual(eodag_search.EODAGSearch.to_eodag(""), "") + + # Test with alias that has no corresponding property + self.assertEqual(eodag_search.EODAGSearch.to_eodag("provider"), "provider") diff --git a/tests/units/test_stac_utils.py b/tests/units/test_stac_utils.py index 9ca450a24..ada153c67 100644 --- a/tests/units/test_stac_utils.py +++ b/tests/units/test_stac_utils.py @@ -20,13 +20,21 @@ import json import os import unittest +from datetime import datetime, timezone from tempfile import TemporaryDirectory -import pytest +from pygeofilter import ast +from pygeofilter.values import Geometry +import eodag.rest.utils.rfc3339 as rfc3339 +from eodag.rest.stac import StacCollection +from eodag.rest.types.stac_search import SearchPostRequest +from eodag.rest.utils.cql_evaluate import EodagEvaluator from eodag.utils.exceptions import ValidationError +from eodag.utils.rest import rfc3339_str_to_datetime from tests import TEST_RESOURCES_PATH, mock -from tests.context import RequestError, SearchResult +from tests.context import SearchResult +from tests.utils import mock_request class TestStacUtils(unittest.TestCase): @@ -48,6 +56,12 @@ def setUpClass(cls): cls.rest_utils = rest_utils + import eodag.rest.core as rest_core + + importlib.reload(rest_core) + + cls.rest_core = rest_core + search_results_file = os.path.join( TEST_RESOURCES_PATH, "eodag_search_result_peps.geojson" ) @@ -58,7 +72,7 @@ def setUpClass(cls): "query": {"eo:cloud_cover": {"lte": "10"}}, "filter": "latestIntersect", } - cls.criterias = { + cls.criteria = { "productType": "S2_MSI_L1C", "page": 1, "items_per_page": 1, @@ -67,7 +81,7 @@ def setUpClass(cls): } cls.empty_products = SearchResult([]) cls.empty_arguments = {} - cls.empty_criterias = {} + cls.empty_criteria = {} # mock os.environ to empty env cls.mock_os_environ = mock.patch.dict(os.environ, {}, clear=True) @@ -99,102 +113,107 @@ def tearDownClass(cls): # stop os.environ cls.mock_os_environ.stop() - def test_filter_products_unknown_cruncher_raise_error(self): - """filter_products must raise a ValidationError if an unknown cruncher is given""" - with self.assertRaises(ValidationError) as context: - self.rest_utils.filter_products( - self.products, {"filter": "unknown_cruncher"} - ) - self.assertTrue("unknown filter name" in str(context.exception)) - - def test_filter_products_missing_additional_parameters_raise_error(self): - """filter_products must raise a ValidationError if additional parameters are required by the cruncher""" - with self.assertRaises(ValidationError) as context: - self.rest_utils.filter_products(self.products, {"filter": "latestByName"}) - self.assertTrue("additional parameters required" in str(context.exception)) - - def test_filter_products_filter_misuse_raise_error(self): - """filter_products must raise a ValidationError if the cruncher is not used correctly""" - with self.assertRaises(ValidationError): - self.rest_utils.filter_products( - self.products, - {"filter": "latestByName", "name_pattern": "MisconfiguredError"}, - ) + def test_str2json(self): + """str2json return a Python dict from a string dict representation""" + json_dict = self.rest_utils.str2json( + "collections", '{"collections": ["S1_SAR_GRD"]}' + ) + self.assertEqual(json_dict, {"collections": ["S1_SAR_GRD"]}) - def test_filter_products(self): - """filter_products returns a SearchResult corresponding to the filter""" - products_empty_filter = self.rest_utils.filter_products(self.products, {}) - products_filtered = self.rest_utils.filter_products( - self.products, - { - "filter": "latestByName", - "name_pattern": r"S2[AB]_MSIL1C_20(?P\d{6}).*T21NY.*", - }, + def test_str2list(self): + """str2list convert a str variable to a list variable""" + self.assertIsNone(self.rest_utils.str2list(None)) + self.assertEqual(self.rest_utils.str2list(""), None) + self.assertEqual(self.rest_utils.str2list("value"), ["value"]) + self.assertEqual( + self.rest_utils.str2list("value1,value2,value3"), + ["value1", "value2", "value3"], ) - self.assertEqual(self.products, products_empty_filter) - self.assertNotEqual(self.products, products_filtered) - - @mock.patch( - "eodag.rest.utils.eodag_api.list_product_types", - autospec=True, - return_value=[{"ID": "S2_MSI_L1C", "abstract": "test"}], - ) - def test_format_product_types(self, list_pt): - """format_product_types must return a string representation of the product types""" - product_types = self.rest_utils.eodag_api.list_product_types( - fetch_providers=False + + def test_is_dict_str_any(self): + """is_dict_str_any verifies whether the input variable is of type Dict[str, Any]""" + self.assertTrue( + self.rest_utils.is_dict_str_any({"key1": "value1", "key2": "value2"}) ) - with pytest.warns( - DeprecationWarning, - match="Call to deprecated function/method format_product_types", - ): - self.assertEqual( - self.rest_utils.format_product_types(product_types), - "* *__S2_MSI_L1C__*: test", - ) + self.assertTrue( + self.rest_utils.is_dict_str_any({"key1": 123, "key2": [1, 2, 3]}) + ) + self.assertFalse( + self.rest_utils.is_dict_str_any({123: "value1", "key2": "value2"}) + ) + self.assertFalse(self.rest_utils.is_dict_str_any("not a dict")) + self.assertFalse(self.rest_utils.is_dict_str_any(None)) - def test_get_arguments_query_paths(self): - """get_arguments_query_paths must extract the query paths and their values from a request arguments""" - arguments = { - "another": "example", - "query": {"eo:cloud_cover": {"lte": "10"}, "foo": {"eq": "bar"}}, - } - arguments_query_path = self.rest_utils.get_arguments_query_paths(arguments) + def test_flatten_list(self): + """flatten_list convert list of list to single list""" + self.assertEqual( + self.rest_utils.flatten_list([1, 2, [3, 4, [5, 6], 7], 8]), + [1, 2, 3, 4, 5, 6, 7, 8], + ) self.assertEqual( - arguments_query_path, - {"query.eo:cloud_cover.lte": "10", "query.foo.eq": "bar"}, + self.rest_utils.flatten_list(["a", ["b", ["c", "d"], "e"], "f"]), + ["a", "b", "c", "d", "e", "f"], + ) + self.assertEqual(self.rest_utils.flatten_list([1, 2, 3]), [1, 2, 3]) + self.assertEqual(self.rest_utils.flatten_list([]), []) + self.assertEqual( + self.rest_utils.flatten_list([1, [2, [3, [4, [5]]]]]), [1, 2, 3, 4, 5] ) - def test_get_criterias_from_metadata_mapping(self): - """get_criterias_from_metadata_mapping must extract search criterias - from request arguments with metadata_mapping config""" - metadata_mapping = { - "doi": [ - '{{"query":{{"sci:doi":{{"eq":"{doi}"}}}}}}', - '$.properties."sci:doi"', - ], - "platform": [ - '{{"query":{{"constellation":{{"eq":"{platform}"}}}}}}', - "$.properties.constellation", - ], - "cloudCover": [ - '{{"query":{{"eo:cloud_cover":{{"lte":"{cloudCover}"}}}}}}', - '$.properties."eo:cloud_cover"', - ], - "productVersion": [ - '{{"query":{{"version":{{"eq":"{productVersion}"}}}}}}', - "$.properties.version", - ], - "id": ['{{"ids":["{id}"]}}', "$.id"], - "downloadLink": "%(base_uri)s/collections/{productType}/items/{id}", - } - arguments = { - "query": {"eo:cloud_cover": {"lte": "10"}, "foo": {"eq": "bar"}}, - } - criterias = self.rest_utils.get_criterias_from_metadata_mapping( - metadata_mapping, arguments + def test_list_to_str_list(self): + """ + list_to_str_list convert a List[Any] to a List[str]. + It raises a TypeError if the convertion cannot be done + """ + self.assertEqual(self.rest_utils.list_to_str_list([1, 2, 3]), ["1", "2", "3"]) + self.assertEqual( + self.rest_utils.list_to_str_list(["a", "b", "c"]), ["a", "b", "c"] + ) + self.assertEqual( + self.rest_utils.list_to_str_list([1.1, 2.2, 3.3]), ["1.1", "2.2", "3.3"] + ) + self.assertEqual(self.rest_utils.list_to_str_list([]), []) + self.assertEqual( + self.rest_utils.list_to_str_list([1, "2", 3.3, [4, 5]]), + ["1", "2", "3.3", "[4, 5]"], + ) + + def test_get_next_link_post(self): + """Verify search next link for POST request""" + mr = mock_request(url="http://foo/search", body={"page": 2}, method="POST") + sr = SearchPostRequest.model_validate(mr.json.return_value) + + next_link = self.rest_utils.get_next_link(mr, sr, 100, 20) + + self.assertEqual( + next_link, + { + "rel": "next", + "href": "http://foo/search", + "title": "Next page", + "method": "POST", + "body": {"page": 3}, + "type": "application/geo+json", + }, + ) + + def test_get_next_link_get(self): + """Verify search next link for GET request""" + mr = mock_request("http://foo/search") + next_link = self.rest_utils.get_next_link( + mr, SearchPostRequest.model_validate({}), 100, 20 + ) + + self.assertEqual( + next_link, + { + "rel": "next", + "href": "http://foo/search?page=2", + "title": "Next page", + "method": "GET", + "type": "application/geo+json", + }, ) - self.assertEqual(criterias, {"cloudCover": "10", "foo": "bar"}) def test_get_date(self): """Date validation function must correctly validate dates""" @@ -235,344 +254,187 @@ def test_get_datetime(self): self.assertEqual(dtstart, start) self.assertEqual(dtend, end) - @mock.patch( - "eodag.rest.utils.eodag_api.list_product_types", - autospec=True, - return_value=[{"ID": "S2_MSI_L1C"}], - ) - def test_detailled_collections_list(self, list_pt): - """get_detailled_collections_list returned list is non-empty""" - self.assertTrue(self.rest_utils.get_detailled_collections_list()) - self.assertTrue(list_pt.called) - - def test_get_geometry(self): - pass # TODO - - def test_home_page_content(self): - """get_home_page_content runs without any error""" - with pytest.warns( - DeprecationWarning, - match="Call to deprecated function/method get_home_page_content", - ): - self.rest_utils.get_home_page_content("http://127.0.0.1/") - - def test_get_int(self): - """get_int must raise a ValidationError for strings that cannot be interpreted as integers""" - self.rest_utils.get_int("1") - with self.assertRaises(ValidationError): - self.rest_utils.get_int("a") - - def test_get_metadata_query_paths(self): - """get_metadata_query_paths returns query paths from metadata_mapping and their corresponding names""" - metadata_mapping = { - "cloudCover": [ - '{{"query":{{"eo:cloud_cover":{{"lte":"{cloudCover}"}}}}}}', - '$.properties."eo:cloud_cover"', + def test_rfc3339_str_to_datetime(self): + test_str = "2023-12-18T16:41:35Z" + expected_result = datetime(2023, 12, 18, 16, 41, 35, tzinfo=timezone.utc) + self.assertEqual(rfc3339_str_to_datetime(test_str), expected_result) + + async def test_fetch_external_stac_collections(self): + """Load external STAC collections""" + + external_json = """{ + "new_field":"New Value", + "title":"A different title for Sentinel 2 MSI Level 1C", + "keywords":["New Keyword"], + "providers":[{"name":"foo_provider","roles":["producer"]}], + "links":[ + {"rel":"self","href":"http://another.self"}, + {"rel":"license","href":"http://foo.bar"} ] - } - metadata_query_paths = self.rest_utils.get_metadata_query_paths( - metadata_mapping - ) - self.assertEqual( - metadata_query_paths, {"query.eo:cloud_cover.lte": "cloudCover"} - ) - - def test_get_pagination_info(self): - """get_pagination_info must raise a ValidationError if wrong values are given""" - self.rest_utils.get_pagination_info({}) - with self.assertRaises(ValidationError): - self.rest_utils.get_pagination_info({"page": "-1"}) - with self.assertRaises(ValidationError): - self.rest_utils.get_pagination_info({"limit": "-1"}) - - def test_get_product_types(self): - """get_product_types use""" - self.assertTrue(self.rest_utils.get_product_types()) - self.assertTrue( - self.rest_utils.get_product_types(filters={"sensorType": "OPTICAL"}) - ) - - def test_get_stac_catalogs(self): - """get_stac_catalogs runs without any error""" - self.rest_utils.get_stac_catalogs(url="") - - def test_get_stac_collection_by_id(self): - """get_stac_collection_by_id runs without any error""" - r = self.rest_utils.get_stac_collection_by_id( - url="", root="", collection_id="S2_MSI_L1C" - ) - self.assertIsNotNone(r) - self.assertEqual(8, len(r["providers"])) - self.assertEqual(1, r["providers"][0]["priority"]) - self.assertEqual("peps", r["providers"][0]["name"]) - self.assertEqual(["host"], r["providers"][0]["roles"]) - self.assertEqual("https://peps.cnes.fr", r["providers"][0]["url"]) - self.assertTrue( - r["providers"][0]["description"].startswith( - 'The PEPS platform, the French "mirror site"' + }""" + product_type_conf = self.rest_core.eodag_api.product_types_config["S2_MSI_L1C"] + ext_stac_collection_path = "/path/to/external/stac/collections/S2_MSI_L1C.json" + product_type_conf["stacCollection"] = ext_stac_collection_path + + with mock.patch( + "eodag.rest.stac.fetch_json", + autospec=True, + return_value=json.loads(external_json), + ) as mock_fetch_json: + # Check if the returned STAC collection contains updated data + StacCollection.fetch_external_stac_collections(self.rest_core.eodag_api) + + stac_coll = await self.rest_core.get_collection( + request=mock_request(url="http://foo/collections/S2_MSI_L1C"), + collection_id="S2_MSI_L1C", ) - ) - - def test_get_stac_collections(self): - """get_stac_collections runs without any error""" - self.rest_utils.get_stac_collections(url="", root="", arguments={}) - - def test_get_stac_conformance(self): - """get_stac_conformance runs without any error""" - self.rest_utils.get_stac_conformance() - - def test_get_stac_extension_oseo(self): - """get_stac_extension_oseo runs without any error""" - self.rest_utils.get_stac_extension_oseo(url="") + mock_fetch_json.assert_called_with(ext_stac_collection_path) + + # New field + self.assertIn("new_field", stac_coll) + + # links + self.assertEqual(len(stac_coll["links"]), 4) + links_self = [x for x in stac_coll["links"] if x["rel"] == "self"] + self.assertEqual(len(links_self), 1) + self.assertNotEqual(links_self[0]["href"], "http://another.self") + links_license = [x for x in stac_coll["links"] if x["rel"] == "license"] + self.assertEqual(links_license[0]["href"], "http://foo.bar") + + # Merged providers + self.assertIn( + {"name": "foo_provider", "roles": ["producer"]}, stac_coll["providers"] + ) + self.assertGreater(len(stac_coll["providers"]), 1) - @mock.patch( - "eodag.plugins.search.qssearch.QueryStringSearch.do_search", autospec=True - ) - def test_get_stac_item_by_id(self, mock_do_search): - """get_stac_item_by_id returns None if no StacItem was found""" - mock_do_search.return_value = [ - { - "geometry": "POINT (0 0)", - "properties": {"productIdentifier": "foo", "title": "foo"}, - } - ] - self.assertIsNotNone( - self.rest_utils.get_stac_item_by_id( - url="", item_id="foo", catalogs=["S2_MSI_L1C"] + # Merged keywords + self.assertListEqual( + ["L1", "MSI", "New Keyword", "OPTICAL", "S2A,S2B", "SENTINEL2"], + sorted(stac_coll["keywords"]), ) - ) - mock_do_search.return_value = [] - self.assertIsNone( - self.rest_utils.get_stac_item_by_id( - url="", item_id="", catalogs=["S3_MSI_L1C"] + # Overriden existing fields + self.assertEqual( + "A different title for Sentinel 2 MSI Level 1C", stac_coll["title"] ) - ) - - def test_get_templates_path(self): - """get_templates_path returns an existing dir path""" - with pytest.warns( - DeprecationWarning, - match="Call to deprecated function/method get_templates_path", - ): - self.assertTrue(os.path.isdir(self.rest_utils.get_templates_path())) + # Restore previous state + StacCollection.ext_stac_collections.clear() - def test_search_bbox(self): - pass # TODO - def test_search_product_by_id(self): - pass # TODO +class TestEodagCql2jsonEvaluator(unittest.TestCase): + def setUp(self): + self.evaluator = EodagEvaluator() - @mock.patch( - "eodag.plugins.search.qssearch.QueryStringSearch.do_search", - autospec=True, - return_value=[ - { - "geometry": "POINT (0 0)", - "properties": {"productIdentifier": "foo", "title": "foo"}, - } - ], - ) - @mock.patch( - "eodag.plugins.search.qssearch.QueryStringSearch.count_hits", - autospec=True, - return_value=1, - ) - def test_search_products(self, mock_count_hits, mock_do_search): - """search_products runs without any error""" - self.rest_utils.search_products("S2_MSI_L1C", {}) - self.rest_utils.search_products("S2_MSI_L1C", {"unserialized": "true"}) - - # STAC formatted - self.rest_utils.search_products( - "S2_MSI_L1C", - { - "intersects": { - "type": "Polygon", - "coordinates": [ - [ - [0.25, 43.2], - [0.25, 43.9], - [2.8, 43.9], - [2.8, 43.2], - [0.25, 43.2], - ] - ], - }, - "query": {"eo:cloud_cover": {"lte": 50}}, - "dtstart": "2020-02-01T00:00:00.000Z", - "dtend": "2021-02-20T00:00:00.000Z", - "product_type": "S2_MSI_L1C", - "unserialized": "true", - }, - ) - call_args, call_kwargs = mock_do_search.call_args - # check if call_kwargs contains subset - self.assertLessEqual( - { - "productType": "S2_MSI_L1C", - "cloudCover": 50, - "startTimeFromAscendingNode": "2020-02-01T00:00:00", - "completionTimeFromAscendingNode": "2021-02-20T00:00:00", - }.items(), - call_kwargs.items(), - ) - self.assertEqual(call_kwargs["geometry"].bounds, (0.25, 43.2, 2.8, 43.9)) - - @mock.patch( - "eodag.plugins.search.qssearch.QueryStringSearch.do_search", - autospec=True, - side_effect=RequestError, - ) - @mock.patch( - "eodag.plugins.search.qssearch.QueryStringSearch.count_hits", - autospec=True, - side_effect=RequestError, - ) - def test_search_products_fail(self, mock_count_hits, mock_do_search): - """search_products fail must return an error""" - with self.assertRaisesRegex( - RequestError, - r"No result could be obtained from any available provider", - ): - self.rest_utils.search_products("S2_MSI_L1C", {}) - - @mock.patch( - "eodag.plugins.search.qssearch.PostJsonSearch._request", - autospec=True, - ) - def test_search_stac_items_with_stac_providers(self, mock__request): - """search_stac_items runs without any error with stac providers""" - # mock the PostJsonSearch request with the S2_MSI_L1C earth_search response search dictionary - mock__request.return_value = mock.Mock() - mock__request.return_value.json.return_value = ( - self.earth_search_resp_search_json + def test_attribute(self): + self.assertEqual(self.evaluator.attribute("test"), "test") + self.assertEqual( + self.evaluator.attribute(ast.Attribute("test")), ast.Attribute("test") ) - self.rest_utils.eodag_api.set_preferred_provider("peps") - - response = self.rest_utils.search_stac_items( - url="http://foo/search", - arguments={"collections": "S2_MSI_L1C"}, - root="http://foo", - catalogs=[], - provider="earth_search", + self.assertEqual(self.evaluator.attribute(123), 123) + self.assertEqual(self.evaluator.attribute(123.456), 123.456) + + def test_spatial(self): + geometry = Geometry({"type": "Point", "coordinates": [125.6, 10.1]}) + self.assertEqual( + self.evaluator.spatial(geometry), + {"type": "Point", "coordinates": [125.6, 10.1]}, ) - mock__request.assert_called() + def test_temporal(self): + dt = datetime.now() + self.assertEqual(self.evaluator.temporal(dt), dt.strftime("%Y-%m-%dT%H:%M:%SZ")) - # check that default assets have been added to the response - self.assertTrue( - "downloadLink", "thumbnail" in response["features"][0]["assets"].keys() + def test_interval(self): + result = self.evaluator.interval(None, "value1", "value2") + self.assertEqual(result, ["value1", "value2"]) + + def test_predicate(self): + attribute = ast.Attribute("test") + value = "value" + self.assertEqual( + self.evaluator.predicate(ast.Equal(attribute, value), attribute, value), + {"test": "value"}, ) - # check that assets from the provider response search are reformatted in the response - product_id = self.earth_search_resp_search_json["features"][0]["properties"][ - "s2:product_uri" - ].replace(".SAFE", "") - for (k, v) in self.earth_search_resp_search_json["features"][0][ - "assets" - ].items(): - self.assertIn(k, response["features"][0]["assets"].keys()) - # check asset server-mode download link - self.assertEqual( - response["features"][0]["assets"][k]["href"], - f"http://foo/collections/S2_MSI_L1C/items/{product_id}/download/{k}?provider=earth_search", - ) - # check asset origin download link - self.assertEqual( - response["features"][0]["assets"][k]["alternate"]["origin"]["href"], - self.earth_search_resp_search_json["features"][0]["assets"][k]["href"], + self.assertEqual( + self.evaluator.predicate( + ast.GeometryIntersects(ast.Attribute("geometry"), value), + ast.Attribute("geometry"), + value, + ), + {"geometry": "value"}, + ) + with self.assertRaises(ValueError) as context: + self.evaluator.predicate( + ast.GeometryIntersects(attribute, value), + attribute, + value, ) - # preferred provider should not be changed - self.assertEqual("peps", self.rest_utils.eodag_api.get_preferred_provider()[0]) - - @mock.patch( - "eodag.plugins.search.qssearch.QueryStringSearch._request", - autospec=True, - ) - def test_search_stac_items_with_non_stac_providers(self, mock__request): - """search_stac_items runs without any error with non-stac providers""" - # mock the QueryStringSearch request with the S2_MSI_L1C peps response search dictionary - mock__request.return_value = mock.Mock() - mock__request.return_value.json.return_value = self.peps_resp_search_json - - response = self.rest_utils.search_stac_items( - url="http://foo/search", - arguments={}, - root="http://foo/", - catalogs=["S2_MSI_L1C"], - provider="peps", + self.assertTrue( + 'operator INTERSECTS is not supported for property "test"' + in str(context.exception) ) - mock__request.assert_called() - - # check that default assets have been added to the response - self.assertTrue( - "downloadLink", "thumbnail" in response["features"][0]["assets"].keys() + self.assertEqual( + self.evaluator.predicate( + ast.LessEqual(attribute, datetime(2022, 1, 1)), + attribute, + datetime(2022, 1, 1), + ), + {"end_datetime": datetime(2022, 1, 1)}, ) - # check that no other asset have also been added to the response - self.assertEqual(len(response["features"][0]["assets"]), 2) - - @mock.patch( - "eodag.plugins.search.qssearch.QueryStringSearch._request", - autospec=True, - ) - def test_search_stac_items_get(self, mock__request): - """search_stac_items runs with GET method""" - # mock the QueryStringSearch request with the S2_MSI_L1C peps response search dictionary - mock__request.return_value = mock.Mock() - mock__request.return_value.json.return_value = self.peps_resp_search_json - - response = self.rest_utils.search_stac_items( - url="http://foo/search", - arguments={"collections": "S2_MSI_L1C"}, - root="http://foo/", - method="GET", + self.assertEqual( + self.evaluator.predicate( + ast.GreaterEqual(attribute, datetime(2022, 1, 1)), + attribute, + datetime(2022, 1, 1), + ), + {"start_datetime": datetime(2022, 1, 1)}, ) - - mock__request.assert_called() - - next_link = [link for link in response["links"] if link["rel"] == "next"][0] - self.assertEqual( - next_link, + self.evaluator.predicate( + ast.TimeOverlaps( + attribute, [datetime(2022, 1, 1), datetime(2022, 12, 31)] + ), + attribute, + [datetime(2022, 1, 1), datetime(2022, 12, 31)], + ), { - "method": "GET", - "body": None, - "rel": "next", - "href": "http://foo/search?collections=S2_MSI_L1C&page=2", - "title": "Next page", - "type": "application/geo+json", + "start_datetime": datetime(2022, 1, 1), + "end_datetime": datetime(2022, 12, 31), }, ) - @mock.patch( - "eodag.plugins.search.qssearch.QueryStringSearch._request", - autospec=True, - ) - def test_search_stac_items_post(self, mock__request): - """search_stac_items runs with GET method""" - # mock the QueryStringSearch request with the S2_MSI_L1C peps response search dictionary - mock__request.return_value = mock.Mock() - mock__request.return_value.json.return_value = self.peps_resp_search_json - - response = self.rest_utils.search_stac_items( - url="http://foo/search", - arguments={"collections": ["S2_MSI_L1C"], "page": 2}, - root="http://foo/", - method="POST", + def test_contains(self): + attribute = ast.Attribute("test") + self.assertEqual( + self.evaluator.contains( + ast.In(attribute, ["value1", "value2"], False), + attribute, + "value1", + "value2", + ), + {"test": ["value1", "value2"]}, + ) + with self.assertRaises(ValueError) as context: + self.evaluator.contains( + ast.In(attribute, "value1", False), attribute, "value1" + ) + self.assertTrue( + 'property "test" expects a value in list format with operator "in"' + in str(context.exception) ) - mock__request.assert_called() + def test_combination(self): + self.assertEqual( + self.evaluator.combination(None, {"key1": "value1"}, {"key2": "value2"}), + {"key1": "value1", "key2": "value2"}, + ) - next_link = [link for link in response["links"] if link["rel"] == "next"][0] - self.assertEqual( - next_link, - { - "method": "POST", - "rel": "next", - "href": "http://foo/search", - "title": "Next page", - "type": "application/geo+json", - "body": {"collections": ["S2_MSI_L1C"], "page": 3}, - }, +class TestRfc3339(unittest.TestCase): + def test_str_to_interval(self): + test_str = "2023-12-18T16:41:35Z/2023-12-19T16:41:35Z" + expected_result = ( + datetime(2023, 12, 18, 16, 41, 35, tzinfo=timezone.utc), + datetime(2023, 12, 19, 16, 41, 35, tzinfo=timezone.utc), ) + self.assertEqual(rfc3339.str_to_interval(test_str), expected_result) diff --git a/tests/units/test_utils.py b/tests/units/test_utils.py index df75f956a..25aa18489 100644 --- a/tests/units/test_utils.py +++ b/tests/units/test_utils.py @@ -19,6 +19,7 @@ import copy import logging import os +import ssl import sys import unittest from contextlib import closing @@ -27,12 +28,20 @@ from pathlib import Path from tempfile import TemporaryDirectory +from requests.exceptions import RequestException + from tests.context import ( + HTTP_REQ_TIMEOUT, + TEST_RESOURCES_PATH, + USER_AGENT, DownloadedCallback, ProgressCallback, + RequestError, deepcopy, + fetch_json, flatten_top_directories, get_bucket_name_and_prefix, + get_ssl_context, get_timestamp, merge_mappings, path_to_uri, @@ -92,6 +101,16 @@ def test_uri_to_path(self): with self.assertRaises(ValueError): uri_to_path("not_a_uri") + def test_ssl_context(self): + + ssl_ctx = get_ssl_context(False) + self.assertEqual(ssl_ctx.verify_mode, ssl.CERT_NONE) + self.assertEqual(ssl_ctx.check_hostname, False) + + ssl_ctx = get_ssl_context(True) + self.assertEqual(ssl_ctx.verify_mode, ssl.CERT_REQUIRED) + self.assertEqual(ssl_ctx.check_hostname, True) + def test_path_to_uri(self): if sys.platform == "win32": self.assertEqual(path_to_uri(r"C:\tmp\file.txt"), "file:///C:/tmp/file.txt") @@ -302,3 +321,36 @@ def test_deepcopy(self): self.assertEqual(shallow_copied["a"][0]["b"][0], 5) # deep copy did not change self.assertEqual(deep_copied["a"][0]["b"][0], 0) + + def test_fetch_json(self): + """fetch_json must be able to fetch a distant or local json file""" + # local + file_path = os.path.join(TEST_RESOURCES_PATH, "constraints.json") + file_content = fetch_json(file_path) + self.assertEqual(file_content[0]["year"][0], "2000") + + # distant + file_url = "https://foo.bar" + with unittest.mock.patch( + "eodag.utils.requests.requests.Session.get", + autospec=True, + ) as mock_get: + mock_get.return_value = unittest.mock.Mock() + mock_get.return_value.json.return_value = {"foo": "bar"} + file_content = fetch_json(file_url) + self.assertEqual(file_content["foo"], "bar") + mock_get.assert_called_once_with( + unittest.mock.ANY, + file_url, + headers=USER_AGENT, + auth=None, + timeout=HTTP_REQ_TIMEOUT, + ) + + # distant error + with unittest.mock.patch( + "eodag.utils.requests.requests.Session.get", + autospec=True, + side_effect=RequestException, + ) as mock_get: + self.assertRaises(RequestError, fetch_json, file_url) diff --git a/tests/utils.py b/tests/utils.py index c1a3ff1ed..b65ce0b27 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -16,11 +16,15 @@ # See the License for the specific language governing permissions and # limitations under the License. import os +from typing import Any, Dict, Literal, Optional # All tests files should import mock from this place -from unittest import mock # noqa +from unittest import mock +from urllib.parse import parse_qs, urlparse +import fastapi import yaml +from fastapi.datastructures import QueryParams # noqa from pkg_resources import resource_filename @@ -58,3 +62,24 @@ def write_eodag_conf_with_fake_credentials(config_file): was_empty_conf[provider]["api"]["credentials"][cred_key] = "foo" with open(config_file, mode="w") as fh: yaml.dump(was_empty_conf, fh, default_flow_style=False) + + +def mock_request( + url: str, + body: Optional[Dict[str, Any]] = None, + method: Optional[Literal["GET", "POST"]] = "GET", +) -> mock.Mock: + parsed_url = urlparse(url) + url_without_qs = parsed_url.scheme + "://" + parsed_url.netloc + parsed_url.path + url_root = parsed_url.scheme + "://" + parsed_url.netloc + query_dict = parse_qs(parsed_url.query) + query_params = {k: ",".join(v) for k, v in query_dict.items()} + + mocked_request = mock.Mock(spec=fastapi.Request) + mocked_request.state.url_root = url_root + mocked_request.state.url = url_without_qs + mocked_request.url = url + mocked_request.method = method + mocked_request.query_params = QueryParams(query_params) + mocked_request.json.return_value = body + return mocked_request