I have made two pre-built Docker images available at
https://hub.docker.com/r/acolite/acolite that can be pulled in directly. The first image (all_20211122) contains all the LUTs to allow ACOLITE/DSF processing of all supported sensors. The second image (tact_20211122) contains the LUTs for Landsat sensors (L5_TM, L7_ETM, L8_OLI) as well as a compiled version of LibRadtran (v.2.0.2,
http://www.libradtran.org/doku.php) so it can be used to run both DSF and TACT for Landsat. Note that these require quite a bit of disk space (10+ and 5+ GB). The all_latest and tact_latest images are currently identical to the 20211122 versions. 20211122 is the date of the GitHub clone of the ACOLITE code. The images should be pulled in automatically when running the named Docker image, but can be explicitly downloaded as well (see further).
Edit: The latest version is now 20211122 for small changes to the handling of the upcoming S2 file format/detector footprints. Changed tags in this post to "all_latest" and "tact_latest".
To run ACOLITE Docker, you need to set input and output variables in your shell environment to pass to the Docker, respectively using full paths to the scene to process and the target directory on your host machine. These paths will be mounted to the input/ and output/ directories inside the Docker. For example setting the variables to local paths:
Code: Select all
input=/Users/quinten/LT05_L1TP_201028_20110930_20200820_02_T1
output=/Users/quinten/Docker/
and running TACT without custom settings (--rm to clean up the container after running, -d for detached run):
Code: Select all
docker run --rm -d -v $input:/input -v $output:/output acolite/acolite:tact_latest
You can also pass a custom settings file, but make sure to include the inputfile and output settings as in the example below. These input/ and output/ refer to the directories inside the Docker where the host directories will be mounted. For example the basic settings.txt file for running TACT:
Code: Select all
inputfile=input/
output=output/
tact_run=True
tact_output_atmosphere=True
tact_output_intermediate=True
You can process for a small ROI using the limit (decimal S,W,N,E coordinates, comma separated), and modify the output directory as long as it starts with output/. This directory in output will then be created:
Code: Select all
inputfile=input/
output=output/Gironde/
limit=45.4,-1.5,45.7,-0.8
tact_run=True
tact_output_atmosphere=True
tact_output_intermediate=True
The full path to the custom settings file has to be provided to the Docker as well:
Code: Select all
input=/Users/quinten/LT05_L1TP_201028_20110930_20200820_02_T1
output=/Users/quinten/Docker/
settings=/Users/quinten/settings.txt
and running TACT with these custom settings:
Code: Select all
docker run --rm -d -v $input:/input -v $output:/output -v $settings:/settings acolite/acolite:tact_latest
You can pull in the images directly using
Code: Select all
docker pull acolite/acolite:all_latest
or
Code: Select all
docker pull acolite/acolite:tact_latest
These images are based on the Dockerfiles attached here and can be regenerated locally using:
Code: Select all
unzip acolite-docker-all-20211121.zip
cd acolite-docker-all
docker build --no-cache -t acolite:all_latest .
or
Code: Select all
unzip acolite-docker-tact-20211121.zip
cd acolite-docker-tact
docker build --no-cache -t acolite:tact_latest .
I hope this is useful for someone!
Quinten