Skip to main content

A Python module for downloading ESA satellite data

Project description

Build Status PyPI version

esahub: Downloading data from ESA scihub

Author: Johannes Hansen (johannes.hansen@ed.ac.uk)

Setup

Install esahub:

$ pip install esahub

This will also create a YAML configuration file in ~/.esahub.conf (unless that file exists) by copying config.yaml. The configuration settings in ~/.esahub.conf have precedence over the settings in config.yaml.

You should overwrite the required settings in your ~/.esahub.conf, especially:

  • GENERAL.DATA_DIR

The full range of Copernicus data servers are supported, including:

  • https://scihub.copernicus.eu/dhus
  • https://scihub.copernicus.eu/apihub
  • https://scihub.copernicus.eu/s3 (guest access)
  • https://s5phub.copernicus.eu/dhus (guest access)
  • https://tmphub.copernicus.eu/dhus
  • https://colhub.copernicus.eu/dhus
  • https://colhub2.copernicus.eu/dhus

For the majority of these you will need to provide your own authentication details in SERVERS.

Testing the installation

The recommended way of running tests is:

$ python setup.py test

Note: Running the tests may take a while as it includes testing live downloads from SciHub (although with very small files).

Command Line Usage

$ esahub [cmd] [args] ...

Available commands:

Command Description
ls Queries SciHub for archives matching the specified query parameters. Prints the total number of files and data size.
get Queries SciHub like ls, but then downloads the files.
doctor Checks local satellite products for consistency, either by validating the zip/NetCDF format or by comparing to the MD5 checksum from SciHub. Allows to either delete or repair broken files.

Options

Option Argument Available for Description
<SAT> all Satellite to query, e.g. S1A, S1B, S2A, S2B, S3A
-d, --dir <DIR> all raw data directory (defaults to config GENERAL.DATA_DIR)
-o, --out <FILE> ls write files to JSON
-i, --in <FILE> get read files from JSON
-m, --mission <MISSION> ls, get e.g. Sentinel-1, Sentinel-2, Sentinel-3
-g, --geo <WKT> ls, get geospatial location in WKT format
--location <LOCATION> ls, get location as defined in config LOCATIONS
-t, --time <ARG> ls, get Supports a variety of datetime string formats.
--type <TYPE> ls, get e.g. GRD
--orbit <ORBIT> ls, get ASC or DESC
--id <ID> ls, get product identifier, may include wildcards (*), e.g. *SDV*
-q, --query <QUERY> ls, get custom query for SciHub, e.g. for single archive: identifier:...
-----
-N, --nproc <N> all number of parallel processes/downloads (defaults to config GENERAL.N_PROC and GENERAL.N_DOWNLOADS)
--log all write log file
--quiet all Suppress terminal output
--mode <MODE> doctor zip|file
--delete doctor delete corrupt files
--repair doctor redownload corrupt files
--email all send email report
Datetime parsing

The following are examples of datetime formats that will be automatically parsed into a date or date range:

The following single dates will be explicitly converted to the date range covering the given year, month, or day:

  • --time 2016
  • --time 06/2018
  • --time 2018/06
  • --time "Sep 1, 2018"

Date ranges may also be specified explicitly:

  • --time "2016 to 2017"
  • --time "Jan 2016 - Feb 2016"
  • --time "01/01/2016, 14/01/2016"

One-sided date ranges are also possible:

  • --time "to 2017"
  • --time "01/2017-"
  • --time "01/12/2017,"

Examples

Ex 1. Retrieve the number of archives and total file size of Sentinel-3 archives uploaded to SciHub during the past midnight-to-midnight period intersecting Ireland (only works if Ireland is defined in the config item LOCATIONS):

$ esahub ls -t yesterday --location=Ireland

Ex 2. Download the archives uploaded yesterday for four locations.

$ esahub get -t yesterday --location=Ireland_Mace_Head --location=Namibia_Gobabeb --location=Italy_Rome_Tor_Vergata --location=France_La_Crau

Ex 3. Query SciHub for all available Sentinel-2 data for Ireland and write the result to a JSON file. Then read that JSON file by the get command, thus downloading the specified files. Note: Since the JSON file may be edited manually, this approach offers the most flexibility.

$ esahub ls --location=Ireland --mission=Sentinel-2 --out=Sen2_IE.json
$ esahub get --in=Sen2_IE.json --log

Ex 4. Check all zip archives in a custom directory for MD5 consistency and generate a log file.

$ esahub doctor --dir=/path/to/dir/ --mode=md5 --log

Python API

from esahub import scihub
query = {'mission': 'Sentinel-1',
         'geo': 'POINT(-9.0 53.0)',
         'time': 'today'}
files = scihub.search(query)
scihub.download(files)

Dependencies

Required

  • pyyaml
  • numpy
  • lxml
  • shapely
  • python-dateutil
  • pytz
  • tqdm

Optional

  • pyproj
  • netCDF4

Libraries

  • libgeos_c

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

esahub-0.1.1.tar.gz (32.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

esahub-0.1.1-py3-none-any.whl (34.7 kB view details)

Uploaded Python 3

File details

Details for the file esahub-0.1.1.tar.gz.

File metadata

  • Download URL: esahub-0.1.1.tar.gz
  • Upload date:
  • Size: 32.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.6

File hashes

Hashes for esahub-0.1.1.tar.gz
Algorithm Hash digest
SHA256 95dd677d1e1a6c7ace11fd241234954412620c5d127c0e831db2210bbff0561d
MD5 d80e5e2333f0e7fd2b9855eab65ec7f0
BLAKE2b-256 91550eefda59064d26485c48ec0c124b5875e9e3c1f6dda2d5c1d0b5ab989c33

See more details on using hashes here.

File details

Details for the file esahub-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: esahub-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 34.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.6

File hashes

Hashes for esahub-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 165668ee7a4c73152fc53c21e8c4c5bf5512f8015d9719ce9853937fe1345c1b
MD5 1fef492939b5d86c09183f777a6d08a9
BLAKE2b-256 ce593b0988ca9d1bb7775ac5163fb7cd5030662f064c2caea07d790e3074db04

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page