Awesome
Docker containers for the Sentinel Application Platform
Docker containers including ESA-STEP Sentinel Application Platform (SNAP) and Sentinel toolboxes jointly developed by Brockmann Consult, Array Systems Computing and C-S.
Some useful utlities containers are also included.
Resources
Links to other useful projects
SEN2COR
Status
- in early development and may change at anytime without notice
- headless debian containers available
- images not yet on Dockerhub.
Versions
Headless SNAP with toolboxes, gpt
command line API enabled
- debian8-snap2:base - Base container used to build SNAP and toolboxes (~550 Mb).
- debian8-snap2:on_build - Build instuctions (~550 Mb).
- debian8-snap2:s1tbx - Base container with SNAP + S1TBX (~ 1 Gb).
- debian8-snap2:s2tbx - Base container with SNAP + S2TBX (~ 1 Gb).
- debian8-snap2:s3tbx - Base container with SNAP + S3TBX (~ 1 Gb).
Headless SNAP with toolboxes, gpt
command line API and snappy
Python API enabled
- debian8-snap2:on_build_py - Build instuctions (~ 570 Mb).
- debian8-snap2:s1tbx_py - Base container with SNAP + S1TBX (~ 1.1 Gb).
- debian8-snap2:s2tbx_py - Base container with SNAP + S2TBX (~ 1.1 Gb).
- debian8-snap2:s3tbx_py - Base container with SNAP + S3TBX (~ 1.1 Gb).
Utilities
- sen2cor:2.0.6 Python miniconda container with sen2cor 2.0.6 a utility for the atmospheric correction of L1C Sentinel 2 products.
- alpine3-pythonX-sentinelsat Python container with sentinelsat 0.6.4 a utility to search and download Sentinel-1 Imagery [TODO]
- java8-maven-git-snap_dev - For compiling developer versions of snap using netbeans.[TODO]
Dependencies
Details
The SNAP installer, created with install4j from ej-technologies, supports graphical, console and unattended installation (see Install SNAP on the command line.
The base container downloads the SNAP Unix installer and prepares the container ready for installation using Dockerfile ONBUILD
instructions. For improved maintenance ONBUILD instructions are stored in a seperate Dockerfile; meaning less builds of the base image. Upon initiating a specific build, the snap2.varfile
which contains the build options is copied to the container and the unattended installation of SNAP within the container is done by passing the option -q
and the 'instalation file' to the installer via the -varfile
option (all these commands are found in the :on_build
Dockerfile, whereas the instalations instructions are in snap2.varfile
). The Dockerfiles in each build directory mainly add metadata (labels, ect.).
SNAP has 2 headless APIs, gpt
a mature command line interface and snappy
a Python API. To facilitate the communication with SNAP via snappy
a set of containers that include Python 2.7 (from the Debian package distribution system) are also available, note the Python instalation is intentially minimal and 'frozen' to a debian package release.
Note: An initial (quick) test with 1science/docker-alpine:3.3 suggested The SNAP installer does not work with the minimilist Docker image from Alpine Linux; Error unpacking jar files. The architecture or bitness (32/64) of the bundled JVM might not match your machine. However, on the Alpine Linux distribution site 64bit version are available. More research to be done!
Installation
-
Choose your flavour!
- Use a pre-made container (replace
:tag
with the version you want)- Download build from public Docker Registry:
docker pull epmorris/debian8-snap2:s1tbx
- Alternatively, you can build an image from Dockerfile (replace
:tag
and the repository subdirectory with the version you want):docker build -t="epmorris/debian8-snap2:s1tbx" github.com/edwardpmorris/docker-snap.git#:debian8-snap2-s1tbx
)
- Download build from public Docker Registry:
- Build a custom container...
Usage
SNAP containers
To run a container (choose the container flavour using the :tag
option) and view the help for the SNAP command line API, gpt
, open a terminal and type:
docker run --rm epmorris/debian8-snap2:s1tbx gpt -h
- adding vmoptions:
docker run -it -v /home/edward/snap/bin/gpt.vmoptions:/usr/local/snap/bin/gpt.vmoptions epmorris/debian8-esa-step-snap2:s1tbx
Sen2Cor
To get help for the Sen2Cor command line interface:
docker run --rm epmorris/sen2cor:2.0.6 L2A_Process -h
Run atmospheric correction on a image
docker run -it -v /home/edward/Desktop/S2:/home/worker/S2 epmorris/sen2cor:2.2.1 \
L2A_Process \
--resolution 10 \
--GIP_L2A $SEN2COR_HOME/cfg/L2A_GIPP.xml \
S2/S2A_OPER_PRD_MSIL1C_PDMC_20160309T104243_R137_V20160308T112023_20160308T112023.SAFE/GRANULE/S2A_OPER_MSI_L1C_TL_MTI__20160308T193334_A003709_T29SQA_N02.01
Acknowledgements
Thanks to ESA-STEP Sentinel Application Platform and Sentinel toolboxes development teams for making SNAP freely available. Thanks to Docker for their excellent tool. Thanks to Marco and STEP forum members for their prompt answers. EPM is supported by the EU-FP7 project 'Foreshore Assessment using Space Research' (FAST, http://www.fast-space-project.eu/).