A command-line tool to download collections from Sentinel Hub as GeoTIFF's
Project description
Sentinel Hub Downloader
A command-line tool to download GeoTIFF data from Sentinel Hub. It is currently focused on BYOC data, so far only tested with Planet PV's of Soil Water Content and Crop Biomass. But it attempts to work against any BYOC collection, automatically discovering the bands and metadata.
It has only been tested against smaller files, and works just with the process api. Making it work with larger areas will likely require batch API and some iterative approach.
Features
- Search and download BYOC and Sentinel imagery based on time range and area of interest
- Easy-to-use command line interface
- Support for various spatial filters (bounding box, GeoJSON)
- Configurable output directory
- Automatically discovers bands and metadata for BYOC collections
- Lets users supply custom evalscripts
- Supports various output data types and nodata values
Installation
Clone the repository and then install the package:
pip install sh-downloader
Configuration
Before using the tool, you need to configure your Sentinel Hub credentials:
shdown config --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET
This will create a configuration file at ~/.sentinelhub/config.json.
Command Help
shdown --help
Usage: shdown [OPTIONS] COMMAND [ARGS]...
Command line tool for downloading data from Sentinel Hub.
Options:
--debug / --no-debug Enable debug logging
--help Show this message and exit.
Commands:
byoc Download a time series of images from a BYOC collection.
config Configure Sentinel Hub credentials.
info Get information about a collection.
search Search for available images.
Usage
Search for available images
Search for available Sentinel-2 L2A images in a specific area and time range:
shdown search --collection sentinel-2-l2a --bbox 14.0 45.0 14.5 45.5 --time-from 2023-01-01 --time-to 2023-01-31
Search Command Help
shdown search --help
Usage: shdown search [OPTIONS]
Search for available satellite imagery without downloading.
Options:
-c, --collection [sentinel-1-grd|sentinel-2-l1c|sentinel-2-l2a|sentinel-3-olci|sentinel-5p-l2|byoc]
Sentinel data collection to search
[required]
--byoc-id TEXT BYOC collection ID (required if collection
is 'byoc')
-s, --start TEXT Start date (YYYY-MM-DD). Defaults to 30 days
ago.
-e, --end TEXT End date (YYYY-MM-DD). Defaults to today.
-b, --bbox TEXT Bounding box as
min_lon,min_lat,max_lon,max_lat. Default is
global.
-m, --max-cloud-cover FLOAT Maximum cloud cover percentage (0-100). Only
applies to optical sensors.
-l, --limit INTEGER Maximum number of results to display.
Default is 10.
--help Show this message and exit.
Sample output:
Found 8 images:
2023-01-30T10:20:19Z - Cloud cover: 0.00%
2023-01-27T10:30:21Z - Cloud cover: 1.23%
2023-01-25T10:20:19Z - Cloud cover: 0.45%
2023-01-22T10:30:21Z - Cloud cover: 2.67%
2023-01-20T10:20:19Z - Cloud cover: 0.12%
2023-01-17T10:30:21Z - Cloud cover: 3.45%
2023-01-15T10:20:19Z - Cloud cover: 1.78%
2023-01-12T10:30:21Z - Cloud cover: 0.89%
Download a specific image
Download a specific Sentinel-2 L2A image by date:
shdown download --collection sentinel-2-l2a --bbox 14.0 45.0 14.5 45.5 --date 2023-01-30 --output-dir ./images
Download Command Help
shdown download --help
Usage: shdown download [OPTIONS]
Download a specific image from Sentinel Hub.
Options:
--collection TEXT Collection name (e.g., sentinel-2-l2a) [required]
--bbox FLOAT... Bounding box as min_lon min_lat max_lon max_lat
[required]
--date TEXT Date to download (YYYY-MM-DD)
--image-id TEXT Specific image ID to download
--output-dir TEXT Directory to save the downloaded image
--filename TEXT Filename for the downloaded image
--byoc-id TEXT BYOC collection ID (required if collection is
'byoc')
--size INTEGER... Size of the output image as width height
--bands TEXT Comma-separated list of bands to include
--data-type TEXT Output data type (AUTO, UINT8, UINT16, FLOAT32)
--nodata FLOAT Value to use for nodata pixels
--scale FLOAT Scale factor for the output image
--help Show this message and exit.
Sample output:
Downloading image for 2023-01-30... Image saved to ./images/sentinel-2-l2a_2023-01-30.tiff
Download BYOC (Bring Your Own Collection) data
Download data from a custom collection:
shdown byoc --byoc-id YOUR_BYOC_COLLECTION_ID --time-from 2024-05-01
BYOC Command Help
% shdown byoc --help
Usage: shdown byoc [OPTIONS]
Download images from a BYOC collection.
Options:
--byoc-id TEXT BYOC collection ID [required]
-i, --image-id TEXT Image ID to download
-s, --start TEXT Start date (YYYY-MM-DD). Defaults to 30 days
ago.
-e, --end TEXT End date (YYYY-MM-DD). Defaults to today.
-b, --bbox TEXT Bounding box in format 'minx,miny,maxx,maxy'
(WGS84). Optional - if not provided, will
use each image's own bbox.
-o, --output-dir TEXT Output directory for downloaded images
--size TEXT Size of the output image as width,height
(default: 512,512)
-t, --time-difference INTEGER Minimum days between downloaded images
(default: None - download all images)
--all-dates / --filter-dates Download all available dates without
filtering (overrides --time-difference)
-f, --filename-template TEXT Template for filenames (default:
'BYOC_{byoc_id}_{date}.tiff')
--evalscript-file TEXT Path to a file containing a custom
evalscript
--bands TEXT Comma-separated list of band names to
download (e.g., 'SWC,dataMask')
--auto-discover-bands / --no-auto-discover-bands
Automatically discover and include all bands
(default: True)
--nodata FLOAT Value to use for nodata pixels in the output
GeoTIFF
--scale FLOAT Value to set as SCALE metadata in the output
GeoTIFF
--data-type [auto|int8|int16|int32|int64|uint8|uint16|uint32|uint64|float16|float32|float64|cint16|cint32|cfloat32|cfloat64]
Output data type (default: AUTO)
--help Show this message and exit.
Get metadata about a collection:
shdown info --collection --collection byoc --byo
Info Command Help
shdown info --help
Usage: shdown info [OPTIONS]
Get information about a collection.
Options:
--collection TEXT Collection name (e.g., sentinel-2-l2a) [required]
--byoc-id TEXT BYOC collection ID (required if collection is 'byoc')
--help Show this message and exit.
Sample output:
Collection: sentinel-2-l2a Description: Sentinel-2 L2A imagery Available bands:
- B01: Coastal aerosol (443 nm)
- B02: Blue (490 nm)
- B03: Green (560 nm)
- B04: Red (665 nm)
- B05: Vegetation Red Edge (705 nm)
- B06: Vegetation Red Edge (740 nm)
- B07: Vegetation Red Edge (783 nm)
- B08: NIR (842 nm)
- B8A: Vegetation Red Edge (865 nm)
- B09: Water vapour (945 nm)
- B11: SWIR (1610 nm)
- B12: SWIR (2190 nm)
- SCL: Scene classification
Advanced Usage
Specify bands to download
Download only specific bands from a collection:
shdown download --collection sentinel-2-l2a --bbox 14.0 45.0 14.5 45.5 --date 2023-01-30 --bands B04,B03,B02 --output-dir ./images
Sample output:
Downloading image for 2023-01-30... Using specified bands: ['B04', 'B03', 'B02'] Image saved to ./images/sentinel-2-l2a_2023-01-30.tiff
Set output data type
Specify the output data type for downloaded images:
shdown download --collection sentinel-2-l2a --bbox 14.0 45.0 14.5 45.5 --date 2023-01-30 --data-type uint16 --output-dir ./images
Sample output:
Downloading image for 2023-01-30... Using data type: UINT16 Image saved to ./images/sentinel-2-l2a_2023-01-30.tiff
License
This project is licensed under the MIT License - see the LICENSE file for details.
TODO's
- Start issue tracker to put these in
- clean up extra gdal files
- option to provide a template for file naming
- show progress as images are downloading / completing
- make it so 'search' works nicer with byoc (same command, detect uuid and use it as id)
- Try out cloud filtering for PS data, and if it works then check stac metadata for cloud cover dynamically
- Checking of non-byoc collections, and raise error on bad collection names before getting 400 from api not recognizing (like hit collections end point. Perhaps get the list of collections on init? At least the non-byoc ones)
- collection list (and filtering?) to get what collections to ask about.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sh_downloader-0.2.1.tar.gz.
File metadata
- Download URL: sh_downloader-0.2.1.tar.gz
- Upload date:
- Size: 32.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
255f2a2d5dbc890494744d9bae211316e8ecd8a63bb40ef36adc61f40a0776a0
|
|
| MD5 |
bffa028fa5dae571a4ac4829fb102b8a
|
|
| BLAKE2b-256 |
74df033ccec36965d91286036cf0db420968f8146f35f8b302c92e12f73a43e2
|
File details
Details for the file sh_downloader-0.2.1-py3-none-any.whl.
File metadata
- Download URL: sh_downloader-0.2.1-py3-none-any.whl
- Upload date:
- Size: 35.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa7fb31d0c0ff47b048885f3d8e7958e6f01bf6492e4c87082ac93d1715b13e1
|
|
| MD5 |
3fa387598f636228616d915028dc9b5b
|
|
| BLAKE2b-256 |
10908f249675c7a6dc0d102523f536513db02e659879fdc7fbd25480b1f2d03d
|