Use Case - Collection and Granule Search (FedEO)#

Overview#

This chapter provides a comprehensive and detailed process about how to implement a CEOS STAC client, which includes how to find collections and granules of interest.

In the examples, we use the pystac [RD17] and pystac_client [RD18] libraries to access the interface. Examples using curl on the command-line are provided as well.

URL_LANDING_PAGE =  'https://fedeo.ceos.org/' 

Access landing page#

The landing page provides access to collections (rel=”data”), child catalogs (rel=”child”) and the STAC item search endpoint (rel=”search”). Get the catalogue landing page with links to other resources and available collections.

curl -X GET -G https://fedeo.ceos.org/
from pystac_client import Client 

api = Client.open(URL_LANDING_PAGE) 
# show as a dictionary
api.to_dict()
{'type': 'Catalog',
 'id': 'fedeo',
 'stac_version': '1.1.0',
 'description': 'FEDEO Catalogue provides interoperable access, following ISO/OGC interface guidelines, to Earth Observation metadata',
 'links': [{'rel': 'self',
   'href': 'https://fedeo.ceos.org/',
   'type': 'application/json'},
  {'rel': 'search',
   'href': 'https://fedeo.ceos.org/api?httpAccept=application/opensearchdescription%2Bxml',
   'type': 'application/opensearchdescription+xml',
   'title': 'OpenSearch Description Document'},
  {'rel': 'service-desc',
   'href': 'https://fedeo.ceos.org/api?httpAccept=application/vnd.oai.openapi%2Bjson;version=3.0',
   'type': 'application/vnd.oai.openapi+json;version=3.0',
   'title': 'OpenAPI definition in JSON format'},
  {'rel': 'data',
   'href': 'https://fedeo.ceos.org/collections',
   'type': 'application/json',
   'title': 'Metadata about the feature collections'},
  {'rel': 'data',
   'href': 'https://fedeo.ceos.org/collections',
   'type': 'application/ld+json',
   'title': 'Metadata about the feature collections'},
  {'rel': 'data',
   'href': 'https://fedeo.ceos.org/collections',
   'type': 'application/rdf+xml',
   'title': 'Metadata about the feature collections'},
  {'rel': 'data',
   'href': 'https://fedeo.ceos.org/collections',
   'type': 'text/turtle',
   'title': 'Metadata about the feature collections'},
  {'rel': 'conformance',
   'href': 'https://fedeo.ceos.org/conformance',
   'type': 'application/json',
   'title': 'OGC conformance classes implemented by this API'},
  {'rel': 'service-doc',
   'href': 'https://fedeo.ceos.org/doc/index.html',
   'type': 'text/html',
   'title': 'API Documentation (Jupyter)'},
  {'rel': 'service-doc',
   'href': 'http://petstore.swagger.io/?url=https://fedeo.ceos.org/api',
   'type': 'text/html',
   'title': 'API documentation in Swagger.io format'},
  {'rel': 'search',
   'href': 'https://fedeo.ceos.org/search',
   'type': 'application/geo+json',
   'title': 'STAC Search',
   'method': 'GET'},
  {'rel': 'search',
   'href': 'https://fedeo.ceos.org/search',
   'type': 'application/geo+json',
   'title': 'STAC Search',
   'method': 'POST'},
  {'rel': 'child',
   'href': 'https://fedeo.ceos.org/series',
   'type': 'application/json',
   'title': 'Collections'},
  {'rel': 'child',
   'href': 'https://fedeo.ceos.org/services',
   'type': 'application/json',
   'title': 'Services'},
  {'rel': 'root',
   'href': 'https://fedeo.ceos.org/',
   'type': 'application/json',
   'title': 'FEDEO Catalogue'}],
 'extent': {'spatial': {'bbox': [[-180, -90, 180, 90]]},
  'temporal': {'interval': [[None, None]]}},
 'license': 'other',
 'conformsTo': ['http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/core',
  'http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/oas30',
  'http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/geojson',
  'http://www.opengis.net/spec/ogcapi_common-2/1.0/conf/collections',
  'http://www.opengis.net/spec/ogcapi-common-2/1.0/conf/simple-query',
  'http://www.opengis.net/spec/ogcapi-records-1/1.0/req/cql-filter',
  'http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/features-filter',
  'http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/filter',
  'https://api.stacspec.org/v1.0.0/core',
  'https://api.stacspec.org/v1.0.0/ogcapi-features',
  'https://api.stacspec.org/v1.0.0/collections',
  'https://api.stacspec.org/v1.0.0-rc.1/collection-search',
  'https://api.stacspec.org/v1.0.0-rc.1/collection-search#filter',
  'https://api.stacspec.org/v1.0.0-rc.1/collection-search#free-text',
  'https://api.stacspec.org/v1.0.0-rc.1/collection-search#sort',
  'https://api.stacspec.org/v1.0.0/item-search',
  'https://api.stacspec.org/v1.0.0-rc.3/item-search#filter',
  'http://www.opengis.net/spec/cql2/1.0/conf/cql2-text',
  'http://www.opengis.net/spec/cql2/1.0/conf/basic-cql2',
  'http://www.opengis.net/spec/cql2/1.0/conf/cql2-json',
  'http://www.opengis.net/spec/cql2/1.0/conf/advanced-comparison-operators',
  'https://api.stacspec.org/v1.0.0/item-search#sort',
  'https://api.stacspec.org/v1.0.0/ogcapi-features#sort',
  'https://api.stacspec.org/v1.0.0/ogcapi-features#sort',
  'https://api.stacspec.org/v1.0.0/item-search#fields',
  'https://api.stacspec.org/v1.0.0/ogcapi-features#fields',
  'https://api.stacspec.org/v1.0.0-rc.1/collection-search#fields',
  'https://api.stacspec.org/v1.0.0/ogcapi-features/extensions/transaction'],
 'title': 'FEDEO Catalogue'}
# Get catalog title and description
print("Title\t\t:", api.title)
print("Description\t:", api.description)
print("Search link\t:", api.get_search_link())

# List child catalogs
print("Child catalogs:")
# for child in api.get_children():
#    print("\t", child.id)
    
children = [c for c in api.get_children()]
children
Title		: FEDEO Catalogue
Description	: FEDEO Catalogue provides interoperable access, following ISO/OGC interface guidelines, to Earth Observation metadata
Search link	: <Link rel=search target=https://fedeo.ceos.org/search>
Child catalogs:
[<CollectionClient id=series>, <CollectionClient id=services>]
# Show title and id for each of the children.
for count, child in enumerate(children):
    print(f'\t{count} - {child.title}, id="{child.id}"')
	0 - Collections, id="series"
	1 - Services, id="services"

The collections are organised as a tree structure which can be traversed until arriving to a collection with items (granules). Get the details of one of the children of the root catalog as an example.

child = children[1]
child.to_dict()
{'type': 'Collection',
 'id': 'services',
 'stac_version': '1.1.0',
 'description': 'Services',
 'links': [{'rel': 'root',
   'href': 'https://fedeo.ceos.org/',
   'type': 'application/json',
   'title': 'FEDEO Catalogue'},
  {'rel': 'child',
   'href': 'https://fedeo.ceos.org/services/eo:platform',
   'type': 'application/json',
   'title': 'Services by platform'},
  {'rel': 'child',
   'href': 'https://fedeo.ceos.org/services/eo:organisationName',
   'type': 'application/json',
   'title': 'Services by organisation'},
  {'rel': 'child',
   'href': 'https://fedeo.ceos.org/services/concepts/earthtopics',
   'type': 'application/json',
   'title': 'Earth Topics'},
  {'rel': 'child',
   'href': 'https://fedeo.ceos.org/services/concepts/platforms',
   'type': 'application/json',
   'title': 'ESA Platforms'},
  {'rel': 'child',
   'href': 'https://fedeo.ceos.org/services/concepts/sciencekeyword',
   'type': 'application/json',
   'title': 'GCMD Science Keywords'},
  {'rel': 'self',
   'href': 'https://fedeo.ceos.org/services',
   'type': 'application/json'},
  {'rel': 'parent',
   'href': 'https://fedeo.ceos.org/',
   'type': 'application/json',
   'title': 'FEDEO Catalogue'}],
 'title': 'Services',
 'extent': {'spatial': {'bbox': [[-180, -90, 180, 90]]},
  'temporal': {'interval': [[None, None]]}},
 'license': 'other',
 'providers': [{'name': 'FEDEO Clearinghouse',
   'roles': ['host'],
   'url': 'https://fedeo.ceos.org/'}]}
# May have again children, get the list
children = [c for c in child.get_children()]
children
[<CollectionClient id=services_eo:platform>,
 <CollectionClient id=services_eo:organisationName>,
 <CollectionClient id=5c476560-e0a3-554a-9187-187a90da1309>,
 <CollectionClient id=738c519f-48db-5344-bebc-030c16781c22>,
 <CollectionClient id=1eb0ea0a-312c-4d74-8d42-6f1ad758f999>]
# Display shortened version of the catalog/collection tree structure.
# print_catalog_as_tree( api, max_level=3, max_children=3 )

Collection properties#

Collection identification#

results = api.collection_search(    
    q = 'TropForest'
)

print(f"{results.matched()} collections found.")

data = results.collection_list_as_dict()
data = data['collections'][0]
1 collections found.
curl -X GET -G https://fedeo.ceos.org/collections \
	--data-urlencode "q=TropForest"
jstr = json.dumps(data, indent=3)
md("```json\n" + jstr + "\n```\n")
{
   "extent": {
      "spatial": {
         "bbox": [
            [
               -100,
               -50,
               160,
               40
            ]
         ]
      },
      "temporal": {
         "interval": [
            [
               "2009-01-27T00:00:00.000Z",
               "2011-08-09T23:59:59.999Z"
            ]
         ]
      }
   },
   "stac_version": "1.0.0",
   "sci:doi": "10.5270/esa-qoe849q",
   "keywords": [
      "Agriculture",
      "EARTH SCIENCE > AGRICULTURE",
      "Forestry",
      "EARTH SCIENCE > BIOSPHERE > ECOSYSTEMS > TERRESTRIAL ECOSYSTEMS > FORESTS",
      "Land Surface",
      "EARTH SCIENCE > LAND SURFACE",
      "Vegetation",
      "EARTH SCIENCE > BIOSPHERE > VEGETATION",
      "Sun-synchronous",
      "NIR (0.75 - 1.30) \u00b5m",
      "VIS (0.40 - 0.75) \u00b5m",
      "High Resolution - HR (5 - 20) m",
      "Very High Resolution - VHR (0 - 5) m",
      "AL1_AV2_2F",
      "DE1_SL6_2F",
      "KO2_MSC_2F",
      "DE1 663 km; KO2 685 km; AL1 692 km",
      "DE1 625 km; KO2 15 km; AL1 70 km",
      "Imaging Spectrometers/Radiometers",
      "Cameras",
      "KOMPSAT-2",
      "ALOS-1",
      "GEOSAT-1",
      "AVNIR-2",
      "MSC",
      "SLIM6"
   ],
   "created": "2019-05-23T00:00:00.000Z",
   "description": "The objective of the ESA TropForest project was to create a harmonised geo-database of ready-to-use satellite imagery to support 2010 global forest assessment performed by the Joint Research Centre (JRC) of the European Commission and by the Food and Agriculture Organization (FAO). Assessments for year 2010 were essential for building realistic deforestation benchmark rates at global to regional levels. To reach this objective, the project aimed to create a harmonised ortho-rectified/pre-processed imagery geo-database based on satellite data acquisitions (ALOS AVNIR-2, GEOSAT-1 SLIM6, KOMPSAT-2 MSC) performed during year 2009 and 2010, for the Tropical Latin America (excluding Mexico) and for the Tropical South and Southeast Asia (excluding China), resulting in 1971 sites located at 1 deg x 1 deg geographical lat/long intersections. The project finally delivered 1866 sites (94.7% of target) due to cloud coverages too high for missing sites",
   "sci:citation": "European Space Agency, 2016, ESA TropForest Archive. Version 1.0.",
   "collection": "EOP:ESA:EARTH-ONLINE",
   "type": "Collection",
   "title": "TropForest- ALOS, GEOSAT-1 & KOMPSAT-2 optical coverages over tropical forests",
   "version": "12.0",
   "themes": [
      {
         "concepts": [
            {
               "id": "swathWidth",
               "title": "DE1 625 km; KO2 15 km; AL1 70 km",
               "url": "https://earth.esa.int/eop-ext/swathWidth"
            },
            {
               "id": "orbitHeight",
               "title": "DE1 663 km; KO2 685 km; AL1 692 km",
               "url": "https://earth.esa.int/eop-ext/orbitHeight"
            }
         ],
         "scheme": "https://earth.esa.int/eop-ext/"
      },
      {
         "concepts": [
            {
               "id": "a361a690-aa56-5851-824d-3d34c8fe00ea",
               "title": "AVNIR-2",
               "url": "https://earth.esa.int/concept/a361a690-aa56-5851-824d-3d34c8fe00ea"
            },
            {
               "id": "f6ad42b7-1dba-57a0-a8cc-e7bc92b2a6b7",
               "title": "MSC",
               "url": "https://earth.esa.int/concept/f6ad42b7-1dba-57a0-a8cc-e7bc92b2a6b7"
            },
            {
               "id": "66ab957a-0434-5953-8b33-be95150a9ecb",
               "title": "Imaging Spectrometers/Radiometers",
               "url": "https://earth.esa.int/concept/66ab957a-0434-5953-8b33-be95150a9ecb"
            },
            {
               "id": "5cc6eaab-0ddc-572f-a1b7-afa52ea5333d",
               "title": "SLIM6",
               "url": "https://earth.esa.int/concept/5cc6eaab-0ddc-572f-a1b7-afa52ea5333d"
            },
            {
               "id": "764a170a-e361-5ea8-838e-e56994de69b7",
               "title": "Cameras",
               "url": "https://earth.esa.int/concept/764a170a-e361-5ea8-838e-e56994de69b7"
            }
         ],
         "scheme": "https://earth.esa.int/concepts/concept_scheme/instruments"
      },
      {
         "concepts": [
            {
               "id": "wavelengthInformation",
               "title": "NIR (0.75 - 1.30) \u00b5m",
               "url": "http://www.opengis.net/eop/2.1/wavelengthInformation"
            },
            {
               "id": "orbitType",
               "title": "Sun-synchronous",
               "url": "http://www.opengis.net/eop/2.1/orbitType"
            },
            {
               "id": "resolution",
               "title": "High Resolution - HR (5 - 20) m",
               "url": "http://www.opengis.net/eop/2.1/resolution"
            },
            {
               "id": "productType",
               "title": "AL1_AV2_2F",
               "url": "http://www.opengis.net/eop/2.1/productType"
            }
         ],
         "scheme": "http://www.opengis.net/eop/2.1/"
      },
      {
         "concepts": [
            {
               "id": "cd9afdcb-b866-5f94-84d1-d1c73347d64c",
               "title": "KOMPSAT-2",
               "url": "https://earth.esa.int/concept/cd9afdcb-b866-5f94-84d1-d1c73347d64c"
            },
            {
               "id": "fa4e3c89-5966-5617-b2cc-f6aad122e685",
               "title": "ALOS-1",
               "url": "https://earth.esa.int/concept/fa4e3c89-5966-5617-b2cc-f6aad122e685"
            },
            {
               "id": "a5ddc423-fdec-5f65-acf4-51087b065cea",
               "title": "GEOSAT-1",
               "url": "https://earth.esa.int/concept/a5ddc423-fdec-5f65-acf4-51087b065cea"
            }
         ],
         "scheme": "https://earth.esa.int/concepts/concept_scheme/platforms"
      },
      {
         "concepts": [
            {
               "id": "80694ace-7a2a-50b0-9c22-4a4b45c985a1",
               "title": "Forestry",
               "url": "https://earth.esa.int/concept/80694ace-7a2a-50b0-9c22-4a4b45c985a1"
            },
            {
               "id": "e4d01e03-0ef5-5b4c-b40f-2b5f49667f53",
               "title": "Land Surface",
               "url": "https://earth.esa.int/concept/e4d01e03-0ef5-5b4c-b40f-2b5f49667f53"
            },
            {
               "id": "3bf4cc22-5dad-5652-8575-8347564c4a0c",
               "title": "Vegetation",
               "url": "https://earth.esa.int/concept/3bf4cc22-5dad-5652-8575-8347564c4a0c"
            },
            {
               "id": "bbe13d71-bea9-55c2-9b65-a24043c35937",
               "title": "Agriculture",
               "url": "https://earth.esa.int/concept/bbe13d71-bea9-55c2-9b65-a24043c35937"
            }
         ],
         "scheme": "https://earth.esa.int/concepts/concept_scheme/earth-topics"
      },
      {
         "concepts": [
            {
               "id": "PUBLIC",
               "url": "http://publications.europa.eu/resource/authority/access-right/PUBLIC"
            }
         ],
         "scheme": "http://publications.europa.eu/resource/authority/access-right"
      },
      {
         "concepts": [
            {
               "id": "a956d045-3b12-441c-8a18-fac7d33b2b4e",
               "title": "EARTH SCIENCE > AGRICULTURE",
               "url": "https://gcmd.earthdata.nasa.gov/kms/concept/a956d045-3b12-441c-8a18-fac7d33b2b4e"
            },
            {
               "id": "c7b5c02c-724d-4a19-b824-98180f3900c9",
               "title": "EARTH SCIENCE > BIOSPHERE > VEGETATION",
               "url": "https://gcmd.earthdata.nasa.gov/kms/concept/c7b5c02c-724d-4a19-b824-98180f3900c9"
            },
            {
               "id": "46e4aaa4-349c-4049-a910-035391360010",
               "title": "EARTH SCIENCE > BIOSPHERE > ECOSYSTEMS > TERRESTRIAL ECOSYSTEMS > FORESTS",
               "url": "https://gcmd.earthdata.nasa.gov/kms/concept/46e4aaa4-349c-4049-a910-035391360010"
            },
            {
               "id": "6a426480-c58f-4b6b-8e35-0975b7f6edb5",
               "title": "EARTH SCIENCE > LAND SURFACE",
               "url": "https://gcmd.earthdata.nasa.gov/kms/concept/6a426480-c58f-4b6b-8e35-0975b7f6edb5"
            }
         ],
         "scheme": "https://gcmd.earthdata.nasa.gov/kms/concepts/concept_scheme/sciencekeywords"
      },
      {
         "concepts": [
            {
               "id": "ESA_open_and_free",
               "url": "https://maap.eo.esa.int/metadata-codelist/access-right/ESA_open_and_free"
            }
         ],
         "scheme": "https://maap.eo.esa.int/metadata-codelist/access-right"
      }
   ],
   "license": "various",
   "assets": {
      "offering_2": {
         "roles": [
            "http://www.opengis.net/spec/owc-geojson/1.0/req/wmts#GetTile"
         ],
         "href": "https://vs.eo.esa.int/wmts08/1.0.0/TROPFOREST/default/{beginningDateTime}--{endingDateTime}/WGS84/{TileMatrix}/{TileRow}/{TileCol}.jpgpng",
         "title": "GetTile",
         "type": "image/jpgpng"
      },
      "offering_1": {
         "roles": [
            "http://www.opengis.net/spec/owc-geojson/1.0/req/wmts#GetCapabilities"
         ],
         "href": "https://vs.eo.esa.int/wmts08/1.0.0/WMTSCapabilities.xml",
         "title": "GetCapabilities",
         "type": "application/xml"
      },
      "enclosure": {
         "roles": [
            "data"
         ],
         "href": "https://tpm-ds.eo.esa.int/oads/meta/Tropforest/index",
         "type": "text/html",
         "title": "OADS repository - OADS repository"
      },
      "metadata_iso_19139": {
         "roles": [
            "metadata"
         ],
         "href": "https://catalog.maap.eo.esa.int/catalogue/collections/TropForest?httpAccept=application/vnd.iso.19139%2Bxml",
         "title": "ISO 19139 metadata",
         "type": "application/vnd.iso.19139+xml"
      },
      "metadata_iso_19139_2": {
         "roles": [
            "metadata"
         ],
         "href": "https://catalog.maap.eo.esa.int/catalogue/collections/TropForest?httpAccept=application/vnd.iso.19139-2%2Bxml",
         "title": "ISO 19139-2 metadata",
         "type": "application/vnd.iso.19139-2+xml"
      },
      "offering_4": {
         "roles": [
            "http://www.opengis.net/spec/owc-geojson/1.0/req/wms#GetMap"
         ],
         "href": "https://vs.eo.esa.int/wms08/ows?service=WMS&version=1.1.1&request=GetMap&layers=TROPFORSET____heatmap&format=image/png&TRANSPARENT=true&TIME={beginningDateTime}/{endingDateTime}&width={Width}&height={Height}&SRS=EPSG:4326&styles={Styles}&bbox={BoundingBox}&dim_range={DimRange}",
         "title": "GetMap",
         "type": "image/png"
      },
      "offering_3": {
         "roles": [
            "http://www.opengis.net/spec/owc-geojson/1.0/req/wms#GetCapabilities"
         ],
         "href": "https://vs.eo.esa.int/wms08/ows?service=WMS&version=1.1.1&request=GetCapabilities",
         "title": "GetCapabilities",
         "type": "application/xml"
      },
      "metadata_dif_10": {
         "roles": [
            "metadata"
         ],
         "href": "https://catalog.maap.eo.esa.int/catalogue/collections/TropForest?httpAccept=application/dif10%2Bxml",
         "title": "DIF-10 metadata",
         "type": "application/dif10+xml"
      },
      "metadata_ogc_17_084r1": {
         "roles": [
            "metadata"
         ],
         "href": "https://catalog.maap.eo.esa.int/catalogue/collections/TropForest?mode=owc",
         "title": "OGC 17-084r1 metadata",
         "type": "application/geo+json;profile=\"http://www.opengis.net/spec/eoc-geojson/1.0\""
      },
      "metadata_iso_191115_3": {
         "roles": [
            "metadata"
         ],
         "href": "https://catalog.maap.eo.esa.int/catalogue/collections/TropForest?httpAccept=application/vnd.iso.19115-3%2Bxml",
         "title": "ISO 19115-3 metadata",
         "type": "application/vnd.iso.19115-3+xml"
      }
   },
   "links": [
      {
         "rel": "self",
         "href": "https://fedeo.ceos.org/collections/TropForest",
         "type": "application/json"
      },
      {
         "rel": "root",
         "href": "https://fedeo.ceos.org/",
         "type": "application/json",
         "title": "FEDEO Catalogue"
      },
      {
         "rel": "parent",
         "href": "https://fedeo.ceos.org/",
         "title": "collections",
         "type": "application/json"
      },
      {
         "rel": "items",
         "href": "https://fedeo.ceos.org/collections/TropForest/items",
         "type": "application/geo+json",
         "title": "Datasets search for the series TropForest"
      },
      {
         "rel": "http://www.opengis.net/def/rel/ogc/1.0/queryables",
         "href": "https://fedeo.ceos.org/collections/TropForest/queryables",
         "type": "application/schema+json",
         "title": "Queryables for TropForest"
      },
      {
         "rel": "search",
         "href": "https://fedeo.ceos.org/collections/TropForest/api",
         "type": "application/opensearchdescription+xml",
         "title": "OpenSearch Description Document"
      },
      {
         "rel": "alternate",
         "href": "https://fedeo.ceos.org/collections/TropForest?httpAccept=application/xml",
         "type": "application/xml",
         "title": "Dublin Core metadata"
      },
      {
         "rel": "alternate",
         "href": "https://fedeo.ceos.org/collections/TropForest?httpAccept=application/rdf%2Bxml;profile=https://schema.org",
         "type": "application/rdf+xml;profile=\"https://schema.org\"",
         "title": "RDF/XML (schema.org) metadata"
      },
      {
         "rel": "alternate",
         "href": "https://fedeo.ceos.org/collections/TropForest?httpAccept=application/rdf%2Bxml",
         "type": "application/rdf+xml;profile=\"http://data.europa.eu/930/\"",
         "title": "RDF/XML (GeoDCAT-AP) metadata"
      },
      {
         "rel": "alternate",
         "href": "https://fedeo.ceos.org/collections/TropForest?httpAccept=text/turtle;profile=https://schema.org",
         "type": "text/turtle;profile=\"https://schema.org\"",
         "title": "Turtle (schema.org) metadata"
      },
      {
         "rel": "alternate",
         "href": "https://fedeo.ceos.org/collections/TropForest?httpAccept=text/turtle",
         "type": "text/turtle;profile=\"http://data.europa.eu/930/\"",
         "title": "Turtle (GeoDCAT-AP) metadata"
      },
      {
         "rel": "cite-as",
         "href": "https://doi.org/10.5270/esa-qoe849q",
         "type": "text/html",
         "title": "Landing page"
      },
      {
         "rel": "canonical",
         "href": "https://catalog.maap.eo.esa.int/catalogue/collections/TropForest",
         "type": "application/json",
         "title": "Original metadata"
      },
      {
         "rel": "license",
         "href": "https://earth.esa.int/eogateway/documents/20142/1560778/ESA-Third-Party-Missions-Terms-and-Conditions.pdf#Tropforest",
         "type": "text/html",
         "title": "Utilisation of this data is subject to ESA's Earth Observation Terms and Conditions"
      },
      {
         "rel": "search",
         "href": "https://catalog.maap.eo.esa.int/catalogue/collections/TropForest/api",
         "type": "application/opensearchdescription+xml",
         "title": "OpenSearch Description Document"
      },
      {
         "rel": "describedby",
         "href": "http://due.esrin.esa.int/page_project134.php",
         "type": "text/html",
         "title": "More about TropForest - Other"
      },
      {
         "rel": "describedby",
         "href": "https://earth.esa.int/eogateway/documents/20142/1488753/ALOS_Deimos_Kompsat_TropForest_joined_2.jpg",
         "type": "text/html",
         "title": "Available products in TropForest dataset map - Available products in TropForest dataset (dark green, light green and blue circles)"
      },
      {
         "rel": "describedby",
         "href": "https://esatellus.service-now.com/csp?id=esa_simple_request&sys_id=f27b38f9dbdffe40e3cedb11ce961958",
         "type": "text/html",
         "title": "Get Help? - ESA Earth Observation User Services Portal"
      },
      {
         "rel": "alternate",
         "href": "https://catalog.maap.eo.esa.int/catalogue/collections/TropForest?httpAccept=application/ld%2Bjson;profile=https://schema.org",
         "type": "application/ld+json;profile=\"https://schema.org\"",
         "title": "JSON-LD (schema.org) metadata"
      },
      {
         "rel": "alternate",
         "href": "https://catalog.maap.eo.esa.int/catalogue/collections/TropForest?httpAccept=application/ld%2Bjson",
         "type": "application/ld+json;profile=\"http://data.europa.eu/930/\"",
         "title": "JSON-LD (GeoDCAT-AP) metadata"
      },
      {
         "wms:transparent": true,
         "rel": "wms",
         "wms:dimensions": {
            "dim_range": "{DimRange}",
            "TIME": "{beginningDateTime}/{endingDateTime}",
            "version": "1.1.1"
         },
         "href": "https://vs.eo.esa.int/wms08/ows",
         "type": "image/png",
         "title": "TropForest",
         "wms:layers": [
            "TROPFORSET____heatmap"
         ],
         "wms:styles": [
            "{Styles}"
         ]
      }
   ],
   "id": "TropForest",
   "updated": "2026-07-30T08:58:38Z",
   "stac_extensions": [
      "https://stac-extensions.github.io/version/v1.2.0/schema.json",
      "https://stac-extensions.github.io/processing/v1.2.0/schema.json",
      "https://stac-extensions.github.io/themes/v1.0.0/schema.json",
      "https://stac-extensions.github.io/scientific/v1.0.0/schema.json",
      "https://stac-extensions.github.io/web-map-links/v1.2.0/schema.json"
   ],
   "providers": [
      {
         "roles": [
            "producer"
         ],
         "name": "ESA/ESRIN",
         "url": "http://www.esa.int"
      },
      {
         "roles": [
            "host"
         ],
         "name": "ESA EO Catalogue"
      }
   ],
   "summaries": {
      "processing:level": [
         "L1"
      ],
      "proj:code": [
         "EPSG:4326"
      ],
      "instruments": [
         "AVNIR-2",
         "SLIM6",
         "MSC"
      ],
      "platform": [
         "ALOS-1",
         "GEOSAT-1",
         "KOMPSAT-2"
      ]
   }
}
# use stac_client class for STAC collection
c = Collection.from_dict(data)
print("id\t\t:", c.id)
print("title\t\t:", c.title)
print("description\t:", c.description)
print("keywords\t:", c.keywords)
print("spatial extent\t:", c.extent.spatial)
print("temporal extent\t:", c.extent.temporal)
# print("providers\t:", c.providers)
# c
id		: TropForest
title		: TropForest- ALOS, GEOSAT-1 & KOMPSAT-2 optical coverages over tropical forests
description	: The objective of the ESA TropForest project was to create a harmonised geo-database of ready-to-use satellite imagery to support 2010 global forest assessment performed by the Joint Research Centre (JRC) of the European Commission and by the Food and Agriculture Organization (FAO). Assessments for year 2010 were essential for building realistic deforestation benchmark rates at global to regional levels. To reach this objective, the project aimed to create a harmonised ortho-rectified/pre-processed imagery geo-database based on satellite data acquisitions (ALOS AVNIR-2, GEOSAT-1 SLIM6, KOMPSAT-2 MSC) performed during year 2009 and 2010, for the Tropical Latin America (excluding Mexico) and for the Tropical South and Southeast Asia (excluding China), resulting in 1971 sites located at 1 deg x 1 deg geographical lat/long intersections. The project finally delivered 1866 sites (94.7% of target) due to cloud coverages too high for missing sites
keywords	: ['Agriculture', 'EARTH SCIENCE > AGRICULTURE', 'Forestry', 'EARTH SCIENCE > BIOSPHERE > ECOSYSTEMS > TERRESTRIAL ECOSYSTEMS > FORESTS', 'Land Surface', 'EARTH SCIENCE > LAND SURFACE', 'Vegetation', 'EARTH SCIENCE > BIOSPHERE > VEGETATION', 'Sun-synchronous', 'NIR (0.75 - 1.30) µm', 'VIS (0.40 - 0.75) µm', 'High Resolution - HR (5 - 20) m', 'Very High Resolution - VHR (0 - 5) m', 'AL1_AV2_2F', 'DE1_SL6_2F', 'KO2_MSC_2F', 'DE1 663 km; KO2 685 km; AL1 692 km', 'DE1 625 km; KO2 15 km; AL1 70 km', 'Imaging Spectrometers/Radiometers', 'Cameras', 'KOMPSAT-2', 'ALOS-1', 'GEOSAT-1', 'AVNIR-2', 'MSC', 'SLIM6']
spatial extent	: <pystac.collection.SpatialExtent object at 0x0000019E99979590>
temporal extent	: <pystac.collection.TemporalExtent object at 0x0000019E998B93D0>

The collection id (id) is to be used as collections parameter for a corresponding STAC item (granule) search. It can also be used in the ids parameter when searching collections by identifier.

Collection DOI#

Not all collections have a digital object identifier assigned. if they do, then it is available as sci:doi property. This value can be used for searching collections by DOI. Collections with DOI, typically also contain a link with rel=”cite-as” referring to their landing page.

try: 
    print(data['sci:doi'])
except:
    print("Not available")
10.5270/esa-qoe849q

Collection geometry#

Geometry information for a collection is included in the JSON response at the path $.extent.spatial.

data['extent']['spatial']
{'bbox': [[-100, -50, 160, 40]]}

Collection temporal extent#

The JSON response element provides temporal information for a collection, i.e. the start time and end time at the path $.extent.temporal. The end time may be absent indicating that the collection is not completed.

try: 
    print(data['extent']['temporal'])
except:
    print("Not available")
{'interval': [['2009-01-27T00:00:00.000Z', '2011-08-09T23:59:59.999Z']]}

Collection assets#

Collections provide access to a dictionary with assets. The roles attribute indicates the purpose of the asset. The href attribute provides the URL to access the asset. Collection assets may include thumbnail (when available), search interfaces, and various metadata formats.

The table below list some frequently used metadata formats and their corresponding media type (type).

Format

type

ISO19139

application/vnd.iso.19139+xml

ISO19139-2

application/vnd.iso.19139-2+xml

ISO19115-3

application/vnd.iso.19115-3+xml

ISO19157-2

application/vnd.iso.19157-2+xml

# Show assets of the collection (GeoJSON)
jstr = json.dumps(data['assets'], indent=3)
md("```json\n" + jstr + "\n```\n")
{
   "offering_2": {
      "roles": [
         "http://www.opengis.net/spec/owc-geojson/1.0/req/wmts#GetTile"
      ],
      "href": "https://vs.eo.esa.int/wmts08/1.0.0/TROPFOREST/default/{beginningDateTime}--{endingDateTime}/WGS84/{TileMatrix}/{TileRow}/{TileCol}.jpgpng",
      "title": "GetTile",
      "type": "image/jpgpng"
   },
   "offering_1": {
      "roles": [
         "http://www.opengis.net/spec/owc-geojson/1.0/req/wmts#GetCapabilities"
      ],
      "href": "https://vs.eo.esa.int/wmts08/1.0.0/WMTSCapabilities.xml",
      "title": "GetCapabilities",
      "type": "application/xml"
   },
   "enclosure": {
      "roles": [
         "data"
      ],
      "href": "https://tpm-ds.eo.esa.int/oads/meta/Tropforest/index",
      "type": "text/html",
      "title": "OADS repository - OADS repository"
   },
   "metadata_iso_19139": {
      "roles": [
         "metadata"
      ],
      "href": "https://catalog.maap.eo.esa.int/catalogue/collections/TropForest?httpAccept=application/vnd.iso.19139%2Bxml",
      "title": "ISO 19139 metadata",
      "type": "application/vnd.iso.19139+xml"
   },
   "metadata_iso_19139_2": {
      "roles": [
         "metadata"
      ],
      "href": "https://catalog.maap.eo.esa.int/catalogue/collections/TropForest?httpAccept=application/vnd.iso.19139-2%2Bxml",
      "title": "ISO 19139-2 metadata",
      "type": "application/vnd.iso.19139-2+xml"
   },
   "offering_4": {
      "roles": [
         "http://www.opengis.net/spec/owc-geojson/1.0/req/wms#GetMap"
      ],
      "href": "https://vs.eo.esa.int/wms08/ows?service=WMS&version=1.1.1&request=GetMap&layers=TROPFORSET____heatmap&format=image/png&TRANSPARENT=true&TIME={beginningDateTime}/{endingDateTime}&width={Width}&height={Height}&SRS=EPSG:4326&styles={Styles}&bbox={BoundingBox}&dim_range={DimRange}",
      "title": "GetMap",
      "type": "image/png"
   },
   "offering_3": {
      "roles": [
         "http://www.opengis.net/spec/owc-geojson/1.0/req/wms#GetCapabilities"
      ],
      "href": "https://vs.eo.esa.int/wms08/ows?service=WMS&version=1.1.1&request=GetCapabilities",
      "title": "GetCapabilities",
      "type": "application/xml"
   },
   "metadata_dif_10": {
      "roles": [
         "metadata"
      ],
      "href": "https://catalog.maap.eo.esa.int/catalogue/collections/TropForest?httpAccept=application/dif10%2Bxml",
      "title": "DIF-10 metadata",
      "type": "application/dif10+xml"
   },
   "metadata_ogc_17_084r1": {
      "roles": [
         "metadata"
      ],
      "href": "https://catalog.maap.eo.esa.int/catalogue/collections/TropForest?mode=owc",
      "title": "OGC 17-084r1 metadata",
      "type": "application/geo+json;profile=\"http://www.opengis.net/spec/eoc-geojson/1.0\""
   },
   "metadata_iso_191115_3": {
      "roles": [
         "metadata"
      ],
      "href": "https://catalog.maap.eo.esa.int/catalogue/collections/TropForest?httpAccept=application/vnd.iso.19115-3%2Bxml",
      "title": "ISO 19115-3 metadata",
      "type": "application/vnd.iso.19115-3+xml"
   }
}
# Display assets belonging to the collection
c = Collection.from_dict(data)
assets = c.assets
df = pd.DataFrame(columns=['roles', 'title', 'type'])
for key in assets:
    ndf = pd.DataFrame({ 
            'roles': assets[key].roles, 
            'type': assets[key].media_type, 
            'title': assets[key].title, 
            # 'href': assets[key].href  
        }, index = [0])
    df = pd.concat([df, ndf], ignore_index=True)
df
roles title type
0 http://www.opengis.net/spec/owc-geojson/1.0/re... GetTile image/jpgpng
1 http://www.opengis.net/spec/owc-geojson/1.0/re... GetCapabilities application/xml
2 data OADS repository - OADS repository text/html
3 metadata ISO 19139 metadata application/vnd.iso.19139+xml
4 metadata ISO 19139-2 metadata application/vnd.iso.19139-2+xml
5 http://www.opengis.net/spec/owc-geojson/1.0/re... GetMap image/png
6 http://www.opengis.net/spec/owc-geojson/1.0/re... GetCapabilities application/xml
7 metadata DIF-10 metadata application/dif10+xml
8 metadata OGC 17-084r1 metadata application/geo+json;profile="http://www.openg...
9 metadata ISO 19115-3 metadata application/vnd.iso.19115-3+xml

Granule properties#

Granules are returned via item links in the Catalog or Collection objects, or via the STAC API (Feature). An item is a GeoJSON Feature and the encoding is derived from the original OGC 17-003r2 encoding according to a documented mapping.

The properties available include attributes from STAC extensions as well:

Assets#

Granules provide access to a dictionary with assets. The roles attribute indicates the purpose of the asset. The href attribute provides the URL to access the asset. Granule assets include thumbnail (when available), a data download link (equivalent to the rel=enclosure), and various metadata formats.

The table below list some frequently used metadata formats and their corresponding media type (type).

Format

type

ISO19139

application/vnd.iso.19139+xml

ISO19139-2

application/vnd.iso.19139-2+xml

ISO19115-3

application/vnd.iso.19115-3+xml

OGC 10-157r4

application/gml+xml;profile=http://www.opengis.net/spec/EOMPOM/1.1

OGC 17-003r2

application/geo+json;profile=http://www.opengis.net/spec/eo-geojson/1.0

# Show assets of first search result (GeoJSON)
data = results.item_collection_as_dict()
jstr = json.dumps(data['features'][1]['assets'], indent=3)
md("```json\n" + jstr + "\n```\n")
{
   "enclosure_zip": {
      "roles": [
         "data"
      ],
      "href": "https://landsat-diss.eo.esa.int/oads/data/LandsatETM/L07_RMTI_ETM_GTC_1P_20031226T110245_20031226T110314_024987_0204_0032_850C_v0100.SIP.ZIP",
      "published": "2003-12-26T11:03:14Z",
      "type": "application/zip",
      "title": "Download"
   },
   "thumbnail": {
      "roles": [
         "thumbnail"
      ],
      "href": "http://landsat-diss.eo.esa.int/oads/meta/LandsatETM/thumbnail/L07_RMTI_ETM_GTC_1P_20031226T110245_20031226T110314_024987_0204_0032_850C_v0100.SIP.ZIP_TIMG.jpg",
      "type": "image/jpeg",
      "title": "THUMBNAIL"
   },
   "offering_2": {
      "roles": [
         "http://www.opengis.net/spec/owc-geojson/1.0/req/wmts#GetTile"
      ],
      "href": "https://vs.eo.esa.int/wmts07/1.0.0/ETM_GTC_1P/default/2003-12-26T11:02:45Z--2003-12-26T11:03:14Z/WGS84/{TileMatrix}/{TileRow}/{TileCol}.jpgpng",
      "title": "GetTile",
      "type": "image/jpgpng"
   },
   "quicklook_png": {
      "roles": [
         "overview"
      ],
      "href": "http://landsat-diss.eo.esa.int/oads/meta/LandsatETM/browse/L07_RMTI_ETM_GTC_1P_20031226T110245_20031226T110314_024987_0204_0032_850C_v0100.SIP.ZIP_BID.PNG",
      "type": "image/png",
      "title": "QUICKLOOK"
   },
   "offering_1": {
      "roles": [
         "http://www.opengis.net/spec/owc-geojson/1.0/req/wmts#GetCapabilities"
      ],
      "href": "https://vs.eo.esa.int/wmts07/1.0.0/WMTSCapabilities.xml",
      "title": "GetCapabilities",
      "type": "application/xml"
   },
   "metadata_ogc_10_157r4": {
      "roles": [
         "metadata"
      ],
      "href": "https://catalog.maap.eo.esa.int/catalogue/collections/LANDSAT.ETM.GTC/items/LS07_RMTI_ETM_GTC_1P_20031226T110245_20031226T110314_024987_0204_0032_850C?httpAccept=application/gml%2Bxml&recordSchema=om",
      "title": "OGC 10-157r4 metadata",
      "type": "application/gml+xml;profile=\"http://www.opengis.net/spec/EOMPOM/1.1\""
   },
   "offering_4": {
      "roles": [
         "http://www.opengis.net/spec/owc-geojson/1.0/req/wms#GetMap"
      ],
      "href": "https://vs.eo.esa.int/wms07/ows?service=WMS&version=1.1.1&request=GetMap&layers=ETM_GTC_1P___heatmap&format=image/png&TRANSPARENT=true&TIME=2003-12-26T11:02:45Z/2003-12-26T11:03:14Z&width={Width}&height={Height}&SRS=EPSG:4326&styles={Styles}&bbox={BoundingBox}&dim_range={DimRange}",
      "title": "GetMap",
      "type": "image/png"
   },
   "metadata_ogc_17_003r2": {
      "roles": [
         "metadata"
      ],
      "href": "https://catalog.maap.eo.esa.int/catalogue/collections/LANDSAT.ETM.GTC/items/LS07_RMTI_ETM_GTC_1P_20031226T110245_20031226T110314_024987_0204_0032_850C?mode=owc",
      "title": "OGC 17-003r2 metadata",
      "type": "application/geo+json;profile=\"http://www.opengis.net/spec/eo-geojson/1.0\""
   },
   "metadata_iso_19139": {
      "roles": [
         "metadata"
      ],
      "href": "https://catalog.maap.eo.esa.int/catalogue/collections/LANDSAT.ETM.GTC/items/LS07_RMTI_ETM_GTC_1P_20031226T110245_20031226T110314_024987_0204_0032_850C?httpAccept=application/vnd.iso.19139%2Bxml",
      "title": "ISO 19139 metadata",
      "type": "application/vnd.iso.19139+xml"
   },
   "offering_3": {
      "roles": [
         "http://www.opengis.net/spec/owc-geojson/1.0/req/wms#GetCapabilities"
      ],
      "href": "https://vs.eo.esa.int/wms07/ows?service=WMS&version=1.1.1&request=GetCapabilities",
      "title": "GetCapabilities",
      "type": "application/xml"
   }
}
df = pd.DataFrame(columns=['roles', 'title', 'type'])
    
# Display assets belonging to first item in results
for item in results.items():
    assets = item.assets
    for key in assets:     
        ndf = pd.DataFrame({ 
            'roles': assets[key].roles, 
            'type': assets[key].media_type, 
            'title': assets[key].title, 
            # 'href': assets[key].href  
        }, index = [0])
        df = pd.concat([df, ndf], ignore_index=True)
    
    break
df
roles title type
0 data Download application/zip
1 thumbnail THUMBNAIL image/jpeg
2 http://www.opengis.net/spec/owc-geojson/1.0/re... GetTile image/jpgpng
3 overview QUICKLOOK image/png
4 http://www.opengis.net/spec/owc-geojson/1.0/re... GetCapabilities application/xml
5 metadata OGC 10-157r4 metadata application/gml+xml;profile="http://www.opengi...
6 http://www.opengis.net/spec/owc-geojson/1.0/re... GetMap image/png
7 metadata OGC 17-003r2 metadata application/geo+json;profile="http://www.openg...
8 metadata ISO 19139 metadata application/vnd.iso.19139+xml
9 http://www.opengis.net/spec/owc-geojson/1.0/re... GetCapabilities application/xml

Advanced topics#

Conformance classes#

The conformance classes supported by the STAC interface are advertised in the conformsTo property of the landing page.

[
   "http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/core",
   "http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/oas30",
   "http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/geojson",
   "http://www.opengis.net/spec/ogcapi_common-2/1.0/conf/collections",
   "http://www.opengis.net/spec/ogcapi-common-2/1.0/conf/simple-query",
   "http://www.opengis.net/spec/ogcapi-records-1/1.0/req/cql-filter",
   "http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/features-filter",
   "http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/filter",
   "https://api.stacspec.org/v1.0.0/core",
   "https://api.stacspec.org/v1.0.0/ogcapi-features",
   "https://api.stacspec.org/v1.0.0/collections",
   "https://api.stacspec.org/v1.0.0-rc.1/collection-search",
   "https://api.stacspec.org/v1.0.0-rc.1/collection-search#filter",
   "https://api.stacspec.org/v1.0.0-rc.1/collection-search#free-text",
   "https://api.stacspec.org/v1.0.0-rc.1/collection-search#sort",
   "https://api.stacspec.org/v1.0.0/item-search",
   "https://api.stacspec.org/v1.0.0-rc.3/item-search#filter",
   "http://www.opengis.net/spec/cql2/1.0/conf/cql2-text",
   "http://www.opengis.net/spec/cql2/1.0/conf/basic-cql2",
   "http://www.opengis.net/spec/cql2/1.0/conf/cql2-json",
   "http://www.opengis.net/spec/cql2/1.0/conf/advanced-comparison-operators",
   "https://api.stacspec.org/v1.0.0/item-search#sort",
   "https://api.stacspec.org/v1.0.0/ogcapi-features#sort",
   "https://api.stacspec.org/v1.0.0/ogcapi-features#sort",
   "https://api.stacspec.org/v1.0.0/item-search#fields",
   "https://api.stacspec.org/v1.0.0/ogcapi-features#fields",
   "https://api.stacspec.org/v1.0.0-rc.1/collection-search#fields",
   "https://api.stacspec.org/v1.0.0/ogcapi-features/extensions/transaction"
]

Additional search parameters#

Additional search parameters beyond the STAC search parameters can be used to filter collection search results. The available parameters for collection search are advertised at https://fedeo.ceos.org/collections/queryables and represented as a JSON Schema.

URL_QUERYABLES = URL_LANDING_PAGE + 'collections/queryables'
curl -X GET -G https://fedeo.ceos.org/collections/queryables
response = requests.get(URL_QUERYABLES)   
data = json.loads(response.text)    
df = pd.DataFrame(data['properties'].items(),columns=['key','value'])
df['type'] = df.apply(lambda row : row['value']['type'], axis = 1)
df['format'] = df.apply(lambda row : row['value']['format'] if 'format' in row['value'] else '-' , axis = 1)
df.drop('value',axis=1).sort_values(by=['key'])
key type format
15 accessConstraint string -
6 ceosard:specification string -
12 ceosard:specification_version string -
19 classifiedAs string uri
5 collection string -
10 datetime string -
3 description string -
4 externalId string -
2 format string -
16 id string -
11 instruments string -
14 offering string -
8 otherConstraint string -
9 platform string -
0 processing:level string -
18 providers string -
1 sci:doi string -
7 title string -
17 updated string date-time
13 useLimitation string -
{
   "$schema": "https://json-schema.org/draft/2019-09/schema",
   "description": "Queryable names for the STAC API Collection Search filter.",
   "type": "object",
   "title": "Queryables for the STAC API",
   "properties": {
      "processing:level": {
         "description": "The processing level applied to the entry",
         "title": "Processing level",
         "type": "string"
      },
      "sci:doi": {
         "description": "Digital Object Identifier identifying the product (see http://www.doi.org)",
         "title": "Doi",
         "type": "string",
         "enum": [
            "10.1101/2025.08.31.673375",
            "10.1111/2041-210X.14416",
            "10.15489/4hcq6dgkj648",
            "10.15489/ifczsszkcp63",
            "10.19038/SAC/10/3A-CCD-AOD",
            "10.19038/SAC/10/3A-CCD-COMPOSITE-NDV",
            "10.19038/SAC/10/3A-CCD-GPS",
            "10.19038/SAC/10/3A-CCD-L1",
            "10.19038/SAC/10/3A-CCD-NDV",
            "10.19038/SAC/10/3A-VHR-DAILYOLR",
            "10.19038/SAC/10/3A-VHR-DAILYQPE",
            "10.19038/SAC/10/3A-VHR-DAILYSST",
            "10.19038/SAC/10/3A-VHR-DAILYUTH",
            "10.19038/SAC/10/3A-VHR-L1",
            "10.19038/SAC/10/3A-VHR-L1-INDIAN SECTOR",
            "10.19038/SAC/10/3A-VHR-L1-INDIANSECTOR",
            "10.19038/SAC/10/3A-VHR-OLR",
            "10.19038/SAC/10/3A-VHR-QPE",
            "10.19038/SAC/10/3A-VHR-SST",
            "10.19038/SAC/10/3A-VHR-UTH",
            "10.19038/SAC/10/3DIMG_L1B_STD",
            "10.19038/SAC/10/3DIMG_L1C_ASIA_MER",
            "10.19038/SAC/10/3DIMG_L1C_SGP",
            "10.19038/SAC/10/3DIMG_L2B_CMK",
            "10.19038/SAC/10/3DIMG_L2B_CTP",
            "10.19038/SAC/10/3DIMG_L2B_FOG",
            "10.19038/SAC/10/3DIMG_L2B_HEM",
            "10.19038/SAC/10/3DIMG_L2B_IMC",
            "10.19038/SAC/10/3DIMG_L2B_LST",
            "10.19038/SAC/10/3DIMG_L2B_OLR",
            "10.19038/SAC/10/3DIMG_L2B_SST",
            "10.19038/SAC/10/3DIMG_L2B_UTH",
            "10.19038/SAC/10/3DIMG_L2C_CMP",
            "10.19038/SAC/10/3DIMG_L2C_FOG",
            "10.19038/SAC/10/3DIMG_L2C_INS",
            "10.19038/SAC/10/3DIMG_L2C_SNW",
            "10.19038/SAC/10/3DIMG_L2G_AOD",
            "10.19038/SAC/10/3DIMG_L2G_GPI",
            "10.19038/SAC/10/3DIMG_L2G_IMR",
            "10.19038/SAC/10/3DIMG_L2G_SST",
            "10.19038/SAC/10/3DIMG_L2G_WDP",
            "10.19038/SAC/10/3DIMG_L2P_FIR",
            "10.19038/SAC/10/3DIMG_L2P_IRW",
            "10.19038/SAC/10/3DIMG_L2P_IRW_MERGED",
            "10.19038/SAC/10/3DIMG_L2P_MRW",
            "10.19038/SAC/10/3DIMG_L2P_SMK",
            "10.19038/SAC/10/3DIMG_L2P_VSW",
            "10.19038/SAC/10/3DIMG_L2P_WVW",
            "10.19038/SAC/10/3DIMG_L2P_WV_MERGED",
            "10.19038/SAC/10/3DIMG_L3B_HEM_DLY",
            "10.19038/SAC/10/3DIMG_L3B_HEM_WKL",
            "10.19038/SAC/10/3DIMG_L3B_OLR_DLY",
            "10.19038/SAC/10/3DIMG_L3B_OLR_WKL",
            "10.19038/SAC/10/3DIMG_L3B_SST_DLY",
            "10.19038/SAC/10/3DIMG_L3B_SST_WKL",
            "10.19038/SAC/10/3DIMG_L3B_UTH_DLY",
            "10.19038/SAC/10/3DIMG_L3B_UTH_WKL",
            "10.19038/SAC/10/3DIMG_L3C_INS_DLY",
            "10.19038/SAC/10/3DIMG_L3C_PET_DLY",
            "10.19038/SAC/10/3DIMG_L3G_GPI_DLY",
            "10.19038/SAC/10/3DIMG_L3G_GPI_WKL",
            "10.19038/SAC/10/3DIMG_L3G_IMR_DLY",
            "10.19038/SAC/10/3DIMG_L3G_IMR_WKL",
            "10.19038/SAC/10/3DSND_L1B_SA1",
            "10.19038/SAC/10/3DSND_L1B_SA2",
            "10.19038/SAC/10/3DSND_L1B_SB1",
            "10.19038/SAC/10/3DSND_L1B_STD",
            "10.19038/SAC/10/3DSND_L2B_PFL",
            "10.19038/SAC/10/3DSND_L2B_SA1",
            "10.19038/SAC/10/3DSND_L2B_SA2",
            "10.19038/SAC/10/3DSND_L2B_SB1",
            "10.19038/SAC/10/3RIMG_L1B_STD",
            "10.19038/SAC/10/3RIMG_L1C_ASIA_MER",
            "10.19038/SAC/10/3RIMG_L1C_SGP",
            "10.19038/SAC/10/3RIMG_L2B_CMK",
            "10.19038/SAC/10/3RIMG_L2B_CTP",
            "10.19038/SAC/10/3RIMG_L2B_HEM",
            "10.19038/SAC/10/3RIMG_L2B_IMC",
            "10.19038/SAC/10/3RIMG_L2B_LST",
            "10.19038/SAC/10/3RIMG_L2B_OLR",
            "10.19038/SAC/10/3RIMG_L2B_SST",
            "10.19038/SAC/10/3RIMG_L2B_UTH",
            "10.19038/SAC/10/3RIMG_L2C_CMP",
            "10.19038/SAC/10/3RIMG_L2C_FOG",
            "10.19038/SAC/10/3RIMG_L2C_INS",
            "10.19038/SAC/10/3RIMG_L2C_SNW",
            "10.19038/SAC/10/3RIMG_L2G_AOD",
            "10.19038/SAC/10/3RIMG_L2G_GPI",
            "10.19038/SAC/10/3RIMG_L2G_IMR",
            "10.19038/SAC/10/3RIMG_L2G_WDP",
            "10.19038/SAC/10/3RIMG_L2P_FIR",
            "10.19038/SAC/10/3RIMG_L2P_IRW",
            "10.19038/SAC/10/3RIMG_L2P_IRW_MERGED",
            "10.19038/SAC/10/3RIMG_L2P_MRW",
            "10.19038/SAC/10/3RIMG_L2P_SMK",
            "10.19038/SAC/10/3RIMG_L2P_VSW",
            "10.19038/SAC/10/3RIMG_L2P_WVW",
            "10.19038/SAC/10/3RIMG_L2P_WV_MERGED",
            "10.19038/SAC/10/3RIMG_L3B_HEM_DLY",
            "10.19038/SAC/10/3RIMG_L3B_HEM_WKL",
            "10.19038/SAC/10/3RIMG_L3B_OLR_DLY",
            "10.19038/SAC/10/3RIMG_L3B_OLR_WKL",
            "10.19038/SAC/10/3RIMG_L3B_SST_DLY",
            "10.19038/SAC/10/3RIMG_L3B_SST_WKL",
            "10.19038/SAC/10/3RIMG_L3B_UTH_DLY",
            "10.19038/SAC/10/3RIMG_L3B_UTH_WKL",
            "10.19038/SAC/10/3RIMG_L3C_INS_DLY",
            "10.19038/SAC/10/3RIMG_L3C_PET_DLY",
            "10.19038/SAC/10/3RIMG_L3G_GPI_DLY",
            "10.19038/SAC/10/3RIMG_L3G_GPI_WKL",
            "10.19038/SAC/10/3RIMG_L3G_IMR_DLY",
            "10.19038/SAC/10/3RIMG_L3G_IMR_WKL",
            "10.19038/SAC/10/3RSND_L1B_SA1",
            "10.19038/SAC/10/3RSND_L1B_SA2",
            "10.19038/SAC/10/3RSND_L1B_SB1",
            "10.19038/SAC/10/3RSND_L2B_SA1",
            "10.19038/SAC/10/3RSND_L2B_SA2",
            "10.19038/SAC/10/3RSND_L2B_SB1",
            "10.19038/SAC/10/3SIMG_L1B_STD",
            "10.19038/SAC/10/3SIMG_L1C_ASIA_MER",
            "10.19038/SAC/10/3SIMG_L1C_SGP",
            "10.19038/SAC/10/3SIMG_L2B_CMK",
            "10.19038/SAC/10/3SIMG_L2B_CTP",
            "10.19038/SAC/10/3SIMG_L2B_HEM",
            "10.19038/SAC/10/3SIMG_L2B_IMC",
            "10.19038/SAC/10/3SIMG_L2B_LST",
            "10.19038/SAC/10/3SIMG_L2B_OLR",
            "10.19038/SAC/10/3SIMG_L2B_SST",
            "10.19038/SAC/10/3SIMG_L2B_UTH",
            "10.19038/SAC/10/3SIMG_L2C_CMP",
            "10.19038/SAC/10/3SIMG_L2C_FOG",
            "10.19038/SAC/10/3SIMG_L2C_INS",
            "10.19038/SAC/10/3SIMG_L2C_SNW",
            "10.19038/SAC/10/3SIMG_L2G_AOD",
            "10.19038/SAC/10/3SIMG_L2G_GPI",
            "10.19038/SAC/10/3SIMG_L2G_IMR",
            "10.19038/SAC/10/3SIMG_L2G_WDP",
            "10.19038/SAC/10/3SIMG_L2P_AMV",
            "10.19038/SAC/10/3SIMG_L2P_FIR",
            "10.19038/SAC/10/3SIMG_L2P_IRW",
            "10.19038/SAC/10/3SIMG_L2P_MRW",
            "10.19038/SAC/10/3SIMG_L2P_SMK",
            "10.19038/SAC/10/3SIMG_L2P_VSW",
            "10.19038/SAC/10/3SIMG_L2P_WVW",
            "10.19038/SAC/10/3SIMG_L3B_HEM_DLY",
            "10.19038/SAC/10/3SIMG_L3B_IMC_DLY",
            "10.19038/SAC/10/3SIMG_L3B_LST_DLY",
            "10.19038/SAC/10/3SIMG_L3B_OLR_DLY",
            "10.19038/SAC/10/3SIMG_L3B_SST_DLY",
            "10.19038/SAC/10/3SIMG_L3B_SWR_DLY",
            "10.19038/SAC/10/3SIMG_L3B_UTH_DLY",
            "10.19038/SAC/10/3SIMG_L3C_INS_DLY",
            "10.19038/SAC/10/3SIMG_L3C_PET_DLY",
            "10.19038/SAC/10/3SIMG_L3G_GPI_DLY",
            "10.19038/SAC/10/3SIMG_L3G_IMR_DLY",
            "10.19038/SAC/10/3SSND_L1B_SA1",
            "10.19038/SAC/10/3SSND_L1B_SB1",
            "10.19038/SAC/10/3SSND_L2B_SA1",
            "10.19038/SAC/10/3SSND_L2B_SB1",
            "10.19038/SAC/10/E06OCM_L2C_LAC_AD",
            "10.19038/SAC/10/E06OCM_L2C_LAC_GA",
            "10.19038/SAC/10/E06OCM_L2C_LAC_OC",
            "10.19038/SAC/10/E06OCM_L2C_LAC_PR",
            "10.19038/SAC/10/E06OCM_L2C_LAC_PS",
            "10.19038/SAC/10/E06OCM_L3_LAC_AD",
            "10.19038/SAC/10/E06OCM_L3_LAC_FL",
            "10.19038/SAC/10/E06OCM_L3_LAC_PC",
            "10.19038/SAC/10/E06OCM_L4_AC",
            "10.19038/SAC/10/E06SCT_L1B_SIG",
            "10.19038/SAC/10/E06SCT_L2A_SIG12",
            "10.19038/SAC/10/E06SCT_L2A_SIG25",
            "10.19038/SAC/10/E06SCT_L2B_WV12",
            "10.19038/SAC/10/E06SCT_L2B_WV25",
            "10.19038/SAC/10/E06SCT_L3_SIG12_HH",
            "10.19038/SAC/10/E06SCT_L3_SIG12_VV",
            "10.19038/SAC/10/E06SCT_L3_SIG25_HH",
            "10.19038/SAC/10/E06SCT_L3_SIG25_VV",
            "10.19038/SAC/10/E06SCT_L3_WW12",
            "10.19038/SAC/10/E06SCT_L3_WW25",
            "10.19038/SAC/10/E06SCT_L4_AWV",
            "10.19038/SAC/10/E06SCT_L4_AWV6HOURLY",
            "10.19038/SAC/10/E06SCT_L4_BT_GLB",
            "10.19038/SAC/10/E06SCT_L4_BT_IND",
            "10.19038/SAC/10/E06SCT_L4_BT_NP",
            "10.19038/SAC/10/E06SCT_L4_BT_SP",
            "10.19038/SAC/10/E06SCT_L4_GAM_IND",
            "10.19038/SAC/10/E06SCT_L4_GAM_NP",
            "10.19038/SAC/10/E06SCT_L4_GAM_SP",
            "10.19038/SAC/10/E06SCT_L4_SIG_GLB",
            "10.19038/SAC/10/E06SCT_L4_SIG_IND",
            "10.19038/SAC/10/E06SCT_L4_SIG_NP",
            "10.19038/SAC/10/E06SCT_L4_SIG_SP",
            "10.19038/SAC/10/E06SCT_L4_UI",
            "10.19038/SAC/10/K1-VHR-AMV",
            "10.19038/SAC/10/K1-VHR-AMV-VIS",
            "10.19038/SAC/10/K1-VHR-BRT",
            "10.19038/SAC/10/K1-VHR-BTW",
            "10.19038/SAC/10/K1-VHR-CMK",
            "10.19038/SAC/10/K1-VHR-CMV",
            "10.19038/SAC/10/K1-VHR-DAILYIMR",
            "10.19038/SAC/10/K1-VHR-DAILYINS",
            "10.19038/SAC/10/K1-VHR-DAILYOLR",
            "10.19038/SAC/10/K1-VHR-DAILYQPE",
            "10.19038/SAC/10/K1-VHR-DAILYSST",
            "10.19038/SAC/10/K1-VHR-DAILYUTH",
            "10.19038/SAC/10/K1-VHR-HEM",
            "10.19038/SAC/10/K1-VHR-IMR",
            "10.19038/SAC/10/K1-VHR-INS",
            "10.19038/SAC/10/K1-VHR-L1",
            "10.19038/SAC/10/K1-VHR-L1-INDIANSECTOR",
            "10.19038/SAC/10/K1-VHR-LST",
            "10.19038/SAC/10/K1-VHR-OLR",
            "10.19038/SAC/10/K1-VHR-QPE",
            "10.19038/SAC/10/K1-VHR-SGP",
            "10.19038/SAC/10/K1-VHR-SGP-CMV",
            "10.19038/SAC/10/K1-VHR-SGP-WVWV",
            "10.19038/SAC/10/K1-VHR-SST",
            "10.19038/SAC/10/K1-VHR-UTH",
            "10.19038/SAC/10/K1-VHR-WVWV",
            "10.19038/SAC/10/MT1MADSL1A",
            "10.19038/SAC/10/MT1MADSL1A2",
            "10.19038/SAC/10/MT1MADSL1B",
            "10.19038/SAC/10/MT1MADSRRL2A",
            "10.19038/SAC/10/MT1SAPSGPL2A",
            "10.19038/SAC/10/MT1SAPSL1A",
            "10.19038/SAC/10/MT1SAPSL1A2",
            "10.19038/SAC/10/MT1SAPSL1B",
            "10.19038/SAC/10/MT1SAPSRRL2A",
            "10.19038/SAC/10/MT1SCASGPL2A",
            "10.19038/SAC/10/MT1SCASL1A",
            "10.19038/SAC/10/MT1SCASL1A2",
            "10.19038/SAC/10/MT1SCASL1B",
            "10.19038/SAC/10/O2-SCT-AWV50",
            "10.19038/SAC/10/O2-SCT-DAILYAWV50",
            "10.19038/SAC/10/O2-SCT-HWV",
            "10.19038/SAC/10/S1SCT-SIGL1B",
            "10.19038/SAC/10/S1SCT-SIGL2A25",
            "10.19038/SAC/10/S1SCT-SIGL2A50",
            "10.19038/SAC/10/S1SCT-SIGL2B25",
            "10.19038/SAC/10/S1SCT-SIGL2B50",
            "10.19038/SAC/10/S1SCT-SIGL325-HH",
            "10.19038/SAC/10/S1SCT-SIGL325-VV",
            "10.19038/SAC/10/S1SCT-SIGL350-HH",
            "10.19038/SAC/10/S1SCT-SIGL350-VV",
            "10.19038/SAC/10/S1SCT-WWL325",
            "10.19038/SAC/10/S1SCT-WWL350",
            "10.19038/SAC/10/S1SCT_L3_BT25",
            "10.19038/SAC/10/S1SCT_L3_IC",
            "10.19038/SAC/10/S1SCT_L4_AWV25",
            "10.19038/SAC/10/S1SCT_L4_AWV625",
            "10.19038/SAC/10/S1SCT_L4_BT625_GLB",
            "10.19038/SAC/10/S1SCT_L4_BT_GLB",
            "10.19038/SAC/10/S1SCT_L4_BT_IND",
            "10.19038/SAC/10/S1SCT_L4_BT_NP",
            "10.19038/SAC/10/S1SCT_L4_BT_SP",
            "10.19038/SAC/10/S1SCT_L4_GAM_GLB",
            "10.19038/SAC/10/S1SCT_L4_GAM_IND",
            "10.19038/SAC/10/S1SCT_L4_GAM_NP",
            "10.19038/SAC/10/S1SCT_L4_GAM_SP",
            "10.19038/SAC/10/S1SCT_L4_HWV",
            "10.19038/SAC/10/S1SCT_L4_SIG_GLB",
            "10.19038/SAC/10/S1SCT_L4_SIG_IND",
            "10.19038/SAC/10/S1SCT_L4_SIG_NP",
            "10.19038/SAC/10/S1SCT_L4_SIG_SP",
            "10.19038/SAC/10/S1SCT_L4_UI",
            "10.19038/SAC/10/SRLGPN",
            "10.19038/SAC/10/SRLGPR",
            "10.19038/SAC/10/SRLGPS",
            "10.19038/SAC/10/SRLIPN",
            "10.19038/SAC/10/SRLIPR",
            "10.19038/SAC/10/SRLIPS",
            "10.19038/SAC/10/SRLOPN",
            "10.19038/SAC/10/SRLOPR",
            "10.19038/SAC/10/atm_prf_igr_1d",
            "10.19038/SAC/10/atm_prf_igr_l2",
            "10.19038/SAC/10/atm_prf_igs_l2",
            "10.19038/SAC/10/atm_prf_igu_1d",
            "10.19038/SAC/10/atm_prf_igu_l2",
            "10.2909/08f6ac55-b896-481f-bb1c-bd9e5e18c411",
            "10.2909/0929daf7-a0a3-4428-9bc1-cec6691e85d8",
            "10.2909/09578c73-4f5d-4d2c-90ff-4e17fb7dbf69",
            "10.2909/0a29152a-cf72-416f-9d8e-f1b9d9d5014d",
            "10.2909/0aedea4c-f2e3-4823-a60d-a4f3873aa13c",
            "10.2909/0bceb940-f7a8-4467-a1f9-6f3d6a22791f",
            "10.2909/0c03dc8e-b8b2-4c5c-88a5-8e9f9c153bc7",
            "10.2909/1012ec6a-a073-4cb5-95f4-95dad6f4f423",
            "10.2909/1f5db4df-b91a-4c4f-98de-aec229c89068",
            "10.2909/219fdc9f-616b-444b-a495-198f527b4722",
            "10.2909/281e62fc-fe9e-40ef-9a78-1e104dc2a352",
            "10.2909/29051bfa-afd8-4ffc-a99d-4c097152749e",
            "10.2909/290e81fb-4c84-42ad-ae12-f663312b0eda",
            "10.2909/34ad510f-bba7-4c55-b1a6-8aac544bc216",
            "10.2909/3893c1e6-eea1-46bc-9321-d11f0e39a044",
            "10.2909/39e1ff33-01d9-45c2-9edc-00924383f34f",
            "10.2909/4187eaf1-69f8-40ba-afff-c13b2433dd53",
            "10.2909/45a5c6e5-f142-4e66-8017-fa9161c2768b",
            "10.2909/47ff73a4-eb52-4e8d-80e7-b6c3910d8891",
            "10.2909/49778fb4-bf1a-4e89-bd1d-09f1370e2bb9",
            "10.2909/4a9529e9-4f5e-401f-bd72-dde7068848f6",
            "10.2909/4cd93293-e944-4046-987c-66e4f59a2071",
            "10.2909/58ca9f01-a526-418d-8862-b4be43ef4738",
            "10.2909/59cc02d6-ddfe-4820-83cb-345205eacec5",
            "10.2909/5a38461b-3ef7-4f97-a933-4c9f51a0eda5",
            "10.2909/5ad6499b-c37e-45b6-8753-324963a2f551",
            "10.2909/5bdf0a9e-7635-4d26-b949-2beed6dec23e",
            "10.2909/5c6763f3-834c-4b9a-ba3a-bc3c14f85875",
            "10.2909/5f0f5752-b908-4bfa-8270-4764cc4be991",
            "10.2909/602507b2-96c7-47bb-b79d-7ba25e97d0a9",
            "10.2909/64a4d49d-281d-42c0-a45c-3abb3f337ad3",
            "10.2909/668f4071-5d18-48dc-9034-9680a2aea717",
            "10.2909/67797662-7edc-4a29-b93b-a58af384b137",
            "10.2909/6fda150f-5c38-4c7a-bddf-b327d07137bd",
            "10.2909/709c4b92-a925-4dec-bab2-d110fe97b3c3",
            "10.2909/711e5cf8-b0dd-4e34-9814-b7b60aba109f",
            "10.2909/7417c491-9706-4eb4-989c-e339b27b1bc5",
            "10.2909/77a7f444-2715-41df-bf09-38df610589a5",
            "10.2909/7c47ba10-0419-4d68-90f7-49f7e28a0a3f",
            "10.2909/7c6a6fab-6c7c-4790-a129-bfa48ec1f052",
            "10.2909/7d726671-9647-4116-8dc3-cf7470a1a782",
            "10.2909/7f2eb891-cadb-4aa0-8b43-2c18e2a442e9",
            "10.2909/801137b8-9575-43ef-a073-140b663cc61c",
            "10.2909/8048eb1c-8579-45c6-b188-b0a26ef26248",
            "10.2909/832c7297-a20f-4b92-8e32-1e2e1548e642",
            "10.2909/86c14646-c0b6-4b82-a82f-cbb23b331743",
            "10.2909/8d5eac19-877e-459a-a501-e1182516d64d",
            "10.2909/8fa58061-28ab-49bb-9b77-c26b50733e34",
            "10.2909/9029c361-18b7-4189-bff9-744a2821858d",
            "10.2909/905223f4-2c3d-4cb6-ad8c-d6d065707465",
            "10.2909/90ca3e33-7926-4f71-857b-7336818cbd23",
            "10.2909/9143c7a3-5c81-4b0d-b5d1-8cfea8a73d84",
            "10.2909/9452ed34-081d-445f-a092-de13cf7d2830",
            "10.2909/98c5e00e-3580-4bb3-9509-50a572b1e935",
            "10.2909/9c0519f9-d2c2-4469-a9e1-2222d37c33d6",
            "10.2909/a696fab4-c3dc-4dcc-b1d8-6fcd9a2ce1eb",
            "10.2909/aa809355-f50a-4925-9fb1-bef32ff1c9aa",
            "10.2909/ae760a70-708e-459a-8eec-6852462a5faf",
            "10.2909/b0b65b9d-f826-4c7e-b8bf-1c9b8a407e5b",
            "10.2909/b4149b9b-f020-42ea-9159-9c437ce4c15b",
            "10.2909/b4e3720f-19a7-4b04-9de1-786eb52807ac",
            "10.2909/b54be6e3-5962-4e9a-a443-9ff7ea943dfe",
            "10.2909/b8e48c8d-f44e-40eb-9583-4a3254c2bbb3",
            "10.2909/bfd77180-7d7c-4c1c-b193-1489f735d5f1",
            "10.2909/c6377c6e-76cc-4d03-8330-628a03693042",
            "10.2909/c828c1b2-6ea8-40f3-897d-c92080ba1daf",
            "10.2909/c8cf5bec-83e9-4e27-8c13-80f74a89bd0c",
            "10.2909/cd23c4bb-b3cb-4331-bb89-93321b46f8ed",
            "10.2909/d12aa3df-1376-491f-9663-12a3e0822986",
            "10.2909/d2e6d5d6-96cc-4aad-86ec-9be590fc7d1b",
            "10.2909/d3e5340d-5325-4196-8c98-cb4e397746ea",
            "10.2909/d5fdc595-2e03-4cbe-a39e-5f006f9cef07",
            "10.2909/deae3db1-a214-4375-8d1a-63c42498050e",
            "10.2909/e15ffbfd-644c-48e8-8c2c-5a14e0f523c1",
            "10.2909/e2dd658f-8835-4b17-bcd5-eeb921a79a61",
            "10.2909/e45d33d0-7a28-4446-adb4-fb70805bd650",
            "10.2909/e7b99351-7a89-42c7-8bba-1d9fc0463946",
            "10.2909/e934b15f-7d48-4c6d-a9c6-6484488aa58f",
            "10.2909/ec45177f-56a7-41a2-bb22-ef6fe8b83ab8",
            "10.2909/ed144dd3-a54b-41bc-a449-af8f0e01c7e9",
            "10.2909/edc0eb49-fbd7-4ed2-bca5-8ec0e67dc9fe",
            "10.2909/f2dab19c-57d5-4b26-9c1b-9dababff1f2a",
            "10.2909/fa9d1d46-70a4-4f85-bed7-6e1af8e1ff36",
            "10.2909/fb3b9550-d542-4eb9-a661-27d586780f76",
            "10.2909/ff1e948d-36ca-4c70-9e34-393ea3d9c785",
            "10.5066/P975CC9B",
            "10.5067/NIL2GCOV-B1",
            "10.5067/NIL2GUNW-B1",
            "10.5067/SNWG/ARIA_S1_GUNW_001",
            "10.5270/AL1-5e400fd",
            "10.5270/AL1-a06d3ac",
            "10.5270/AL1-b459f4e",
            "10.5270/AL1-d9cfa6d",
            "10.5270/AL1-d9d4874",
            "10.5270/AVH-f1i8784",
            "10.5270/CR2-05fbc11",
            "10.5270/CR2-2xs4q4l",
            "10.5270/CR2-52fafc4",
            "10.5270/CR2-53hztdl",
            "10.5270/CR2-656eeb1",
            "10.5270/CR2-cbow23i",
            "10.5270/DM1-w9tup3r",
            "10.5270/EN1-179289a",
            "10.5270/EN1-42e99a2",
            "10.5270/EN1-4c37krv",
            "10.5270/EN1-5eab12a",
            "10.5270/EN1-61d6y63",
            "10.5270/EN1-77pi5sd",
            "10.5270/EN1-88oasur",
            "10.5270/EN1-a1rc3jf",
            "10.5270/EN1-c8hgqx4",
            "10.5270/EN1-cu4a5e3",
            "10.5270/EN1-d9ryw7t",
            "10.5270/EN1-eqvj8vs",
            "10.5270/EN1-opsw96m",
            "10.5270/EN1-q74d24h",
            "10.5270/EN1-ttqbj6p",
            "10.5270/EN1-u55aesn",
            "10.5270/EN1-ueksx4q",
            "10.5270/EN1-vqoj1gs",
            "10.5270/EN1-w5xkqmx",
            "10.5270/EN1-x542no0",
            "10.5270/ER2-ua38y2m",
            "10.5270/ER2-uw3eflc",
            "10.5270/ERS-0p2cu8d",
            "10.5270/ERS-7c3qhyo",
            "10.5270/ERS-suu0xfp",
            "10.5270/ESA-6615b19",
            "10.5270/ESA-852456e",
            "10.5270/ESA-86e26dc",
            "10.5270/ESA-a36265c",
            "10.5270/ESA-c26d993",
            "10.5270/ESA-c5d3d65",
            "10.5270/IK2-5dwhs28",
            "10.5270/JE1-408s1ur",
            "10.5270/JE1-64xxf7c",
            "10.5270/JE1-cerzmcu",
            "10.5270/KO2-2ijzzay",
            "10.5270/OD1-010f2d4",
            "10.5270/PRV-xw3omb1",
            "10.5270/QB2-ftu9xmh",
            "10.5270/S2_-742ikth",
            "10.5270/S2_-znk9xsj",
            "10.5270/SE1-99j66hv",
            "10.5270/esa-02d6cbf",
            "10.5270/esa-2d07033",
            "10.5270/esa-2eb13ab",
            "10.5270/esa-4427c33",
            "10.5270/esa-6mxo3sr",
            "10.5270/esa-6riial9",
            "10.5270/esa-79a176b",
            "10.5270/esa-7c37033",
            "10.5270/esa-7nc8pjp",
            "10.5270/esa-8sfucze",
            "10.5270/esa-8xb8scs",
            "10.5270/esa-a681fe7",
            "10.5270/esa-d69ulft",
            "10.5270/esa-e3e68ff",
            "10.5270/esa-ht6sxz7",
            "10.5270/esa-iboli84",
            "10.5270/esa-j340roh",
            "10.5270/esa-jfhe2um",
            "10.5270/esa-l8g67jw",
            "10.5270/esa-otce9j2",
            "10.5270/esa-qoe849q",
            "10.5285/bf535053562141c6bb7ad831f5998d77",
            "10.57746/EO.01gs73ankp5nsj9w7a41sxnrk0",
            "10.57746/EO.01gs73anmzbbdkzngpky9hywas",
            "10.57746/EO.01gs73annwe31ftc9c80n3vq6b",
            "10.57746/EO.01gs73anppggkj1jpr4j32mdhy",
            "10.57746/EO.01gs73anqeytqxdmjrzaz9z43k",
            "10.57746/EO.01gs73anr632weebbr02yhkf06",
            "10.57746/EO.01gs73ans548qghaknzdjyxd2h",
            "10.57746/EO.01gs73ant4d0y20r133tz5bz7p",
            "10.57746/EO.01gs73anv4x0v0qy9t7za4xpfg",
            "10.57746/EO.01gs73anvz1jrqfgtdmye2mqma",
            "10.57746/EO.01gs73anwrpft4gz4z14zwmzyf",
            "10.57746/EO.01gs73anxjte9nkbqbpbh1ndrd",
            "10.57746/EO.01gs73anycgsvxcazyyh4cwb1x",
            "10.57746/EO.01gs73anz7h435s777v6k88nw3",
            "10.57746/EO.01gs73ap01pmdjhe72nct603gb",
            "10.57746/EO.01gs73ap0xa35tt1640q2kaqj2",
            "10.57746/EO.01gs73ap1p92ayft0xw6x7qt5f",
            "10.57746/EO.01gs73ap2gkb452jyc3e64ye44",
            "10.57746/EO.01gs73ap3bdr7r1w5tsk7y5r4e",
            "10.57746/EO.01gs73ap4ksndas0vya7503qc8",
            "10.57746/EO.01gs73ap5hwekq1tbqc58m3k41",
            "10.57746/EO.01gs73ap6ee0mjmj7e6z44c6d0",
            "10.57746/EO.01gs73ap79724wx1tbavhwnhvx",
            "10.57746/EO.01gs73ap83ycf4fj6hs9f77qxa",
            "10.57746/EO.01gs73ap8yavpjmr379ds9vkgq",
            "10.57746/EO.01gs73ap9rc42mcferznjpz39e",
            "10.57746/EO.01gs73apakrpmcnzft2xtsg3fn",
            "10.57746/EO.01gs73apbdnwg2md4x2zayvhkb",
            "10.57746/EO.01gs73apc624d4t3pgg7wryfcd",
            "10.57746/EO.01gs73apd0sp5cm4pjm4xsp7r3",
            "10.57746/EO.01gs73apdsj6m31ctxgmhs542y",
            "10.57746/EO.01gs73apejgg5eexkvma0agc58",
            "10.57746/EO.01gs73apfcq6sg1x2tmmn99bkc",
            "10.57746/EO.01gs73apg6c1a6tzttbkmd6m8p",
            "10.57746/EO.01gs73apgz2k5syxhfh8qce4af",
            "10.57746/EO.01gs73aphsp4xyn70mqv5z19et",
            "10.57746/EO.01gs73apjj45hhezqj2sdy1234",
            "10.57746/EO.01gs73apkddkktq4y0qrfkfs2y",
            "10.57746/EO.01gs73apm60j7gv9zj11jmztwj",
            "10.57746/EO.01gs73apn0bkx892j43h06pgrr",
            "10.57746/EO.01gs73apns8xy5c3edyf77zh7r",
            "10.57746/EO.01gs73appragggtn91rqewmf0h",
            "10.57746/EO.01gs73apqmt919atvpsqjgf790",
            "10.57746/EO.01gs73aprfah4nc595ggn78y6q",
            "10.57746/EO.01gs73aps926kayt1wh7cd85nf",
            "10.57746/EO.01gs73apt2092zdms7hj1hwb6f",
            "10.57746/EO.01gs73aptxt6zkepyy5jc5tkdr",
            "10.57746/EO.01gs73apvrhz6th5krz9pdy8cd",
            "10.57746/EO.01gs73apwkkmqe2tby2eh954ft",
            "10.57746/EO.01gs73apxdyrsywjc0cg9701r8",
            "10.57746/EO.01gs73apy6d4zk47cgzxs4q8zq",
            "10.57746/EO.01gs73apyzm1sbrbbpszswazh7",
            "10.57746/EO.01gs73apzs1psvg1z86ey012xw",
            "10.57746/EO.01gs73aq0hm3yph2d77rajyap8",
            "10.57746/EO.01gs73aq1b6xhpc7c5f6nczcmp",
            "10.57746/EO.01gs73aq24yepychbq0bqead0n"
         ]
      },
      "format": {
         "description": "Product encoding formats",
         "title": "Format",
         "type": "string"
      },
      "description": {
         "description": "Free text search term",
         "title": "Query",
         "type": "string"
      },
      "externalId": {
         "description": "Search by external identifier",
         "title": "External identifiers",
         "type": "string"
      },
      "collection": {
         "description": "The parent of the entry in a hierarchy of resources",
         "title": "Parent identifier",
         "type": "string",
         "enum": [
            "EOP:DLR:EOC",
            "EOP:DLR:GEOSERVICE",
            "EOP:ESA:EARTH-ONLINE",
            "EOP:ESA:ECV",
            "EOP:ESA:MAAP",
            "EOP:EU:CDSE",
            "EOP:EU:CMEMS",
            "EOP:EUMETSAT",
            "EOP:INPE:DATA",
            "EOP:ISRO:MOSDAC",
            "EOP:JAXA:G-PORTAL",
            "EOP:NRCAN:EODMS",
            "EOP:NRSC:BHOONIDHI",
            "EOP:STFC:CEDA-CCI",
            "EOP:USGS:LANDSATLOOK",
            "EOP:VITO:TERRASCOPE",
            "EOP:NASA:CMR"
         ]
      },
      "ceosard:specification": {
         "description": "ARD specification {ceosard:specification}",
         "title": "Specification",
         "type": "string",
         "enum": [
            "NRB",
            "POL",
            "SR",
            "ST"
         ]
      },
      "title": {
         "description": "A name given to the resource",
         "title": "Title",
         "type": "string"
      },
      "otherConstraint": {
         "description": "Other restrictions and legal prerequisites for accessing and using the resource or metadata",
         "title": "Other constraint",
         "type": "string"
      },
      "platform": {
         "description": "The platform short name",
         "title": "Platform",
         "type": "string",
         "enum": [
            "ADEOS-I",
            "ADEOS-II",
            "AEM-2",
            "ALOS",
            "ALOS-1",
            "ALOS-2",
            "AQUA",
            "Aeolus",
            "Air-based Platform",
            "Amazonia-1",
            "Aura",
            "BIROS",
            "Beijing-1",
            "BelKA",
            "Biomass",
            "CALIPSO",
            "CBERS",
            "CBERS-2",
            "CBERS-2B",
            "CBERS-4",
            "CBERS-4A",
            "CFOSAT",
            "CHAMP",
            "COSMO-SkyMed Second Generation",
            "COSMO-SkyMed",
            "CloudSat",
            "CryoSat-2",
            "DMSP 5D-1/F2",
            "DMSP 5D-1/F3",
            "DMSP 5D-1/F4",
            "DMSP 5D-2/F10",
            "DMSP 5D-2/F11",
            "DMSP 5D-2/F12",
            "DMSP 5D-2/F13",
            "DMSP 5D-2/F14",
            "DMSP 5D-2/F8",
            "DMSP 5D-3/F15",
            "DMSP 5D-3/F16",
            "DMSP 5D-3/F17",
            "DMSP 5D-3/F18",
            "DMSP 5D-3/F19",
            "EO-1",
            "ERS-1",
            "ERS-2",
            "EarthCARE",
            "Elektro-L-N1",
            "EnMAP",
            "Envisat",
            "FLEX",
            "FORMOSAT-2",
            "FSSCAT",
            "FY-3A",
            "FY-3B",
            "FY-3C",
            "FireBIRD",
            "GCOM-C1",
            "GCOM-W1",
            "GEOSAT-1",
            "GEOSAT-2",
            "GHGSat-C1",
            "GHGSat-C2",
            "GMS-1",
            "GMS-2",
            "GMS-3",
            "GMS-4",
            "GMS-5",
            "GOCE",
            "GOES",
            "GOES-1",
            "GOES-10",
            "GOES-11",
            "GOES-12",
            "GOES-13",
            "GOES-14",
            "GOES-15",
            "GOES-16",
            "GOES-19",
            "GOES-2",
            "GOES-3",
            "GOES-4",
            "GOES-5",
            "GOES-6",
            "GOES-7",
            "GOES-8",
            "GOES-9",
            "GOSAT-1",
            "GOSAT-2",
            "GOSAT-GW",
            "GPM",
            "GRACE",
            "GeoEye-1",
            "ICEYE",
            "IKONOS",
            "IKONOS-2",
            "INSAT",
            "INSAT-3D",
            "INSAT-3DR",
            "INSAT-3DS",
            "IRS-1C",
            "IRS-1D",
            "IRS-P5",
            "IRS-P6",
            "IRS-R2",
            "ISS",
            "JASON-3",
            "JERS-1",
            "JPSS-1",
            "Jason-1",
            "Jason-2",
            "KANOPUS_V1",
            "KOMPSAT-1",
            "KOMPSAT-2",
            "Kalpana-1",
            "Landsat",
            "Landsat-1",
            "Landsat-2",
            "Landsat-3",
            "Landsat-4",
            "Landsat-5",
            "Landsat-7",
            "Landsat-8",
            "Landsat-9",
            "METEOR-3M",
            "MFG",
            "MONITOR-E",
            "MOS-1A",
            "MOS-1B",
            "MSG",
            "MTSAT-1R",
            "MTSAT-2",
            "Megha-Tropiques",
            "Meteosat-10",
            "Meteosat-11",
            "Meteosat-2",
            "Meteosat-3",
            "Meteosat-4",
            "Meteosat-5",
            "Meteosat-6",
            "Meteosat-7",
            "Meteosat-8",
            "Meteosat-9",
            "Metop-A",
            "Metop-B",
            "Metop-C",
            "NISAR",
            "NOAA POES",
            "NOAA-10",
            "NOAA-11",
            "NOAA-12",
            "NOAA-14",
            "NOAA-15",
            "NOAA-16",
            "NOAA-17",
            "NOAA-18",
            "NOAA-19",
            "NOAA-2",
            "NOAA-20",
            "NOAA-3",
            "NOAA-4",
            "NOAA-5",
            "NOAA-6",
            "NOAA-7",
            "NOAA-8",
            "NOAA-9",
            "Nahla",
            "NigeriaSat-1",
            "Nimbus-4",
            "Nimbus-7",
            "ODIN",
            "OceanSat-2",
            "OceanSat-3",
            "OrbView-2",
            "PAZ",
            "PROBA-V",
            "Parasol-1",
            "PlanetScope",
            "Pleiades Neo",
            "Pleiades",
            "Pleiades-1A",
            "Pleiades-1B",
            "QUICKBIRD",
            "QuickBird-2",
            "QuikSCAT",
            "RADARSAT-1",
            "RADARSAT-2",
            "RESURS-DK1",
            "RESURS-P1",
            "RESURS-P2",
            "Radarsat",
            "RapidEye",
            "SAC-D",
            "SAOCOM-1A",
            "SAOCOM-1B",
            "SARAL",
            "SCISAT-1",
            "SMAP",
            "SMOS",
            "SMS-1",
            "SMS-2",
            "SORCE",
            "SPACE SHUTTLES",
            "SPOT 1",
            "SPOT 2",
            "SPOT 4",
            "SPOT 5",
            "SPOT",
            "SPOT-1",
            "SPOT-2",
            "SPOT-3",
            "SPOT-4",
            "SPOT-5",
            "SPOT-6",
            "SPOT-7",
            "Seasat",
            "Sentinel-1",
            "Sentinel-1A",
            "Sentinel-1B",
            "Sentinel-1C",
            "Sentinel-1D",
            "Sentinel-2",
            "Sentinel-2B",
            "Sentinel-2C",
            "Sentinel-3",
            "Sentinel-3A",
            "Sentinel-3B",
            "Sentinel-5",
            "Sentinel-5P",
            "Sentinel-6A",
            "SkySat",
            "Spire",
            "Swarm",
            "TERRA",
            "TET-1",
            "TIROS-N",
            "TOPEX/POSEIDON",
            "TRMM",
            "TanDEM-X",
            "TanSat",
            "TerraSAR-X",
            "UARS",
            "UK-DMC-1",
            "Vision-1",
            "WORLDVIEW-1",
            "WindSat",
            "WorldView-2",
            "WorldView-3",
            "WorldView-4"
         ]
      },
      "datetime": {
         "description": "Temporal interval to search",
         "title": "Datetime",
         "type": "string"
      },
      "instruments": {
         "description": "The instrument (e.g. MERIS, AATSR, ASAR, HRVIR. SAR)",
         "title": "Instrument",
         "type": "string",
         "enum": [
            "GEOTON-L1",
            "GSA",
            "MSS",
            "PSS",
            "SHMSA_SR",
            "SHMSA_VR",
            "AATSR",
            "ABI",
            "ACC",
            "ACE-FTS",
            "ACGS",
            "AIRSAFE",
            "ALADIN",
            "ALTIKA",
            "AMI/SAR",
            "AMI/Scatterometer",
            "AMSR",
            "AMSR-E",
            "AMSR2",
            "AMSR3",
            "AMSU-B",
            "ASAR",
            "ASCAT",
            "ASM",
            "ASTER",
            "ATLID",
            "ATSR-1",
            "ATSR-2",
            "AVHRR",
            "AVHRR-2",
            "AVHRR-3",
            "AVNIR",
            "AVNIR-2",
            "AwiFS",
            "BBR",
            "BGI",
            "BLACKJACK",
            "BUV",
            "C-SAR",
            "CALIOP",
            "CAPI",
            "CIRC",
            "CPR",
            "CSG-SAR",
            "CSIMBA",
            "DESIS",
            "DORIS",
            "DPR",
            "EFI",
            "EGG",
            "ETM",
            "FLORIS",
            "GERB",
            "GIS",
            "GLI",
            "GMI",
            "GOES I-M IMAGER",
            "GOES N-P IMAGER",
            "GOES-13 IMAGER",
            "GOME",
            "GOME-2",
            "GOMOS",
            "GPSR",
            "GRACE ACC",
            "GRACE INTERFEROMETER",
            "GRACE LRR",
            "GRACE SCA",
            "GRAS",
            "HALOE",
            "HIRS/2",
            "HIRS/3",
            "HIRS/4",
            "HRG",
            "HRS",
            "HRV",
            "HRVIR",
            "HSI",
            "HiRAIS",
            "HiRI",
            "HyperScout-2",
            "IASI",
            "IIR",
            "JAMI",
            "KBR",
            "LIMS",
            "LISS-3",
            "LISS-4",
            "LRR",
            "MAESTRO",
            "MERIS",
            "MESSR",
            "MGM",
            "MHS",
            "MIPAS",
            "MIRAS",
            "MODIS",
            "MSC",
            "MSI",
            "MTSAT 2 IMAGER",
            "MVIRI",
            "MWHS-1",
            "MWR",
            "NAOMI",
            "NRA",
            "OCTS",
            "OLCI",
            "OLI Instrument",
            "OLI",
            "OLI-2",
            "OLS",
            "OMI",
            "OPS",
            "OSA",
            "OSCAT",
            "OSIRIS",
            "P-SAR",
            "PALSAR",
            "PALSAR-2",
            "PAN",
            "PANMUX",
            "PAZ-SAR",
            "PNEO",
            "POAM-II",
            "POAM-III",
            "POLDER",
            "POSEIDON-2",
            "POSEIDON-3",
            "PR",
            "PRARE",
            "PRISM",
            "PlanetScope Camera",
            "RA",
            "RA-2",
            "RBV",
            "SAGE-I",
            "SAOCOM-SAR",
            "SAPHIR",
            "SAR",
            "SBUV",
            "SBUV/2",
            "SCARAB",
            "SCAT",
            "SCIAMACHY",
            "SENSE",
            "SEVIRI",
            "SGLI",
            "SIM",
            "SIRAL",
            "SLIM6",
            "SLSTR",
            "SMMR",
            "SMR",
            "SOLSTICE",
            "SRAL",
            "SSALT",
            "SSM/I",
            "SSM/T-2",
            "SSMIS",
            "SSTI",
            "STR",
            "STRATOS",
            "SWIM",
            "SeaWiFS",
            "SeaWinds",
            "SkySat Camera",
            "SpaceView-110",
            "TANSO-CAI",
            "TANSO-CAI-2",
            "TANSO-FTS",
            "TANSO-FTS-2",
            "TDX-1",
            "TIM",
            "TIROS-N",
            "TIRS",
            "TIRS-2",
            "TM",
            "TMI",
            "TOMS",
            "TROPOMI",
            "TSX-1",
            "VAS",
            "VFM",
            "VG1",
            "VG2",
            "VGT",
            "VHRR",
            "VIIRS",
            "VISSR",
            "VISSR-GMS",
            "VTIR",
            "WAF-P",
            "WFC",
            "WFI",
            "WINDSAT",
            "WPM",
            "WV110",
            "WV60",
            "X-SAR"
         ]
      },
      "ceosard:specification_version": {
         "description": "ARD specification version {ceosard:specification_version}",
         "title": "Specification_version",
         "type": "string",
         "enum": [
            "1.1",
            "5.0",
            "5.0.1"
         ]
      },
      "useLimitation": {
         "description": "A string identifying informing if the resource has usage limitations",
         "title": "Use limitation",
         "type": "string",
         "enum": [
            "FedEO",
            "Nutzungsbedingungen: Das DLR ist nicht haftbar f\u00fcr Sch\u00e4den, die sich aus der Nutzung ergeben. / Terms of use: DLR not liable for damage resulting from use.",
            "Nutzungseinschr\u00e4nkungen: DLR not liable for damage resulting from use",
            "Nutzungseinschr\u00e4nkungen: Das DLR ist nicht haftbar f\u00fcr Sch\u00e4den, die sich aus der Nutzung ergeben. / Use Limitations: DLR not liable for damage resulting from use.",
            "See Copernicus Marine Environment Monitoring Service Data commitments and licence at: http://marine.copernicus.eu/web/27-service-commitments-and-licence.php",
            "The user is entitled to use G-Portal data free of charge without any restrictions (including commercial use) except for the condition about acknowledgement of data credit as stipulated in G-portal terms of use 7.(2).Click [here](https://gportal.jaxa.jp/gpr/index/eula?lang=en) for detailed G-Portal data usage constrains.",
            "The users are entitled to use, reprocess and redistribute G-Portal data including commercial use for free except for the condition about acknowledgement of data credit as stipulated in G-Portal terms of use 7.(2). Click [here](https://gportal.jaxa.jp/gpr/index/eula?lang=en) for detailed G-Portal data usage constrains."
         ]
      },
      "offering": {
         "description": "Related service offering",
         "title": "Offering",
         "type": "string",
         "enum": [
            "download-1.0-ftp--download",
            "link-1.0-http--link",
            "link-1.0-http--partners",
            "search",
            "wcs",
            "wms"
         ]
      },
      "accessConstraint": {
         "description": "A string identifying informing acces type of  the resource",
         "title": "Access constraint",
         "type": "string"
      },
      "id": {
         "description": "Item identifier",
         "title": "Item ID",
         "type": "string"
      },
      "updated": {
         "format": "date-time",
         "description": "The date when the metadata item was last modified (i.e. updated) in the catalogue",
         "title": "Modification date",
         "type": "string"
      },
      "providers": {
         "description": "The name of the organization responsible for the resource",
         "title": "Organisation name",
         "type": "string",
         "enum": [
            "ASF",
            "Airbus Defence and Space Geo",
            "Airbus Defence and Space",
            "BIRA-IASB",
            "BKG",
            "BR/INPE",
            "Belgian Federal Science Policy Office (BELSPO)",
            "CA/NRCAN/ESS",
            "CEDA",
            "CMEMS",
            "CNES/CESBIO/Magellium",
            "CloudFerro",
            "Copernicus Land Monitoring Service (CLMS)",
            "Copernicus Land Monitoring Service",
            "DE/DLR",
            "DOC/NOAA",
            "DOC/NOAA/NESDIS/NCEI",
            "DOI/USGS",
            "DOI/USGS/EROS",
            "EC",
            "ECMWF",
            "EEA",
            "ENVEO GmbH",
            "ESA EO Catalogue",
            "ESA/ESRIN",
            "EU/C3S",
            "EUMETSAT",
            "EUMETSAT/CMSAF",
            "EUMETSAT/OSISAF",
            "European Commission's Joint Research Centre",
            "European Environment Agency (EEA)",
            "European Environment Agency",
            "FMI",
            "FMI/ENVEO",
            "FR/CNES",
            "FR/Meteo-France",
            "GeoVille GmbH",
            "German Remote Sensing Data Center (DFD), Department \"Geo-Risks and Civil Security\"",
            "IN/ISRO/MOSDAC",
            "IN/ISRO/NDC",
            "JP/JAXA/SAOC",
            "JP/JMA",
            "Japan Aerospace Exploration Agency (JAXA)",
            "Laboratoire d'Oc\u00e9anologie et de G\u00e9osciences",
            "Magellium",
            "Magellium/CESBIO",
            "Magellium/CNES",
            "NASA JPL",
            "NASA",
            "NASA/JPL (SRTM)",
            "NL/KNMI",
            "NO/MET",
            "NRSC",
            "OpenGeoHub Foundation",
            "OpenGeoHub",
            "OpenTopography",
            "ROSCOSMOS",
            "SatOC",
            "Terrestrial Ecosystem Research Network",
            "UC-LONDON/CPOM",
            "UK/CCLRC/RAL",
            "USGS",
            "VITO",
            "ZENODO"
         ]
      },
      "classifiedAs": {
         "format": "uri",
         "description": "Keyword URI appearing in metadata record",
         "title": "Classified as",
         "type": "string"
      }
   },
   "$id": "https://fedeo.ceos.org/collections/queryables"
}

Additional search parameters beyond the STAC search parameters can be used to filter granule search results. The available parameters for granule search are advertised for each individual collection and represented as a JSON Schema.

For example, the collection LANDSAT.TM.GTC, advertises its search parameters at https://fedeo.ceos.org/collections/LANDSAT.TM.GTC/queryables in JSON Schema format. Therefore, the following parameters can be used within a filter expression.

Get filter parameters for granule search

curl -X GET -G https://fedeo.ceos.org/collections/LANDSAT.TM.GTC/queryables
key type format
10 datetime string -
14 eo:cloud_cover number -
16 eopf:instrument_mode string -
2 externalId string -
21 frame string -
15 id string -
1 illuminationZenithAngle number -
11 instruments string -
6 platform string -
7 platformSerialIdentifier string -
20 product:acquisition_type string -
3 product:type string -
13 productionStatus string -
4 published string -
9 q string -
18 sat:absolute_orbit integer -
12 sat:orbit_state string -
17 track string -
19 updated string date-time
5 version string -
0 view:sun_azimuth number -
8 view:sun_elevation number -
{
   "$schema": "https://json-schema.org/draft/2019-09/schema",
   "description": "Queryable names for the STAC API Item Search filter.",
   "type": "object",
   "title": "Queryables for LANDSAT.TM.GTC collection",
   "properties": {
      "view:sun_azimuth": {
         "description": "Mean illumination/solar azimuth angle given in degrees. (i.e. uom='deg')",
         "maximum": 360,
         "title": "Illumination azimuth angle",
         "type": "number",
         "minimum": 0
      },
      "illuminationZenithAngle": {
         "description": "Mean illumination/solar zenith angle given in degrees",
         "title": "Illumination zenith angle",
         "type": "number"
      },
      "externalId": {
         "description": "Search by external identifier",
         "title": "External identifiers",
         "type": "string"
      },
      "product:type": {
         "description": "A string identifying the entry type",
         "title": "Product type",
         "type": "string",
         "enum": [
            "TM__GEO_1P",
            "TM__GTC_1P"
         ]
      },
      "published": {
         "description": "The time when the result became available (e.g. if postprocessing or laboratory analysis is required, it might be different to the phenomenonTime). dateTime in ISO 8601 format (CCYY-MM- DDThh:mm[:ss[.cc]]Z)",
         "title": "Availability time",
         "type": "string"
      },
      "version": {
         "description": "The version of the product",
         "title": "Product version",
         "type": "string",
         "enum": [
            "sla"
         ]
      },
      "platform": {
         "description": "The platform short name",
         "title": "Platform",
         "type": "string",
         "enum": [
            "Landsat"
         ]
      },
      "platformSerialIdentifier": {
         "description": "The platform serial identifier",
         "title": "Platform serial identifier",
         "type": "string",
         "enum": [
            "5"
         ]
      },
      "view:sun_elevation": {
         "description": "Mean illumination/solar elevation angle given in degrees. (i.e. uom='deg')",
         "maximum": 180,
         "title": "Illumination elevation angle",
         "type": "number",
         "minimum": 0
      },
      "q": {
         "description": "Free text search term",
         "title": "API Records Query",
         "type": "string"
      },
      "datetime": {
         "description": "Temporal interval to search",
         "title": "Datetime",
         "type": "string"
      },
      "instruments": {
         "description": "The instrument (e.g. MERIS, AATSR, ASAR, HRVIR. SAR)",
         "title": "Instrument",
         "type": "string",
         "enum": [
            "TM"
         ]
      },
      "sat:orbit_state": {
         "description": "The acquisition orbit direction",
         "title": "Orbit direction",
         "type": "string",
         "enum": [
            "ASCENDING",
            "DESCENDING"
         ]
      },
      "productionStatus": {
         "description": "The status of the entry",
         "title": "Production status",
         "type": "string",
         "enum": [
            "ARCHIVED"
         ]
      },
      "eo:cloud_cover": {
         "description": "The cloud cover % (0-100)",
         "maximum": 100,
         "title": "Cloud cover",
         "type": "number",
         "minimum": 0
      },
      "id": {
         "description": "Item identifier",
         "title": "Item ID",
         "type": "string"
      },
      "eopf:instrument_mode": {
         "description": "The sensor mode",
         "title": "Sensor mode",
         "type": "string",
         "enum": [
            "IM"
         ]
      },
      "track": {
         "description": "The orbit track",
         "title": "Track",
         "type": "string"
      },
      "sat:absolute_orbit": {
         "description": "The acquisition orbit number",
         "title": "Orbit number",
         "type": "integer"
      },
      "updated": {
         "format": "date-time",
         "description": "The date when the metadata item was last modified (i.e. updated) in the catalogue",
         "title": "Modification date",
         "type": "string"
      },
      "product:acquisition_type": {
         "description": "Used to distinguish at a high level the appropriateness of the acquisition for \"general\" use, whether the product is a nominal acquisition, special calibration product or other",
         "title": "Acquisition type",
         "type": "string",
         "enum": [
            "NOMINAL"
         ]
      },
      "frame": {
         "description": "The orbit frame",
         "title": "Frame",
         "type": "string"
      }
   },
   "$id": "https://fedeo.ceos.org/collections/LANDSAT.TM.GTC/queryables"
}

CQL filter expressions#

The STAC interface supports the filter parameter and filter expressions in cql-text filter format at the following endpoints:

  • /collections

  • /collections/{collection-id}/items

  • /search

At the /search endpoint, it is required that a single collection can be determined from the collections or ids parameter. The queryables allowed in the filter expression are then identical to the ones at the corresponding /collections/{collection-id}/items/queryables endpoint. filter cannot be used at the /search endpoint when collections contains 0 or more than 1 collection identifiers.

Filter expressions are to be expressed with the Text encoding of the Basic Common Query Language (Basic CQL2-Text) [RD22]. See the OGC API Features “Conformance class Filter” section for CQL2 examples.

Example: 8.1

CQL Filter for collection search with logical operators (and, or).

filter = "platform = 'EarthCARE' and ( instrument = 'MSI' or instrument = 'CPR' ) and organisationName = 'ESA/ESRIN'"

results = api.collection_search(   
    filter = filter
)
curl -X GET -G https://fedeo.ceos.org/collections \
	--data-urlencode "filter=platform = 'EarthCARE' and ( instrument = 'MSI' or instrument = 'CPR' ) and organisationName = 'ESA/ESRIN'" \
	--data-urlencode "filter-lang=cql2-text"
data = results.collection_list_as_dict()
df = pd.json_normalize(data, record_path=['collections'])
df[['id', 'title']]
id title
0 EarthCAREL2Validated_MAAP EarthCARE ESA L2 Products
1 EarthCAREL2InstChecked_MAAP EarthCARE ESA L2 Products for Cal/Val Users
2 EarthCAREL1Validated_MAAP EarthCARE L1 Products
3 EarthCAREL1InstChecked_MAAP EarthCARE L1 Products for Cal/Val Users
4 EarthCAREL2Products_MAAP EarthCARE ESA L2 Products for the Commissionin...

Example: 8.2

CQL filter for granule search with comparison operators. Search granules with cloudCover between 10 and 15%.

from pystac_client import Client 
api = Client.open(URL_LANDING_PAGE)  

results = api.search(
    method = 'GET',   
    max_items = 30,
    collections = [COLLECTION_ID3_CLOUDS],
    filter = "eo:cloud_cover >= 10 and eo:cloud_cover < 15"   
)
curl -X GET -G https://fedeo.ceos.org/search \
	--data-urlencode "collections=IKONOS.ESA.archive" \
	--data-urlencode "filter=eo:cloud_cover >= 10 and eo:cloud_cover < 15" \
	--data-urlencode "filter-lang=cql2-text"
print(f"{results.matched()} items found.")
26 items found.
# Display cloud-cover values as histogram to show that range is taken into account
stac_json = results.item_collection_as_dict()
gdf = gpd.GeoDataFrame.from_features(stac_json)
try:
  _ = gdf[['title','eo:cloud_cover']].hist()
except:
  print("eo:cloud_cover information is not available.")
../_images/5a5fffde257b0b31bba52d3bdb5839a0fb2a6ccc6ae10b291823eb0a8eb3bc28.png

Example: 8.3

CQL filter with LIKE operator.

from pystac_client import Client
api = Client.open(URL_LANDING_PAGE)

results = api.collection_search(
    filter = "title LIKE '%Bio%'",
    max_collections=10
)
curl_str = curl_command(results.url_with_parameters())
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/collections \
	--data-urlencode "filter=title LIKE '%Bio%'" \
	--data-urlencode "filter-lang=cql2-text"
print(f"{results.matched()} collections found.")
data = results.collection_list_as_dict()
df = pd.json_normalize(data, record_path=['collections'])
df[['id', 'title']]
114 collections found.
id title
0 OCEANCOLOUR_MED_BGC_HR_L4_NRT_009_211 Mediterranean Sea, Bio-Geo-Chemical, L4, month...
1 OCEANCOLOUR_MED_BGC_L3_NRT_009_141 Mediterranean Sea, Bio-Geo-Chemical, L3, daily...
2 OCEANCOLOUR_BLK_BGC_L4_NRT_009_152 Black Sea, Bio-Geo-Chemical, L4, monthly means...
3 OCEANCOLOUR_NWS_BGC_HR_L4_NRT_009_209 North West Shelf Region, Bio-Geo-Chemical, L4,...
4 OCEANCOLOUR_BLK_BGC_HR_L4_NRT_009_212 Black Sea, Bio-Geo-Chemical, L4, monthly means...
5 OCEANCOLOUR_BAL_BGC_HR_L4_NRT_009_208 Baltic Sea, Bio-Geo-Chemical, L4, monthly mean...
6 GLOBAL_ANALYSISFORECAST_BGC_001_028 Global Ocean Biogeochemistry Analysis and Fore...
7 OCEANCOLOUR_MED_BGC_HR_L3_NRT_009_205 Mediterranean Sea, Bio-Geo-Chemical, L3, daily...
8 OCEANCOLOUR_ATL_BGC_L4_MY_009_118 Atlantic Ocean Colour (Copernicus-GlobColour),...
9 NWSHELF_ANALYSISFORECAST_BGC_004_002 Atlantic - European North West Shelf - Ocean B...

Example: 8.4

CQL filter with IN operator.

from pystac_client import Client
api = Client.open(URL_LANDING_PAGE)

results = api.collection_search(
    filter = "platform IN ('Biomass','EarthCARE')",
    max_collections=10
)
curl_str = curl_command(results.url_with_parameters())
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/collections \
	--data-urlencode "filter=platform IN ('Biomass','EarthCARE')" \
	--data-urlencode "filter-lang=cql2-text"
print(f"{results.matched()} collections found.")
data = results.collection_list_as_dict()
df = pd.json_normalize(data, record_path=['collections'])
df[['id', 'summaries.platform']]
47 collections found.
id summaries.platform
0 BiomassLevel0IOC [Biomass]
1 BiomassAuxIOC [Biomass]
2 BiomassLevel2bIOC [Biomass]
3 BiomassLevel2b [Biomass]
4 EarthCAREAuxiliary_MAAP [EarthCARE]
5 EarthCAREOrbitData_MAAP [EarthCARE]
6 BiomassLevel1a [Biomass]
7 BiomassLevel1c [Biomass]
8 BiomassAux [Biomass]
9 JAXAL2Validated_MAAP [EarthCARE]

Example: 8.5

CQL filter with BETWEEN operator.

from pystac_client import Client
api = Client.open(URL_LANDING_PAGE)

results = api.search(
    method = 'POST',
    max_items=50,
    collections=[COLLECTION_ID1],
    filter="sat:absolute_orbit BETWEEN 1200 AND 2000"
)
curl_str = curl_command(results.url_with_parameters())
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/search \
	--data-urlencode "collections=LANDSAT.TM.GTC" \
	--data-urlencode "filter=sat:absolute_orbit BETWEEN 1200 AND 2000" \
	--data-urlencode "filter-lang=cql2-text"
print(f"{results.matched()} items found.")
1781 items found.
# Display cloud-cover values as histogram to show that range is taken into account
stac_json = results.item_collection_as_dict()
gdf = gpd.GeoDataFrame.from_features(stac_json)
try:
  _ = gdf[['title','sat:absolute_orbit']].hist()
except:
  print("sat:absolute_orbit information is not available.")
../_images/7f6e47f2b1902c9e9e4291bc3322c00cfd73a005f373a30fda87dd8a5513cdf4.png

Example: 8.6

Unsupported filter returns an HTTP error. E.g. collection search with advanced temporal function.

URL = URL_LANDING_PAGE + "collections"+ "?filter=T_INTERSECTS(modificationDate , INTERVAL('2022-01-01T00:00:00Z', '2024-11-01T00:00:00Z'))"
curl_str = curl_command(URL)
md("```shell\n" + curl_str + "\n```\n")
response = requests.get(URL)
print("HTTP Code: ",response.status_code)
print("HTTP Body: ",response.content)
HTTP Code:  500
HTTP Body:  b'<!doctype html><html lang="en"><head><title>HTTP Status 500 \xe2\x80\x93 Internal Server Error</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 500 \xe2\x80\x93 Internal Server Error</h1></body></html>'

CQL2 JSON filter expressions#

The STAC interface supports the filter parameter and filter expressions in cql2-json filter format at the following endpoints:

  • /collections

  • /collections/{collection-id}/items

  • /search

At the /search endpoint, it is required that at least one collection can be determined from the collections or ids parameter. The queryables allowed in the filter expression are then identical to the ones at the corresponding /collections/{collection-id}/items/queryables endpoint.

Filter expressions are to be expressed with the JSON encoding of the Basic Common Query Language (Basic CQL2-Text) [RD22].

Example: 9.1

CQL JSON Filter for collection search with logical operators (and, or) with cql2-json filter-lang.

_filter = {
    "op": "and",
    "args": [
        {
            "op": "=","args": [
                { "property": "platform" },
                "EarthCARE"
            ]
        },
        {
            "op": "or","args": [
                {"op": "=","args": [
                    { "property": "instrument" },
                    "MSI"
                ]
            },
            {"op": "=","args": [
                { "property": "instrument" },
                "CPR"
                ]
            }
            ]
        },
        {
            "op": "=","args": [
                { "property": "organisationName" },
                "ESA/ESRIN"
            ]
        }
    ]
}
results = api.collection_search(
    # api does not support a 'dict' as parameter ?
    max_collections=10,
    filter = json.dumps(_filter),
    filter_lang = "cql2-json"
)
curl_str = curl_command(results.url_with_parameters())
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/collections \
	--data-urlencode "filter={"op": "and", "args": [{"op": "=", "args": [{"property": "platform"}, "EarthCARE"]}, {"op": "or", "args": [{"op": "=", "args": [{"property": "instrument"}, "MSI"]}, {"op": "=", "args": [{"property": "instrument"}, "CPR"]}]}, {"op": "=", "args": [{"property": "organisationName"}, "ESA/ESRIN"]}]}" \
	--data-urlencode "filter-lang=cql2-json"
data = results.collection_list_as_dict()
df = pd.json_normalize(data, record_path=['collections'])
df[['id', 'summaries.platform','summaries.instruments']]
id summaries.platform summaries.instruments
0 EarthCAREL2Validated_MAAP [EarthCARE] [ATLID]
1 EarthCAREL2InstChecked_MAAP [EarthCARE] [ATLID]
2 EarthCAREL1Validated_MAAP [EarthCARE] [ATLID]
3 EarthCAREL1InstChecked_MAAP [EarthCARE] [ATLID]
4 EarthCAREL2Products_MAAP [EarthCARE] [ATLID]

Example: 9.2

CQL filter with BETWEEN operator.

filter_dict = {
    "op":"between",
    "args":[
        {"property":"sat:absolute_orbit"},
        5000,
        5010
    ]
}
results = api.search(
    method = 'POST',
    max_items = 30,
    collections = [COLLECTION_ID1],
    filter = filter_dict,
    filter_lang = "cql2-json"
)
curl_str = curl_command(results.url_with_parameters())
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/search \
	--data-urlencode "collections=LANDSAT.TM.GTC" \
	--data-urlencode "filter=op" \
	--data-urlencode "filter=args" \
	--data-urlencode "filter-lang=cql2-json"
print(f"{results.matched()} items found.")
66 items found.
# Display sat:absolute_orbit values as histogram to show that range is taken into account
stac_json = results.item_collection_as_dict()
gdf = gpd.GeoDataFrame.from_features(stac_json)
try:
  _ = gdf[['title','sat:absolute_orbit']].hist()
except:
  print("sat:absolute_orbit information is not available.")
../_images/c32fc3dc33c3f9169732e8255c3dd486a668516183f4a25707998281895d1ae2.png

Example: 9.3

CQL filter for granule search with comparison operators using cql2-json filterLang. Search granules with orbit number (sat:absolute_orbit) between 5000 and 5010.

from pystac_client import Client
api = Client.open(URL_LANDING_PAGE)

results = api.search(
    method = 'GET',
    max_items = 30,
    collections = [COLLECTION_ID1],
    filter = '{"op": "and","args": [{"op": ">=","args":[{"property":"sat:absolute_orbit"},5000]},{"op":"<","args":[{"property":"sat:absolute_orbit"},5010]}]}',
    filter_lang="cql2-json"
)
curl_str = curl_command(results.url_with_parameters())
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/search \
	--data-urlencode "collections=LANDSAT.TM.GTC" \
	--data-urlencode "filter={"op": "and","args": [{"op": ">=","args":[{"property":"sat:absolute_orbit"},5000]},{"op":"<","args":[{"property":"sat:absolute_orbit"},5010]}]}" \
	--data-urlencode "filter-lang=cql2-json"
print(f"{results.matched()} items found.")
66 items found.
# Display sat:absolute_orbit values as histogram to show that range is taken into account
stac_json = results.item_collection_as_dict()
gdf = gpd.GeoDataFrame.from_features(stac_json)
try:
    _ = gdf[['title','sat:absolute_orbit']].hist()
except:
    print("sat:absolute_orbit information is not available.")
../_images/c32fc3dc33c3f9169732e8255c3dd486a668516183f4a25707998281895d1ae2.png

Example: 9.4

CQL JSON filter for granule search with comparison operators using cql2-json filterLang on the POST endpoint. Search granules with orbit number (sat:absolute_orbit) between 5000 and 5010.

filter_dict = {
    "op": "and",
    "args": [
        {
            "op": ">=",
            "args": [
                {"property": "sat:absolute_orbit"},
                5000
            ]
        },
        {
            "op": "<",
            "args": [
                {"property": "sat:absolute_orbit"},
                5010
            ]
        }
    ]
}
results = api.search(
    method='POST',
    max_items=30,
    collections=[COLLECTION_ID1],    
    filter= filter_dict,
    filter_lang="cql2-json"
)
# Display cloud-cover values as histogram to show that range is taken into account
stac_json = results.item_collection_as_dict()
gdf = gpd.GeoDataFrame.from_features(stac_json)
try:
    _ = gdf[['title','sat:absolute_orbit']].hist()
except:
    print("sat:absolute_orbit information is not available.")
../_images/c32fc3dc33c3f9169732e8255c3dd486a668516183f4a25707998281895d1ae2.png

Sorting results#

The STAC interface supports the sortby parameter at the following endpoints:

  • /collections

  • /collections/{collection-id}/items

  • /search

At the /search endpoint, it is required that a single collection can be determined from the collections parameter. The sortables allowed in the filter expression are then identical to the ones at the corresponding /collections/{collection-id}/items endpoint. sortby cannot be used at the /search endpoint when collections contains 0 or more than 1 collection identifiers.

Sorting of search results is available for collection and granule searches, but the available criteria differ per resource type. The STAC API Sort Extension [RD26] defines the syntax to be used. The sorting parameter has to be expressed as the corresponding STAC property name. A minus sign (-) before the property name indicates a descending order. If the property used for sorting is an array with more than one element, the result may be unexpected. A 400 Bad Request status code is returned when the sort criteria used are not supported.

Collections (at /collections)

[properties.]id

[properties.]instruments

[properties.]platform

[properties.]processing:level

[properties.]providers

[properties.]sci:doi

[properties.]title

[properties.]updated

The available sort criteria for items (granules) depend also on the sensortype, e.g. optical, radar, etc. and whether the remote catalogue hosting the granule metadata supports sorting as well.

Items (granules at /items or /search)

[properties.]created

[properties.]datetime

[properties.]end_datetime

[properties.]eo:cloud_cover

[properties.]eo:snow_cover

[properties.]eofeos:global_coverage_id

[properties.]eofeos:is_coregistration_primary

[properties.]eofeos:major_cycle_id

[properties.]eofeos:mission_phase

[properties.]eofeos:orbit_drift_flag

[properties.]eofeos:repeat_cycle_id

[properties.]eofeos:stack_id

[properties.]eopf:datatake_id

[properties.]eopf:instrument_mode

[properties.]id

[properties.]instruments

[properties.]platform

[properties.]processing:datetime

[properties.]processing:facility

[properties.]processing:level

[properties.]processing:software

[properties.]product:acquisition_type

[properties.]product:type

[properties.]sar:observation_direction

[properties.]sar:polarizations

[properties.]sat:absolute_orbit

[properties.]sat:orbit_state

[properties.]sci:doi

[properties.]start_datetime

[properties.]updated

[properties.]version

[properties.]view:sun_azimuth

[properties.]view:sun_elevation

The sort criteria can optionally be prefixed by “properties.” for compatibility with the STACBrowser software.

The /collections and /items endpoints support only the GET method. At the /search endpoint, both the GET and POST method are supported.

Example: 10.1

Sort collection search results by platform (ascending) and instrument (descending).

results = api.collection_search(    
    filter="parentIdentifier='EOP:ESA:EARTH-ONLINE' and organisationName='ESA/ESRIN'",
    limit=10,
    max_collections=10,
    sortby="platform,-instruments"
)

print(f"{results.matched()} collections found.")
163 collections found.
curl_str = curl_command(results.url_with_parameters())
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/collections \
	--data-urlencode "limit=10" \
	--data-urlencode "filter=parentIdentifier='EOP:ESA:EARTH-ONLINE' and organisationName='ESA/ESRIN'" \
	--data-urlencode "filter-lang=cql2-text" \
	--data-urlencode "sortby=+platform,-instruments"
data = results.collection_list_as_dict()
df = pd.json_normalize(data, record_path=['collections'])
df[['id','title','summaries.platform','summaries.instruments']]
id title summaries.platform summaries.instruments
0 WorldViewLegionfullarchiveandtasking0 WorldView Legion full archive and tasking [WorldView Legion] [WorldView Legion Camera]
1 alos.prism.l1c.european.coverage.cloud.free ALOS PRISM L1C European Coverage Cloud Free [ALOS-1] [PRISM]
2 alos-prism-l1c ALOS PRISM L1C [ALOS-1] [PRISM]
3 ALOS_PRISM_L1B Alos PRISM L1B [ALOS-1] [PRISM]
4 ALOS.PALSAR.FBS.FBD.PLR.products ALOS PALSAR products [ALOS-1] [PALSAR]
5 ALOSIPY ALOS PALSAR International Polar Year Antarctica [ALOS-1] [PALSAR]
6 ALOS ALOS African Coverage ESA archive [ALOS-1] [AVNIR-2]
7 ALOS.AVNIR-2.L1C ALOS AVNIR-2 L1C [ALOS-1] [AVNIR-2]
8 TropForest TropForest- ALOS, GEOSAT-1 & KOMPSAT-2 optical... [ALOS-1, GEOSAT-1, KOMPSAT-2] [AVNIR-2, SLIM6, MSC]
9 ADAM.Surface.Reflectance.Database ADAM Surface Reflectance Database v4.0 [TERRA, AQUA, QuikSCAT, OrbView-2] [MODIS, MODIS, SeaWinds, SeaWiFS]

Example: 10.2

Sort collection search results by instrument (descending).

results = api.collection_search(    
    filter="platform='EarthCARE'",
    limit=10,
    max_collections=10,
    sortby="-instruments"
)

print(f"{results.matched()} collections found.")
19 collections found.
curl_str = curl_command(results.url_with_parameters())
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/collections \
	--data-urlencode "limit=10" \
	--data-urlencode "filter=platform='EarthCARE'" \
	--data-urlencode "filter-lang=cql2-text" \
	--data-urlencode "sortby=-instruments"
data = results.collection_list_as_dict()
df = pd.json_normalize(data, record_path=['collections'])
df[['id','summaries.platform','summaries.instruments']]
id summaries.platform summaries.instruments
0 EarthCARE_MSI_L2A_MSI_CLP [EarthCARE] [MSI]
1 EarthCARE_CPR_L2A_CPR_CLP [EarthCARE] [CPR]
2 EarthCARE_CPR_L2A_CPR_ECO [EarthCARE] [CPR]
3 EarthCARE_CPR_L1B_CPR_NOM [EarthCARE] [CPR]
4 EarthCARE_L2B_ACM_CLP [EarthCARE] [MSI]
5 EarthCARE_L2B_AC__CLP [EarthCARE] [ATLID]
6 EarthCARE_L2B_ALL_RAD [EarthCARE] [BBR]
7 EarthCAREL2Validated_MAAP [EarthCARE] [ATLID]
8 EarthCAREL2InstChecked_MAAP [EarthCARE] [ATLID]
9 EarthCAREL1Validated_MAAP [EarthCARE] [ATLID]

Example: 10.3

Sort collection search results by modification date (ascending).

results = api.collection_search(    
    filter="parentIdentifier='EOP:ESA:EARTH-ONLINE'",
    limit=10,
    max_collections=10,
    sortby="properties.updated"
)

print(f"{results.matched()} collections found.")
163 collections found.
curl_str = curl_command(results.url_with_parameters())
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/collections \
	--data-urlencode "limit=10" \
	--data-urlencode "filter=parentIdentifier='EOP:ESA:EARTH-ONLINE'" \
	--data-urlencode "filter-lang=cql2-text" \
	--data-urlencode "sortby=+properties.updated"
data = results.collection_list_as_dict()
df = pd.json_normalize(data, record_path=['collections'])
df[['title','updated']]
title updated
0 Ocean and Coastal Topography Thematic Data Pro... 2024-10-29T15:34:08Z
1 Atmospheric Thematic Data Product [MWR_TDPATM] 2024-10-29T15:45:22Z
2 Inland Waters Thematic Data Product [ALT_TDP_IW] 2024-10-29T15:45:51Z
3 Land Ice Thematic Data Product [ALT_TDP_LI] 2024-10-29T15:46:10Z
4 Fundamental Data Records for Radiometry [MWR_F... 2024-10-29T15:48:43Z
5 WorldView-3 full archive and tasking 2026-02-06T14:34:30Z
6 WorldView-2 full archive and tasking 2026-02-06T14:37:32Z
7 WorldView-4 full archive 2026-02-06T14:45:25Z
8 SkySat Full Archive and New Tasking 2026-02-09T11:17:58Z
9 SPOT-6 to 7 full archive and tasking 2026-02-09T11:24:51Z

Example: 10.4

Sort collection search results by title (ascending).

results = api.collection_search(    
    filter="parentIdentifier='EOP:ESA:EARTH-ONLINE'",
    limit=10,
    max_collections=20,
    sortby="properties.title"
)

print(f"{results.matched()} collections found.")
163 collections found.
curl_str = curl_command(results.url_with_parameters())
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/collections \
	--data-urlencode "limit=10" \
	--data-urlencode "filter=parentIdentifier='EOP:ESA:EARTH-ONLINE'" \
	--data-urlencode "filter-lang=cql2-text" \
	--data-urlencode "sortby=+properties.title"
data = results.collection_list_as_dict()
df = pd.json_normalize(data, record_path=['collections'])
df[['id','title']]
id title
0 ADAM.Surface.Reflectance.Database ADAM Surface Reflectance Database v4.0
1 ALOS ALOS African Coverage ESA archive
2 ALOS.AVNIR-2.L1C ALOS AVNIR-2 L1C
3 ALOSIPY ALOS PALSAR International Polar Year Antarctica
4 ALOS.PALSAR.FBS.FBD.PLR.products ALOS PALSAR products
5 ALOS_PRISM_L1B Alos PRISM L1B
6 alos-prism-l1c ALOS PRISM L1C
7 alos.prism.l1c.european.coverage.cloud.free ALOS PRISM L1C European Coverage Cloud Free
8 TDPforAtmosphere Atmospheric Thematic Data Product [MWR_TDPATM]
9 NASA_OMI Aura OMI complete NASA dataset
10 AVHRRLocalAreaCoverageImagery10 AVHRR Level-1B/1C Local Area Coverage Imagery
11 CartoSat-1.archive.and.Euro-Maps.3D.Digital.Su... CartoSat-1 archive and Euro-Maps 3D Digital Su...
12 COSMO-SkyMed.full.archive.and.tasking COSMO-SkyMed full archive and tasking
13 EnvisatAATSRL1BBrightnessTemperatureRadianceAT... Envisat AATSR L1B Brightness Temperature/Radia...
14 ASA_AP__0P_Scenes Envisat ASAR AP Co- and Cross-polar L0 [ASA_AP...
15 ENVISAT.ASA.APM_1P Envisat ASAR AP Medium Resolution L1 [ASA_APM_1P]
16 ENVISAT.ASA.APP_1P Envisat ASAR AP Precision L1 [ASA_APP_1P]
17 ENVISAT.ASA.APS_1P Envisat ASAR AP Single-Look Complex L1 [ASA_AP...
18 ENVISAT.ASA.GM1_1P Envisat ASAR Global Monitoring L1 [ASA_GM1_1P]
19 ENVISAT.ASA.IM__0P Envisat ASAR IM L0 [ASA_IM__0P]

Example: 10.5

Sort item search results by orbit number (ascending) and id (ascending) at /items endpoint.

results = api.search(        
    collections=[COLLECTION_ID1],
    max_items=10,
    limit=10,
    sortby="sat:absolute_orbit,id"
)

print(f"{results.matched()} item found.")
776422 item found.
curl_str = curl_command(results.url_with_parameters())
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/search \
	--data-urlencode "limit=10" \
	--data-urlencode "collections=LANDSAT.TM.GTC" \
	--data-urlencode "sortby=+sat:absolute_orbit,+id"
data = results.item_collection_as_dict()
df = pd.json_normalize(data, record_path=['features'])
df[['id', 'properties.sat:absolute_orbit']]
id properties.sat:absolute_orbit
0 LS05_RFUI_TM__GTC_1P_19840406T074459_19840406T... 522
1 LS05_RFUI_TM__GTC_1P_19840406T074523_19840406T... 522
2 LS05_RFUI_TM__GTC_1P_19840406T074547_19840406T... 522
3 LS05_RFUI_TM__GTC_1P_19840406T091530_19840406T... 523
4 LS05_RFUI_TM__GTC_1P_19840406T091554_19840406T... 523
5 LS05_RFUI_TM__GTC_1P_19840406T091730_19840406T... 523
6 LS05_RFUI_TM__GTC_1P_19840406T091841_19840406T... 523
7 LS05_RFUI_TM__GTC_1P_19840406T091929_19840406T... 523
8 LS05_RFUI_TM__GTC_1P_19840406T092017_19840406T... 523
9 LS05_RFUI_TM__GTC_1P_19840406T092041_19840406T... 523

Example: 10.6

Sort item search results (granules) by start_datetime (descending) at /search endpoint (GET).

results = api.search(    
    method = 'GET',         
    collections=[COLLECTION_ID1],
    max_items=10,
    limit=10,
    sortby="-start_datetime"
)

print(f"{results.matched()} item found.")
776422 item found.
curl_str = curl_command(results.url_with_parameters())
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/search \
	--data-urlencode "limit=10" \
	--data-urlencode "collections=LANDSAT.TM.GTC" \
	--data-urlencode "sortby=-start_datetime"
data = results.item_collection_as_dict()
df = pd.json_normalize(data, record_path=['features'])
df[['id', 'properties.start_datetime']]
id properties.start_datetime
0 LS05_RMTI_TM__GTC_1P_20111116T100218_20111116T... 2011-11-16T10:02:18Z
1 LS05_RMTI_TM__GTC_1P_20111116T100154_20111116T... 2011-11-16T10:01:54Z
2 LS05_RMTI_TM__GTC_1P_20111116T100130_20111116T... 2011-11-16T10:01:30Z
3 LS05_RMTI_TM__GTC_1P_20111116T100106_20111116T... 2011-11-16T10:01:06Z
4 LS05_RMTI_TM__GTC_1P_20111116T100042_20111116T... 2011-11-16T10:00:42Z
5 LS05_RMTI_TM__GTC_1P_20111116T100018_20111116T... 2011-11-16T10:00:18Z
6 LS05_RMTI_TM__GTC_1P_20111116T095954_20111116T... 2011-11-16T09:59:54Z
7 LS05_RMTI_TM__GTC_1P_20111116T095930_20111116T... 2011-11-16T09:59:30Z
8 LS05_RMTI_TM__GTC_1P_20111116T095907_20111116T... 2011-11-16T09:59:07Z
9 LS05_RMTI_TM__GTC_1P_20111116T095843_20111116T... 2011-11-16T09:58:43Z

Example: 10.7

Sort item search results by start_datetime (descending) at /items endpoint.

URL = URL_LANDING_PAGE + "collections/"+ COLLECTION_ID1 + "/items" \
    + "?sortby=-start_datetime"
curl_str = curl_command(URL)
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/collections/LANDSAT.TM.GTC/items \
	--data-urlencode "sortby=-start_datetime"
response = requests.get(URL)
data = json.loads(response.text)
df = pd.json_normalize(data, record_path=['features'])
df[['id', 'properties.start_datetime']]
id properties.start_datetime
0 LS05_RMTI_TM__GTC_1P_20111116T100218_20111116T... 2011-11-16T10:02:18Z
1 LS05_RMTI_TM__GTC_1P_20111116T100154_20111116T... 2011-11-16T10:01:54Z
2 LS05_RMTI_TM__GTC_1P_20111116T100130_20111116T... 2011-11-16T10:01:30Z
3 LS05_RMTI_TM__GTC_1P_20111116T100106_20111116T... 2011-11-16T10:01:06Z
4 LS05_RMTI_TM__GTC_1P_20111116T100042_20111116T... 2011-11-16T10:00:42Z
5 LS05_RMTI_TM__GTC_1P_20111116T100018_20111116T... 2011-11-16T10:00:18Z
6 LS05_RMTI_TM__GTC_1P_20111116T095954_20111116T... 2011-11-16T09:59:54Z
7 LS05_RMTI_TM__GTC_1P_20111116T095930_20111116T... 2011-11-16T09:59:30Z
8 LS05_RMTI_TM__GTC_1P_20111116T095907_20111116T... 2011-11-16T09:59:07Z
9 LS05_RMTI_TM__GTC_1P_20111116T095843_20111116T... 2011-11-16T09:58:43Z

Example: 10.8

Sort item search results by cloud cover (ascending) and id (ascending) at /items endpoint.

URL = URL_LANDING_PAGE + "collections/"+ COLLECTION_ID1 + "/items" \
    + "?datetime=1998-08-01T00:00:00/1998-08-01T07:59:59" \
    + "&sortby=eo:cloud_cover,id"
curl_str = curl_command(URL)
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/collections/LANDSAT.TM.GTC/items \
	--data-urlencode "datetime=1998-08-01T00:00:00/1998-08-01T07:59:59" \
	--data-urlencode "sortby=eo:cloud_cover,id"
response = requests.get(URL)
data = json.loads(response.text)
df = pd.json_normalize(data, record_path=['features'])
df[['id', 'properties.eo:cloud_cover', 'properties.datetime']]
id properties.eo:cloud_cover properties.datetime
0 LS05_RKSE_TM__GTC_1P_19980801T061607_19980801T... 0 1998-08-01T06:16:07Z
1 LS05_RKSE_TM__GTC_1P_19980801T061743_19980801T... 0 1998-08-01T06:17:43Z
2 LS05_RKSE_TM__GTC_1P_19980801T062053_19980801T... 1 1998-08-01T06:20:53Z
3 LS05_RKSE_TM__GTC_1P_19980801T062253_19980801T... 1 1998-08-01T06:22:53Z
4 LS05_RKSE_TM__GTC_1P_19980801T062117_19980801T... 2 1998-08-01T06:21:17Z
5 LS05_RKSE_TM__GTC_1P_19980801T061631_19980801T... 3 1998-08-01T06:16:31Z
6 LS05_RKSE_TM__GTC_1P_19980801T062141_19980801T... 3 1998-08-01T06:21:41Z
7 LS05_RKSE_TM__GTC_1P_19980801T075659_19980801T... 3 1998-08-01T07:56:59Z
8 LS05_RKSE_TM__GTC_1P_19980801T062030_19980801T... 4 1998-08-01T06:20:30Z
9 LS05_RKSE_TM__GTC_1P_19980801T061543_19980801T... 5 1998-08-01T06:15:43Z

Control properties returned#

The STAC interface supports the fields parameter at the following endpoints:

  • /collections

  • /collections/{collection-id}/items

  • /search

fields = '-geometry,-properties,-links,-assets'
URL = URL_LANDING_PAGE + "collections/TropForest/items" + "?fields=" + fields
curl_str = curl_command(URL)
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/collections/TropForest/items \
	--data-urlencode "fields=-geometry,-properties,-links,-assets"
response = requests.get(URL)
data = json.loads(response.text)
jstr = json.dumps(data["features"][0], indent=3)
md("```json\n" + jstr + "\n```\n")
{
   "stac_version": "1.0.0",
   "bbox": [
      137.91480986,
      -2.08862852,
      138.09225579,
      -1.91288316
   ],
   "id": "KO2_OTPF_KO2_MSC_2F_20110809T003821_20110809T003821_000000_E138_S002",
   "collection": "TropForest",
   "type": "Feature",
   "stac_extensions": [
      "https://stac-extensions.github.io/eo/v2.0.0/schema.json",
      "https://stac-extensions.github.io/projection/v2.0.0/schema.json",
      "https://stac-extensions.github.io/processing/v1.2.0/schema.json",
      "https://cs-si.github.io/eopf-stac-extension/v1.2.0/schema.json",
      "https://stac-extensions.github.io/sat/v1.2.0/schema.json",
      "https://stac-extensions.github.io/view/v1.0.0/schema.json",
      "https://stac-extensions.github.io/product/v1.0.0/schema.json",
      "https://stac-extensions.github.io/web-map-links/v1.2.0/schema.json"
   ]
}

Example: 11.2

Excluding nested fields at /items endpoint (GET).

fields = '-properties.title,-properties.updated'
URL = URL_LANDING_PAGE + "collections/TropForest/items" + "?fields=" + fields
curl_str = curl_command(URL)
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/collections/TropForest/items \
	--data-urlencode "fields=-properties.title,-properties.updated"
response = requests.get(URL)
data = json.loads(response.text)
jstr = json.dumps(data["features"][0]["properties"], indent=3)
md("```json\n" + jstr + "\n```\n")
{
   "proj:code": "EPSG:4326",
   "start_datetime": "2011-08-09T00:38:21Z",
   "end_datetime": "2011-08-09T00:38:21Z",
   "processing:facility": "Astrium Services",
   "view:sun_azimuth": 52.90402745,
   "product:type": "KO2_MSC_2F",
   "platform": "KOMPSAT-2",
   "view:sun_elevation": 51.2569825,
   "datetime": "2011-08-09T00:38:21Z",
   "instruments": [
      "MSC"
   ],
   "constellation": "KOMPSAT",
   "sat:orbit_state": "descending",
   "eo:cloud_cover": 1,
   "processing:datetime": "2012-12-13T00:00:00Z",
   "eopf:instrument_mode": "MS",
   "product:acquisition_type": "nominal"
}

Example: 11.3

Excluding fields at /search endpoint (GET).

results = api.search(
    method = 'GET',         
    max_items = 10,
    collections=['TropForest'],
    # fields = ['bbox','id','type','properties', 'geometry']
    fields = ['-geometry','-properties','-links','-assets']
)
curl_str = curl_command(results.url_with_parameters())
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/search \
	--data-urlencode "collections=TropForest" \
	--data-urlencode "fields=-geometry,-properties,-links,-assets"
stac_json = results.item_collection_as_dict()
stac_json['features'][0]
{'stac_version': '1.0.0',
 'bbox': [137.91480986, -2.08862852, 138.09225579, -1.91288316],
 'id': 'KO2_OTPF_KO2_MSC_2F_20110809T003821_20110809T003821_000000_E138_S002',
 'collection': 'TropForest',
 'type': 'Feature',
 'stac_extensions': ['https://stac-extensions.github.io/eo/v2.0.0/schema.json',
  'https://stac-extensions.github.io/projection/v2.0.0/schema.json',
  'https://stac-extensions.github.io/processing/v1.2.0/schema.json',
  'https://cs-si.github.io/eopf-stac-extension/v1.2.0/schema.json',
  'https://stac-extensions.github.io/sat/v1.2.0/schema.json',
  'https://stac-extensions.github.io/view/v1.0.0/schema.json',
  'https://stac-extensions.github.io/product/v1.0.0/schema.json',
  'https://stac-extensions.github.io/web-map-links/v1.2.0/schema.json']}

Example: 11.4

Excluding fields at /search endpoint (POST).

results = api.search(
    method = 'POST',         
    max_items = 10,
    collections=['TropForest'],
    # fields = ['bbox','id','type','properties', 'geometry']
    # Specification requires "include" and "exclude".  Not present in pystac_client.
    fields = ['-geometry','-properties','-links','-assets']
)
curl_str = curl_command(results.url_with_parameters(),'POST')
md("```shell\n" + curl_str + "\n```\n")
curl -X POST https://fedeo.ceos.org/search \
	--header 'Content-Type: application/json' \
	--data-raw '{
		"collections": ["TropForest"],
		"fields": "-geometry,-properties,-links,-assets"
	}'
stac_json = results.item_collection_as_dict()
stac_json['features'][0]
{'stac_version': '1.0.0',
 'bbox': [137.91480986, -2.08862852, 138.09225579, -1.91288316],
 'id': 'KO2_OTPF_KO2_MSC_2F_20110809T003821_20110809T003821_000000_E138_S002',
 'collection': 'TropForest',
 'type': 'Feature',
 'stac_extensions': ['https://stac-extensions.github.io/eo/v2.0.0/schema.json',
  'https://stac-extensions.github.io/projection/v2.0.0/schema.json',
  'https://stac-extensions.github.io/processing/v1.2.0/schema.json',
  'https://cs-si.github.io/eopf-stac-extension/v1.2.0/schema.json',
  'https://stac-extensions.github.io/sat/v1.2.0/schema.json',
  'https://stac-extensions.github.io/view/v1.0.0/schema.json',
  'https://stac-extensions.github.io/product/v1.0.0/schema.json',
  'https://stac-extensions.github.io/web-map-links/v1.2.0/schema.json']}

Example: 11.5

Including fields at /items endpoint (GET).

fields = 'bbox,id,type'
URL = URL_LANDING_PAGE + "collections/TropForest/items" + "?fields=" + fields
curl_str = curl_command(URL)
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/collections/TropForest/items \
	--data-urlencode "fields=bbox,id,type"
response = requests.get(URL)
data = json.loads(response.text)
# show remaining content of first item
jstr = json.dumps(data["features"][0], indent=3)
md("```json\n" + jstr + "\n```\n")
{
   "bbox": [
      137.91480986,
      -2.08862852,
      138.09225579,
      -1.91288316
   ],
   "id": "KO2_OTPF_KO2_MSC_2F_20110809T003821_20110809T003821_000000_E138_S002",
   "type": "Feature"
}

Example: 11.6

Including fields at /search endpoint (GET).

results = api.search(
    method = 'GET',         
    max_items = 10,
    collections=['TropForest'],
    # fields = ['bbox','id','type','properties', 'geometry']
    fields = ['id','bbox']
)
curl_str = curl_command(results.url_with_parameters())
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/search \
	--data-urlencode "collections=TropForest" \
	--data-urlencode "fields=+id,+bbox"
stac_json = results.item_collection_as_dict()
stac_json['features'][0]
{'bbox': [137.91480986, -2.08862852, 138.09225579, -1.91288316],
 'id': 'KO2_OTPF_KO2_MSC_2F_20110809T003821_20110809T003821_000000_E138_S002'}

Example: 11.7

Including fields at /search endpoint (POST).

results = api.search(
    method = 'POST',      
    max_items = 10,
    collections=['TropForest'],
    # fields = ['bbox','id','type','properties', 'geometry']
    fields = ['id', 'bbox']
)
curl_str = curl_command(results.url_with_parameters(),'POST')
md("```shell\n" + curl_str + "\n```\n")
curl -X POST https://fedeo.ceos.org/search \
	--header 'Content-Type: application/json' \
	--data-raw '{
		"collections": ["TropForest"],
		"fields": "+id,+bbox"
	}'
stac_json = results.item_collection_as_dict()
stac_json['features'][0]
{'bbox': [137.91480986, -2.08862852, 138.09225579, -1.91288316],
 'id': 'KO2_OTPF_KO2_MSC_2F_20110809T003821_20110809T003821_000000_E138_S002'}

Example: 11.8

Including fields at /collections endpoint (GET).

results = api.collection_search(        
    max_collections = 10,
    # fields = ['bbox','id','type','properties', 'geometry']
    fields = ['id','license']
)
curl_str = curl_command(results.url_with_parameters())
md("```shell\n" + curl_str + "\n```\n")
curl -X GET -G https://fedeo.ceos.org/collections \
	--data-urlencode "fields=+id,+license"
data = results.collection_list_as_dict()
data['collections'][0]
{'license': 'various', 'id': 'EO:EUM:DAT:METOP:OAS012'}

Further Reading#