multiply-org / sar-pre-processing

This is the MULTIPLY repository containing the functionality for SAR pre processing.
Other
31 stars 13 forks source link
MULTIPLY

SenSARP

Build Status Documentation Status DOI License: GPL v3

This repository contains the functionality SenSARP used within the MULTIPLY main platform. The SenSARP specific documentation is hosted on ReadTheDocs. It is part of the MULTIPLY core documentation. Please find the pdf version of the SenSARP documentation here and for the MULTIPLY platform here. SenSARP is a pipeline to pre-process Sentinel-1 SLC data by using ESA SNAP Sentinel-1 Toolbox. Expert users can adapt the default pre-processing chain to their needs and benefit from functionalities provided by SenSARP.

Statement of need

Sentinel-1 satellites will provide continuous free available microwave remote sensing data of the entire globe at least until the end of 2030. Furthermore, ESA is not only providing Sentinel satellite images (e.g. Sentinel-1, Sentinel-2, Sentinel-3) but they also developed free open source toolboxes (Sentinel-1, 2, 3 toolboxes) for scientific exploitation. The toolboxes can be accessed and used via the Sentinel Application Platform (SNAP). SNAP offers a graphical interface were expert users can develop different processing schemes and apply them on the satellite images. Although, Sentinel-1 satellite data and a processing software are freely available, the usage of the data is mainly limited to expert users in the field of microwave remote sensing as different pre-processing steps need to be applied before using Sentinel-1 images.

SenSARP was developed to provide a push-button option to easily apply a rigid pre-processing pipeline with sensible defaults to a Sentinel-1 Level 1 SLC time series data as well as single Sentinel-1 Level 1 SLC images. Thus, non-expert users in the field of pre-processing microwave data are able to use radiometric and geometric corrected sigma nought backscatter data for their specific applications. Beside a rigid pre-processing pipeline, SenSARP provides filter options to retrieve only images of a specific year or images that contain a specific area of interest from a stack of downloaded Sentinel-1 data. Furthermore, the default processing scheme of SenSARP can handle if an area of interest is contained in two tiles of the same swath (due to storage reasons data of one Sentinel-1 satellite swath is provided by ESA within different tiles). Additionally, SenSARP checks if within a stack of Sentinel-1 images, one specific image was multiple processed by ESA and uses the newest.

For expert users, SenSARP provides the possibility to automate their pre-processing on a large scale by either modifying the default pre-processing scheme (modification of xml graph pre_processing_step1.xml) or create their own pre-processing scheme (create a new xml graph) with the graph builder of the SNAP software. They can benefit from the filter options, the default pre-processing step 2 (co-registration of images) and the SenSARP functions to stack all processed and co-registered images within a netCDF file with additional image information e.g. satellite name, relative orbit and orbitdirection.

Content of this repository

How to install

The first step is to clone the latest code and step into the check out directory::

git clone https://github.com/multiply-org/sar-pre-processing.git
cd sar-pre-processing

Installation with Conda

Download and install Anaconda or Miniconda. Anaconda/Miniconda installation instructions can be found Anaconda

To install all required modules, use

conda env create --prefix ./env --file environment.yml
conda activate ./env # activate the environment

To install SenSARP into an existing Python environment, use::

python setup.py install

To install for development, use::

python setup.py develop

Installation with virtualenv and python

Install system requirements

sudo apt install python3-pip python3-tk python3-virtualenv python3-venv virtualenv

Create a virtual environment

virtualenv -p /usr/bin/python3 env
source env/bin/activate # activate the environment
pip install --upgrade pip setuptools # update pip and setuptools

To install SenSARP into an existing Python environment, use::

python setup.py install

To install for development, use::

python setup.py develop

GDAL package needs to be installed too

sudo apt install gdal-bin libgdal-dev

python -m pip install pygdal=="`gdal-config --version`.*"

Further information

Please see the environment file for a list of all installed dependencies during the installation process. Additionally, ESA's SNAP Sentinel-1 Toolbox (Version >8.0.3) has to be installed prerequisite. The Software can be downloaded here. To install the SNAP toolbox, open a terminal window and use

bash esa-snap_sentinel_unix_8_0.sh

SenSARP uses only functionalities of the Sentinel-1 Toolbox. Currently, only SNAP version 8.0 can be downloaded from the website. To update SNAP to a version >8.0.3 please start the SNAP software. You will be asked if you want to search for update. Please search for updates and install all updates. After the updates are installed, you need to restart SNAP to initialize the updates correctly. SNAP Toolbox need libgfortran for specific operations but currently libgfortran is not installed during the installation process of SNAP, therefore you might use

sudo apt-get install gfortran

Usage

For usage checkout the juypter notebook

Documentation

We use Sphinx to generate the documentation of SenSARP on ReadTheDocs. The SenSARP documentation is available here

Support, contributing and testing

Please contribute using Github Flow. Create a branch, add commits, and open a pull request.

Reporting bugs

If you find a bug in SenSARP, please open an new issue and tag it "bug".

Suggesting enhancements

If you want to suggest a new feature or an improvement of a current feature, you can submit this on the issue tracker and tag it "enhancement".

Testing

The package is currently tested for Python >= 3.6 on Unix-like systems. To run unit tests, execute the following line from the root of the repository:

pytest

Authors

Authors

License

This project is licensed under the GPLv3 License - see the LICENSE.rst file for details.

Citation

If you used SenSARP - please cite the paper:

APA-style format

Thomas Weiß, & Tonio Fincke (2022). SenSARP: A pipeline to pre-process Sentinel-1 SLC data by using ESA SNAP Sentinel-1 Toolbox. Journal of Open Source Software, 7(69), 3337, https://doi.org/10.21105/joss.03337

@article{Weiß2022,
  doi = {10.21105/joss.03337},
  url = {https://doi.org/10.21105/joss.03337},
  year = {2022},
  publisher = {The Open Journal},
  volume = {7},
  number = {69},
  pages = {3337},
  author = {Thomas Weiß and Tonio Fincke},
  title = {SenSARP: A pipeline to pre-process Sentinel-1 SLC data by using ESA SNAP Sentinel-1 Toolbox},
  journal = {Journal of Open Source Software}
}