Generating Leaf Area Index Data For Super-Resolution
This repository contains code to retrieve the Leaf Area Index (LAI) from Sentinel-2 and PlanetScope SuperDove optical satellite imagery by means of radiative transfer model (RTM) inversion. We use the leaf RTM PROSPECT-D together with the canopy RTM SAIL, a.k.a PROSAIL using a FORTRAN implementation with Python interface for maximum performance.
Inversion is performed using Lookup-tables. More details about the retrieval workflow and the RTM parameters used can be found here.
The results are fed into a deep-learning based super-resolution model developed by @neffjulian (see here).
Download the PlanetScope and Sentinel-2 L2A data (image tiles of size 2 by 2 km), unzip and place them in a folder data
in the scripts folder (or anywhere else; in this case you have to change the paths in the scripts!).
All dependencies can be installed into a clean virtual environment using:
pip install -r requirements.txt
The scripts must be executed in the order outlined below to retrieve LAI values:
- Run PROSAIL simulations to generate the lookup-tables for the single Sentinel-2 and Planet SuperDove scenes to account for the viewing and illumination geometries.
- for Sentinel-2: run_prosail_sentinel2.py
- for PlanetScope: run_prosail_planetscope.py
- Invert the Sentinel-2 and PlanetScope scenes using the lookup-tables calculated in step 1:
- for Sentinel-2: lai_retrieval_sentinel2.py
- for PlanetScope: lai_retrieval_planetscope.py
- in the case of Sentinel-2, two results will be generated per scene:
- one LAI result using the Sentinel-2 10 m bands only (B02, B03, B04, B08)
- one LAI result using the Sentinel-2 20 m bands only (B05, B06, B07, B8A, B11, B12)
The results
are placed in the data folder organized
| by platform (Sentinel-2 or PlanetScope)
| year (currently there's only 2022)
| month (e.g., 09_sep for September)
| lai -> here you find the LAI data as GeoTiff
| lut -> here you find the PROSAIL lookup tables
Please refer to our license agreement.
All scripts were developed and run under Linux Fedora 35 using Python 3.10. They might run under different operating systems and Python versions but that's neither guaranteed nor tested.