From 71e9f47eaf534cc987edacd1bf15255332eec607 Mon Sep 17 00:00:00 2001 From: Alex Marandon Date: Fri, 13 Dec 2024 14:48:40 +0100 Subject: [PATCH 01/13] docs: extract notebook about queryables Create a notebook about queryables in library mode --- docs/notebooks/api_user_guide/4_search.ipynb | 1663 +---------------- .../api_user_guide/5_queryables.ipynb | 1408 ++++++++++++++ ...ze.ipynb => 6_serialize_deserialize.ipynb} | 0 .../{6_crunch.ipynb => 7_crunch.ipynb} | 0 .../{7_download.ipynb => 8_download.ipynb} | 0 ...ost_process.ipynb => 9_post_process.ipynb} | 0 6 files changed, 1409 insertions(+), 1662 deletions(-) create mode 100644 docs/notebooks/api_user_guide/5_queryables.ipynb rename docs/notebooks/api_user_guide/{5_serialize_deserialize.ipynb => 6_serialize_deserialize.ipynb} (100%) rename docs/notebooks/api_user_guide/{6_crunch.ipynb => 7_crunch.ipynb} (100%) rename docs/notebooks/api_user_guide/{7_download.ipynb => 8_download.ipynb} (100%) rename docs/notebooks/api_user_guide/{8_post_process.ipynb => 9_post_process.ipynb} (100%) diff --git a/docs/notebooks/api_user_guide/4_search.ipynb b/docs/notebooks/api_user_guide/4_search.ipynb index 4f170b63d..63362ff16 100644 --- a/docs/notebooks/api_user_guide/4_search.ipynb +++ b/docs/notebooks/api_user_guide/4_search.ipynb @@ -1,7 +1,6 @@ { "cells": [ { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -9,7 +8,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -17,7 +15,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -51,7 +48,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -74,7 +70,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -82,7 +77,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -92,7 +86,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -100,7 +93,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -108,7 +100,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -116,7 +107,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -212,7 +202,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -229,7 +218,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -312,7 +300,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -366,7 +353,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -374,7 +360,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -431,7 +416,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -463,7 +447,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -471,7 +454,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -479,7 +461,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -539,7 +520,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -547,7 +527,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -1635,7 +1614,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -2217,7 +2195,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -2340,7 +2317,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -2956,7 +2932,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4126,7 +4101,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4134,7 +4108,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4157,7 +4130,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4165,7 +4137,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4181,7 +4152,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4189,7 +4159,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4197,7 +4166,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4233,7 +4201,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4241,7 +4208,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4255,7 +4221,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4263,7 +4228,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4271,7 +4235,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4285,7 +4248,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4302,7 +4264,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4310,7 +4271,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4344,7 +4304,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4373,7 +4332,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4592,7 +4550,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4600,7 +4557,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4687,7 +4643,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4739,7 +4694,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4984,7 +4938,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -4998,7 +4951,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -5006,7 +4958,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -5023,7 +4974,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -5031,7 +4981,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -5403,7 +5352,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -5411,7 +5359,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -5419,7 +5366,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -5448,7 +5394,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -5549,7 +5494,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -5557,7 +5501,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -5565,7 +5508,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -5579,7 +5521,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -5612,7 +5553,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -5650,7 +5590,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -5658,7 +5597,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -5689,7 +5627,6 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ @@ -6328,1604 +6265,6 @@ "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", "" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Queryables" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To know which query parameters can be used to filter the search result, the `list_queryables` method can be used. It has two optional arguments, `provider` and `productType`, additional keyword arguments to filter the queryable values can be added. The method returns a `QueryablesDict` which is a dictionary with an additional attribute `additional_properties` which indicates if additional properties (properties not in the queryables) can be added to the search.\n", - "\n", - "If the function is called without any arguments, the basic queryables that are available for all providers and product types will be returned:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-11-27 11:09:28,362 eodag.config [INFO ] Fetching external product types from https://cs-si.github.io/eodag/eodag/resources/ext_product_types.json\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "
\n", - " QueryablesDict (1) - additional_properties=True\n", - "
\n", - "
\n", - " 'productType': \n", - " typing.Annotated[str, \n", - " FieldInfo(\n", - " 'required': True,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " str,
\n", - " FieldInfo(annotation=NoneType, required=True)
]\n", - "
\n", - "
" - ], - "text/plain": [ - "{'productType': typing.Annotated[str, FieldInfo(annotation=NoneType, required=True)]}" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dag.list_queryables()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "queryables = dag.list_queryables()\n", - "queryables.additional_properties" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If the function is called for a specific product type, the queryables available for this product type, i.e., the basic queryables and product type specific queryables, are shown. Only parameters available for all providers offering the product are returned." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-11-22 18:44:40,385 eodag.search.qssearch [INFO ] Fetching queryables: https://hda.data.destination-earth.eu/stac/search/../collections/EO.ECMWF.DAT.CAMS_GLOBAL_ATMOSHERIC_COMPO_FORECAST/queryables\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " QueryablesDict (10) - additional_properties=True\n", - "
\n", - "
\n", - " 'ecmwf:variable': \n", - " typing.Annotated[List[Literal['10m_u_component_of_wind', ...]], \n", - " FieldInfo('default': '10m_u_component_of_wind', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.List[typing.Literal['10m_u_component_of_wind', '10m_v_component_of_wind', '2m_dewpoint_temperature', '2m_temperature', 'black_carbon_aerosol_optical_depth_550nm', 'boundary_layer_height', 'clear_sky_direct_solar_radiation_at_surface', 'convective_available_potential_energy', 'convective_inhibition', 'convective_precipitation', 'downward_uv_radiation_at_the_surface', 'dust_aerosol_optical_depth_550nm', 'evaporation', 'forecast_albedo', 'high_cloud_cover', 'land_sea_mask', 'large_scale_precipitation', 'low_cloud_cover', 'mean_sea_level_pressure', 'medium_cloud_cover', 'organic_matter_aerosol_optical_depth_550nm', 'particulate_matter_10um', 'particulate_matter_1um', 'particulate_matter_2.5um', 'photosynthetically_active_radiation_at_the_surface', 'sea_ice_cover', 'sea_salt_aerosol_optical_depth_550nm', 'sea_surface_temperature', 'skin_reservoir_content', 'skin_temperature', 'snow_albedo', 'snow_depth', 'sulphate_aerosol_optical_depth_550nm', 'sunshine_duration', 'surface_geopotential', '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_sensible_heat_flux', 'surface_solar_radiation_downward_clear_sky', 'surface_solar_radiation_downwards', 'surface_thermal_radiation_downward_clear_sky', 'surface_thermal_radiation_downwards', '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_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_carbon_monoxide', 'total_column_cloud_ice_water', 'total_column_cloud_liquid_water', 'total_column_ethane', 'total_column_formaldehyde', 'total_column_hydroxyl_radical', 'total_column_isoprene', 'total_column_methane', 'total_column_nitric_acid', 'total_column_nitrogen_dioxide', 'total_column_nitrogen_monoxide', 'total_column_ozone', 'total_column_peroxyacetyl_nitrate', 'total_column_propane', 'total_column_sulphur_dioxide', 'total_column_water', 'total_column_water_vapour', 'total_sky_direct_solar_radiation_at_surface']],
\n", - " FieldInfo(annotation=NoneType, required=False, default='10m_u_component_of_wind', title='Variable', description='Multi level variables require the selection of a pressure or model level. Singe level variables do not. Slow access variables are archived on tape and will be slow to retrieve. Meteorological variables are not accessible for very recent dates (see note above).')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:pressure_level': \n", - " typing.Annotated[list, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " list,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Pressure level')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:model_level': \n", - " typing.Annotated[list, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " list,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Model level', description='Model level 1 is the top of the atmosphere. All levels changed on July 7 2019 00UTC when the number of levels was increased from 60 to 137. Model levels from this base time onwards are not comparable with those before.')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:time': \n", - " typing.Annotated[List[Literal['00:00']], \n", - " FieldInfo('default': '00:00', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.List[typing.Literal['00:00']],
\n", - " FieldInfo(annotation=NoneType, required=False, default='00:00', title='Time', description='Model base time as HH:MM (UTC)')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:leadtime_hour': \n", - " typing.Annotated[List[Literal['0', ...]], \n", - " FieldInfo('default': '0', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.List[typing.Literal['0', '1', '10', '100', '101', '102', '103', '104', '105', '106', '107', '108', '109', '11', '110', '111', '112', '113', '114', '115', '116', '117', '118', '119', '12', '120', '13', '14', '15', '16', '17', '18', '19', '2', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '3', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '4', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '5', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '6', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '7', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '8', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '9', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99']],
\n", - " FieldInfo(annotation=NoneType, required=False, default='0', title='Leadtime hour', description='Forecast lead time in hours')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:type': \n", - " typing.Annotated[List[Literal['forecast']], \n", - " FieldInfo('default': 'forecast', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.List[typing.Literal['forecast']],
\n", - " FieldInfo(annotation=NoneType, required=False, default='forecast', title='Type')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:data_format': \n", - " typing.Annotated[Literal['grib', ...], \n", - " FieldInfo('default': 'grib', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Literal['grib', 'netcdf_zip'],
\n", - " FieldInfo(annotation=NoneType, required=False, default='grib', title='Data format', description='Please select a format for the data files, the native format of MARS dataset is GRIB.')
]\n", - "
\n", - "
\n", - "
\n", - " 'start': \n", - " typing.Annotated[Union[datetime, ...], \n", - " FieldInfo('default': '2015-01-01T00:00:00Z', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Union[datetime.datetime, datetime.date],
\n", - " FieldInfo(annotation=NoneType, required=False, default='2015-01-01T00:00:00Z', alias='startTimeFromAscendingNode', alias_priority=2)
]\n", - "
\n", - "
\n", - "
\n", - " 'end': \n", - " typing.Annotated[Union[datetime, ...], \n", - " FieldInfo('default': '2015-01-02T00:00:00+00:00', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Union[datetime.datetime, datetime.date],
\n", - " FieldInfo(annotation=NoneType, required=False, default='2015-01-02T00:00:00+00:00', alias='completionTimeFromAscendingNode', alias_priority=2)
]\n", - "
\n", - "
\n", - "
\n", - " 'geom': \n", - " typing.Annotated[Union[str, Dict[str, ...], ...], \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Union[str, typing.Dict[str, float], shapely.geometry.base.BaseGeometry],
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, description='Read EODAG documentation for all supported geometry format.')
]\n", - "
\n", - "
" - ], - "text/plain": [ - "{'ecmwf:variable': typing.Annotated[typing.List[typing.Literal['10m_u_component_of_wind', '10m_v_component_of_wind', '2m_dewpoint_temperature', '2m_temperature', 'black_carbon_aerosol_optical_depth_550nm', 'boundary_layer_height', 'clear_sky_direct_solar_radiation_at_surface', 'convective_available_potential_energy', 'convective_inhibition', 'convective_precipitation', 'downward_uv_radiation_at_the_surface', 'dust_aerosol_optical_depth_550nm', 'evaporation', 'forecast_albedo', 'high_cloud_cover', 'land_sea_mask', 'large_scale_precipitation', 'low_cloud_cover', 'mean_sea_level_pressure', 'medium_cloud_cover', 'organic_matter_aerosol_optical_depth_550nm', 'particulate_matter_10um', 'particulate_matter_1um', 'particulate_matter_2.5um', 'photosynthetically_active_radiation_at_the_surface', 'sea_ice_cover', 'sea_salt_aerosol_optical_depth_550nm', 'sea_surface_temperature', 'skin_reservoir_content', 'skin_temperature', 'snow_albedo', 'snow_depth', 'sulphate_aerosol_optical_depth_550nm', 'sunshine_duration', 'surface_geopotential', '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_sensible_heat_flux', 'surface_solar_radiation_downward_clear_sky', 'surface_solar_radiation_downwards', 'surface_thermal_radiation_downward_clear_sky', 'surface_thermal_radiation_downwards', '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_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_carbon_monoxide', 'total_column_cloud_ice_water', 'total_column_cloud_liquid_water', 'total_column_ethane', 'total_column_formaldehyde', 'total_column_hydroxyl_radical', 'total_column_isoprene', 'total_column_methane', 'total_column_nitric_acid', 'total_column_nitrogen_dioxide', 'total_column_nitrogen_monoxide', 'total_column_ozone', 'total_column_peroxyacetyl_nitrate', 'total_column_propane', 'total_column_sulphur_dioxide', 'total_column_water', 'total_column_water_vapour', 'total_sky_direct_solar_radiation_at_surface']], FieldInfo(annotation=NoneType, required=False, default='10m_u_component_of_wind', title='Variable', description='Multi level variables require the selection of a pressure or model level. Singe level variables do not. Slow access variables are archived on tape and will be slow to retrieve. Meteorological variables are not accessible for very recent dates (see note above).')], 'ecmwf:pressure_level': typing.Annotated[list, FieldInfo(annotation=NoneType, required=False, default=None, title='Pressure level')], 'ecmwf:model_level': typing.Annotated[list, FieldInfo(annotation=NoneType, required=False, default=None, title='Model level', description='Model level 1 is the top of the atmosphere. All levels changed on July 7 2019 00UTC when the number of levels was increased from 60 to 137. Model levels from this base time onwards are not comparable with those before.')], 'ecmwf:time': typing.Annotated[typing.List[typing.Literal['00:00']], FieldInfo(annotation=NoneType, required=False, default='00:00', title='Time', description='Model base time as HH:MM (UTC)')], 'ecmwf:leadtime_hour': typing.Annotated[typing.List[typing.Literal['0', '1', '10', '100', '101', '102', '103', '104', '105', '106', '107', '108', '109', '11', '110', '111', '112', '113', '114', '115', '116', '117', '118', '119', '12', '120', '13', '14', '15', '16', '17', '18', '19', '2', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '3', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '4', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '5', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '6', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '7', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '8', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '9', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99']], FieldInfo(annotation=NoneType, required=False, default='0', title='Leadtime hour', description='Forecast lead time in hours')], 'ecmwf:type': typing.Annotated[typing.List[typing.Literal['forecast']], FieldInfo(annotation=NoneType, required=False, default='forecast', title='Type')], 'ecmwf:data_format': typing.Annotated[typing.Literal['grib', 'netcdf_zip'], FieldInfo(annotation=NoneType, required=False, default='grib', title='Data format', description='Please select a format for the data files, the native format of MARS dataset is GRIB.')], 'start': typing.Annotated[typing.Union[datetime.datetime, datetime.date], FieldInfo(annotation=NoneType, required=False, default='2015-01-01T00:00:00Z', alias='startTimeFromAscendingNode', alias_priority=2)], 'end': typing.Annotated[typing.Union[datetime.datetime, datetime.date], FieldInfo(annotation=NoneType, required=False, default='2015-01-02T00:00:00+00:00', alias='completionTimeFromAscendingNode', alias_priority=2)], 'geom': typing.Annotated[typing.Union[str, typing.Dict[str, float], shapely.geometry.base.BaseGeometry], FieldInfo(annotation=NoneType, required=False, default=None, description='Read EODAG documentation for all supported geometry format.')]}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dag.list_queryables(productType=\"CAMS_GAC_FORECAST\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The queryables can also be retrieved for a specific provider. These queryables are either taken from the queryables endpoint of the provider (if available), the constraints for the query parameter values defined by the provider (if available) or the provider configuration in EODAG. In the example below we use a provider offering a queryables endpoint." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-11-27 11:10:12,244 eodag.search.qssearch [INFO ] Fetching queryables: https://planetarycomputer.microsoft.com/api/stac/v1/search/../collections/sentinel-1-grd/queryables\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " QueryablesDict (33) - additional_properties=True\n", - "
\n", - "
\n", - " 'id': \n", - " typing.Annotated[NoneType, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " NoneType,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Item ID', description='Item identifier', json_schema_extra={'$ref': 'https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json#/definitions/core/allOf/2/properties/id'})
]\n", - "
\n", - "
\n", - "
\n", - " 'end': \n", - " typing.Annotated[str, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " str,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Acquired', description='Datetime', metadata=[_PydanticGeneralMetadata(pattern='(\\\\+00:00|Z)$')])
]\n", - "
\n", - "
\n", - "
\n", - " 'platformSerialIdentifier': \n", - " typing.Annotated[Literal['SENTINEL-1A', ...], \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Literal['SENTINEL-1A', 'SENTINEL-1B'],
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Platform')
]\n", - "
\n", - "
\n", - "
\n", - " 's1:shape': \n", - " typing.Annotated[list, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " list,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None)
]\n", - "
\n", - "
\n", - "
\n", - " 'end_datetime': \n", - " typing.Annotated[str, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " str,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='End datetime', description='End datetime', metadata=[_PydanticGeneralMetadata(pattern='(\\\\+00:00|Z)$')])
]\n", - "
\n", - "
\n", - "
\n", - " 'platform': \n", - " typing.Annotated[str, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " str,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None)
]\n", - "
\n", - "
\n", - "
\n", - " 's1:resolution': \n", - " typing.Annotated[Literal['full', ...], \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Literal['full', 'high', 'medium'],
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Resolution')
]\n", - "
\n", - "
\n", - "
\n", - " 's1:datatake_id': \n", - " typing.Annotated[str, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " str,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Datatake ID')
]\n", - "
\n", - "
\n", - "
\n", - " 'start_datetime': \n", - " typing.Annotated[str, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " str,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Start datetime', description='Start datetime', metadata=[_PydanticGeneralMetadata(pattern='(\\\\+00:00|Z)$')])
]\n", - "
\n", - "
\n", - "
\n", - " 's1:orbit_source': \n", - " typing.Annotated[Literal['DOWNLINK', ...], \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Literal['DOWNLINK', 'POEORB', 'PREORB', 'RESORB'],
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Orbit Source')
]\n", - "
\n", - "
\n", - "
\n", - " 's1:slice_number': \n", - " typing.Annotated[str, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " str,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Slice Number')
]\n", - "
\n", - "
\n", - "
\n", - " 's1:total_slices': \n", - " typing.Annotated[str, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " str,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Total Slices')
]\n", - "
\n", - "
\n", - "
\n", - " 'sar:looks_range': \n", - " typing.Annotated[int, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " int,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Looks range', metadata=[Ge(ge=0)])
]\n", - "
\n", - "
\n", - "
\n", - " 'orbitDirection': \n", - " typing.Annotated[Literal['ascending', ...], \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Literal['ascending', 'descending', 'geostationary'],
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Orbit State')
]\n", - "
\n", - "
\n", - "
\n", - " 'sar:product_type': \n", - " typing.Annotated[str, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " str,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Product type')
]\n", - "
\n", - "
\n", - "
\n", - " 'sar:looks_azimuth': \n", - " typing.Annotated[int, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " int,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Looks azimuth', metadata=[Ge(ge=0)])
]\n", - "
\n", - "
\n", - "
\n", - " 'polarizationChannels': \n", - " typing.Annotated[List[Literal['HH', ...]], \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.List[typing.Literal['HH', 'HV', 'VH', 'VV']],
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Polarizations')
]\n", - "
\n", - "
\n", - "
\n", - " 'dopplerFrequency': \n", - " typing.Annotated[Literal['C', ...], \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Literal['C', 'K', 'Ka', 'Ku', 'L', 'P', 'S', 'X'],
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Frequency Band')
]\n", - "
\n", - "
\n", - "
\n", - " 'sat:absolute_orbit': \n", - " typing.Annotated[NoneType, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " NoneType,
\n", - " 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", - "
\n", - "
\n", - "
\n", - " 'orbitNumber': \n", - " typing.Annotated[NoneType, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " NoneType,
\n", - " 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", - "
\n", - "
\n", - "
\n", - " 'processingLevel': \n", - " typing.Annotated[str, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " str,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None)
]\n", - "
\n", - "
\n", - "
\n", - " 'sensorMode': \n", - " typing.Annotated[str, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " str,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Instrument Mode')
]\n", - "
\n", - "
\n", - "
\n", - " 'sar:center_frequency': \n", - " typing.Annotated[float, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " float,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Center Frequency (GHz)')
]\n", - "
\n", - "
\n", - "
\n", - " 'sar:resolution_range': \n", - " typing.Annotated[float, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " float,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Resolution range (m)', metadata=[Ge(ge=0)])
]\n", - "
\n", - "
\n", - "
\n", - " 's1:product_timeliness': \n", - " typing.Annotated[Literal['Fast-24h', ...], \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Literal['Fast-24h', 'NRT-10m', 'NRT-1h', 'NRT-3h', 'Off-line', 'Reprocessing'],
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Product Timeliness')
]\n", - "
\n", - "
\n", - "
\n", - " 'sar:resolution_azimuth': \n", - " typing.Annotated[float, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " float,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Resolution azimuth (m)', metadata=[Ge(ge=0)])
]\n", - "
\n", - "
\n", - "
\n", - " 'sar:pixel_spacing_range': \n", - " typing.Annotated[float, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " float,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Pixel spacing range (m)', metadata=[Ge(ge=0)])
]\n", - "
\n", - "
\n", - "
\n", - " 'sar:observation_direction': \n", - " typing.Annotated[Literal['left', ...], \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Literal['left', 'right'],
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Antenna pointing direction')
]\n", - "
\n", - "
\n", - "
\n", - " 'sar:pixel_spacing_azimuth': \n", - " typing.Annotated[float, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " float,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Pixel spacing azimuth (m)', metadata=[Ge(ge=0)])
]\n", - "
\n", - "
\n", - "
\n", - " 'sar:looks_equivalent_number': \n", - " typing.Annotated[float, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " float,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Equivalent number of looks (ENL)', metadata=[Ge(ge=0)])
]\n", - "
\n", - "
\n", - "
\n", - " 's1:instrument_configuration_ID': \n", - " typing.Annotated[str, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " str,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None)
]\n", - "
\n", - "
\n", - "
\n", - " 'sat:platform_international_designator': \n", - " typing.Annotated[Literal['0000-000A', ...], \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Literal['0000-000A', '2014-016A', '2016-025A'],
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Platform Designation')
]\n", - "
\n", - "
\n", - "
\n", - " 'geom': \n", - " typing.Annotated[NoneType, \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " NoneType,
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, title='Item Geometry', description='Item Geometry', json_schema_extra={'$ref': 'https://geojson.org/schema/Feature.json'})
]\n", - "
\n", - "
" - ], - "text/plain": [ - "{'id': typing.Annotated[NoneType, FieldInfo(annotation=NoneType, required=False, default=None, title='Item ID', description='Item identifier', json_schema_extra={'$ref': 'https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json#/definitions/core/allOf/2/properties/id'})], 'end': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Acquired', description='Datetime', metadata=[_PydanticGeneralMetadata(pattern='(\\\\+00:00|Z)$')])], 'platformSerialIdentifier': typing.Annotated[typing.Literal['SENTINEL-1A', 'SENTINEL-1B'], FieldInfo(annotation=NoneType, required=False, default=None, title='Platform')], 's1:shape': typing.Annotated[list, FieldInfo(annotation=NoneType, required=False, default=None)], 'end_datetime': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='End datetime', description='End datetime', metadata=[_PydanticGeneralMetadata(pattern='(\\\\+00:00|Z)$')])], 'platform': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None)], 's1:resolution': typing.Annotated[typing.Literal['full', 'high', 'medium'], FieldInfo(annotation=NoneType, required=False, default=None, title='Resolution')], 's1:datatake_id': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Datatake ID')], 'start_datetime': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Start datetime', description='Start datetime', metadata=[_PydanticGeneralMetadata(pattern='(\\\\+00:00|Z)$')])], 's1:orbit_source': typing.Annotated[typing.Literal['DOWNLINK', 'POEORB', 'PREORB', 'RESORB'], FieldInfo(annotation=NoneType, required=False, default=None, title='Orbit Source')], 's1:slice_number': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Slice Number')], 's1:total_slices': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Total Slices')], 'sar:looks_range': typing.Annotated[int, FieldInfo(annotation=NoneType, required=False, default=None, title='Looks range', metadata=[Ge(ge=0)])], 'orbitDirection': typing.Annotated[typing.Literal['ascending', 'descending', 'geostationary'], FieldInfo(annotation=NoneType, required=False, default=None, title='Orbit State')], 'sar:product_type': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Product type')], 'sar:looks_azimuth': typing.Annotated[int, FieldInfo(annotation=NoneType, required=False, default=None, title='Looks azimuth', metadata=[Ge(ge=0)])], 'polarizationChannels': typing.Annotated[typing.List[typing.Literal['HH', 'HV', 'VH', 'VV']], FieldInfo(annotation=NoneType, required=False, default=None, title='Polarizations')], 'dopplerFrequency': typing.Annotated[typing.Literal['C', 'K', 'Ka', 'Ku', 'L', 'P', 'S', 'X'], FieldInfo(annotation=NoneType, required=False, default=None, title='Frequency Band')], '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'})], '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'})], 'processingLevel': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None)], 'sensorMode': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Instrument Mode')], 'sar:center_frequency': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Center Frequency (GHz)')], 'sar:resolution_range': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Resolution range (m)', metadata=[Ge(ge=0)])], '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')], 'sar:resolution_azimuth': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Resolution azimuth (m)', metadata=[Ge(ge=0)])], 'sar:pixel_spacing_range': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Pixel spacing range (m)', metadata=[Ge(ge=0)])], 'sar:observation_direction': typing.Annotated[typing.Literal['left', 'right'], FieldInfo(annotation=NoneType, required=False, default=None, title='Antenna pointing direction')], 'sar:pixel_spacing_azimuth': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Pixel spacing azimuth (m)', metadata=[Ge(ge=0)])], 'sar:looks_equivalent_number': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Equivalent number of looks (ENL)', metadata=[Ge(ge=0)])], 's1:instrument_configuration_ID': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None)], 'sat:platform_international_designator': typing.Annotated[typing.Literal['0000-000A', '2014-016A', '2016-025A'], FieldInfo(annotation=NoneType, required=False, default=None, title='Platform Designation')], 'geom': typing.Annotated[NoneType, FieldInfo(annotation=NoneType, required=False, default=None, title='Item Geometry', description='Item Geometry', json_schema_extra={'$ref': 'https://geojson.org/schema/Feature.json'})]}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dag.list_queryables(productType=\"S1_SAR_GRD\", provider=\"planetary_computer\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For each queryable the possible values will be included in the result if they are available from either the provider queryables or the constraints. If constraints are available for a provider, the queryables can be filtered by the value of a specific parameter. E.g. if the queryables month and day are available, we can set the month to a specific value to get only the days available for that month." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " QueryablesDict (11) - additional_properties=False\n", - "
\n", - "
\n", - " 'ecmwf:product_type': \n", - " typing.Annotated[List[Literal['reanalysis']], \n", - " FieldInfo('default': 'reanalysis', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.List[typing.Literal['reanalysis']],
\n", - " FieldInfo(annotation=NoneType, required=False, default='reanalysis', title='Product type')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:variable': \n", - " typing.Annotated[List[Literal['100m_u_component_of_wind', ...]], \n", - " FieldInfo('default': '10m_u_component_of_wind', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.List[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']],
\n", - " FieldInfo(annotation=NoneType, required=False, default='10m_u_component_of_wind', title='Variable', description='Please, consult the product user guide in the documentation section for more information on these variables.')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:year': \n", - " typing.Annotated[List[Literal['1940', ...]], \n", - " FieldInfo('default': '['1940']', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.List[typing.Literal['1940', '1944', '1948', '1952', '1956', '1960', '1964', '1968', '1972', '1976', '1980', '1984', '1988', '1992', '1996', '2000', '2004', '2008', '2012', '2016', '2020']],
\n", - " FieldInfo(annotation=NoneType, required=False, default=['1940'], title='Year')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:month': \n", - " typing.Annotated[List[Literal['02']], \n", - " FieldInfo('default': '02', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.List[typing.Literal['02']],
\n", - " FieldInfo(annotation=NoneType, required=False, default='02', title='Month')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:day': \n", - " typing.Annotated[List[Literal['01', ...]], \n", - " FieldInfo('default': '['01']', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.List[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']],
\n", - " FieldInfo(annotation=NoneType, required=False, default=['01'], title='Day')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:time': \n", - " typing.Annotated[List[Literal['00:00', ...]], \n", - " FieldInfo('default': '['09:00']', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.List[typing.Literal['00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00']],
\n", - " FieldInfo(annotation=NoneType, required=False, default=['09:00'], title='Time', description='UTC time standard. UTC stands for Universal Time Coordinated as well as for Coordinated Universal Time.')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:data_format': \n", - " typing.Annotated[Literal['grib', ...], \n", - " FieldInfo('default': 'grib', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Literal['grib', 'netcdf'],
\n", - " FieldInfo(annotation=NoneType, required=False, default='grib', title='Data format', description='Select a format for the data files, the native format of MARS datasets is GRIB, and this format is recommended for any operational use, such as deriving downstream products.

Please note that to ensure accuracy and sufficient metadata is included in the output, your request may be split into multiple files when converted to netCDF.')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:download_format': \n", - " typing.Annotated[Literal['unarchived', ...], \n", - " FieldInfo('default': 'zip', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Literal['unarchived', 'zip'],
\n", - " FieldInfo(annotation=NoneType, required=False, default='zip', title='Download format', description=\"If you select 'Zip' the files will always be zipped into a single file.

If you select 'Unarchived' then the files will be returned unzipped if there is only one file, and zipped if there are multiple files.

Please note that in some circumstances the conversion from GRIB to NetCDF can result in multiple files.\")
]\n", - "
\n", - "
\n", - "
\n", - " 'start': \n", - " typing.Annotated[Union[datetime, ...], \n", - " FieldInfo('default': '1940-01-01T09:00:00Z', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Union[datetime.datetime, datetime.date],
\n", - " FieldInfo(annotation=NoneType, required=False, default='1940-01-01T09:00:00Z', alias='startTimeFromAscendingNode', alias_priority=2)
]\n", - "
\n", - "
\n", - "
\n", - " 'end': \n", - " typing.Annotated[Union[datetime, ...], \n", - " FieldInfo('default': '1940-01-01T09:00:00+00:00', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Union[datetime.datetime, datetime.date],
\n", - " FieldInfo(annotation=NoneType, required=False, default='1940-01-01T09:00:00+00:00', alias='completionTimeFromAscendingNode', alias_priority=2)
]\n", - "
\n", - "
\n", - "
\n", - " 'geom': \n", - " typing.Annotated[Union[str, Dict[str, ...], ...], \n", - " FieldInfo(\n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Union[str, typing.Dict[str, float], shapely.geometry.base.BaseGeometry],
\n", - " FieldInfo(annotation=NoneType, required=False, default=None, description='Read EODAG documentation for all supported geometry format.')
]\n", - "
\n", - "
" - ], - "text/plain": [ - "{'ecmwf:product_type': typing.Annotated[typing.List[typing.Literal['reanalysis']], FieldInfo(annotation=NoneType, required=False, default='reanalysis', title='Product type')], 'ecmwf:variable': typing.Annotated[typing.List[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=False, default='10m_u_component_of_wind', title='Variable', description='Please, consult the product user guide in the documentation section for more information on these variables.')], 'ecmwf:year': typing.Annotated[typing.List[typing.Literal['1940', '1944', '1948', '1952', '1956', '1960', '1964', '1968', '1972', '1976', '1980', '1984', '1988', '1992', '1996', '2000', '2004', '2008', '2012', '2016', '2020']], FieldInfo(annotation=NoneType, required=False, default=['1940'], title='Year')], 'ecmwf:month': typing.Annotated[typing.List[typing.Literal['02']], FieldInfo(annotation=NoneType, required=False, default='02', title='Month')], 'ecmwf:day': typing.Annotated[typing.List[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=False, default=['01'], title='Day')], 'ecmwf:time': typing.Annotated[typing.List[typing.Literal['00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00']], FieldInfo(annotation=NoneType, required=False, default=['09:00'], title='Time', description='UTC time standard. UTC stands for Universal Time Coordinated as well as for Coordinated Universal Time.')], 'ecmwf:data_format': typing.Annotated[typing.Literal['grib', 'netcdf'], FieldInfo(annotation=NoneType, required=False, default='grib', title='Data format', description='Select a format for the data files, the native format of MARS datasets is GRIB, and this format is recommended for any operational use, such as deriving downstream products.

Please note that to ensure accuracy and sufficient metadata is included in the output, your request may be split into multiple files when converted to netCDF.')], 'ecmwf:download_format': typing.Annotated[typing.Literal['unarchived', 'zip'], FieldInfo(annotation=NoneType, required=False, default='zip', title='Download format', description=\"If you select 'Zip' the files will always be zipped into a single file.

If you select 'Unarchived' then the files will be returned unzipped if there is only one file, and zipped if there are multiple files.

Please note that in some circumstances the conversion from GRIB to NetCDF can result in multiple files.\")], 'start': typing.Annotated[typing.Union[datetime.datetime, datetime.date], FieldInfo(annotation=NoneType, required=False, default='1940-01-01T09:00:00Z', alias='startTimeFromAscendingNode', alias_priority=2)], 'end': typing.Annotated[typing.Union[datetime.datetime, datetime.date], FieldInfo(annotation=NoneType, required=False, default='1940-01-01T09:00:00+00:00', alias='completionTimeFromAscendingNode', alias_priority=2)], 'geom': typing.Annotated[typing.Union[str, typing.Dict[str, float], shapely.geometry.base.BaseGeometry], FieldInfo(annotation=NoneType, required=False, default=None, description='Read EODAG documentation for all supported geometry format.')]}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dag.list_queryables(\n", - " productType=\"ERA5_SL\", \n", - " provider=\"cop_cds\", \n", - " month=\"02\"\n", - ")" - ] - }, - { - "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 `ecmwf:product_type` is removed." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - "
\n", - " QueryablesDict (3) - additional_properties=False\n", - "
\n", - "
\n", - " 'ecmwf:variable': \n", - " typing.Annotated[List[Literal['glacier_area']], \n", - " FieldInfo('default': 'glacier_area', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.List[typing.Literal['glacier_area']],
\n", - " FieldInfo(annotation=NoneType, required=False, default='glacier_area', title='Variable', description='Please, consult the product user guide in the documentation section for more information on these variables.')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:product_type': \n", - " typing.Annotated[List[Literal['gridded']], \n", - " FieldInfo('default': 'gridded', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.List[typing.Literal['gridded']],
\n", - " FieldInfo(annotation=NoneType, required=False, default='gridded', title='Product type', description='Vector and gridded are two different output formats of the same data and the hypsometry file includes supplementary information that is useful together with the vector file. The file formats are netCDF for the gridded product, zipped Esri vector data storage format for the vector product, and comma-separated values (csv) for the hypsometry product.')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:version': \n", - " typing.Annotated[Literal['rgi_6_0', ...], \n", - " FieldInfo('default': 'rgi_6_0', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Literal['rgi_6_0', 'rgi_7_0'],
\n", - " FieldInfo(annotation=NoneType, required=False, default='rgi_6_0', title='Version')
]\n", - "
\n", - "
" - ], - "text/plain": [ - "{'ecmwf:variable': typing.Annotated[typing.List[typing.Literal['glacier_area']], FieldInfo(annotation=NoneType, required=False, default='glacier_area', title='Variable', description='Please, consult the product user guide in the documentation section for more information on these variables.')], 'ecmwf:product_type': typing.Annotated[typing.List[typing.Literal['gridded']], FieldInfo(annotation=NoneType, required=False, default='gridded', title='Product type', description='Vector and gridded are two different output formats of the same data and the hypsometry file includes supplementary information that is useful together with the vector file. The file formats are netCDF for the gridded product, zipped Esri vector data storage format for the vector product, and comma-separated values (csv) for the hypsometry product.')], 'ecmwf:version': typing.Annotated[typing.Literal['rgi_6_0', 'rgi_7_0'], FieldInfo(annotation=NoneType, required=False, default='rgi_6_0', title='Version')]}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dag.list_queryables(\n", - " productType=\"GLACIERS_DIST_RANDOLPH\", \n", - " provider=\"cop_cds\"\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - "
\n", - " QueryablesDict (3) - additional_properties=False\n", - "
\n", - "
\n", - " 'ecmwf:variable': \n", - " typing.Annotated[List[Literal['glacier_area']], \n", - " FieldInfo('default': 'glacier_area', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.List[typing.Literal['glacier_area']],
\n", - " FieldInfo(annotation=NoneType, required=False, default='glacier_area', title='Variable', description='Please, consult the product user guide in the documentation section for more information on these variables.')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:product_type': \n", - " typing.Annotated[List[Literal['gridded', ...]], \n", - " FieldInfo(\n", - " 'required': True,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.List[typing.Literal['gridded', 'hypsometry', 'vector']],
\n", - " FieldInfo(annotation=NoneType, required=True, title='Product type', description='Vector and gridded are two different output formats of the same data and the hypsometry file includes supplementary information that is useful together with the vector file. The file formats are netCDF for the gridded product, zipped Esri vector data storage format for the vector product, and comma-separated values (csv) for the hypsometry product.')
]\n", - "
\n", - "
\n", - "
\n", - " 'ecmwf:version': \n", - " typing.Annotated[Literal['rgi_5_0', ...], \n", - " FieldInfo('default': 'rgi_6_0', \n", - " 'required': False,\n", - " ...\n", - " )]\n", - " \n", - " typing.Annotated[\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " typing.Literal['rgi_5_0', 'rgi_6_0', 'rgi_7_0'],
\n", - " FieldInfo(annotation=NoneType, required=False, default='rgi_6_0', title='Version')
]\n", - "
\n", - "
" - ], - "text/plain": [ - "{'ecmwf:variable': typing.Annotated[typing.List[typing.Literal['glacier_area']], FieldInfo(annotation=NoneType, required=False, default='glacier_area', title='Variable', description='Please, consult the product user guide in the documentation section for more information on these variables.')], 'ecmwf:product_type': typing.Annotated[typing.List[typing.Literal['gridded', 'hypsometry', 'vector']], FieldInfo(annotation=NoneType, required=True, title='Product type', description='Vector and gridded are two different output formats of the same data and the hypsometry file includes supplementary information that is useful together with the vector file. The file formats are netCDF for the gridded product, zipped Esri vector data storage format for the vector product, and comma-separated values (csv) for the hypsometry product.')], 'ecmwf:version': typing.Annotated[typing.Literal['rgi_5_0', 'rgi_6_0', 'rgi_7_0'], FieldInfo(annotation=NoneType, required=False, default='rgi_6_0', title='Version')]}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "params = {\n", - " \"productType\": \"GLACIERS_DIST_RANDOLPH\",\n", - " \"provider\": \"cop_cds\",\n", - " \"ecmwf:product_type\": None\n", - "}\n", - "dag.list_queryables(**params)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The result returned by the `list_queryables` method can also be used to validate input parameters using the `get_model` method of the `QueryablesDict` object and the pydantic method `model_validate`:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Queryables(ecmwf:product_type='reanalysis', ecmwf:variable='10m_u_component_of_wind', ecmwf:year=['1940'], ecmwf:month=['01'], ecmwf:day=['05'], ecmwf:time=['09:00'], ecmwf:data_format='grib', ecmwf:download_format='zip', start='1940-01-01T09:00:00Z', end='1940-01-01T09:00:00+00:00', geom=None)" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "queryables = dag.list_queryables(\n", - " productType=\"ERA5_SL\", \n", - " provider=\"cop_cds\", \n", - ")\n", - "queryables.get_model().model_validate({\"ecmwf:day\": [\"05\"]})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this case no errors have occured because [\"05\"] is a valid value for the parameter `ecmwf:day` and a model object is returned. If we change `ecmwf:day` to an invalid value, we can see that an error is raised:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "ename": "ValidationError", - "evalue": "1 validation error for Queryables\necmwf:day.0\n Input should be '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', '30' or '31' [type=literal_error, input_value='55', input_type=str]\n For further information visit https://errors.pydantic.dev/2.9/v/literal_error", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValidationError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[10], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mqueryables\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmodel_validate\u001b[49m\u001b[43m(\u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mecmwf:day\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m55\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/workspace/DEDL/eodag/venv/lib/python3.11/site-packages/pydantic/main.py:596\u001b[0m, in \u001b[0;36mBaseModel.model_validate\u001b[0;34m(cls, obj, strict, from_attributes, context)\u001b[0m\n\u001b[1;32m 594\u001b[0m \u001b[38;5;66;03m# `__tracebackhide__` tells pytest and some other tools to omit this function from tracebacks\u001b[39;00m\n\u001b[1;32m 595\u001b[0m __tracebackhide__ \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m--> 596\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mcls\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__pydantic_validator__\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalidate_python\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 597\u001b[0m \u001b[43m \u001b[49m\u001b[43mobj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstrict\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstrict\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfrom_attributes\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfrom_attributes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcontext\u001b[49m\n\u001b[1;32m 598\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[0;31mValidationError\u001b[0m: 1 validation error for Queryables\necmwf:day.0\n Input should be '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', '30' or '31' [type=literal_error, input_value='55', input_type=str]\n For further information visit https://errors.pydantic.dev/2.9/v/literal_error" - ] - } - ], - "source": [ - "queryables.get_model().model_validate({\"ecmwf:day\": [\"55\"]})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "NOTE: Only values matching the default values of the other values will be considered as valid, e.g. `ecmwf:month=[\"04\"]` is considered invalid, although values for april are available with certain values of the other parameters:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "ename": "ValidationError", - "evalue": "1 validation error for Queryables\necmwf:month.0\n Input should be '01' [type=literal_error, input_value='04', input_type=str]\n For further information visit https://errors.pydantic.dev/2.9/v/literal_error", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValidationError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[11], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mqueryables\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmodel_validate\u001b[49m\u001b[43m(\u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mecmwf:month\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m04\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/workspace/DEDL/eodag/venv/lib/python3.11/site-packages/pydantic/main.py:596\u001b[0m, in \u001b[0;36mBaseModel.model_validate\u001b[0;34m(cls, obj, strict, from_attributes, context)\u001b[0m\n\u001b[1;32m 594\u001b[0m \u001b[38;5;66;03m# `__tracebackhide__` tells pytest and some other tools to omit this function from tracebacks\u001b[39;00m\n\u001b[1;32m 595\u001b[0m __tracebackhide__ \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m--> 596\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mcls\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__pydantic_validator__\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalidate_python\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 597\u001b[0m \u001b[43m \u001b[49m\u001b[43mobj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstrict\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstrict\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfrom_attributes\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfrom_attributes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcontext\u001b[49m\n\u001b[1;32m 598\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[0;31mValidationError\u001b[0m: 1 validation error for Queryables\necmwf:month.0\n Input should be '01' [type=literal_error, input_value='04', input_type=str]\n For further information visit https://errors.pydantic.dev/2.9/v/literal_error" - ] - } - ], - "source": [ - "queryables.get_model().model_validate({\"ecmwf:month\": [\"04\"]})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To avoid this, the default value can be removed in the queryables request:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Queryables(ecmwf:product_type='reanalysis', ecmwf:variable='10m_u_component_of_wind', ecmwf:year=['1940'], ecmwf:month=['04'], ecmwf:day=['01'], ecmwf:time=['09:00'], ecmwf:data_format='grib', ecmwf:download_format='zip', start='1940-01-01T09:00:00Z', end='1940-01-01T09:00:00+00:00', geom=None)" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "queryables = dag.list_queryables(\n", - " **{\"productType\": \"ERA5_SL\", \"provider\": \"cop_cds\", \"ecmwf:month\": None}\n", - ")\n", - "queryables.get_model().model_validate({\"ecmwf:month\": [\"04\"]})" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -7944,7 +6283,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.10" + "version": "3.13.0" }, "widgets": { "application/vnd.jupyter.widget-state+json": { diff --git a/docs/notebooks/api_user_guide/5_queryables.ipynb b/docs/notebooks/api_user_guide/5_queryables.ipynb new file mode 100644 index 000000000..7ac86f08d --- /dev/null +++ b/docs/notebooks/api_user_guide/5_queryables.ipynb @@ -0,0 +1,1408 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "dbf23a5e-50c2-4695-90fd-f775c4e6c605", + "metadata": {}, + "source": [ + "## Queryables" + ] + }, + { + "cell_type": "markdown", + "id": "223418c9-b9e2-4a23-9843-e751c0b2c9f4", + "metadata": {}, + "source": [ + "To know which query parameters can be used to filter the search result, the `list_queryables` method can be used. It has two optional arguments, `provider` and `productType`, additional keyword arguments to filter the queryable values can be added. The method returns a `QueryablesDict` which is a dictionary with an additional attribute `additional_properties` which indicates if additional properties (properties not in the queryables) can be added to the search.\n", + "\n", + "If the function is called without any arguments, the basic queryables that are available for all providers and product types will be returned:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b12247ed-48b9-40f7-872d-8f69ecdaa8d1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "astraea_eod skipped: could not be loaded from user configuration\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " QueryablesDict (1) - additional_properties=True\n", + "
\n", + "
\n", + " 'productType': \n", + " typing.Annotated[str, \n", + " FieldInfo(\n", + " 'required': True,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " str,
\n", + " FieldInfo(annotation=NoneType, required=True)
]\n", + "
\n", + "
" + ], + "text/plain": [ + "{'productType': typing.Annotated[str, FieldInfo(annotation=NoneType, required=True)]}" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from eodag import EODataAccessGateway\n", + "dag = EODataAccessGateway()\n", + "dag.list_queryables()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5493a4e8-83e5-4e5f-953e-5c71267bf87d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "queryables = dag.list_queryables()\n", + "queryables.additional_properties" + ] + }, + { + "cell_type": "markdown", + "id": "cb3940dd-8f87-42b4-8798-1184a29de961", + "metadata": {}, + "source": [ + "If the function is called for a specific product type, the queryables available for this product type, i.e., the basic queryables and product type specific queryables, are shown. Only parameters available for all providers offering the product are returned." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "84565274-e893-47e9-8529-ce9d2954389d", + "metadata": {}, + "outputs": [], + "source": [ + "# FIXME This isn't currently working. See https://github.com/CS-SI/eodag/issues/1446\n", + "# dag.list_queryables(productType=\"SEASONAL_ORIGINAL_SL\")" + ] + }, + { + "cell_type": "markdown", + "id": "41857931-fe84-4e27-ba69-54834ab2d0de", + "metadata": {}, + "source": [ + "The queryables can also be retrieved for a specific provider. These queryables are either taken from the queryables endpoint of the provider (if available), the constraints for the query parameter values defined by the provider (if available) or the provider configuration in EODAG. In the example below we use a provider offering a queryables endpoint." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "31193355-6afa-4b2d-81ef-0d8c1618f566", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " QueryablesDict (33) - additional_properties=True\n", + "
\n", + "
\n", + " 'id': \n", + " typing.Annotated[NoneType, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " NoneType,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Item ID', description='Item identifier', json_schema_extra={'$ref': 'https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json#/definitions/core/allOf/2/properties/id'})
]\n", + "
\n", + "
\n", + "
\n", + " 'end': \n", + " typing.Annotated[str, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " str,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Acquired', description='Datetime', metadata=[_PydanticGeneralMetadata(pattern='(\\\\+00:00|Z)$')])
]\n", + "
\n", + "
\n", + "
\n", + " 'platformSerialIdentifier': \n", + " typing.Annotated[Literal['SENTINEL-1A', ...], \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Literal['SENTINEL-1A', 'SENTINEL-1B'],
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Platform')
]\n", + "
\n", + "
\n", + "
\n", + " 's1:shape': \n", + " typing.Annotated[list, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " list,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None)
]\n", + "
\n", + "
\n", + "
\n", + " 'end_datetime': \n", + " typing.Annotated[str, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " str,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='End datetime', description='End datetime', metadata=[_PydanticGeneralMetadata(pattern='(\\\\+00:00|Z)$')])
]\n", + "
\n", + "
\n", + "
\n", + " 'platform': \n", + " typing.Annotated[str, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " str,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None)
]\n", + "
\n", + "
\n", + "
\n", + " 's1:resolution': \n", + " typing.Annotated[Literal['full', ...], \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Literal['full', 'high', 'medium'],
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Resolution')
]\n", + "
\n", + "
\n", + "
\n", + " 's1:datatake_id': \n", + " typing.Annotated[str, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " str,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Datatake ID')
]\n", + "
\n", + "
\n", + "
\n", + " 'start_datetime': \n", + " typing.Annotated[str, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " str,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Start datetime', description='Start datetime', metadata=[_PydanticGeneralMetadata(pattern='(\\\\+00:00|Z)$')])
]\n", + "
\n", + "
\n", + "
\n", + " 's1:orbit_source': \n", + " typing.Annotated[Literal['DOWNLINK', ...], \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Literal['DOWNLINK', 'POEORB', 'PREORB', 'RESORB'],
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Orbit Source')
]\n", + "
\n", + "
\n", + "
\n", + " 's1:slice_number': \n", + " typing.Annotated[str, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " str,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Slice Number')
]\n", + "
\n", + "
\n", + "
\n", + " 's1:total_slices': \n", + " typing.Annotated[str, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " str,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Total Slices')
]\n", + "
\n", + "
\n", + "
\n", + " 'sar:looks_range': \n", + " typing.Annotated[int, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " int,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Looks range', metadata=[Ge(ge=0)])
]\n", + "
\n", + "
\n", + "
\n", + " 'orbitDirection': \n", + " typing.Annotated[Literal['ascending', ...], \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Literal['ascending', 'descending', 'geostationary'],
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Orbit State')
]\n", + "
\n", + "
\n", + "
\n", + " 'sar:product_type': \n", + " typing.Annotated[str, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " str,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Product type')
]\n", + "
\n", + "
\n", + "
\n", + " 'sar:looks_azimuth': \n", + " typing.Annotated[int, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " int,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Looks azimuth', metadata=[Ge(ge=0)])
]\n", + "
\n", + "
\n", + "
\n", + " 'polarizationChannels': \n", + " typing.Annotated[List[Literal['HH', ...]], \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[typing.Literal['HH', 'HV', 'VH', 'VV']],
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Polarizations')
]\n", + "
\n", + "
\n", + "
\n", + " 'dopplerFrequency': \n", + " typing.Annotated[Literal['C', ...], \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Literal['C', 'K', 'Ka', 'Ku', 'L', 'P', 'S', 'X'],
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Frequency Band')
]\n", + "
\n", + "
\n", + "
\n", + " 'sat:absolute_orbit': \n", + " typing.Annotated[NoneType, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " NoneType,
\n", + " 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", + "
\n", + "
\n", + "
\n", + " 'orbitNumber': \n", + " typing.Annotated[NoneType, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " NoneType,
\n", + " 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", + "
\n", + "
\n", + "
\n", + " 'processingLevel': \n", + " typing.Annotated[str, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " str,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None)
]\n", + "
\n", + "
\n", + "
\n", + " 'sensorMode': \n", + " typing.Annotated[str, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " str,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Instrument Mode')
]\n", + "
\n", + "
\n", + "
\n", + " 'sar:center_frequency': \n", + " typing.Annotated[float, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " float,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Center Frequency (GHz)')
]\n", + "
\n", + "
\n", + "
\n", + " 'sar:resolution_range': \n", + " typing.Annotated[float, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " float,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Resolution range (m)', metadata=[Ge(ge=0)])
]\n", + "
\n", + "
\n", + "
\n", + " 's1:product_timeliness': \n", + " typing.Annotated[Literal['Fast-24h', ...], \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Literal['Fast-24h', 'NRT-10m', 'NRT-1h', 'NRT-3h', 'Off-line', 'Reprocessing'],
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Product Timeliness')
]\n", + "
\n", + "
\n", + "
\n", + " 'sar:resolution_azimuth': \n", + " typing.Annotated[float, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " float,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Resolution azimuth (m)', metadata=[Ge(ge=0)])
]\n", + "
\n", + "
\n", + "
\n", + " 'sar:pixel_spacing_range': \n", + " typing.Annotated[float, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " float,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Pixel spacing range (m)', metadata=[Ge(ge=0)])
]\n", + "
\n", + "
\n", + "
\n", + " 'sar:observation_direction': \n", + " typing.Annotated[Literal['left', ...], \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Literal['left', 'right'],
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Antenna pointing direction')
]\n", + "
\n", + "
\n", + "
\n", + " 'sar:pixel_spacing_azimuth': \n", + " typing.Annotated[float, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " float,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Pixel spacing azimuth (m)', metadata=[Ge(ge=0)])
]\n", + "
\n", + "
\n", + "
\n", + " 'sar:looks_equivalent_number': \n", + " typing.Annotated[float, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " float,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Equivalent number of looks (ENL)', metadata=[Ge(ge=0)])
]\n", + "
\n", + "
\n", + "
\n", + " 's1:instrument_configuration_ID': \n", + " typing.Annotated[str, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " str,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None)
]\n", + "
\n", + "
\n", + "
\n", + " 'sat:platform_international_designator': \n", + " typing.Annotated[Literal['0000-000A', ...], \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Literal['0000-000A', '2014-016A', '2016-025A'],
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Platform Designation')
]\n", + "
\n", + "
\n", + "
\n", + " 'geom': \n", + " typing.Annotated[NoneType, \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " NoneType,
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, title='Item Geometry', description='Item Geometry', json_schema_extra={'$ref': 'https://geojson.org/schema/Feature.json'})
]\n", + "
\n", + "
" + ], + "text/plain": [ + "{'id': typing.Annotated[NoneType, FieldInfo(annotation=NoneType, required=False, default=None, title='Item ID', description='Item identifier', json_schema_extra={'$ref': 'https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json#/definitions/core/allOf/2/properties/id'})], 'end': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Acquired', description='Datetime', metadata=[_PydanticGeneralMetadata(pattern='(\\\\+00:00|Z)$')])], 'platformSerialIdentifier': typing.Annotated[typing.Literal['SENTINEL-1A', 'SENTINEL-1B'], FieldInfo(annotation=NoneType, required=False, default=None, title='Platform')], 's1:shape': typing.Annotated[list, FieldInfo(annotation=NoneType, required=False, default=None)], 'end_datetime': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='End datetime', description='End datetime', metadata=[_PydanticGeneralMetadata(pattern='(\\\\+00:00|Z)$')])], 'platform': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None)], 's1:resolution': typing.Annotated[typing.Literal['full', 'high', 'medium'], FieldInfo(annotation=NoneType, required=False, default=None, title='Resolution')], 's1:datatake_id': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Datatake ID')], 'start_datetime': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Start datetime', description='Start datetime', metadata=[_PydanticGeneralMetadata(pattern='(\\\\+00:00|Z)$')])], 's1:orbit_source': typing.Annotated[typing.Literal['DOWNLINK', 'POEORB', 'PREORB', 'RESORB'], FieldInfo(annotation=NoneType, required=False, default=None, title='Orbit Source')], 's1:slice_number': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Slice Number')], 's1:total_slices': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Total Slices')], 'sar:looks_range': typing.Annotated[int, FieldInfo(annotation=NoneType, required=False, default=None, title='Looks range', metadata=[Ge(ge=0)])], 'orbitDirection': typing.Annotated[typing.Literal['ascending', 'descending', 'geostationary'], FieldInfo(annotation=NoneType, required=False, default=None, title='Orbit State')], 'sar:product_type': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Product type')], 'sar:looks_azimuth': typing.Annotated[int, FieldInfo(annotation=NoneType, required=False, default=None, title='Looks azimuth', metadata=[Ge(ge=0)])], 'polarizationChannels': typing.Annotated[typing.List[typing.Literal['HH', 'HV', 'VH', 'VV']], FieldInfo(annotation=NoneType, required=False, default=None, title='Polarizations')], 'dopplerFrequency': typing.Annotated[typing.Literal['C', 'K', 'Ka', 'Ku', 'L', 'P', 'S', 'X'], FieldInfo(annotation=NoneType, required=False, default=None, title='Frequency Band')], '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'})], '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'})], 'processingLevel': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None)], 'sensorMode': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None, title='Instrument Mode')], 'sar:center_frequency': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Center Frequency (GHz)')], 'sar:resolution_range': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Resolution range (m)', metadata=[Ge(ge=0)])], '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')], 'sar:resolution_azimuth': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Resolution azimuth (m)', metadata=[Ge(ge=0)])], 'sar:pixel_spacing_range': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Pixel spacing range (m)', metadata=[Ge(ge=0)])], 'sar:observation_direction': typing.Annotated[typing.Literal['left', 'right'], FieldInfo(annotation=NoneType, required=False, default=None, title='Antenna pointing direction')], 'sar:pixel_spacing_azimuth': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Pixel spacing azimuth (m)', metadata=[Ge(ge=0)])], 'sar:looks_equivalent_number': typing.Annotated[float, FieldInfo(annotation=NoneType, required=False, default=None, title='Equivalent number of looks (ENL)', metadata=[Ge(ge=0)])], 's1:instrument_configuration_ID': typing.Annotated[str, FieldInfo(annotation=NoneType, required=False, default=None)], 'sat:platform_international_designator': typing.Annotated[typing.Literal['0000-000A', '2014-016A', '2016-025A'], FieldInfo(annotation=NoneType, required=False, default=None, title='Platform Designation')], 'geom': typing.Annotated[NoneType, FieldInfo(annotation=NoneType, required=False, default=None, title='Item Geometry', description='Item Geometry', json_schema_extra={'$ref': 'https://geojson.org/schema/Feature.json'})]}" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dag.list_queryables(productType=\"S1_SAR_GRD\", provider=\"planetary_computer\")" + ] + }, + { + "cell_type": "markdown", + "id": "173f07a3-72ad-4a31-b8a7-0f6f9bdd5097", + "metadata": {}, + "source": [ + "For each queryable the possible values will be included in the result if they are available from either the provider queryables or the constraints. If constraints are available for a provider, the queryables can be filtered by the value of a specific parameter. E.g. if the queryables month and day are available, we can set the month to a specific value to get only the days available for that month." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "6fb65d84-63a9-4e2e-93e8-7eb747057008", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " QueryablesDict (11) - additional_properties=False\n", + "
\n", + "
\n", + " 'ecmwf:product_type': \n", + " typing.Annotated[List[Literal['reanalysis']], \n", + " FieldInfo('default': 'reanalysis', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[typing.Literal['reanalysis']],
\n", + " FieldInfo(annotation=NoneType, required=False, default='reanalysis', title='Product type')
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:variable': \n", + " typing.Annotated[List[Literal['100m_u_component_of_wind', ...]], \n", + " FieldInfo('default': '10m_u_component_of_wind', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[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']],
\n", + " FieldInfo(annotation=NoneType, required=False, default='10m_u_component_of_wind', title='Variable', description='Please, consult the product user guide in the documentation section for more information on these variables.')
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:year': \n", + " typing.Annotated[List[Literal['1940', ...]], \n", + " FieldInfo('default': '['1940']', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[typing.Literal['1940', '1944', '1948', '1952', '1956', '1960', '1964', '1968', '1972', '1976', '1980', '1984', '1988', '1992', '1996', '2000', '2004', '2008', '2012', '2016', '2020']],
\n", + " FieldInfo(annotation=NoneType, required=False, default=['1940'], title='Year')
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:month': \n", + " typing.Annotated[List[Literal['02']], \n", + " FieldInfo('default': '02', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[typing.Literal['02']],
\n", + " FieldInfo(annotation=NoneType, required=False, default='02', title='Month')
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:day': \n", + " typing.Annotated[List[Literal['01', ...]], \n", + " FieldInfo('default': '['01']', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[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']],
\n", + " FieldInfo(annotation=NoneType, required=False, default=['01'], title='Day')
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:time': \n", + " typing.Annotated[List[Literal['00:00', ...]], \n", + " FieldInfo('default': '['09:00']', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[typing.Literal['00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00']],
\n", + " FieldInfo(annotation=NoneType, required=False, default=['09:00'], title='Time', description='UTC time standard. UTC stands for Universal Time Coordinated as well as for Coordinated Universal Time.')
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:data_format': \n", + " typing.Annotated[Literal['grib', ...], \n", + " FieldInfo('default': 'grib', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Literal['grib', 'netcdf'],
\n", + " FieldInfo(annotation=NoneType, required=False, default='grib', title='Data format', description='Select a format for the data files, the native format of MARS datasets is GRIB, and this format is recommended for any operational use, such as deriving downstream products.

Please note that to ensure accuracy and sufficient metadata is included in the output, your request may be split into multiple files when converted to netCDF.')
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:download_format': \n", + " typing.Annotated[Literal['unarchived', ...], \n", + " FieldInfo('default': 'zip', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Literal['unarchived', 'zip'],
\n", + " FieldInfo(annotation=NoneType, required=False, default='zip', title='Download format', description=\"If you select 'Zip' the files will always be zipped into a single file.

If you select 'Unarchived' then the files will be returned unzipped if there is only one file, and zipped if there are multiple files.

Please note that in some circumstances the conversion from GRIB to NetCDF can result in multiple files.\")
]\n", + "
\n", + "
\n", + "
\n", + " 'start': \n", + " typing.Annotated[Union[datetime, ...], \n", + " FieldInfo('default': '1940-01-01T09:00:00Z', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Union[datetime.datetime, datetime.date],
\n", + " FieldInfo(annotation=NoneType, required=False, default='1940-01-01T09:00:00Z', alias='startTimeFromAscendingNode', alias_priority=2)
]\n", + "
\n", + "
\n", + "
\n", + " 'end': \n", + " typing.Annotated[Union[datetime, ...], \n", + " FieldInfo('default': '1940-01-01T09:00:00+00:00', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Union[datetime.datetime, datetime.date],
\n", + " FieldInfo(annotation=NoneType, required=False, default='1940-01-01T09:00:00+00:00', alias='completionTimeFromAscendingNode', alias_priority=2)
]\n", + "
\n", + "
\n", + "
\n", + " 'geom': \n", + " typing.Annotated[Union[str, Dict[str, ...], ...], \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Union[str, typing.Dict[str, float], shapely.geometry.base.BaseGeometry],
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, description='Read EODAG documentation for all supported geometry format.')
]\n", + "
\n", + "
" + ], + "text/plain": [ + "{'ecmwf:product_type': typing.Annotated[typing.List[typing.Literal['reanalysis']], FieldInfo(annotation=NoneType, required=False, default='reanalysis', title='Product type')], 'ecmwf:variable': typing.Annotated[typing.List[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=False, default='10m_u_component_of_wind', title='Variable', description='Please, consult the product user guide in the documentation section for more information on these variables.')], 'ecmwf:year': typing.Annotated[typing.List[typing.Literal['1940', '1944', '1948', '1952', '1956', '1960', '1964', '1968', '1972', '1976', '1980', '1984', '1988', '1992', '1996', '2000', '2004', '2008', '2012', '2016', '2020']], FieldInfo(annotation=NoneType, required=False, default=['1940'], title='Year')], 'ecmwf:month': typing.Annotated[typing.List[typing.Literal['02']], FieldInfo(annotation=NoneType, required=False, default='02', title='Month')], 'ecmwf:day': typing.Annotated[typing.List[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=False, default=['01'], title='Day')], 'ecmwf:time': typing.Annotated[typing.List[typing.Literal['00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00']], FieldInfo(annotation=NoneType, required=False, default=['09:00'], title='Time', description='UTC time standard. UTC stands for Universal Time Coordinated as well as for Coordinated Universal Time.')], 'ecmwf:data_format': typing.Annotated[typing.Literal['grib', 'netcdf'], FieldInfo(annotation=NoneType, required=False, default='grib', title='Data format', description='Select a format for the data files, the native format of MARS datasets is GRIB, and this format is recommended for any operational use, such as deriving downstream products.

Please note that to ensure accuracy and sufficient metadata is included in the output, your request may be split into multiple files when converted to netCDF.')], 'ecmwf:download_format': typing.Annotated[typing.Literal['unarchived', 'zip'], FieldInfo(annotation=NoneType, required=False, default='zip', title='Download format', description=\"If you select 'Zip' the files will always be zipped into a single file.

If you select 'Unarchived' then the files will be returned unzipped if there is only one file, and zipped if there are multiple files.

Please note that in some circumstances the conversion from GRIB to NetCDF can result in multiple files.\")], 'start': typing.Annotated[typing.Union[datetime.datetime, datetime.date], FieldInfo(annotation=NoneType, required=False, default='1940-01-01T09:00:00Z', alias='startTimeFromAscendingNode', alias_priority=2)], 'end': typing.Annotated[typing.Union[datetime.datetime, datetime.date], FieldInfo(annotation=NoneType, required=False, default='1940-01-01T09:00:00+00:00', alias='completionTimeFromAscendingNode', alias_priority=2)], 'geom': typing.Annotated[typing.Union[str, typing.Dict[str, float], shapely.geometry.base.BaseGeometry], FieldInfo(annotation=NoneType, required=False, default=None, description='Read EODAG documentation for all supported geometry format.')]}" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dag.list_queryables(\n", + " productType=\"ERA5_SL\", \n", + " provider=\"cop_cds\", \n", + " **{\"ecmwf:month\": \"02\"}\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "9d41a3d2-8f68-4bf2-ade1-a464dca72d94", + "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 `ecmwf:product_type` is removed." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "ea18caf7-b12c-4925-89f6-c3fe7d8e4edc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + "
\n", + " QueryablesDict (3) - additional_properties=False\n", + "
\n", + "
\n", + " 'ecmwf:variable': \n", + " typing.Annotated[List[Literal['glacier_area']], \n", + " FieldInfo('default': 'glacier_area', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[typing.Literal['glacier_area']],
\n", + " FieldInfo(annotation=NoneType, required=False, default='glacier_area', title='Variable', description='Please, consult the product user guide in the documentation section for more information on these variables.')
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:product_type': \n", + " typing.Annotated[List[Literal['gridded']], \n", + " FieldInfo('default': 'gridded', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[typing.Literal['gridded']],
\n", + " FieldInfo(annotation=NoneType, required=False, default='gridded', title='Product type', description='Vector and gridded are two different output formats of the same data and the hypsometry file includes supplementary information that is useful together with the vector file. The file formats are netCDF for the gridded product, zipped Esri vector data storage format for the vector product, and comma-separated values (csv) for the hypsometry product.')
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:version': \n", + " typing.Annotated[Literal['rgi_6_0', ...], \n", + " FieldInfo('default': 'rgi_6_0', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Literal['rgi_6_0', 'rgi_7_0'],
\n", + " FieldInfo(annotation=NoneType, required=False, default='rgi_6_0', title='Version')
]\n", + "
\n", + "
" + ], + "text/plain": [ + "{'ecmwf:variable': typing.Annotated[typing.List[typing.Literal['glacier_area']], FieldInfo(annotation=NoneType, required=False, default='glacier_area', title='Variable', description='Please, consult the product user guide in the documentation section for more information on these variables.')], 'ecmwf:product_type': typing.Annotated[typing.List[typing.Literal['gridded']], FieldInfo(annotation=NoneType, required=False, default='gridded', title='Product type', description='Vector and gridded are two different output formats of the same data and the hypsometry file includes supplementary information that is useful together with the vector file. The file formats are netCDF for the gridded product, zipped Esri vector data storage format for the vector product, and comma-separated values (csv) for the hypsometry product.')], 'ecmwf:version': typing.Annotated[typing.Literal['rgi_6_0', 'rgi_7_0'], FieldInfo(annotation=NoneType, required=False, default='rgi_6_0', title='Version')]}" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dag.list_queryables(\n", + " productType=\"GLACIERS_DIST_RANDOLPH\", \n", + " provider=\"cop_cds\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "c3703957-a2c3-4deb-baa5-b2e0a15266f6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + "
\n", + " QueryablesDict (3) - additional_properties=False\n", + "
\n", + "
\n", + " 'ecmwf:variable': \n", + " typing.Annotated[List[Literal['glacier_area']], \n", + " FieldInfo('default': 'glacier_area', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[typing.Literal['glacier_area']],
\n", + " FieldInfo(annotation=NoneType, required=False, default='glacier_area', title='Variable', description='Please, consult the product user guide in the documentation section for more information on these variables.')
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:product_type': \n", + " typing.Annotated[List[Literal['gridded', ...]], \n", + " FieldInfo(\n", + " 'required': True,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[typing.Literal['gridded', 'hypsometry', 'vector']],
\n", + " FieldInfo(annotation=NoneType, required=True, title='Product type', description='Vector and gridded are two different output formats of the same data and the hypsometry file includes supplementary information that is useful together with the vector file. The file formats are netCDF for the gridded product, zipped Esri vector data storage format for the vector product, and comma-separated values (csv) for the hypsometry product.')
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:version': \n", + " typing.Annotated[Literal['rgi_5_0', ...], \n", + " FieldInfo('default': 'rgi_6_0', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Literal['rgi_5_0', 'rgi_6_0', 'rgi_7_0'],
\n", + " FieldInfo(annotation=NoneType, required=False, default='rgi_6_0', title='Version')
]\n", + "
\n", + "
" + ], + "text/plain": [ + "{'ecmwf:variable': typing.Annotated[typing.List[typing.Literal['glacier_area']], FieldInfo(annotation=NoneType, required=False, default='glacier_area', title='Variable', description='Please, consult the product user guide in the documentation section for more information on these variables.')], 'ecmwf:product_type': typing.Annotated[typing.List[typing.Literal['gridded', 'hypsometry', 'vector']], FieldInfo(annotation=NoneType, required=True, title='Product type', description='Vector and gridded are two different output formats of the same data and the hypsometry file includes supplementary information that is useful together with the vector file. The file formats are netCDF for the gridded product, zipped Esri vector data storage format for the vector product, and comma-separated values (csv) for the hypsometry product.')], 'ecmwf:version': typing.Annotated[typing.Literal['rgi_5_0', 'rgi_6_0', 'rgi_7_0'], FieldInfo(annotation=NoneType, required=False, default='rgi_6_0', title='Version')]}" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "params = {\n", + " \"productType\": \"GLACIERS_DIST_RANDOLPH\",\n", + " \"provider\": \"cop_cds\",\n", + " \"ecmwf:product_type\": None\n", + "}\n", + "dag.list_queryables(**params)" + ] + }, + { + "cell_type": "markdown", + "id": "058c6cf9-08de-4a3a-bf13-de94f3b45765", + "metadata": {}, + "source": [ + "The result returned by the `list_queryables` method can also be used to validate input parameters using the `get_model` method of the `QueryablesDict` object and the pydantic method `model_validate`:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "4dc3c3b1-af6a-4c8f-85cc-552c7f73b679", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Queryables(ecmwf:product_type='reanalysis', ecmwf:variable='10m_u_component_of_wind', ecmwf:year=['1940'], ecmwf:month=['01'], ecmwf:day=['05'], ecmwf:time=['09:00'], ecmwf:data_format='grib', ecmwf:download_format='zip', start='1940-01-01T09:00:00Z', end='1940-01-01T09:00:00+00:00', geom=None)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "queryables = dag.list_queryables(\n", + " productType=\"ERA5_SL\", \n", + " provider=\"cop_cds\", \n", + ")\n", + "queryables.get_model().model_validate({\"ecmwf:day\": [\"05\"]})" + ] + }, + { + "cell_type": "markdown", + "id": "9e33b8ee-7eec-49b4-9501-7162550a80c0", + "metadata": {}, + "source": [ + "In this case no errors have occured because [\"05\"] is a valid value for the parameter `ecmwf:day` and a model object is returned. If we change `ecmwf:day` to an invalid value, we can see that an error is raised:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "a1ffd800-a8af-422c-b61f-02e348348d94", + "metadata": {}, + "outputs": [ + { + "ename": "ValidationError", + "evalue": "1 validation error for Queryables\necmwf:day.0\n Input should be '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', '30' or '31' [type=literal_error, input_value='55', input_type=str]\n For further information visit https://errors.pydantic.dev/2.10/v/literal_error", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValidationError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[18], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mqueryables\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmodel_validate\u001b[49m\u001b[43m(\u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mecmwf:day\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m55\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/venvs/dedl/lib/python3.13/site-packages/pydantic/main.py:627\u001b[0m, in \u001b[0;36mBaseModel.model_validate\u001b[0;34m(cls, obj, strict, from_attributes, context)\u001b[0m\n\u001b[1;32m 625\u001b[0m \u001b[38;5;66;03m# `__tracebackhide__` tells pytest and some other tools to omit this function from tracebacks\u001b[39;00m\n\u001b[1;32m 626\u001b[0m __tracebackhide__ \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m--> 627\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mcls\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__pydantic_validator__\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalidate_python\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 628\u001b[0m \u001b[43m \u001b[49m\u001b[43mobj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstrict\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstrict\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfrom_attributes\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfrom_attributes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcontext\u001b[49m\n\u001b[1;32m 629\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[0;31mValidationError\u001b[0m: 1 validation error for Queryables\necmwf:day.0\n Input should be '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', '30' or '31' [type=literal_error, input_value='55', input_type=str]\n For further information visit https://errors.pydantic.dev/2.10/v/literal_error" + ] + } + ], + "source": [ + "queryables.get_model().model_validate({\"ecmwf:day\": [\"55\"]})" + ] + }, + { + "cell_type": "markdown", + "id": "e49f009a-a40d-48ce-88ab-581f985b39e8", + "metadata": {}, + "source": [ + "NOTE: Only values matching the default values of the other values will be considered as valid, e.g. `ecmwf:month=[\"04\"]` is considered invalid, although values for april are available with certain values of the other parameters:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "976aaed0-cce4-4a84-a6c0-640868e43436", + "metadata": {}, + "outputs": [ + { + "ename": "ValidationError", + "evalue": "1 validation error for Queryables\necmwf:month.0\n Input should be '01' [type=literal_error, input_value='04', input_type=str]\n For further information visit https://errors.pydantic.dev/2.10/v/literal_error", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValidationError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[19], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mqueryables\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmodel_validate\u001b[49m\u001b[43m(\u001b[49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mecmwf:month\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m04\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/venvs/dedl/lib/python3.13/site-packages/pydantic/main.py:627\u001b[0m, in \u001b[0;36mBaseModel.model_validate\u001b[0;34m(cls, obj, strict, from_attributes, context)\u001b[0m\n\u001b[1;32m 625\u001b[0m \u001b[38;5;66;03m# `__tracebackhide__` tells pytest and some other tools to omit this function from tracebacks\u001b[39;00m\n\u001b[1;32m 626\u001b[0m __tracebackhide__ \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m--> 627\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mcls\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__pydantic_validator__\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalidate_python\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 628\u001b[0m \u001b[43m \u001b[49m\u001b[43mobj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstrict\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstrict\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfrom_attributes\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfrom_attributes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcontext\u001b[49m\n\u001b[1;32m 629\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[0;31mValidationError\u001b[0m: 1 validation error for Queryables\necmwf:month.0\n Input should be '01' [type=literal_error, input_value='04', input_type=str]\n For further information visit https://errors.pydantic.dev/2.10/v/literal_error" + ] + } + ], + "source": [ + "queryables.get_model().model_validate({\"ecmwf:month\": [\"04\"]})" + ] + }, + { + "cell_type": "markdown", + "id": "8342cc2c-a0e9-4c76-b895-b70593c33486", + "metadata": {}, + "source": [ + "To avoid this, the default value can be removed in the queryables request:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "e182b98a-409c-49eb-8bb2-4ce241ede0e0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Queryables(ecmwf:product_type='reanalysis', ecmwf:variable='10m_u_component_of_wind', ecmwf:year=['1940'], ecmwf:month=['04'], ecmwf:day=['01'], ecmwf:time=['09:00'], ecmwf:data_format='grib', ecmwf:download_format='zip', start='1940-01-01T09:00:00Z', end='1940-01-01T09:00:00+00:00', geom=None)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "queryables = dag.list_queryables(\n", + " **{\"productType\": \"ERA5_SL\", \"provider\": \"cop_cds\", \"ecmwf:month\": None}\n", + ")\n", + "queryables.get_model().model_validate({\"ecmwf:month\": [\"04\"]})" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/notebooks/api_user_guide/5_serialize_deserialize.ipynb b/docs/notebooks/api_user_guide/6_serialize_deserialize.ipynb similarity index 100% rename from docs/notebooks/api_user_guide/5_serialize_deserialize.ipynb rename to docs/notebooks/api_user_guide/6_serialize_deserialize.ipynb diff --git a/docs/notebooks/api_user_guide/6_crunch.ipynb b/docs/notebooks/api_user_guide/7_crunch.ipynb similarity index 100% rename from docs/notebooks/api_user_guide/6_crunch.ipynb rename to docs/notebooks/api_user_guide/7_crunch.ipynb diff --git a/docs/notebooks/api_user_guide/7_download.ipynb b/docs/notebooks/api_user_guide/8_download.ipynb similarity index 100% rename from docs/notebooks/api_user_guide/7_download.ipynb rename to docs/notebooks/api_user_guide/8_download.ipynb diff --git a/docs/notebooks/api_user_guide/8_post_process.ipynb b/docs/notebooks/api_user_guide/9_post_process.ipynb similarity index 100% rename from docs/notebooks/api_user_guide/8_post_process.ipynb rename to docs/notebooks/api_user_guide/9_post_process.ipynb From f6feaca22bec8c1ce450db7e867ca91d17cc5b78 Mon Sep 17 00:00:00 2001 From: Alex Marandon Date: Fri, 13 Dec 2024 15:05:49 +0100 Subject: [PATCH 02/13] Update toctree after adding notebook on queryables --- docs/api_user_guide.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/api_user_guide.rst b/docs/api_user_guide.rst index bb32aeb6b..cb77807ae 100644 --- a/docs/api_user_guide.rst +++ b/docs/api_user_guide.rst @@ -25,7 +25,8 @@ or run locally after being downloaded (see how to :ref:`install_notebooks`). notebooks/api_user_guide/2_providers_products_available.ipynb notebooks/api_user_guide/3_configuration.ipynb notebooks/api_user_guide/4_search.ipynb - notebooks/api_user_guide/5_serialize_deserialize.ipynb - notebooks/api_user_guide/6_crunch.ipynb - notebooks/api_user_guide/7_download.ipynb - notebooks/api_user_guide/8_post_process.ipynb + notebooks/api_user_guide/5_queryables.ipynb + notebooks/api_user_guide/6_serialize_deserialize.ipynb + notebooks/api_user_guide/7_crunch.ipynb + notebooks/api_user_guide/8_download.ipynb + notebooks/api_user_guide/9_post_process.ipynb From 8ef2ac06af7eb75ab7efb838996ae2aaaa4f2e3f Mon Sep 17 00:00:00 2001 From: Alex Marandon Date: Fri, 13 Dec 2024 15:23:15 +0100 Subject: [PATCH 03/13] Update TOC of intro notebooks --- docs/notebooks/intro_notebooks.ipynb | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/docs/notebooks/intro_notebooks.ipynb b/docs/notebooks/intro_notebooks.ipynb index 941516133..05a4ae174 100644 --- a/docs/notebooks/intro_notebooks.ipynb +++ b/docs/notebooks/intro_notebooks.ipynb @@ -14,21 +14,29 @@ "* [Providers and products](api_user_guide/2_providers_products_available.ipynb)\n", "* [Configuration](api_user_guide/3_configuration.ipynb)\n", "* [Search](api_user_guide/4_search.ipynb)\n", - "* [Serialize/Deserialize](api_user_guide/5_serialize_deserialize.ipynb)\n", - "* [Crunch](api_user_guide/6_crunch.ipynb)\n", - "* [Download](api_user_guide/7_download.ipynb)\n", - "* [Post-process](api_user_guide/8_post_process.ipynb)\n", + "* [Search](api_user_guide/5_queryables.ipynb)\n", + "* [Serialize/Deserialize](api_user_guide/6_serialize_deserialize.ipynb)\n", + "* [Crunch](api_user_guide/7_crunch.ipynb)\n", + "* [Download](api_user_guide/8_download.ipynb)\n", + "* [Post-process](api_user_guide/9_post_process.ipynb)\n", "\n", "## Tutorials/Examples\n", "\n", "* [STAC Client](tutos/tuto_stac_client.ipynb)\n", "* [Search for products by tile](tutos/tuto_search_location_tile.ipynb)\n" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -42,9 +50,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.13.1" } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } From db95c72b00f459ad58c0ede19f447c789e27486d Mon Sep 17 00:00:00 2001 From: Alex Marandon Date: Fri, 13 Dec 2024 15:25:35 +0100 Subject: [PATCH 04/13] Update links to notebooks which number have changed --- CHANGES.rst | 4 ++-- CONTRIBUTING.rst | 2 +- docs/notebooks/api_user_guide/4_search.ipynb | 2 +- docs/notebooks/api_user_guide/8_download.ipynb | 2 +- docs/notebooks/tutos/tuto_search_location_tile.ipynb | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 101be56ac..f3cc8eb94 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -233,10 +233,10 @@ Core features and fixes * Configurable download timeout (:pull:`1124`) * `Search by id `_ now uses :meth:`~eodag.api.core.EODataAccessGateway.search_all` and - `crunch `_ + `crunch `_ (:pull:`1099`). * Free text search available for all fields when `guessing a produc type - `_ (:pull:`1070`), + `_ (:pull:`1070`), mission dates filtering support (:pull:`1222`) * Configurable requests ``ssl_verify`` (:pull:`1045`) * Download record hash independent from provider (:pull:`1023`) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index e206a9b90..3fcc85f2e 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -109,7 +109,7 @@ The notebooks listed below are **always executed** by `nbsphinx`: * ``_ * ``_ -* ``_ +* ``_ For the other notebooks, their **cell output as long as their widget state** need so be saved. If not, the outputs and the widgets (e.g. progress bar) won't be displayed in the online documentation. diff --git a/docs/notebooks/api_user_guide/4_search.ipynb b/docs/notebooks/api_user_guide/4_search.ipynb index 63362ff16..0cf12002d 100644 --- a/docs/notebooks/api_user_guide/4_search.ipynb +++ b/docs/notebooks/api_user_guide/4_search.ipynb @@ -6283,7 +6283,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.0" + "version": "3.13.1" }, "widgets": { "application/vnd.jupyter.widget-state+json": { diff --git a/docs/notebooks/api_user_guide/8_download.ipynb b/docs/notebooks/api_user_guide/8_download.ipynb index 1aad82bbc..f792b080b 100644 --- a/docs/notebooks/api_user_guide/8_download.ipynb +++ b/docs/notebooks/api_user_guide/8_download.ipynb @@ -216,7 +216,7 @@ " \n", "### Cutomize progress bar\n", "\n", - "Progress bars can be customized, using the `progress_callback` parameter of the download methods. Create your own instance of [ProgressCallback](../../api_reference/utils.rst#eodag.utils.ProgressCallback) class, customize it to pass it later to [download](./7_download.ipynb#Download-EO-products) methods:" + "Progress bars can be customized, using the `progress_callback` parameter of the download methods. Create your own instance of [ProgressCallback](../../api_reference/utils.rst#eodag.utils.ProgressCallback) class, customize it to pass it later to [download](./8_download.ipynb#Download-EO-products) methods:" ] }, { diff --git a/docs/notebooks/tutos/tuto_search_location_tile.ipynb b/docs/notebooks/tutos/tuto_search_location_tile.ipynb index d0de1d19a..f7d1b921a 100644 --- a/docs/notebooks/tutos/tuto_search_location_tile.ipynb +++ b/docs/notebooks/tutos/tuto_search_location_tile.ipynb @@ -617,7 +617,7 @@ "\n", "Note\n", "\n", - "Instead of using the tile's centroid we could have directly used its extent and filter the returned products to keep only those fully contained within the tile. Check out the section dedicated to [filtering products](../api_user_guide/6_crunch.ipynb) in the API user guide.\n", + "Instead of using the tile's centroid we could have directly used its extent and filter the returned products to keep only those fully contained within the tile. Check out the section dedicated to [filtering products](../api_user_guide/7_crunch.ipynb) in the API user guide.\n", "\n", "\n", "\n", From f0d66d978308fdd73764eecaeb818c3e52496fed Mon Sep 17 00:00:00 2001 From: Alex Marandon Date: Mon, 16 Dec 2024 10:56:17 +0100 Subject: [PATCH 05/13] docs: remove example with only productType That example cannot work at the moment because of an issue with wekeo --- .../api_user_guide/5_queryables.ipynb | 21 +------------------ 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/docs/notebooks/api_user_guide/5_queryables.ipynb b/docs/notebooks/api_user_guide/5_queryables.ipynb index 7ac86f08d..77801c165 100644 --- a/docs/notebooks/api_user_guide/5_queryables.ipynb +++ b/docs/notebooks/api_user_guide/5_queryables.ipynb @@ -97,31 +97,12 @@ "queryables.additional_properties" ] }, - { - "cell_type": "markdown", - "id": "cb3940dd-8f87-42b4-8798-1184a29de961", - "metadata": {}, - "source": [ - "If the function is called for a specific product type, the queryables available for this product type, i.e., the basic queryables and product type specific queryables, are shown. Only parameters available for all providers offering the product are returned." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "84565274-e893-47e9-8529-ce9d2954389d", - "metadata": {}, - "outputs": [], - "source": [ - "# FIXME This isn't currently working. See https://github.com/CS-SI/eodag/issues/1446\n", - "# dag.list_queryables(productType=\"SEASONAL_ORIGINAL_SL\")" - ] - }, { "cell_type": "markdown", "id": "41857931-fe84-4e27-ba69-54834ab2d0de", "metadata": {}, "source": [ - "The queryables can also be retrieved for a specific provider. These queryables are either taken from the queryables endpoint of the provider (if available), the constraints for the query parameter values defined by the provider (if available) or the provider configuration in EODAG. In the example below we use a provider offering a queryables endpoint." + "The queryables can be retrieved for a specific product type and provider. These queryables are either taken from the queryables endpoint of the provider (if available), the constraints for the query parameter values defined by the provider (if available) or the provider configuration in EODAG. In the example below we use a provider offering a queryables endpoint." ] }, { From 440712d64da7631b68d7fb6955bb28716799d9d8 Mon Sep 17 00:00:00 2001 From: Alex Marandon Date: Wed, 18 Dec 2024 09:47:07 +0100 Subject: [PATCH 06/13] fix: typo in TOC label --- docs/notebooks/intro_notebooks.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/notebooks/intro_notebooks.ipynb b/docs/notebooks/intro_notebooks.ipynb index 05a4ae174..22a30666f 100644 --- a/docs/notebooks/intro_notebooks.ipynb +++ b/docs/notebooks/intro_notebooks.ipynb @@ -14,7 +14,7 @@ "* [Providers and products](api_user_guide/2_providers_products_available.ipynb)\n", "* [Configuration](api_user_guide/3_configuration.ipynb)\n", "* [Search](api_user_guide/4_search.ipynb)\n", - "* [Search](api_user_guide/5_queryables.ipynb)\n", + "* [Queryables](api_user_guide/5_queryables.ipynb)\n", "* [Serialize/Deserialize](api_user_guide/6_serialize_deserialize.ipynb)\n", "* [Crunch](api_user_guide/7_crunch.ipynb)\n", "* [Download](api_user_guide/8_download.ipynb)\n", From 2c66bd632aba6e1f6319a4a9e02835fd285ad6be Mon Sep 17 00:00:00 2001 From: Alex Marandon Date: Wed, 18 Dec 2024 09:51:19 +0100 Subject: [PATCH 07/13] docs: add a link from Search to Queryables --- docs/notebooks/api_user_guide/4_search.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/notebooks/api_user_guide/4_search.ipynb b/docs/notebooks/api_user_guide/4_search.ipynb index 0cf12002d..fc0761e28 100644 --- a/docs/notebooks/api_user_guide/4_search.ipynb +++ b/docs/notebooks/api_user_guide/4_search.ipynb @@ -96,7 +96,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The three search methods introduced below accept pretty much the same parameters, which are described further down the page." + "The three search methods introduced below accept pretty much the same parameters, which are described further down the page. Note that if you wish to know which parameters are available to use in a search, you may the [queryables API](./5_queryables.ipynb)." ] }, { From 406a6b29541339eb1acfb11bc6a2bbee82a01bdf Mon Sep 17 00:00:00 2001 From: Alex Marandon Date: Wed, 18 Dec 2024 11:16:24 +0100 Subject: [PATCH 08/13] docs: add missing word --- docs/notebooks/api_user_guide/4_search.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/notebooks/api_user_guide/4_search.ipynb b/docs/notebooks/api_user_guide/4_search.ipynb index fc0761e28..2601b11be 100644 --- a/docs/notebooks/api_user_guide/4_search.ipynb +++ b/docs/notebooks/api_user_guide/4_search.ipynb @@ -96,7 +96,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The three search methods introduced below accept pretty much the same parameters, which are described further down the page. Note that if you wish to know which parameters are available to use in a search, you may the [queryables API](./5_queryables.ipynb)." + "The three search methods introduced below accept pretty much the same parameters, which are described further down the page. Note that if you wish to know which parameters are available to use in a search, you may use the [queryables API](./5_queryables.ipynb)." ] }, { From 39f1351d8a0c8fac698c6fdd402a4274e6db6192 Mon Sep 17 00:00:00 2001 From: Sylvain Brunato Date: Wed, 8 Jan 2025 17:06:41 +0100 Subject: [PATCH 09/13] fix: remaining links to update --- docs/api_user_guide.rst | 2 +- docs/getting_started_guide/configure.rst | 2 +- docs/getting_started_guide/product_storage_status.rst | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/api_user_guide.rst b/docs/api_user_guide.rst index cb77807ae..73f61fb01 100644 --- a/docs/api_user_guide.rst +++ b/docs/api_user_guide.rst @@ -15,7 +15,7 @@ or run locally after being downloaded (see how to :ref:`install_notebooks`). .. warning:: - The `Download `_ notebook downloads a few + The `Download `_ notebook downloads a few EO products. These products are usually in the order of 700-900 Mo, make sure you have a decent internet connection if you plan to run the notebooks. diff --git a/docs/getting_started_guide/configure.rst b/docs/getting_started_guide/configure.rst index e6d5213f0..9c90d4dde 100644 --- a/docs/getting_started_guide/configure.rst +++ b/docs/getting_started_guide/configure.rst @@ -313,7 +313,7 @@ will be stored and used if further authentication tries fail: dag._plugins_manager.get_auth_plugin("creodias").authenticate() Please note that authentication mechanism is already included in -`download methods `_ , so you could +`download methods `_ , so you could also directly execute a download to retrieve the token while the OTP is still valid. Use OTP through CLI diff --git a/docs/getting_started_guide/product_storage_status.rst b/docs/getting_started_guide/product_storage_status.rst index 9a1bc2372..a83c65d76 100644 --- a/docs/getting_started_guide/product_storage_status.rst +++ b/docs/getting_started_guide/product_storage_status.rst @@ -15,4 +15,4 @@ its different values mapped to these 3 unique status: * `OFFLINE`: the product is not available for download, but can eventually be ordered. ``eodag`` is able to order `OFFLINE` products and retry downloading them for a while. This -is described in more details in the `Python API user guide <../notebooks/api_user_guide/7_download.ipynb>`_. +is described in more details in the `Python API user guide <../notebooks/api_user_guide/8_download.ipynb>`_. From 2047dfd813dce36d65dadb9983079cf92c20af3e Mon Sep 17 00:00:00 2001 From: Sylvain Brunato Date: Wed, 8 Jan 2025 17:29:52 +0100 Subject: [PATCH 10/13] refactor: more verbose ECMWFSearch queryables validation error --- eodag/plugins/search/build_search_result.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/eodag/plugins/search/build_search_result.py b/eodag/plugins/search/build_search_result.py index 062ae8578..5fabcf1db 100644 --- a/eodag/plugins/search/build_search_result.py +++ b/eodag/plugins/search/build_search_result.py @@ -589,7 +589,9 @@ def discover_queryables( ): formated_kwargs[key] = kwargs[key] else: - raise ValidationError(f"{key} is not a queryable parameter") + raise ValidationError( + f"{key} is not a queryable parameter for {self.provider}" + ) # we use non empty kwargs as default to integrate user inputs # it is needed because pydantic json schema does not represent "value" From 9821c7016a451377802bd16439658a206cc90ffd Mon Sep 17 00:00:00 2001 From: Sylvain Brunato Date: Wed, 8 Jan 2025 17:30:33 +0100 Subject: [PATCH 11/13] docs: moved queryables info in search api user guide --- docs/notebooks/api_user_guide/4_search.ipynb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/notebooks/api_user_guide/4_search.ipynb b/docs/notebooks/api_user_guide/4_search.ipynb index 2601b11be..779f49235 100644 --- a/docs/notebooks/api_user_guide/4_search.ipynb +++ b/docs/notebooks/api_user_guide/4_search.ipynb @@ -96,7 +96,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The three search methods introduced below accept pretty much the same parameters, which are described further down the page. Note that if you wish to know which parameters are available to use in a search, you may use the [queryables API](./5_queryables.ipynb)." + "The three search methods introduced below accept pretty much the same parameters, which are described further down the page." ] }, { @@ -4148,7 +4148,9 @@ "* `locations`\n", "* `count`\n", "\n", - "More parameters can be passed through *kwargs*, they are also described below." + "More parameters can be passed through *kwargs*, they are also described below.\n", + "\n", + "Note that if you wish to know which parameters are available to use in a search, you may use the [queryables API](./5_queryables.ipynb)." ] }, { @@ -6283,7 +6285,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.1" + "version": "3.12.3" }, "widgets": { "application/vnd.jupyter.widget-state+json": { From ae07cd0b4a025bc0f72901193d8afe5c12cb5e0d Mon Sep 17 00:00:00 2001 From: Sylvain Brunato Date: Wed, 8 Jan 2025 17:31:02 +0100 Subject: [PATCH 12/13] docs: restored queryables for a specific product type --- .../api_user_guide/5_queryables.ipynb | 316 +++++++++++++++++- 1 file changed, 305 insertions(+), 11 deletions(-) diff --git a/docs/notebooks/api_user_guide/5_queryables.ipynb b/docs/notebooks/api_user_guide/5_queryables.ipynb index 77801c165..0f1201c87 100644 --- a/docs/notebooks/api_user_guide/5_queryables.ipynb +++ b/docs/notebooks/api_user_guide/5_queryables.ipynb @@ -26,13 +26,6 @@ "tags": [] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "astraea_eod skipped: could not be loaded from user configuration\n" - ] - }, { "data": { "text/html": [ @@ -77,7 +70,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "id": "5493a4e8-83e5-4e5f-953e-5c71267bf87d", "metadata": {}, "outputs": [ @@ -87,7 +80,7 @@ "True" ] }, - "execution_count": 4, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -97,12 +90,306 @@ "queryables.additional_properties" ] }, + { + "cell_type": "markdown", + "id": "103cf53d-57f3-424c-800b-f2a05eeef98b", + "metadata": {}, + "source": [ + "If the function is called for a specific product type, the queryables available for this product type, i.e., the basic queryables and product type specific queryables, are shown. Only parameters available for all providers offering the product are returned." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "ed35bb7d-5a0c-413b-90a4-7b69d559a9ef", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " QueryablesDict (13) - additional_properties=False\n", + "
\n", + "
\n", + " 'ecmwf:system_version': \n", + " typing.Annotated[List[Literal['operational']], \n", + " FieldInfo('default': 'operational', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[typing.Literal['operational']],
\n", + " FieldInfo(annotation=NoneType, required=False, default='operational', title='System version', description=\"System version is the version number of the GloFAS system. Choose 'Operational' for accessing datasets from the official system maintained 24/7 into operations. Following an update, we may provide access to the old GloFAS system for a few months after the official release, these can be found in the Legacy section. Details on system version can be found in the documentation under 'GloFAS versioning system'.

The GloFAS version that was in operations for forecasts between

2019/11/05 - 2021/05/25 GloFAS v2.1

2021/05/26 - 2023/07/25 GloFAS v3.1

2023/07/26 - present GloFAS v4.0\")
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:hydrological_model': \n", + " typing.Annotated[List[Literal['htessel_lisflood']], \n", + " FieldInfo('default': 'htessel_lisflood', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[typing.Literal['htessel_lisflood']],
\n", + " FieldInfo(annotation=NoneType, required=False, default='htessel_lisflood', title='Hydrological model', description=\"Hydrological model chain used to generate the hydrological simulations. Details can be found in the documentation under 'GloFAS hydrological models'.\")
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:product_type': \n", + " typing.Annotated[List[Literal['control_forecast']], \n", + " FieldInfo('default': 'control_forecast', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[typing.Literal['control_forecast']],
\n", + " FieldInfo(annotation=NoneType, required=False, default='control_forecast', title='Product type', description=\"Ensemble forecasts consisting of a single, unperturbed member ('control forecast') and perturbed ensemble members.\")
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:variable': \n", + " typing.Annotated[Literal['river_discharge_in_the_last_24_hours'], \n", + " FieldInfo('default': 'river_discharge_in_the_last_24_hours', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Literal['river_discharge_in_the_last_24_hours'],
\n", + " FieldInfo(annotation=NoneType, required=False, default='river_discharge_in_the_last_24_hours', title='Variable', description=\"Note that the term 'last hours' in the discharge time step refers to the hours preceeding the end of each time step. For more information about the variables we refer to the Documentation.\")
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:year': \n", + " typing.Annotated[List[Literal['2019']], \n", + " FieldInfo('default': '['2019']', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[typing.Literal['2019']],
\n", + " FieldInfo(annotation=NoneType, required=False, default=['2019'], title='Year')
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:month': \n", + " typing.Annotated[List[Literal['11']], \n", + " FieldInfo('default': '['11']', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[typing.Literal['11']],
\n", + " FieldInfo(annotation=NoneType, required=False, default=['11'], title='Month')
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:day': \n", + " typing.Annotated[List[Literal['05', ...]], \n", + " FieldInfo('default': '['05']', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[typing.Literal['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', '30']],
\n", + " FieldInfo(annotation=NoneType, required=False, default=['05'], title='Day')
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:leadtime_hour': \n", + " typing.Annotated[List[Literal['120', ...]], \n", + " FieldInfo('default': '24', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.List[typing.Literal['120', '144', '168', '192', '216', '24', '240', '264', '288', '312', '336', '360', '384', '408', '432', '456', '48', '480', '504', '528', '552', '576', '600', '624', '648', '672', '696', '72', '720', '96']],
\n", + " FieldInfo(annotation=NoneType, required=False, default='24', title='Leadtime hour', description='Time step of the forecast in hours.')
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:data_format': \n", + " typing.Annotated[Literal['grib2', ...], \n", + " FieldInfo('default': 'grib2', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Literal['grib2', 'netcdf'],
\n", + " FieldInfo(annotation=NoneType, required=False, default='grib2', title='Data format', description='Select a format for the data files, the native format of MARS datasets is GRIB, and this format is recommended for any operational use, such as deriving downstream products.\\nPlease note that to ensure that data is accurate and sufficient metadata is included in the output, your request may be split into multiple files when converted to netCDF.')
]\n", + "
\n", + "
\n", + "
\n", + " 'ecmwf:download_format': \n", + " typing.Annotated[Literal['unarchived', ...], \n", + " FieldInfo('default': 'zip', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Literal['unarchived', 'zip'],
\n", + " FieldInfo(annotation=NoneType, required=False, default='zip', title='Download format', description=\"Please note that in some circumstance the conversion from GRIB to NetCDF can result in multiple files.

If you select 'Zip' the files will always be zipped into a single file.

If you select 'Unarchived' then the files will be returned unarchived if there is only one file, and zipped if there are multiple files.\")
]\n", + "
\n", + "
\n", + "
\n", + " 'start': \n", + " typing.Annotated[Union[datetime, ...], \n", + " FieldInfo('default': '2019-11-05T00:00:00Z', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Union[datetime.datetime, datetime.date],
\n", + " FieldInfo(annotation=NoneType, required=False, default='2019-11-05T00:00:00Z', alias='startTimeFromAscendingNode', alias_priority=2)
]\n", + "
\n", + "
\n", + "
\n", + " 'end': \n", + " typing.Annotated[Union[datetime, ...], \n", + " FieldInfo('default': '2019-11-05T00:00:00+00:00', \n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Union[datetime.datetime, datetime.date],
\n", + " FieldInfo(annotation=NoneType, required=False, default='2019-11-05T00:00:00+00:00', alias='completionTimeFromAscendingNode', alias_priority=2)
]\n", + "
\n", + "
\n", + "
\n", + " 'geom': \n", + " typing.Annotated[Union[str, Dict[str, ...], ...], \n", + " FieldInfo(\n", + " 'required': False,\n", + " ...\n", + " )]\n", + " \n", + " typing.Annotated[\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " typing.Union[str, typing.Dict[str, float], shapely.geometry.base.BaseGeometry],
\n", + " FieldInfo(annotation=NoneType, required=False, default=None, description='Read EODAG documentation for all supported geometry format.')
]\n", + "
\n", + "
" + ], + "text/plain": [ + "{'ecmwf:system_version': typing.Annotated[typing.List[typing.Literal['operational']], FieldInfo(annotation=NoneType, required=False, default='operational', title='System version', description=\"System version is the version number of the GloFAS system. Choose 'Operational' for accessing datasets from the official system maintained 24/7 into operations. Following an update, we may provide access to the old GloFAS system for a few months after the official release, these can be found in the Legacy section. Details on system version can be found in the documentation under 'GloFAS versioning system'.

The GloFAS version that was in operations for forecasts between

2019/11/05 - 2021/05/25 GloFAS v2.1

2021/05/26 - 2023/07/25 GloFAS v3.1

2023/07/26 - present GloFAS v4.0\")], 'ecmwf:hydrological_model': typing.Annotated[typing.List[typing.Literal['htessel_lisflood']], FieldInfo(annotation=NoneType, required=False, default='htessel_lisflood', title='Hydrological model', description=\"Hydrological model chain used to generate the hydrological simulations. Details can be found in the documentation under 'GloFAS hydrological models'.\")], 'ecmwf:product_type': typing.Annotated[typing.List[typing.Literal['control_forecast']], FieldInfo(annotation=NoneType, required=False, default='control_forecast', title='Product type', description=\"Ensemble forecasts consisting of a single, unperturbed member ('control forecast') and perturbed ensemble members.\")], 'ecmwf:variable': typing.Annotated[typing.Literal['river_discharge_in_the_last_24_hours'], FieldInfo(annotation=NoneType, required=False, default='river_discharge_in_the_last_24_hours', title='Variable', description=\"Note that the term 'last hours' in the discharge time step refers to the hours preceeding the end of each time step. For more information about the variables we refer to the Documentation.\")], 'ecmwf:year': typing.Annotated[typing.List[typing.Literal['2019']], FieldInfo(annotation=NoneType, required=False, default=['2019'], title='Year')], 'ecmwf:month': typing.Annotated[typing.List[typing.Literal['11']], FieldInfo(annotation=NoneType, required=False, default=['11'], title='Month')], 'ecmwf:day': typing.Annotated[typing.List[typing.Literal['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', '30']], FieldInfo(annotation=NoneType, required=False, default=['05'], title='Day')], 'ecmwf:leadtime_hour': typing.Annotated[typing.List[typing.Literal['120', '144', '168', '192', '216', '24', '240', '264', '288', '312', '336', '360', '384', '408', '432', '456', '48', '480', '504', '528', '552', '576', '600', '624', '648', '672', '696', '72', '720', '96']], FieldInfo(annotation=NoneType, required=False, default='24', title='Leadtime hour', description='Time step of the forecast in hours.')], 'ecmwf:data_format': typing.Annotated[typing.Literal['grib2', 'netcdf'], FieldInfo(annotation=NoneType, required=False, default='grib2', title='Data format', description='Select a format for the data files, the native format of MARS datasets is GRIB, and this format is recommended for any operational use, such as deriving downstream products.\\nPlease note that to ensure that data is accurate and sufficient metadata is included in the output, your request may be split into multiple files when converted to netCDF.')], 'ecmwf:download_format': typing.Annotated[typing.Literal['unarchived', 'zip'], FieldInfo(annotation=NoneType, required=False, default='zip', title='Download format', description=\"Please note that in some circumstance the conversion from GRIB to NetCDF can result in multiple files.

If you select 'Zip' the files will always be zipped into a single file.

If you select 'Unarchived' then the files will be returned unarchived if there is only one file, and zipped if there are multiple files.\")], 'start': typing.Annotated[typing.Union[datetime.datetime, datetime.date], FieldInfo(annotation=NoneType, required=False, default='2019-11-05T00:00:00Z', alias='startTimeFromAscendingNode', alias_priority=2)], 'end': typing.Annotated[typing.Union[datetime.datetime, datetime.date], FieldInfo(annotation=NoneType, required=False, default='2019-11-05T00:00:00+00:00', alias='completionTimeFromAscendingNode', alias_priority=2)], 'geom': typing.Annotated[typing.Union[str, typing.Dict[str, float], shapely.geometry.base.BaseGeometry], FieldInfo(annotation=NoneType, required=False, default=None, description='Read EODAG documentation for all supported geometry format.')]}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dag.list_queryables(productType=\"GLOFAS_FORECAST\")" + ] + }, { "cell_type": "markdown", "id": "41857931-fe84-4e27-ba69-54834ab2d0de", "metadata": {}, "source": [ - "The queryables can be retrieved for a specific product type and provider. These queryables are either taken from the queryables endpoint of the provider (if available), the constraints for the query parameter values defined by the provider (if available) or the provider configuration in EODAG. In the example below we use a provider offering a queryables endpoint." + "The queryables can also be retrieved for a specific provider. These queryables are either taken from the queryables endpoint of the provider (if available), the constraints for the query parameter values defined by the provider (if available) or the provider configuration in EODAG. In the example below we use a provider offering a queryables endpoint." ] }, { @@ -1381,7 +1668,14 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.1" + "version": "3.12.3" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": {}, + "version_major": 2, + "version_minor": 0 + } } }, "nbformat": 4, From a9f2c01fdb4753258ea460a0f91dad7f7511ab84 Mon Sep 17 00:00:00 2001 From: Sylvain Brunato Date: Wed, 8 Jan 2025 19:23:08 +0100 Subject: [PATCH 13/13] docs: html repr left aligned --- docs/_static/custom.css | 5 +++++ docs/_static/product_types_information.csv | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/docs/_static/custom.css b/docs/_static/custom.css index 1b11ceae7..84accb94c 100644 --- a/docs/_static/custom.css +++ b/docs/_static/custom.css @@ -91,3 +91,8 @@ dl.attribute dt { dl.attribute dd { grid-column-start: 2; } + +.nboutput table { + margin-left: unset; + margin-right: unset; +} diff --git a/docs/_static/product_types_information.csv b/docs/_static/product_types_information.csv index e97434dcd..5c79b2ccb 100644 --- a/docs/_static/product_types_information.csv +++ b/docs/_static/product_types_information.csv @@ -2,7 +2,7 @@ product type,abstract,platform,instrument,platformSerialIdentifier,processingLev 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,2021-11-22T00:00:00Z,CAMS_EU_AIR_QUALITY_FORECAST,,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,2022-01-03T00: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-01T00: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,,,,,,,,,,,,,,,,,,available, @@ -48,6 +48,7 @@ GLOFAS_REFORECAST,"This dataset provides a gridded modelled time series of river 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,,,,,,,,,,,,,,,,,,, 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,,,,,,,,,,,,,,,,,,, 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,,,,,,,,,,,,,,,,,,available, +HIRS_FDR_1_MULTI,"This is Release 1 of the Fundamental Data Record (FDR) brightness temperatures from the High Resolution Infrared Radiation Sounder (HIRS) on board NOAA and Metop satellites. The data record covers more than 40 years from 29 October 1978 to 31 December 2020. Release 1 provides recalibrated Level 1c brightness temperatures based on the V4.0 calibration method developed by Cao et al. (2007). This method was implemented into the NWP-SAF software ATOVS and AVHRR processing Package (AAPP). This software was consistently used to recalibrate and reprocess data from all HIRS instruments on board TIROS-N, NOAA-06 to NOAA-19, Metop-A, and Metop-B. The polygons, required for the data tailoring, show problems with non-continues data. Some polygons of the HIRS data record are found to be incorrect. However, this does not affect the correctness of the data itself. This is a Fundamental Data Record (FDR). ","Metop,TIROS,NOAA",HIRS,"Metop,TIROS,NOAA",L1C,"HIRS,L1C,HIRS,TIROS,Metop,NOAA,Sounder,FDR",Sounder,proprietary,HIRS Level 1C Fundamental Data Record Release 1 - Multimission - Global,1978-10-29T00:00:00Z,HIRS_FDR_1_MULTI,,,,,,,,,,,,,,,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,,,,, @@ -82,6 +83,8 @@ METOP_OSI_150A,The ASCAT Wind Product contains stress equivalent 10m winds (spee 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,,,,,,,,,,,,, +MFG_GSA_57,Release 2 of the Thematic Climate Data Record (TCDR) of the Meteosat First Generation (MFG) Level 2 land surface albedo. The variables estimated are black-sky albedo (BSA) and white-sky albedo (WSA) with the corresponding uncertainties as explained in the Product User Guide (PUM). The data record validation and limitations are provided in the Validation Report (VR). The products are available in netCDF4 format. This release contains products generated with Meteosat-7. ,MFG,MVIRI,MFG,L2,"MVIRI,L2,MFG,Climate,Thematic",OPTICAL,proprietary,GSA Level 2 Climate Data Record Release 2 - MFG - 57 degree,2006-12-07T00:00:00Z,MFG_GSA_57,,,,,,,,,,,,,,,available,,,,,,,,,,,,, +MFG_GSA_63,Release 2 of the Thematic Climate Data Record (TCDR) of the Meteosat First Generation (MFG) Level 2 land surface albedo. The variables estimated are black-sky albedo (BSA) and white-sky albedo (WSA) with the corresponding uncertainties as explained in the Product User Guide (PUM). The data record validation and limitations are provided in the Validation Report (VR). The products are available in netCDF4 format. This release contains products generated with Meteosat-5. ,MFG,MVIRI,MFG,L2,"MVIRI,L2,MFG,Climate,Thematic",OPTICAL,proprietary,GSA Level 2 Climate Data Record Release 2 - MFG - 63 degree,1998-07-10T00:00:00Z,MFG_GSA_63,,,,,,,,,,,,,,,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,,,,,,, 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,,,,,,,,,,,,,,,,,,,,,, @@ -131,8 +134,20 @@ MSG_HRSEVIRI_IODC,"Rectified (level 1.5) Meteosat SEVIRI image data. The data is MSG_LSA_FRM,"Fire risk by merging NWP & remotely sensed (FRP) data. The product includes 24h, 48h, 72h, 96h and 120h forecasts of: risk of fire (5 classes) and the probability of ignitions reaching energy releases over 2000GJ (both covering Southern Europe); Fire Weather Index (FWI) and respective components estimated for the whole MSG disk. ",MSG,SEVIRI,MSG,L2,"LSA-504.2,FRMV2,FIRE,VEGETATION,LAND,MSG,SEVIRI,OPTICAL,LAND,L2",OPTICAL,proprietary,Fire Risk Map - Released Energy Based - MSG,2023-09-21T00:00:00Z,MSG_LSA_FRM,,,,,,,,,,,,,,,available,,,,,,,,,,,,, MSG_LSA_LSTDE,"Land Surface Temperature (LST) is the radiative skin temperature over land. LST plays an important role in the physics of land surface as it is involved in the processes of energy and water exchange with the atmosphere. LST is useful for the scientific community, namely for those dealing with meteorological and climate models. Accurate values of LST are also of special interest in a wide range of areas related to land surface processes, including meteorology, hydrology, agrometeorology, climatology and environmental studies. Land Surface Emissivity (EM), a crucial parameter for LST retrieval from space, is independently estimated as a function of (satellite derived) Fraction of Vegetation Cover (FVC) and land cover classification. In the most recent version of the dataset, information on the expected deviation of LST estimates from SEVIRI/MSG with respect to a reference view – here considered to be nadir view – has been added to the original product (LSA-001) as an extra data layer (LSA-004). ",MSG,SEVIRI,MSG,L2,"LSA-004,LSA-001,MLST_DIR,FIRE,VEGETATION,LAND,MSG,SEVIRI,OPTICAL,LAND,L2",OPTICAL,proprietary,Land Surface Temperature with Directional Effects - MSG,2005-01-16T00:00:00Z,MSG_LSA_LSTDE,,,,,,,,,,,,,,,available,,,,,,,,,,,,, MSG_LSA_LST_CDR,"The full archive of MSG/SEVIRI data was reprocessed to provide the user community a consistent, homogeneous and continuous Data Record of the 15-min Land Surface Temperature (LST) for the period 2004-2015. This Data Record was obtained with the best version of its equivalent NRT product (MLST) which can also complement the time series from 2016 onwards. ",MSG,SEVIRI,MSG,L3,"LSA-050,MLST-R,FIRE,VEGETATION,LAND,MSG,SEVIRI,OPTICAL,LAND,L3",OPTICAL,proprietary,Land Surface Temperature Climate Data Record - MSG,2004-01-21T00:00:00Z,MSG_LSA_LST_CDR,,,,,,,,,,,,,,,available,,,,,,,,,,,,, +MSG_LST,"The full archive of MSG/SEVIRI data was reprocessed to provide the user community a consistent, homogeneous and continuous Data Record of the 15-min Land Surface Temperature (LST) for the period 2004-2015. This Data Record was obtained with the best version of its equivalent NRT product (MLST) which can also complement the time series from 2016 onwards. ",MSG,SEVIRI,MSG,L3,"SEVIRI,L3,MSG,Vegetation,Land",OPTICAL,proprietary,Land Surface Temperature Climate Data Record - MSG,2021-01-21T00:00:00Z,MSG_LST,,,,,,,,,,,,,,,available,,,,,,,,,,,,, +MSG_LST_DIR,"Land Surface Temperature (LST) is the radiative skin temperature over land. LST plays an important role in the physics of land surface as it is involved in the processes of energy and water exchange with the atmosphere. LST is useful for the scientific community, namely for those dealing with meteorological and climate models. Accurate values of LST are also of special interest in a wide range of areas related to land surface processes, including meteorology, hydrology, agrometeorology, climatology and environmental studies. Land Surface Emissivity (EM), a crucial parameter for LST retrieval from space, is independently estimated as a function of (satellite derived) Fraction of Vegetation Cover (FVC) and land cover classification. In the most recent version of the dataset, information on the expected deviation of LST estimates from SEVIRI/MSG with respect to a reference view – here considered to be nadir view – has been added to the original product (LSA-001) as an extra data layer (LSA-004). ",MSG,SEVIRI,MSG,L2,"SEVIRI,L2,MSG,Vegetation,Land",OPTICAL,proprietary,Land Surface Temperature with Directional Effects - MSG,2005-01-16T00:00:00Z,MSG_LST_DIR,,,,,,,,,,,,,,,available,,,,,,,,,,,,, +MSG_MFG_GSA_0,Release 2 of the Thematic Climate Data Record (TCDR) of the Meteosat First Generation (MFG) and Meteosat Second Generation (MSG) Level 2 land surface albedo. The variables estimated are black-sky albedo (BSA) and white-sky albedo (WSA) with the corresponding uncertainties as explained in the Product User Guide (PUM). The data record validation and limitations are provided in the Validation Report (VR). The products are available in netCDF4 format. This release contains products generated with Meteosat-2 to Meteosat-10. ,"MFG,MSG","MVIRI,SEVIRI","MFG,MSG",L2,"MVIRI,SEVIRI,L2,MFG,MSG,Climate,Thematic,Meteosat,TCDR",OPTICAL,proprietary,GSA Level 2 Climate Data Record Release 2 - MFG and MSG - 0 degree,1982-02-10T00:00:00Z,MSG_MFG_GSA_0,,,,,,,,,,,,,,,available,,,,,,,,,,,,, MSG_MSG15_RSS,"Rectified (level 1.5) Meteosat SEVIRI Rapid Scan image data. The baseline scan region is a reduced area of the top 1/3 of a nominal repeat cycle, covering a latitude range from approximately 15 degrees to 70 degrees. The service generates repeat cycles at 5-minute intervals (the same as currently used for weather radars). The dissemination of RSS data is similar to the normal dissemination, with image segments based on 464 lines and compatible with the full disk level 1.5 data scans. Epilogue and prologue (L1.5 Header and L1.5 Trailer) have the same structure. Calibration is as in Full Earth Scan. Image rectification is to 9.5 degreesE. The scans start at 00:00, 00:05, 00:10, 00:15 ... etc. (5 min scan). The differences from the nominal Full Earth scan are that for channels 1 - 11, only segments 6 - 8 are disseminated and for the High Resolution Visible Channel only segments 16 - 24 are disseminated. ",MSG,SEVIRI,MSG,L1,"MSG15-RSS,MSG15,MSG,SEVIRI,OPTICAL,OCEAN,ATMOSPHERE,LAND,L1",OPTICAL,proprietary,Rapid Scan High Rate SEVIRI Level 1.5 Image Data - MSG,2008-05-13T00:00:00Z,MSG_MSG15_RSS,,,,,,,,,,,,,,,available,,,,,,,,,,,,, +MSG_OCA_CDR,"The OCA Release 1 Climate Data Record (CDR) covers the MSG observation period from 2004 up to 2019, providing a homogenous cloud properties time series. It is generated at full Meteosat repeat cycle (15 minutes) fequency. Cloud properties retrieved by OCA are cloud top pressure, cloud optical thickness, and cloud effective radius, together with uncertainties. The OCA algorithm has been slightly adapted for climate data record processing. The adaptation mainly consists in the usage of different inputs, because the one used for Near Real Time (NRT) were not available for the reprocessing (cloud mask, clear sky reflectance map) and also not homogenous (reanalysis) over the complete time period. it extends the NRT data record more than 9 years back in time. This is a Thematic Climate Data Record (TCDR). ",MSG,SEVIRI,MSG,L2,"MSG,L2,SEVIRI,Climate,Clouds,Atmosphere,Observation,Thematic,TCDR,OCA",MSG,proprietary,Optimal Cloud Analysis Climate Data Record Release 1 - MSG - 0 degree,2004-01-19T00:00:00Z,MSG_OCA_CDR,,,,,,,,,,,,,,,available,,,,,,,,,,,,, MSG_RSS_CLM,"The Rapid Scanning Services (RSS) Cloud Mask product describes the scene type (either 'clear' or 'cloudy') on a pixel level. Each pixel is classified as one of the following four types: clear sky over water, clear sky over land, cloud, or not processed (off Earth disc). Applications & Uses: The main use is in support of Nowcasting applications, where it frequently serves as a basis for other cloud products, and the remote sensing of continental and ocean surfaces. ",MSG,SEVIRI,MSG,L2,"RSS-CLM,MSGCLMK,MSG,SEVIRI,OPTICAL,CLOUDS,ATMOSPHERE,L2",OPTICAL,proprietary,Rapid Scan Cloud Mask - MSG,2013-02-28T00:00:00Z,MSG_RSS_CLM,,,,,,,,,,,,,,,available,,,,,,,,,,,,, +MTG_FCI_FDHSI,"The rectified (Level 1c) Meteosat FCI full disc image data in normal spatial (FDHSI) resolution. The FCI instrument consists of 16 imaging spectral channels ranging from 0.4 µm to 13.3 µm with the channel at 3.8 µm having an extended dynamic range dedicated to fire monitoring. The spatial resolution is 1km for visible and near-infrared channels and 2 km for infrared channels. FCI Level 1c rectified radiance dataset consists of a set of files that contain the level 1c science data rectified to a reference grid together with the auxiliary data associated with the processing configuration and the quality assessment of the dataset. Level 1c image data here corresponds to initially geolocated and radiometrically pre-processed image data, without full georeferencing and cal/val in spatial and spectral domains applied. The data are ready for further processing and testing, e.g. value chains and initial tests for extracting meteorological products, however, we generally do not recommend the generation of Level 2 products due to known limitations in the Level 1c data. ",MTG,FCI,MTG,L1,"MTG,L1,FCI,FDHSI,Atmosphere,Ocean,Land",Imager,proprietary,FCI Level 1c Normal Resolution Image Data - MTG - 0 degree,2024-09-24T00:00:00Z,MTG_FCI_FDHSI,,,,,,,,,,,,,,,available,,,,,,,,,,,,, +MTG_FCI_HRFI,"The rectified (Level 1c) Meteosat FCI full disc image data in high spatial (HRFI) resolution.The FCI instrument consists of 16 imaging spectral channels ranging from 0.4 µm to 13.3 µm with the channel at 3.8 µm having an extended dynamic range dedicated to fire monitoring. The high-resolution HRFI dataset has 4 spectral channels at VIS 0.6 µm, NIR 2.2 µm, IR 3.8 µm and IR 13.3 µm with a spatial resolution of 0.5 km for visible and near-infrared channels and 1 km for infrared channels. FCI Level 1c rectified radiance dataset consists of a set of files that contain the level 1c science data rectified to a reference grid together with the auxiliary data associated with the processing configuration and the quality assessment of the dataset. Level 1c image data here corresponds to initially geolocated and radiometrically pre-processed image data, without full georeferencing and cal/val in spatial and spectral domains applied. The data are ready for further processing and testing, e.g. value chains and initial tests for extracting meteorological products, however, we generally do not recommend the generation of Level 2 products due to known limitations in the Level 1c data. A selection of single channel data are visualised in our EUMETView service. ",MTG,FCI,MTG,L1,"MTG,L1,FCI,HRFI,Atmosphere,Ocean,Land",Imager,proprietary,FCI Level 1c High Resolution Image Data - MTG - 0 degree,2024-09-24T00:00:00Z,MTG_FCI_HRFI,,,,,,,,,,,,,,,available,,,,,,,,,,,,, +MTG_LI_AF,LI Level 2 Accumulated Flashes (AF) complements the LI Level 2 Accumulated Flash Area (AFA) by providing one with the variation of the number of events within those regions reported to have lightning flashes in the Accumulated Flash Area (AFA). Accumulated Flashes provide users with data about the mapping of the number of LI events/detections rather than the mapping of flashes. One should keep in mind that the absolute value within each pixel of the Accumulated Flashes has no real physical meaning; it is rather a proxy for the pixel-by-pixel variation of the number of events. It is worth noting that one can derive the flash rate over a region encompassing a complete lightning feature (not within an FCI grid pixel) in Accumulated Flashes; this stems from the definition in Accumulated (gridded) data. ,MTG,LI,MTG,L2,"MTG,L2,LI,AF,Lightning,Weather,Flashes",Lightning Imager,proprietary,LI Accumulated Flashes - MTG - 0 degree,2024-07-08T00:00:00Z,MTG_LI_AF,,,,,,,,,,,,,,,available,,,,,,,,,,,,, +MTG_LI_AFA,"LI Level 2 Accumulated Flash Area (AFA) provides the user with data about flash mapping by using the area covered by the optical emission of each flash in LI Level 2 Lightning Flashes (LFL). It is important to keep in mind that each flash is treated as a flat (uniform) optical emission in this data. Accumulated Flash Area allows one to monitor the regions within a cloud top from which lightning-related optical emissions over 30 sec are emerging and accumulating and to know the number of flashes that were observed within the FCI grid pixels composing those regions. For example, from the Accumulated Flash Area, one can derive the flash rate for each pixel of the FCI 2km grid. This is a considerable improvement compared to the simple description of the flash using the variable flash_footprint available in Lightning Flashes. ",MTG,LI,MTG,L2,"MTG,L2,LI,AFA,Lightning,Weather,Flashes,Accumulated",Lightning Imager,proprietary,LI Accumulated Flash Area - MTG - 0 degree,2024-07-08T00:00:00Z,MTG_LI_AFA,,,,,,,,,,,,,,,available,,,,,,,,,,,,, +MTG_LI_AFR,LI Level 2 Accumulated Flash Radiance (AFR) is meant to describe the pixel-by-pixel variation of the optical emission accumulated over 30 sec within the FCI 2km grid. This stems from the events contributing to LI Level 2 Accumulated Flashes (AF) (each one contributing with its radiance) and it can be thought of as the 'appearance' of the accumulated optical emissions over 30 sec as seen by LI. ,MTG,LI,MTG,L2,"MTG,L2,LI,AFR,Lightning,Weather,Flashes,Accumulated,Radiance",Lightning Imager,proprietary,LI Accumulated Flash Radiance - MTG - 0 degree,2024-07-08T00:00:00Z,MTG_LI_AFR,,,,,,,,,,,,,,,available,,,,,,,,,,,,, +MTG_LI_LEF,"LI Level 2 Ligthning Events Filtered (LEF) is one of the initial products, along with Lightning Flashes (LFL) and Lightning Groups (LGR), and provides the finest scale over which LI can monitor lightning activity. Lightning Flashes and Lightning Groups contain two variables that provide the size of each group and flash in units of LI pixels, ie number_of_events and flash_footprint, respectively. To compute the exact physical size of a group/flash, users should use the information available in Ligthning Events Filtered. One can derive such a descriptor only by knowing which events compose a group/flash and employing the physical size of the projection of each event on the Earth's surface for the computation. ",MTG,LI,MTG,L2,"MTG,L2,LI,LEF,Lightning,Weather,Flashes,Filtered",Lightning Imager,proprietary,LI Lightning Events Filtered - MTG - 0 degree,2024-07-08T00:00:00Z,MTG_LI_LEF,,,,,,,,,,,,,,,available,,,,,,,,,,,,, +MTG_LI_LFL,"LI Level 2 Lightning Flashes (LFL) contains LI flashes. The definition of a flash is shared by LI and GLM; collections of groups that are correlated in space and time within the two windows of 330 milliseconds (temporal window) and 16.5km (space window), respectively. Even if the definition of a flash is not uniform among all lightning location systems, the simple fact that a flash is a collection of groups/strokes correlated in space and time somewhat mitigates the differences in the way different types of lightning sensors interpret different lightning processes. This makes flash datasets of different lightning location systems more comparable than group/stroke datasets. ",MTG,LI,MTG,L2,"MTG,L2,LI,LFL,Lightning,Weather,Flashes",Lightning Imager,proprietary,LI Lightning Flashes - MTG - 0 degree,2024-07-08T00:00:00Z,MTG_LI_LFL,,,,,,,,,,,,,,,available,,,,,,,,,,,,, +MTG_LI_LGR,"LI Level 2 Lightning Groups (LGR) contains LI groups. These are closely related to other similar space-born instruments. The definition of a group is shared by LI, GLM and ISS-LIS groups: collections of pixel-based lightning events that are acquired within the same acquisition frame and are spatially clustered. LI groups provide users with information about the time-slicing imaging (over the LI acquisition time, ie one millisecond) of lightning optical emissions. When comparing LI groups with either GLM or ISS-LIS groups, users must consider the differences in design between instruments, such as integration time and spatial sampling/resolution. Both GLM and ISS-LIS acquire over two milliseconds. When observing the same storm, this difference in design can potentially create considerable differences in the total number of groups, as well as differences between the acquisition times of the groups. In addition, differences will be found also for the geolocation of groups. In general, the discrepancies mentioned above are expected to be of the order of a few milliseconds for the group time and of the order of a few kilometres for the group geolocation. ",MTG,LI,MTG,L2,"MTG,L2,LI,LGR,Lightning,Weather,groups",Lightning Imager,proprietary,LI Lightning Groups - MTG - 0 degree,2024-07-08T00:00:00Z,MTG_LI_LGR,,,,,,,,,,,,,,,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,,,,,,, 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,,,,,,,,,, @@ -221,6 +236,7 @@ S5P_L2_O3,"Ozone (O3) is of crucial importance for the equilibrium of the Earth' 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,,,,,,,,, +S6_RADIO_OCCULTATION,"Jason-CS/Sentinel-6 Radio Occultation Level 1B product, providing a bending angle versus impact parameter profile, as well as other relevant information derived from the observation. ",Sentinel-6,GNSS-RO,Sentinel-6,L1B,"Sentinel-6,L1B,GNSS-RO,Radio,Occultation",Radio Occultation,proprietary,Radio Occultation Level 1B Products - Sentinel-6,2021-11-19T00:00:00Z,S6_RADIO_OCCULTATION,,,,,,,,,,,,,,,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,2003-01-10T00: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 2003 to present derived from satellite observations,2003-01-06T00:00:00Z,SATELLITE_METHANE,,,available,,,,,,available,,,,,,,,,,,,,,,,,,available,