Umbrella Sentinel Access Point

A single point of access for Sentinel data, connecting to multiple Sentinel Data Sources

Searching for Sentinel data is often a complicated process due to the different missions available and the different hubs that host the data, but also to the different performances of the hubs in terms of download speed and latency (at both the inter and intra level).
Thus, we have developed the Umbrella Sentinel Access Point that brings them all together. The application provides uniform access to Sentinel 1, Sentinel 2, Sentinel 3 and Sentinel 5p metadata via connecting at the back end to a number of available Sentinel access points, DHuS and non DHuS based, and serving the results via an Application Programming Interface (API). The greatest advantage of this application is that it provides users the download link from the most appropriate hub for the requested product at any particular instance


Exploiting the API

Sentinel 1 End Point
http://umbrella.beyond-eocenter.eu/api/products/sentinel1?format=json

Available Parameters
  • Identifier as identifier
  • Relative Orbit Number as relative_orbit_number
  • Polarization as polarization
  • Filename as filename
  • Sensing Date as sensing_date
  • Product Type as product_type
  • Footprint as wkt_footprint
  • Bounding Box as in_bbox

Search S-1 Metadata
Sentinel 2 End Point
http://umbrella.beyond-eocenter.eu/api/products/sentinel2?format=json

Available Parameters

Search S-2 Metadata
Sentinel 3 End Point
http://umbrella.beyond-eocenter.eu/api/products/sentinel3?format=json

Available Parameters

Search S-3 Metadata
Sentinel 5p End Point
http://umbrella.beyond-eocenter.eu/api/products/sentinel5?format=json

Available Parameters

Search S-5p Metadata

Examples of using API

Get Sentinel-2 Metadata for a specific area of interest during May 2020

#############################################
# A basic example of using the Umbrella API #
#############################################

import os
import sys
import csv
import json
import stat
import types
import requests
import logging

# set the query
url = 'http://umbrella.beyond-eocenter.eu/api/products/sentinel2?in_bbox=20.8,38.41,23.82,40&sensing_date__gte=2020-05-01&sensing_date__lte=2020-05-31'

# used for pagination
starting = -100

# used for counting the total results harvested
total_results = 0

# dictionary with the collected url per product
products = {}

# loop over pages generated by the query
while True:

    # set starting point, increasing every time by 100
    try:
        starting += 100
        # add the pagination
        url_pagination = url + '&offset=%d&limit=100&format=json' % starting

        session = requests.Session()
        session.stream = True
        resp = session.get(url_pagination)

        # check the response
        if resp.status_code == 200:
            response = resp.json()
            logging.info("Successfull connection. Total results %s",response['count'])
            results = response['count']
            if results == 0:
                sys.exit("No results for this query")
            total_results += 100

            # loop over the results of the current page
            for item in response['results']:
                products[item['identifier']] = item['url_download']

            # ending conditional
            if total_results >= results:
                break
        else:
            sys.exit("Not a successful response from the API")
    except Exception as e:
        logging.error("Cannot access API. Exception:",e)
        sys.exit()

# write results to a csv
csv_columns = ['Identifier','Download Link']
csv_file = "productsToDownload.csv"
try:
    with open(csv_file, 'w') as f:
        f.write("%s,%s\n" % (csv_columns[0], csv_columns[1]))
        for product in sorted(products):
            f.write("%s,%s\n" % (product, products[product]))
except IOError:
    sys.exit("I/O error")
finally:
    f.close()

http://umbrella.beyond-eocenter.eu/api/products/sentinel2?in_bbox=20.8,38.41,23.82,40&sensing_date__gte=2020-05-01&sensing_date__lte=2020-05-31&format=json


Connected Hubs (Last updated July 2020)*



*Users will be provided with the download link, for their requested products, from the best performing hub at the time of request. Users will need to use their own credentials to download the products from the respective hub.


Innovation

Easy Access to Data

Access to a single hub instead of looking across several Sentinel Hubs to find the appropriate products
One Place - Many Hubs

Data from all missions

Access to all Sentinel mission data
One Place - All Data

Perfomance and Availability

Download Link for a requested product comes every time from the most appropriate hub based on download speed metrics and availability
One Place - Optimal Selection

Global Coverage

No geographic restrictions
One Place - Global Data

Implementation

Programming Languages & Frameworks
Workflow
  • Database Design
  • Scoring Hubs Process
  • Search Metadata Process
  • Delete Metadata Process
  • API


Contact Persons

Application Development : Athanasios Drivas, tdrivas[at]noa.gr
General Contact Person: Vassileios Sitokonstantinou, vsito[at]noa.gr