4.2.2. ESA CCI Toolbox Data Access

The aim of this notebook is to show how to query for all the data sets provided by the ESA CCI Toolbox. To run this Notebook, make sure the ESA CCI Toolbox is setup correctly.

The ESA CCI Toolbox is based on xcube. It provides dedicated stores to access data from the ESA Open Data Portal (ODP). To access the store, we can use the following import.

[1]:
from xcube.core.store import new_data_store

Now we can acces the ESA Open Data Portal store. We may request it by ‘esa-cci’.

[2]:
cci_store = new_data_store('esa-cci')

We can check what types of data it provides.

[3]:
cci_store.get_data_types()
[3]:
('dataset', 'geodataframe')

All provided data are datasets. So, let’s have a look what data sets are available.

[4]:
datasets = cci_store.get_data_ids()
list(datasets)
[4]:
['esacci.AEROSOL.5-days.L3C.AEX.GOMOS.Envisat.AERGOM.3-00.r1',
 'esacci.AEROSOL.climatology.L3.AAI.multi-sensor.multi-platform.MSAAI.1-7.r1',
 'esacci.AEROSOL.day.L3.AAI.multi-sensor.multi-platform.MSAAI.1-7.r1',
 'esacci.AEROSOL.day.L3C.AER_PRODUCTS.AATSR.Envisat.ADV.2-31.r1',
 'esacci.AEROSOL.day.L3C.AER_PRODUCTS.AATSR.Envisat.ORAC.04-01-.r1',
 'esacci.AEROSOL.day.L3C.AER_PRODUCTS.AATSR.Envisat.ORAC.04-01_seg-.r1',
 'esacci.AEROSOL.day.L3C.AER_PRODUCTS.AATSR.Envisat.SU.4-3.r1',
 'esacci.AEROSOL.day.L3C.AER_PRODUCTS.ATSR-2.ERS-2.ADV.2-31.r1',
 'esacci.AEROSOL.day.L3C.AER_PRODUCTS.ATSR-2.ERS-2.ORAC.04-01-.r1',
 'esacci.AEROSOL.day.L3C.AER_PRODUCTS.ATSR-2.ERS-2.ORAC.04-01_seg-.r1',
 'esacci.AEROSOL.day.L3C.AER_PRODUCTS.ATSR-2.ERS-2.SU.4-3.r1',
 'esacci.AEROSOL.day.L3C.AER_PRODUCTS.multi-sensor.multi-platform.AATSR-ENVISAT-ENS_DAILY.v2-6.r1',
 'esacci.AEROSOL.day.L3C.AER_PRODUCTS.multi-sensor.multi-platform.ATSR2-ENVISAT-ENS_DAILY.v2-6.r1',
 'esacci.AEROSOL.day.L3C.AOD.MERIS.Envisat.MERIS_ENVISAT.2-2.r1',
 'esacci.AEROSOL.mon.L3.AAI.multi-sensor.multi-platform.MSAAI.1-7.r1',
 'esacci.AEROSOL.mon.L3C.AER_PRODUCTS.AATSR.Envisat.ADV.2-31.r1',
 'esacci.AEROSOL.mon.L3C.AER_PRODUCTS.AATSR.Envisat.ORAC.04-01-.r1',
 'esacci.AEROSOL.mon.L3C.AER_PRODUCTS.AATSR.Envisat.ORAC.04-01_seg-.r1',
 'esacci.AEROSOL.mon.L3C.AER_PRODUCTS.AATSR.Envisat.SU.4-3.r1',
 'esacci.AEROSOL.mon.L3C.AER_PRODUCTS.ATSR-2.ERS-2.ADV.2-31.r1',
 'esacci.AEROSOL.mon.L3C.AER_PRODUCTS.ATSR-2.ERS-2.ORAC.04-01-.r1',
 'esacci.AEROSOL.mon.L3C.AER_PRODUCTS.ATSR-2.ERS-2.ORAC.04-01_seg-.r1',
 'esacci.AEROSOL.mon.L3C.AER_PRODUCTS.multi-sensor.multi-platform.AATSR-ENVISAT-ENS_MONTHLY.v2-6.r1',
 'esacci.AEROSOL.mon.L3C.AER_PRODUCTS.multi-sensor.multi-platform.ATSR2-ENVISAT-ENS_MONTHLY.v2-6.r1',
 'esacci.AEROSOL.mon.L3C.AOD.MERIS.Envisat.MERIS_ENVISAT.2-2.r1',
 'esacci.AEROSOL.satellite-orbit-frequency.L2P.AER_PRODUCTS.AATSR.Envisat.AATSR-ENVISAT-ENS.v2-6.r1',
 'esacci.AEROSOL.satellite-orbit-frequency.L2P.AER_PRODUCTS.AATSR.Envisat.ADV.2-31.r1',
 'esacci.AEROSOL.satellite-orbit-frequency.L2P.AER_PRODUCTS.AATSR.Envisat.ORAC.04-01.r1',
 'esacci.AEROSOL.satellite-orbit-frequency.L2P.AER_PRODUCTS.AATSR.Envisat.SU.4-3.r1',
 'esacci.AEROSOL.satellite-orbit-frequency.L2P.AER_PRODUCTS.ATSR-2.ERS-2.ADV.2-31.r1',
 'esacci.AEROSOL.satellite-orbit-frequency.L2P.AER_PRODUCTS.ATSR-2.ERS-2.ORAC.04-01.r1',
 'esacci.AEROSOL.satellite-orbit-frequency.L2P.AER_PRODUCTS.ATSR-2.ERS-2.SU.4-3.r1',
 'esacci.AEROSOL.satellite-orbit-frequency.L2P.AER_PRODUCTS.multi-sensor.multi-platform.ATSR2-ENVISAT-ENS.v2-6.r1',
 'esacci.AEROSOL.satellite-orbit-frequency.L2P.AOD.MERIS.Envisat.MERIS_ENVISAT.2-2.r1',
 'esacci.AEROSOL.yr.L3C.AER_PRODUCTS.AATSR.Envisat.AATSR-ENVISAT-ENS_ANNUAL.v2-6.r1',
 'esacci.AEROSOL.yr.L3C.AER_PRODUCTS.ATSR-2.Envisat.ATSR2-ENVISAT-ENS_ANNUAL.v2-6.r1',
 'esacci.BIOMASS.yr.L4.AGB.multi-sensor.multi-platform.CHANGE.4-0.r1',
 'esacci.BIOMASS.yr.L4.AGB.multi-sensor.multi-platform.MERGED.2-0.r1',
 'esacci.BIOMASS.yr.L4.AGB.multi-sensor.multi-platform.MERGED.3-0.r1',
 'esacci.BIOMASS.yr.L4.AGB.multi-sensor.multi-platform.MERGED.4-0.r1',
 'esacci.CLOUD.mon.L3C.CLD_PRODUCTS.MODIS.Aqua.MODIS_AQUA.2-0.r1',
 'esacci.CLOUD.mon.L3C.CLD_PRODUCTS.MODIS.Terra.MODIS_TERRA.2-0.r1',
 'esacci.CLOUD.mon.L3C.CLD_PRODUCTS.multi-sensor.multi-platform.ATSR2-AATSR.3-0.r1',
 'esacci.CLOUD.mon.L3C.CLD_PRODUCTS.multi-sensor.multi-platform.AVHRR-AM.3-0.r1',
 'esacci.CLOUD.mon.L3C.CLD_PRODUCTS.multi-sensor.multi-platform.AVHRR-PM.3-0.r1',
 'esacci.CLOUD.mon.L3C.CLD_PRODUCTS.multi-sensor.multi-platform.MERIS-AATSR.2-0.r1',
 'esacci.FIRE.mon.L3S.BA.MODIS.Terra.MODIS_TERRA.v5-1.pixel',
 'esacci.FIRE.mon.L3S.BA.MSI-(Sentinel-2).Sentinel-2A.MSI.2-0.pixel',
 'esacci.FIRE.mon.L3S.BA.MSI-(Sentinel-2).Sentinel-2A.MSI.v1-1.pixel',
 'esacci.FIRE.mon.L3S.BA.multi-sensor.multi-platform.SYN.v1-0.pixel',
 'esacci.FIRE.mon.L3S.BA.multi-sensor.multi-platform.SYN.v1-1.pixel',
 'esacci.FIRE.mon.L4.BA.MODIS.Terra.MODIS_TERRA.v5-1.grid',
 'esacci.FIRE.mon.L4.BA.MSI-(Sentinel-2).Sentinel-2A.MSI.2-0.grid',
 'esacci.FIRE.mon.L4.BA.MSI-(Sentinel-2).Sentinel-2A.MSI.v1-1.grid',
 'esacci.FIRE.mon.L4.BA.multi-sensor.multi-platform.SYN.v1-0.grid',
 'esacci.FIRE.mon.L4.BA.multi-sensor.multi-platform.SYN.v1-1.grid',
 'esacci.GHG.satellite-orbit-frequency.L2.CH4.TANSO-FTS-2.GOSAT-2.SRFP.v2-0-2.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CH4.TANSO-FTS-2.GOSAT-2.SRPR.v2-0-2.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CH4.TROPOMI.Sentinel-5P.WFMD.v1-8.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CO2.OCO.OCO-2.FOCAL.v10-1.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CO2.TANSO-FTS-2.GOSAT-2.SRFP.v2-0-2.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CO2.TANSO-FTS.GOSAT.OCFP.v7-0-1.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CO2.multi-sensor.multi-platform.EMMA.v2-2a.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CO2.multi-sensor.multi-platform.EMMA.v2-2b.r1',
 'esacci.ICESHEETS.mon.IND.GMB.GRACE-instrument.GRACE.VARIOUS.1-3.greenland_gmb_time_series',
 'esacci.ICESHEETS.unspecified.L4.IV.SAR-C-(Sentinel-1).multi-platform.UNSPECIFIED.1-1.greenland_s1_250m_20150610_20170321_Helheim',
 'esacci.ICESHEETS.unspecified.L4.SEC.multi-sensor.multi-platform.UNSPECIFIED.0-1.greenland_sec_saral_altika',
 'esacci.ICESHEETS.unspecified.Unspecified.CFL.multi-sensor.multi-platform.UNSPECIFIED.v3-0.greenland',
 'esacci.ICESHEETS.unspecified.Unspecified.GLL.multi-sensor.multi-platform.UNSPECIFIED.v1-3.greenland',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.AMI-SAR.ERS-1.UNSPECIFIED.1-1.greenland_northern_drainage_basin_winter_1991_1992',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.AMI-SAR.ERS-2.UNSPECIFIED.1-1.greenland_margin_1995_1996',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).Sentinel-2A.UNSPECIFIED.1-0.greenland_s2_50m_20160508_20160518_docker_smith',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).multi-platform.UNSPECIFIED.1-1.greenland_s2_50m_seasonal_20170501_20170829_Helheim',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).multi-platform.UNSPECIFIED.1-1.greenland_s2_50m_seasonal_20170501_20170914_Petermann',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).multi-platform.UNSPECIFIED.1-1.greenland_s2_50m_seasonal_20170603_20170908_Jakobshavn',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).multi-platform.UNSPECIFIED.1-1.greenland_s2_50m_seasonal_20170625_20170810_79Fjord',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).multi-platform.UNSPECIFIED.1-1.greenland_s2_50m_seasonal_20170625_20170810_Zachariae',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).multi-platform.UNSPECIFIED.1-1.greenland_s2_50m_seasonal_20170630_20170814_Hagen',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).multi-platform.UNSPECIFIED.1-1.greenland_s2_50m_seasonal_20170715_20170814_Upernavik',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).multi-platform.UNSPECIFIED.1-1.greenland_s2_50m_seasonal_20170721_20170820_Kangerdlugssuaq',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).multi-platform.UNSPECIFIED.1-1.greenland_s2_50m_timeseries_20170501_20170829_Helheim',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).multi-platform.UNSPECIFIED.1-1.greenland_s2_50m_timeseries_20170501_20170914_Petermann',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).multi-platform.UNSPECIFIED.1-1.greenland_s2_50m_timeseries_20170603_20170908_Jakobshavn',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).multi-platform.UNSPECIFIED.1-1.greenland_s2_50m_timeseries_20170625_20170810_79Fjord',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).multi-platform.UNSPECIFIED.1-1.greenland_s2_50m_timeseries_20170625_20170810_Zachariae',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).multi-platform.UNSPECIFIED.1-1.greenland_s2_50m_timeseries_20170630_20170814_Hagen',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).multi-platform.UNSPECIFIED.1-1.greenland_s2_50m_timeseries_20170715_20170814_Upernavik',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.MSI-(Sentinel-2).multi-platform.UNSPECIFIED.1-1.greenland_s2_50m_timeseries_20170721_20170820_Kangerdlugssuaq',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.SAR-(RadarSat-2).RadarSat-2.UNSPECIFIED.1-0.greenland_map_winter_2013_2014',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.SAR-2000.multi-platform.UNSPECIFIED.1-0.greenland_csk_250m_timeseries_20120604_20141223_Jakobshavn',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.SAR-C-(Sentinel-1).Sentinel-1A.UNSPECIFIED.1-0.greenland_map_winter_2014_2015',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.SAR-C-(Sentinel-1).Sentinel-1A.UNSPECIFIED.1-2.greenland_map_winter_2015_2016',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.SAR-C-(Sentinel-1).multi-platform.UNSPECIFIED.1-0.greenland_map_winter_2016_2017',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.SAR-C-(Sentinel-1).multi-platform.UNSPECIFIED.1-0.greenland_map_winter_2017_2018',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.SAR-C-(Sentinel-1).multi-platform.UNSPECIFIED.1-1.greenland_s1_250m_20141010_20170317_Upernavik',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.SAR-C-(Sentinel-1).multi-platform.UNSPECIFIED.1-1.greenland_s1_250m_20141011_20170317_20150122_20170322_Hagen',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.SAR-C-(Sentinel-1).multi-platform.UNSPECIFIED.1-1.greenland_s1_250m_20141011_20170317_Jakobshavn',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.SAR-C-(Sentinel-1).multi-platform.UNSPECIFIED.1-1.greenland_s1_250m_20150118_20170321_Kangerlussuaq',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.SAR-C-(Sentinel-1).multi-platform.UNSPECIFIED.1-1.greenland_s1_250m_20150122_20170319_Petermann',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.SAR-C-(Sentinel-1).multi-platform.UNSPECIFIED.1-1.greenland_s1_250m_20150122_20170322_79-Fjord',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.SAR-C-(Sentinel-1).multi-platform.UNSPECIFIED.1-1.greenland_s1_250m_20150124_20170322_Storstroemmen',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.SAR-C-(Sentinel-1).multi-platform.UNSPECIFIED.1-1.greenland_s1_250m_20150126_20170322_Zachariae',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.multi-sensor.multi-platform.UNSPECIFIED.1-0.greenland_timeseries_Kangerlussuaq',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.multi-sensor.multi-platform.UNSPECIFIED.1-1.greenland_timeseries_2002_2010_Jakobshavn',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.multi-sensor.multi-platform.UNSPECIFIED.1-1.greenland_timeseries_Hagen',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.multi-sensor.multi-platform.UNSPECIFIED.1-1.greenland_timeseries_Helheim',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.multi-sensor.multi-platform.UNSPECIFIED.1-1.greenland_timeseries_Petermann',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.multi-sensor.multi-platform.UNSPECIFIED.1-1.greenland_timeseries_Storstrommen',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.multi-sensor.multi-platform.UNSPECIFIED.1-1.greenland_timeseries_Zachariae_79Fjord',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.multi-sensor.multi-platform.UNSPECIFIED.1-2.greenland_timeseries_1992_2010_Jakobshavn',
 'esacci.ICESHEETS.unspecified.Unspecified.IV.multi-sensor.multi-platform.UNSPECIFIED.1-2.greenland_timeseries_Upernarvik',
 'esacci.ICESHEETS.yr.Unspecified.GMB.GRACE-instrument.GRACE.UNSPECIFIED.1-2.greenland_gmb_mass_trends',
 'esacci.ICESHEETS.yr.Unspecified.GMB.GRACE-instrument.GRACE.UNSPECIFIED.1-2.greenland_gmb_timeseries',
 'esacci.ICESHEETS.yr.Unspecified.GMB.GRACE-instrument.GRACE.UNSPECIFIED.1-3.greenland_gmb_mass_trends',
 'esacci.ICESHEETS.yr.Unspecified.GMB.GRACE-instrument.GRACE.UNSPECIFIED.1-4.greenland_gmb_mass_trends',
 'esacci.ICESHEETS.yr.Unspecified.GMB.GRACE-instrument.GRACE.UNSPECIFIED.1-4.greenland_gmb_time_series',
 'esacci.ICESHEETS.yr.Unspecified.GMB.GRACE-instrument.GRACE.UNSPECIFIED.1-5.greenland_gmb_mass_trends',
 'esacci.ICESHEETS.yr.Unspecified.GMB.GRACE-instrument.GRACE.UNSPECIFIED.1-5.greenland_gmb_time_series',
 'esacci.ICESHEETS.yr.Unspecified.IV.PALSAR.ALOS.UNSPECIFIED.1-1.greenland_margin_2006_2011',
 'esacci.ICESHEETS.yr.Unspecified.SEC.SIRAL.CryoSat-2.UNSPECIFIED.2-2.greenland_sec_cryosat_2yr',
 'esacci.ICESHEETS.yr.Unspecified.SEC.SIRAL.CryoSat-2.UNSPECIFIED.2-2.greenland_sec_cryosat_5yr',
 'esacci.ICESHEETS.yr.Unspecified.SEC.multi-sensor.multi-platform.UNSPECIFIED.1-2.r1',
 'esacci.LAKES.day.L3S.LK_PRODUCTS.multi-sensor.multi-platform.MERGED.v1-0.r1',
 'esacci.LAKES.day.L3S.LK_PRODUCTS.multi-sensor.multi-platform.MERGED.v1-1.r1',
 'esacci.LAKES.day.L3S.LK_PRODUCTS.multi-sensor.multi-platform.MERGED.v2-0-2.r1',
 'esacci.LC.13-yrs.L4.WB.ASAR.Envisat.Map.4-0.r1',
 'esacci.LC.yr.L4.LCCS.multi-sensor.multi-platform.Map.2-0-7.r1',
 'esacci.LC.yr.L4.PFT.Unspecified.Unspecified.Map.2-0-8.r1',
 'esacci.LST.3-hours.L3S.LST.multi-sensor.multi-platform.IRMGP.1-00.r1',
 'esacci.LST.day.L3C.LST.AATSR.Envisat.ATSR_3.3-00.DAY',
 'esacci.LST.day.L3C.LST.AATSR.Envisat.ATSR_3.3-00.NIGHT',
 'esacci.LST.day.L3C.LST.ATSR-2.ERS-2.ATSR_2.3-00.DAY',
 'esacci.LST.day.L3C.LST.ATSR-2.ERS-2.ATSR_2.3-00.NIGHT',
 'esacci.LST.day.L3C.LST.MODIS.Aqua.MODISA.3-00.DAY',
 'esacci.LST.day.L3C.LST.MODIS.Aqua.MODISA.3-00.NIGHT',
 'esacci.LST.day.L3C.LST.MODIS.Terra.MODIST.3-00.DAY',
 'esacci.LST.day.L3C.LST.MODIS.Terra.MODIST.3-00.NIGHT',
 'esacci.LST.day.L3C.LST.SLSTR.Sentinel-3A.SLSTRA.3-00.DAY',
 'esacci.LST.day.L3C.LST.SLSTR.Sentinel-3A.SLSTRA.3-00.NIGHT',
 'esacci.LST.day.L3C.LST.SLSTR.Sentinel-3B.SLSTRB.3-00.DAY',
 'esacci.LST.day.L3C.LST.SLSTR.Sentinel-3B.SLSTRB.3-00.NIGHT',
 'esacci.LST.day.L3C.LST.multi-sensor.multi-platform.SSMI_SSMIS.v2-33.ASC',
 'esacci.LST.day.L3C.LST.multi-sensor.multi-platform.SSMI_SSMIS.v2-33.DES',
 'esacci.LST.day.L3S.LST.multi-sensor.multi-platform.IRCDR.2-00.DAY',
 'esacci.LST.day.L3S.LST.multi-sensor.multi-platform.IRCDR.2-00.NIGHT',
 'esacci.LST.mon.L3C.LST.AATSR.Envisat.ATSR_3.3-00.DAY',
 'esacci.LST.mon.L3C.LST.AATSR.Envisat.ATSR_3.3-00.NIGHT',
 'esacci.LST.mon.L3C.LST.ATSR-2.ERS-2.ATSR_2.3-00.DAY',
 'esacci.LST.mon.L3C.LST.ATSR-2.ERS-2.ATSR_2.3-00.NIGHT',
 'esacci.LST.mon.L3C.LST.MODIS.Aqua.MODISA.3-00.DAY',
 'esacci.LST.mon.L3C.LST.MODIS.Aqua.MODISA.3-00.NIGHT',
 'esacci.LST.mon.L3C.LST.MODIS.Terra.MODIST.3-00.DAY',
 'esacci.LST.mon.L3C.LST.MODIS.Terra.MODIST.3-00.NIGHT',
 'esacci.LST.mon.L3C.LST.SLSTR.Sentinel-3A.SLSTRA.3-00.DAY',
 'esacci.LST.mon.L3C.LST.SLSTR.Sentinel-3A.SLSTRA.3-00.NIGHT',
 'esacci.LST.mon.L3C.LST.SLSTR.Sentinel-3B.SLSTRB.3-00.DAY',
 'esacci.LST.mon.L3C.LST.SLSTR.Sentinel-3B.SLSTRB.3-00.NIGHT',
 'esacci.LST.mon.L3C.LST.multi-sensor.multi-platform.SSMI_SSMIS.v2-33.ASC',
 'esacci.LST.mon.L3C.LST.multi-sensor.multi-platform.SSMI_SSMIS.v2-33.DES',
 'esacci.LST.mon.L3S.LST.multi-sensor.multi-platform.IRCDR.2-00.DAY',
 'esacci.LST.mon.L3S.LST.multi-sensor.multi-platform.IRCDR.2-00.NIGHT',
 'esacci.LST.mon.L3S.LST.multi-sensor.multi-platform.IRMGP.1-00.00:00UTC',
 'esacci.LST.mon.L3S.LST.multi-sensor.multi-platform.IRMGP.1-00.03:00UTC',
 'esacci.LST.mon.L3S.LST.multi-sensor.multi-platform.IRMGP.1-00.06:00UTC',
 'esacci.LST.mon.L3S.LST.multi-sensor.multi-platform.IRMGP.1-00.09:00UTC',
 'esacci.LST.mon.L3S.LST.multi-sensor.multi-platform.IRMGP.1-00.12:00UTC',
 'esacci.LST.mon.L3S.LST.multi-sensor.multi-platform.IRMGP.1-00.15:00UTC',
 'esacci.LST.mon.L3S.LST.multi-sensor.multi-platform.IRMGP.1-00.18:00UTC',
 'esacci.LST.mon.L3S.LST.multi-sensor.multi-platform.IRMGP.1-00.21:00UTC',
 'esacci.LST.yr.L3C.LST.multi-sensor.multi-platform.SSMI_SSMIS.v2-33.ASC',
 'esacci.LST.yr.L3C.LST.multi-sensor.multi-platform.SSMI_SSMIS.v2-33.DES',
 'esacci.OC.5-days.L3S.CHLOR_A.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.5-days.L3S.CHLOR_A.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.5-days.L3S.IOP.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.5-days.L3S.IOP.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.5-days.L3S.K_490.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.5-days.L3S.K_490.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.5-days.L3S.OC_PRODUCTS.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.5-days.L3S.OC_PRODUCTS.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.5-days.L3S.RRS.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.5-days.L3S.RRS.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.8-days.L3S.CHLOR_A.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.8-days.L3S.CHLOR_A.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.8-days.L3S.IOP.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.8-days.L3S.IOP.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.8-days.L3S.K_490.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.8-days.L3S.K_490.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.8-days.L3S.OC_PRODUCTS.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.8-days.L3S.OC_PRODUCTS.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.8-days.L3S.RRS.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.8-days.L3S.RRS.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.day.L3S.CHLOR_A.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.day.L3S.CHLOR_A.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.day.L3S.IOP.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.day.L3S.IOP.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.day.L3S.K_490.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.day.L3S.K_490.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.day.L3S.OC_PRODUCTS.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.day.L3S.OC_PRODUCTS.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.day.L3S.RRS.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.day.L3S.RRS.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.mon.L3S.CHLOR_A.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.mon.L3S.CHLOR_A.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.mon.L3S.IOP.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.mon.L3S.IOP.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.mon.L3S.K_490.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.mon.L3S.K_490.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.mon.L3S.OC_PRODUCTS.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.mon.L3S.OC_PRODUCTS.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.mon.L3S.RRS.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.mon.L3S.RRS.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.yr.L3S.CHLOR_A.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.yr.L3S.CHLOR_A.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.yr.L3S.IOP.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.yr.L3S.IOP.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.yr.L3S.K_490.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.yr.L3S.K_490.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.yr.L3S.OC_PRODUCTS.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.yr.L3S.OC_PRODUCTS.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OC.yr.L3S.RRS.multi-sensor.multi-platform.MERGED.6-0.geographic',
 'esacci.OC.yr.L3S.RRS.multi-sensor.multi-platform.MERGED.6-0.sinusoidal',
 'esacci.OZONE.day.L3S.TC.multi-sensor.multi-platform.MERGED.fv0100.r1',
 'esacci.OZONE.mon.L3.LP.GOMOS.Envisat.GOMOS_ENVISAT.v0001.r1',
 'esacci.OZONE.mon.L3.LP.MIPAS.Envisat.MIPAS_ENVISAT.v0001.r1',
 'esacci.OZONE.mon.L3.LP.OSIRIS.ODIN.OSIRIS_ODIN.v0001.r1',
 'esacci.OZONE.mon.L3.LP.SCIAMACHY.Envisat.SCIAMACHY_ENVISAT.v0001.r1',
 'esacci.OZONE.mon.L3.LP.SMR.ODIN.MZM.v0001.r1',
 'esacci.OZONE.mon.L3.LP.SMR.ODIN.SMR_ODIN.v0001.r1',
 'esacci.OZONE.mon.L3.NP.multi-sensor.multi-platform.MERGED.fv0002.r1',
 'esacci.PERMAFROST.yr.L4.ALT.multi-sensor.multi-platform.ERA5_MODISLST_BIASCORRECTED.03-0.r1',
 'esacci.PERMAFROST.yr.L4.ALT.multi-sensor.multi-platform.MODISLST_CRYOGRID.03-0.r1',
 'esacci.PERMAFROST.yr.L4.GTD.multi-sensor.multi-platform.ERA5_MODISLST_BIASCORRECTED.03-0.r1',
 'esacci.PERMAFROST.yr.L4.GTD.multi-sensor.multi-platform.MODISLST_CRYOGRID.03-0.r1',
 'esacci.PERMAFROST.yr.L4.PFR.multi-sensor.multi-platform.ERA5_MODISLST_BIASCORRECTED.03-0.r1',
 'esacci.PERMAFROST.yr.L4.PFR.multi-sensor.multi-platform.MODISLST_CRYOGRID.03-0.r1',
 'esacci.SEAICE.day.L3C.SICONC.ESMR-(Nimbus-5).Nimbus-5.NIMBUS5_ESMR-EASE2_NH.1-0.NH',
 'esacci.SEAICE.day.L3C.SICONC.ESMR-(Nimbus-5).Nimbus-5.NIMBUS5_ESMR-EASE2_SH.1-0.SH',
 'esacci.SEAICE.day.L4.SICONC.multi-sensor.multi-platform.AMSR_25kmEASE2.2-1.NH',
 'esacci.SEAICE.day.L4.SICONC.multi-sensor.multi-platform.AMSR_25kmEASE2.2-1.SH',
 'esacci.SEAICE.day.L4.SICONC.multi-sensor.multi-platform.AMSR_50kmEASE2.2-1.NH',
 'esacci.SEAICE.day.L4.SICONC.multi-sensor.multi-platform.AMSR_50kmEASE2.2-1.SH',
 'esacci.SEAICE.day.L4.SICONC.multi-sensor.multi-platform.RE_SSMI_12-5kmEASE2-NH.3-0.NH',
 'esacci.SEAICE.day.L4.SICONC.multi-sensor.multi-platform.RE_SSMI_12-5kmEASE2-SH.3-0.SH',
 'esacci.SEAICE.mon.L3C.SITHICK.RA-2.Envisat.NH25KMEASE2.2-0.r1',
 'esacci.SEAICE.mon.L3C.SITHICK.RA-2.Envisat.SH50KMEASE2.2-0.r1',
 'esacci.SEAICE.mon.L3C.SITHICK.SIRAL.CryoSat-2.NH25KMEASE2.2-0.r1',
 'esacci.SEAICE.mon.L3C.SITHICK.SIRAL.CryoSat-2.SH50KMEASE2.2-0.r1',
 'esacci.SEALEVEL.mon.IND.MSL.multi-sensor.multi-platform.MERGED.2-0.r1',
 'esacci.SEALEVEL.mon.IND.MSLAMPH.multi-sensor.multi-platform.MERGED.2-0.r1',
 'esacci.SEALEVEL.mon.IND.MSLTR.multi-sensor.multi-platform.MERGED.2-0.r1',
 'esacci.SEALEVEL.mon.IND.MSLTR.multi-sensor.multi-platform.MERGED.2-2.ASA',
 'esacci.SEALEVEL.mon.IND.MSLTR.multi-sensor.multi-platform.MERGED.2-2.BENGUELA',
 'esacci.SEALEVEL.mon.IND.MSLTR.multi-sensor.multi-platform.MERGED.2-2.CARIBBEAN',
 'esacci.SEALEVEL.mon.IND.MSLTR.multi-sensor.multi-platform.MERGED.2-2.GULFSTREAM',
 'esacci.SEALEVEL.mon.IND.MSLTR.multi-sensor.multi-platform.MERGED.2-2.HUMBOLDT',
 'esacci.SEALEVEL.mon.IND.MSLTR.multi-sensor.multi-platform.MERGED.2-2.MED_SEA',
 'esacci.SEALEVEL.mon.IND.MSLTR.multi-sensor.multi-platform.MERGED.2-2.NE_ATL',
 'esacci.SEALEVEL.mon.IND.MSLTR.multi-sensor.multi-platform.MERGED.2-2.N_INDIAN',
 'esacci.SEALEVEL.mon.IND.MSLTR.multi-sensor.multi-platform.MERGED.2-2.SE_AFRICA',
 'esacci.SEALEVEL.mon.IND.MSLTR.multi-sensor.multi-platform.MERGED.2-2.SE_ASIA',
 'esacci.SEALEVEL.mon.IND.MSLTR.multi-sensor.multi-platform.MERGED.2-2.S_AUSTRALIA',
 'esacci.SEALEVEL.mon.IND.MSLTR.multi-sensor.multi-platform.MERGED.2-2.WAFRICA',
 'esacci.SEALEVEL.mon.IND.MSLTR.multi-sensor.multi-platform.MERGED.2-2.r1',
 'esacci.SEALEVEL.mon.L4.MSLA.multi-sensor.multi-platform.MERGED.2-0.r1',
 'esacci.SEASTATE.mon.L4.SWH.multi-sensor.multi-platform.MULTI_1M.3-0.r1',
 'esacci.SEASURFACESALINITY.15-days.L4.SSS.multi-sensor.multi-platform.GLOBAL-MERGED_OI_Monthly_CENTRED_15Day_0-25deg.4-41.r1',
 'esacci.SEASURFACESALINITY.15-days.L4.SSS.multi-sensor.multi-platform.MERGED_OI_Monthly_CENTRED_15Day_25km.2-31.r1',
 'esacci.SEASURFACESALINITY.15-days.L4.SSS.multi-sensor.multi-platform.MERGED_OI_Monthly_CENTRED_15Day_25km.3-21.r1',
 'esacci.SEASURFACESALINITY.15-days.L4.SSS.multi-sensor.multi-platform.POLAR-MERGED_OI_7DAY_RUNNINGMEAN_DAILY_25kmEASE2-SH.4-41.r1',
 'esacci.SEASURFACESALINITY.15-days.L4.SSS.multi-sensor.multi-platform.POLAR-MERGED_OI_Monthly_CENTRED_15Day_25kmEASE2-NH.4-41.r1',
 'esacci.SEASURFACESALINITY.15-days.L4.SSS.multi-sensor.multi-platform.POLAR-MERGED_OI_Monthly_CENTRED_15Day_25kmEASE2-SH.4-41.r1',
 'esacci.SEASURFACESALINITY.day.L4.SSS.multi-sensor.multi-platform.GLOBAL-MERGED_OI_7DAY_RUNNINGMEAN_DAILY_0-25deg.4-41.r1',
 'esacci.SEASURFACESALINITY.day.L4.SSS.multi-sensor.multi-platform.MERGED_OI_7DAY_RUNNINGMEAN_DAILY_25km.2-31.r1',
 'esacci.SEASURFACESALINITY.day.L4.SSS.multi-sensor.multi-platform.MERGED_OI_7DAY_RUNNINGMEAN_DAILY_25km.3-21.r1',
 'esacci.SEASURFACESALINITY.day.L4.SSS.multi-sensor.multi-platform.POLAR-MERGED_OI_7DAY_RUNNINGMEAN_DAILY_25kmEASE2-NH.4-41.r1',
 'esacci.SNOW.day.L3C.SCFG.AATSR.Envisat.AATSR_ENVISAT.v1-0.r1',
 'esacci.SNOW.day.L3C.SCFG.ATSR-2.ERS-2.ATSR2_ERS2.v1-0.r1',
 'esacci.SNOW.day.L3C.SCFG.MODIS.Terra.MODIS_TERRA.2-0.r1',
 'esacci.SNOW.day.L3C.SCFG.multi-sensor.multi-platform.AVHRR_MERGED.2-0.r1',
 'esacci.SNOW.day.L3C.SCFV.AATSR.Envisat.AATSR_ENVISAT.v1-0.r1',
 'esacci.SNOW.day.L3C.SCFV.ATSR-2.ERS-2.ATSR2_ERS2.v1-0.r1',
 'esacci.SNOW.day.L3C.SCFV.MODIS.Terra.MODIS_TERRA.2-0.r1',
 'esacci.SNOW.day.L3C.SCFV.multi-sensor.multi-platform.AVHRR_MERGED.2-0.r1',
 'esacci.SNOW.day.L3C.SWE.multi-sensor.multi-platform.MERGED.2-0.r1',
 'esacci.SNOW.day.L3S.SCFG.multi-sensor.multi-platform.MERGED.1-0.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMS.multi-sensor.multi-platform.ACTIVE.05-2.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMS.multi-sensor.multi-platform.ACTIVE.v05-3.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMS.multi-sensor.multi-platform.ACTIVE.v06-1.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMS.multi-sensor.multi-platform.ACTIVE.v06-2.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMS.multi-sensor.multi-platform.ACTIVE.v07-1.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMS.multi-sensor.multi-platform.ACTIVE.v08-1.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMV.multi-sensor.multi-platform.COMBINED.05-2.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMV.multi-sensor.multi-platform.COMBINED.v05-3.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMV.multi-sensor.multi-platform.COMBINED.v06-1.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMV.multi-sensor.multi-platform.COMBINED.v06-2.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMV.multi-sensor.multi-platform.COMBINED.v07-1.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMV.multi-sensor.multi-platform.COMBINED.v08-1.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMV.multi-sensor.multi-platform.COMBINED_ADJUSTED.v07-1.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMV.multi-sensor.multi-platform.PASSIVE.05-2.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMV.multi-sensor.multi-platform.PASSIVE.v05-3.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMV.multi-sensor.multi-platform.PASSIVE.v06-1.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMV.multi-sensor.multi-platform.PASSIVE.v06-2.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMV.multi-sensor.multi-platform.PASSIVE.v07-1.r1',
 'esacci.SOILMOISTURE.day.L3S.SSMV.multi-sensor.multi-platform.PASSIVE.v08-1.r1',
 'esacci.SST.day.L3C.SSTskin.AATSR.Envisat.AATSR.2-1.day',
 'esacci.SST.day.L3C.SSTskin.AATSR.Envisat.AATSR.2-1.night',
 'esacci.SST.day.L3C.SSTskin.ATSR-2.ERS-2.ATSR2.2-1.day',
 'esacci.SST.day.L3C.SSTskin.ATSR-2.ERS-2.ATSR2.2-1.night',
 'esacci.SST.day.L3C.SSTskin.ATSR.ERS-1.ATSR1.2-1.day',
 'esacci.SST.day.L3C.SSTskin.ATSR.ERS-1.ATSR1.2-1.night',
 'esacci.SST.day.L3C.SSTskin.AVHRR-2.NOAA-11.AVHRR11_G.2-1.day',
 'esacci.SST.day.L3C.SSTskin.AVHRR-2.NOAA-11.AVHRR11_G.2-1.night',
 'esacci.SST.day.L3C.SSTskin.AVHRR-2.NOAA-12.AVHRR12_G.2-1.day',
 'esacci.SST.day.L3C.SSTskin.AVHRR-2.NOAA-12.AVHRR12_G.2-1.night',
 'esacci.SST.day.L3C.SSTskin.AVHRR-2.NOAA-14.AVHRR14_G.2-1.day',
 'esacci.SST.day.L3C.SSTskin.AVHRR-2.NOAA-14.AVHRR14_G.2-1.night',
 'esacci.SST.day.L3C.SSTskin.AVHRR-2.NOAA-7.AVHRR07_G.2-1.day',
 'esacci.SST.day.L3C.SSTskin.AVHRR-2.NOAA-7.AVHRR07_G.2-1.night',
 'esacci.SST.day.L3C.SSTskin.AVHRR-2.NOAA-9.AVHRR09_G.2-1.day',
 'esacci.SST.day.L3C.SSTskin.AVHRR-2.NOAA-9.AVHRR09_G.2-1.night',
 'esacci.SST.day.L3C.SSTskin.AVHRR-3.Metop-A.AVHRRMTA_G.2-1.day',
 'esacci.SST.day.L3C.SSTskin.AVHRR-3.Metop-A.AVHRRMTA_G.2-1.night',
 'esacci.SST.day.L3C.SSTskin.AVHRR-3.NOAA-15.AVHRR15_G.2-1.day',
 'esacci.SST.day.L3C.SSTskin.AVHRR-3.NOAA-15.AVHRR15_G.2-1.night',
 'esacci.SST.day.L3C.SSTskin.AVHRR-3.NOAA-16.AVHRR16_G.2-1.day',
 'esacci.SST.day.L3C.SSTskin.AVHRR-3.NOAA-16.AVHRR16_G.2-1.night',
 'esacci.SST.day.L3C.SSTskin.AVHRR-3.NOAA-17.AVHRR17_G.2-1.day',
 'esacci.SST.day.L3C.SSTskin.AVHRR-3.NOAA-17.AVHRR17_G.2-1.night',
 'esacci.SST.day.L3C.SSTskin.AVHRR-3.NOAA-18.AVHRR18_G.2-1.day',
 'esacci.SST.day.L3C.SSTskin.AVHRR-3.NOAA-18.AVHRR18_G.2-1.night',
 'esacci.SST.day.L3C.SSTskin.AVHRR-3.NOAA-19.AVHRR19_G.2-1.day',
 'esacci.SST.day.L3C.SSTskin.AVHRR-3.NOAA-19.AVHRR19_G.2-1.night',
 'esacci.SST.day.L4.SSTdepth.multi-sensor.multi-platform.OSTIA.1-1.r1',
 'esacci.SST.day.L4.SSTdepth.multi-sensor.multi-platform.OSTIA.2-1.anomaly',
 'esacci.SST.day.L4.SSTdepth.multi-sensor.multi-platform.OSTIA.2-1.sst',
 'esacci.SST.day.L4.SSTskin.Unspecified.Unspecified.GMPE.2-0.r1',
 'esacci.SST.satellite-orbit-frequency.L2P.SSTskin.AATSR.Envisat.AATSR.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L2P.SSTskin.ATSR-2.ERS-2.ATSR2.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L2P.SSTskin.ATSR.ERS-1.ATSR1.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L2P.SSTskin.AVHRR-2.NOAA-11.AVHRR11_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L2P.SSTskin.AVHRR-2.NOAA-12.AVHRR12_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L2P.SSTskin.AVHRR-2.NOAA-14.AVHRR14_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L2P.SSTskin.AVHRR-2.NOAA-7.AVHRR07_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L2P.SSTskin.AVHRR-2.NOAA-9.AVHRR09_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L2P.SSTskin.AVHRR-3.Metop-A.AVHRRMTA_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L2P.SSTskin.AVHRR-3.NOAA-15.AVHRR15_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L2P.SSTskin.AVHRR-3.NOAA-16.AVHRR16_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L2P.SSTskin.AVHRR-3.NOAA-17.AVHRR17_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L2P.SSTskin.AVHRR-3.NOAA-18.AVHRR18_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L2P.SSTskin.AVHRR-3.NOAA-19.AVHRR19_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L3U.SSTskin.AATSR.Envisat.AATSR.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L3U.SSTskin.ATSR-2.ERS-2.ATSR2.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L3U.SSTskin.ATSR.ERS-1.ATSR1.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L3U.SSTskin.AVHRR-2.NOAA-11.AVHRR11_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L3U.SSTskin.AVHRR-2.NOAA-12.AVHRR12_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L3U.SSTskin.AVHRR-2.NOAA-14.AVHRR14_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L3U.SSTskin.AVHRR-2.NOAA-7.AVHRR07_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L3U.SSTskin.AVHRR-2.NOAA-9.AVHRR09_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L3U.SSTskin.AVHRR-3.Metop-A.AVHRRMTA_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L3U.SSTskin.AVHRR-3.NOAA-15.AVHRR15_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L3U.SSTskin.AVHRR-3.NOAA-16.AVHRR16_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L3U.SSTskin.AVHRR-3.NOAA-17.AVHRR17_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L3U.SSTskin.AVHRR-3.NOAA-18.AVHRR18_G.2-1.r1',
 'esacci.SST.satellite-orbit-frequency.L3U.SSTskin.AVHRR-3.NOAA-19.AVHRR19_G.2-1.r1',
 'esacci.VEGETATION.5-days.L3S.VP_PRODUCTS.VEGETATION.SPOT-5.MERGED.v1-0.r1',
 'esacci.VEGETATION.5-days.L3S.VP_PRODUCTS.VEGETATION.multi-platform.MERGED.v1-0.r1',
 'esacci.VEGETATION.5-days.L3S.VP_PRODUCTS.Végétation-P.PROBA-V.MERGED.v1-0.r1',
 'esacci.VEGETATION.5-days.L3S.VP_PRODUCTS.multi-sensor.multi-platform.MERGED.v1-0.r1',
 'esacci.WATERVAPOUR.day.L3S.TCWV.multi-sensor.multi-platform.TCWV_land_005deg.3-2.r1',
 'esacci.WATERVAPOUR.day.L3S.TCWV.multi-sensor.multi-platform.TCWV_land_05deg.3-2.r1',
 'esacci.WATERVAPOUR.mon.L3S.TCWV.multi-sensor.multi-platform.TCWV_land_005deg.3-2.r1',
 'esacci.WATERVAPOUR.mon.L3S.TCWV.multi-sensor.multi-platform.TCWV_land_05deg.3-2.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CH4.SCIAMACHY.Envisat.IMAP.v7-2.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CH4.SCIAMACHY.Envisat.WFMD.v4-0.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CH4.TANSO-FTS.GOSAT.EMMA.ch4_v1-2.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CH4.TANSO-FTS.GOSAT.OCFP.v2-1.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CH4.TANSO-FTS.GOSAT.OCPR.v7-0.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CH4.TANSO-FTS.GOSAT.SRFP.v2-3-8.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CH4.TANSO-FTS.GOSAT.SRPR.v2-3-8.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CO2.SCIAMACHY.Envisat.BESD.v02-01-02.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CO2.SCIAMACHY.Envisat.WFMD.v4-0.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CO2.TANSO-FTS.GOSAT.EMMA.v2-2c.r1',
 'esacci.GHG.satellite-orbit-frequency.L2.CO2.TANSO-FTS.GOSAT.SRFP.v2-3-8.r1',
 'esacci.SEAICE.satellite-orbit-frequency.L2P.SITHICK.RA-2.Envisat.NH.2-0.r1',
 'esacci.SEAICE.satellite-orbit-frequency.L2P.SITHICK.RA-2.Envisat.SH.2-0.r1',
 'esacci.SEAICE.satellite-orbit-frequency.L2P.SITHICK.SIRAL.CryoSat-2.NH.2-0.r1',
 'esacci.SEAICE.satellite-orbit-frequency.L2P.SITHICK.SIRAL.CryoSat-2.SH.2-0.r1',
 'esacci.SEALEVEL.satellite-orbit-frequency.L1.UNSPECIFIED.AltiKa.SARAL.UNSPECIFIED.v2-0.r1',
 'esacci.SEALEVEL.satellite-orbit-frequency.L1.UNSPECIFIED.GFO-RA.GFO.UNSPECIFIED.v2-0.r1',
 'esacci.SEALEVEL.satellite-orbit-frequency.L1.UNSPECIFIED.Poseidon-2.Jason-1.UNSPECIFIED.v2-0.r1',
 'esacci.SEALEVEL.satellite-orbit-frequency.L1.UNSPECIFIED.Poseidon-3.Jason-2.UNSPECIFIED.v2-0.r1',
 'esacci.SEALEVEL.satellite-orbit-frequency.L1.UNSPECIFIED.RA-2.Envisat.UNSPECIFIED.v2-0.r1',
 'esacci.SEALEVEL.satellite-orbit-frequency.L1.UNSPECIFIED.RA.ERS-1.UNSPECIFIED.v2-0.r1',
 'esacci.SEALEVEL.satellite-orbit-frequency.L1.UNSPECIFIED.RA.ERS-2.UNSPECIFIED.v2-0.r1',
 'esacci.SEALEVEL.satellite-orbit-frequency.L1.UNSPECIFIED.SIRAL.CryoSat-2.UNSPECIFIED.v2-0.r1',
 'esacci.SEALEVEL.satellite-orbit-frequency.L1.UNSPECIFIED.SSALT.Topex-Poseidon.UNSPECIFIED.v2-0.r1']

This might have been a bit much. In case you are looking for particular data sets, you can search for them. You can list which search options are available:

[5]:
cci_store.get_search_params_schema()
[5]:
<xcube.util.jsonschema.JsonObjectSchema at 0x7fc53f88e590>

The parameters are listed under properties. start_date, end_date and bbox are standard search parameters that are also used by other stores. cci_attrs lists additional parameters that are specific for the cci store (again, listed under properties). Of these, let’s use ecv and frequency.

[6]:
cci_attrs = dict(
    ecv='AEROSOL',
    frequency='month'
)

[descriptor.data_id for descriptor in cci_store.search_data(cci_attrs=cci_attrs)]
---------------------------------------------------------------------------
ConnectionAbortedError                    Traceback (most recent call last)
File ~/miniconda3/envs/ect/lib/python3.11/site-packages/aiohttp/connector.py:980, in TCPConnector._wrap_create_connection(self, req, timeout, client_error, *args, **kwargs)
    979     async with ceil_timeout(timeout.sock_connect):
--> 980         return await self._loop.create_connection(*args, **kwargs)  # type: ignore[return-value]  # noqa
    981 except cert_errors as exc:

File ~/miniconda3/envs/ect/lib/python3.11/asyncio/base_events.py:1112, in BaseEventLoop.create_connection(self, protocol_factory, host, port, ssl, family, proto, flags, sock, local_addr, server_hostname, ssl_handshake_timeout, ssl_shutdown_timeout, happy_eyeballs_delay, interleave)
   1109         raise ValueError(
   1110             f'A Stream Socket was expected, got {sock!r}')
-> 1112 transport, protocol = await self._create_connection_transport(
   1113     sock, protocol_factory, ssl, server_hostname,
   1114     ssl_handshake_timeout=ssl_handshake_timeout,
   1115     ssl_shutdown_timeout=ssl_shutdown_timeout)
   1116 if self._debug:
   1117     # Get the socket from the transport because SSL transport closes
   1118     # the old socket and creates a new SSL socket

File ~/miniconda3/envs/ect/lib/python3.11/asyncio/base_events.py:1145, in BaseEventLoop._create_connection_transport(self, sock, protocol_factory, ssl, server_hostname, server_side, ssl_handshake_timeout, ssl_shutdown_timeout)
   1144 try:
-> 1145     await waiter
   1146 except:

File ~/miniconda3/envs/ect/lib/python3.11/asyncio/futures.py:287, in Future.__await__(self)
    286     self._asyncio_future_blocking = True
--> 287     yield self  # This tells Task to wait for completion.
    288 if not self.done():

File ~/miniconda3/envs/ect/lib/python3.11/asyncio/tasks.py:349, in Task.__wakeup(self, future)
    348 try:
--> 349     future.result()
    350 except BaseException as exc:
    351     # This may also be a cancellation.

File ~/miniconda3/envs/ect/lib/python3.11/asyncio/futures.py:203, in Future.result(self)
    202 if self._exception is not None:
--> 203     raise self._exception.with_traceback(self._exception_tb)
    204 return self._result

ConnectionAbortedError: SSL handshake is taking longer than 60.0 seconds: aborting the connection

The above exception was the direct cause of the following exception:

ClientConnectorError                      Traceback (most recent call last)
Cell In[6], line 6
      1 cci_attrs = dict(
      2     ecv='AEROSOL',
      3     frequency='month'
      4 )
----> 6 [descriptor.data_id for descriptor in cci_store.search_data(cci_attrs=cci_attrs)]

File ~/projects/esa-cci/esa-climate-toolbox/esa_climate_toolbox/ds/dataaccess.py:721, in CciCdcDataStore.search_data(self, data_type, **search_params)
    719 desc_iterators = []
    720 for opener in openers:
--> 721     desc_iterators.extend(opener.search_data(**search_params))
    722 return desc_iterators

File ~/projects/esa-cci/esa-climate-toolbox/esa_climate_toolbox/ds/dataaccess.py:186, in CciCdcDataOpener.search_data(self, **search_params)
    184 def search_data(self, **search_params) -> Iterator[DatasetDescriptor]:
    185     search_result = self._cci_cdc.search(**search_params)
--> 186     data_descriptors = self._describe_data(search_result)
    187     return iter(data_descriptors)

File ~/projects/esa-cci/esa-climate-toolbox/esa_climate_toolbox/ds/dataaccess.py:126, in CciCdcDataOpener._describe_data(self, data_ids)
    125 def _describe_data(self, data_ids: List[str]) -> List[DatasetDescriptor]:
--> 126     ds_metadata_list = self._cci_cdc.get_datasets_metadata(data_ids)
    127     data_descriptors = []
    128     for i, ds_metadata in enumerate(ds_metadata_list):

File ~/projects/esa-cci/esa-climate-toolbox/esa_climate_toolbox/ds/ccicdc.py:560, in CciCdc.get_datasets_metadata(self, dataset_ids)
    558 def get_datasets_metadata(self, dataset_ids: List[str]) -> List[dict]:
    559     assert isinstance(dataset_ids, list)
--> 560     self._run_with_session(
    561         self._ensure_all_info_in_data_sources, dataset_ids
    562     )
    563     metadata = []
    564     for dataset_id in dataset_ids:

File ~/projects/esa-cci/esa-climate-toolbox/esa_climate_toolbox/ds/ccicdc.py:484, in CciCdc._run_with_session(self, async_function, *params)
    480 loop = asyncio.new_event_loop()
    481 coro = _run_with_session_executor(
    482     async_function, *params, headers=self._headers
    483 )
--> 484 result = loop.run_until_complete(coro)
    485 # Short sleep to allow underlying connections to close
    486 loop.run_until_complete(asyncio.sleep(1.))

File ~/miniconda3/envs/ect/lib/python3.11/site-packages/nest_asyncio.py:99, in _patch_loop.<locals>.run_until_complete(self, future)
     96 if not f.done():
     97     raise RuntimeError(
     98         'Event loop stopped before Future completed.')
---> 99 return f.result()

File ~/miniconda3/envs/ect/lib/python3.11/asyncio/futures.py:203, in Future.result(self)
    201 self.__log_traceback = False
    202 if self._exception is not None:
--> 203     raise self._exception.with_traceback(self._exception_tb)
    204 return self._result

File ~/miniconda3/envs/ect/lib/python3.11/asyncio/tasks.py:277, in Task.__step(***failed resolving arguments***)
    273 try:
    274     if exc is None:
    275         # We use the `send` method directly, because coroutines
    276         # don't have `__iter__` and `__next__` methods.
--> 277         result = coro.send(None)
    278     else:
    279         result = coro.throw(exc)

File ~/projects/esa-cci/esa-climate-toolbox/esa_climate_toolbox/ds/ccicdc.py:130, in _run_with_session_executor(async_function, headers, *params)
    124 async def _run_with_session_executor(async_function, *params, headers):
    125     async with aiohttp.ClientSession(
    126             connector=aiohttp.TCPConnector(limit=50),
    127             headers=headers,
    128             trust_env=True
    129     ) as session:
--> 130         return await async_function(session, *params)

File ~/projects/esa-cci/esa-climate-toolbox/esa_climate_toolbox/ds/ccicdc.py:693, in CciCdc._ensure_all_info_in_data_sources(self, session, dataset_names)
    689 for dataset_name in dataset_names:
    690     all_info_tasks.append(
    691         self._ensure_all_info_in_data_source(session, dataset_name)
    692     )
--> 693 await asyncio.gather(*all_info_tasks)

File ~/miniconda3/envs/ect/lib/python3.11/asyncio/tasks.py:349, in Task.__wakeup(self, future)
    347 def __wakeup(self, future):
    348     try:
--> 349         future.result()
    350     except BaseException as exc:
    351         # This may also be a cancellation.
    352         self.__step(exc)

File ~/miniconda3/envs/ect/lib/python3.11/asyncio/tasks.py:279, in Task.__step(***failed resolving arguments***)
    277         result = coro.send(None)
    278     else:
--> 279         result = coro.throw(exc)
    280 except StopIteration as exc:
    281     if self._must_cancel:
    282         # Task is cancelled right before coro stops.

File ~/projects/esa-cci/esa-climate-toolbox/esa_climate_toolbox/ds/ccicdc.py:702, in CciCdc._ensure_all_info_in_data_source(self, session, dataset_name)
    700     return
    701 data_fid = await self._get_dataset_id(session, dataset_name)
--> 702 await self._set_variable_infos(
    703     self._opensearch_url, data_fid, dataset_name, session, data_source
    704 )

File ~/projects/esa-cci/esa-climate-toolbox/esa_climate_toolbox/ds/ccicdc.py:1275, in CciCdc._set_variable_infos(self, opensearch_url, dataset_id, dataset_name, session, data_source)
   1265 feature, time_dimension_size = \
   1266     await self._fetch_feature_and_num_nc_files_at(
   1267         session,
   (...)
   1271         1
   1272     )
   1273 if feature is not None:
   1274     variable_infos, attributes = \
-> 1275         await self._get_variable_infos_from_feature(feature, session)
   1276     for variable_info in variable_infos:
   1277         for index, dimension in enumerate(
   1278                 variable_infos[variable_info]['dimensions']
   1279         ):

File ~/projects/esa-cci/esa-climate-toolbox/esa_climate_toolbox/ds/ccicdc.py:1411, in CciCdc._get_variable_infos_from_feature(self, feature, session)
   1409     _LOG.warning(f'Dataset is not accessible via Opendap')
   1410     return {}, {}
-> 1411 dataset = await self._get_opendap_dataset(session, opendap_url)
   1412 if not dataset:
   1413     _LOG.warning(f'Could not extract information about variables '
   1414                  f'and attributes from {opendap_url}')

File ~/projects/esa-cci/esa-climate-toolbox/esa_climate_toolbox/ds/ccicdc.py:1493, in CciCdc._get_opendap_dataset(self, session, url)
   1492 async def _get_opendap_dataset(self, session, url: str):
-> 1493     res_dict = await self._get_result_dict(session, url)
   1494     if 'dds' not in res_dict or 'das' not in res_dict:
   1495         _LOG.warning(
   1496             'Could not open opendap url. No dds or das file provided.'
   1497         )

File ~/projects/esa-cci/esa-climate-toolbox/esa_climate_toolbox/ds/ccicdc.py:1481, in CciCdc._get_result_dict(self, session, url)
   1475 tasks.append(self._get_content_from_opendap_url(
   1476     url, 'dds', res_dict, session)
   1477 )
   1478 tasks.append(self._get_content_from_opendap_url(
   1479     url, 'das', res_dict, session)
   1480 )
-> 1481 await asyncio.gather(*tasks)
   1482 if 'das' in res_dict:
   1483     res_dict['das'] = res_dict['das'].replace(
   1484         '        Float32 valid_min -Infinity;\n', ''
   1485     )

File ~/miniconda3/envs/ect/lib/python3.11/asyncio/tasks.py:349, in Task.__wakeup(self, future)
    347 def __wakeup(self, future):
    348     try:
--> 349         future.result()
    350     except BaseException as exc:
    351         # This may also be a cancellation.
    352         self.__step(exc)

File ~/miniconda3/envs/ect/lib/python3.11/asyncio/tasks.py:279, in Task.__step(***failed resolving arguments***)
    277         result = coro.send(None)
    278     else:
--> 279         result = coro.throw(exc)
    280 except StopIteration as exc:
    281     if self._must_cancel:
    282         # Task is cancelled right before coro stops.

File ~/projects/esa-cci/esa-climate-toolbox/esa_climate_toolbox/ds/ccicdc.py:1544, in CciCdc._get_content_from_opendap_url(self, url, part, res_dict, session)
   1542 scheme, netloc, path, query, fragment = urlsplit(url)
   1543 url = urlunsplit((scheme, netloc, path + f'.{part}', query, fragment))
-> 1544 resp = await self.get_response(session, url)
   1545 if resp:
   1546     res_dict[part] = await resp.read()

File ~/projects/esa-cci/esa-climate-toolbox/esa_climate_toolbox/ds/ccicdc.py:1585, in CciCdc.get_response(self, session, url)
   1583 retry_backoff_base = self._retry_backoff_base
   1584 for i in range(num_retries):
-> 1585     resp = await session.request(method='GET', url=url)
   1586     if resp.status == 200:
   1587         return resp

File ~/miniconda3/envs/ect/lib/python3.11/site-packages/aiohttp/client.py:562, in ClientSession._request(self, method, str_or_url, params, data, json, cookies, headers, skip_auto_headers, auth, allow_redirects, max_redirects, compress, chunked, expect100, raise_for_status, read_until_eof, proxy, proxy_auth, timeout, verify_ssl, fingerprint, ssl_context, ssl, proxy_headers, trace_request_ctx, read_bufsize)
    560     async with ceil_timeout(real_timeout.connect):
    561         assert self._connector is not None
--> 562         conn = await self._connector.connect(
    563             req, traces=traces, timeout=real_timeout
    564         )
    565 except asyncio.TimeoutError as exc:
    566     raise ServerTimeoutError(
    567         "Connection timeout " "to host {}".format(url)
    568     ) from exc

File ~/miniconda3/envs/ect/lib/python3.11/site-packages/aiohttp/connector.py:540, in BaseConnector.connect(self, req, traces, timeout)
    537         await trace.send_connection_create_start()
    539 try:
--> 540     proto = await self._create_connection(req, traces, timeout)
    541     if self._closed:
    542         proto.close()

File ~/miniconda3/envs/ect/lib/python3.11/site-packages/aiohttp/connector.py:901, in TCPConnector._create_connection(self, req, traces, timeout)
    899     _, proto = await self._create_proxy_connection(req, traces, timeout)
    900 else:
--> 901     _, proto = await self._create_direct_connection(req, traces, timeout)
    903 return proto

File ~/miniconda3/envs/ect/lib/python3.11/site-packages/aiohttp/connector.py:1209, in TCPConnector._create_direct_connection(self, req, traces, timeout, client_error)
   1207 else:
   1208     assert last_exc is not None
-> 1209     raise last_exc

File ~/miniconda3/envs/ect/lib/python3.11/site-packages/aiohttp/connector.py:1178, in TCPConnector._create_direct_connection(self, req, traces, timeout, client_error)
   1175 port = hinfo["port"]
   1177 try:
-> 1178     transp, proto = await self._wrap_create_connection(
   1179         self._factory,
   1180         host,
   1181         port,
   1182         timeout=timeout,
   1183         ssl=sslcontext,
   1184         family=hinfo["family"],
   1185         proto=hinfo["proto"],
   1186         flags=hinfo["flags"],
   1187         server_hostname=hinfo["hostname"] if sslcontext else None,
   1188         local_addr=self._local_addr,
   1189         req=req,
   1190         client_error=client_error,
   1191     )
   1192 except ClientConnectorError as exc:
   1193     last_exc = exc

File ~/miniconda3/envs/ect/lib/python3.11/site-packages/aiohttp/connector.py:988, in TCPConnector._wrap_create_connection(self, req, timeout, client_error, *args, **kwargs)
    986 if exc.errno is None and isinstance(exc, asyncio.TimeoutError):
    987     raise
--> 988 raise client_error(req.connection_key, exc) from exc

ClientConnectorError: Cannot connect to host data.cci.ceda.ac.uk:443 ssl:default [None]

‘esacci.AEROSOL.mon.L3.AAI.multi-sensor.multi-platform.MSAAI.1-7.r1’ sounds interesting. Let’s get more information about that one.

[ ]:
cci_store.describe_data('esacci.AEROSOL.mon.L3.AAI.multi-sensor.multi-platform.MSAAI.1-7.r1')

Finally, we can have a look at which openers are provided by this store.

[ ]:
cci_store.get_data_opener_ids()

Here is how you can view which parameters can be used when you want to open a particular dataset (both parameters are optional).

[ ]:
cci_store.get_open_data_params_schema(data_id='esacci.AEROSOL.mon.L3.AAI.multi-sensor.multi-platform.MSAAI.1-7.r1', opener_id='dataset:zarr:esa-cdc')

Great! Now we are all set to open some cubes.