An automated, containerized, and parallel processing pipeline for Interferometric Synthetic Aperture Radar (InSAR) processing based on ISCE2 (topsApp).
Designed to handle large-scale Sentinel-1 datasets efficiently by leveraging Python multiprocessing and Docker isolation.
- Parallel Processing: Built-in process pool scheduler (
multiprocessing) to handle multiple Interferogram pairs simultaneously. - Dockerized Environment: Zero-dependency deployment. Runs anywhere (Linux, Windows/WSL2, Cloud) with Docker.
- Auto-Provisioning:
- Automated DEM download from OpenTopography (with on-the-fly XML/VRT generation).
- Automated Orbit files download from ASF.
- Robustness:
- Phase-Split Execution: Smartly handles ISCE step dependencies to enable checkpoint restart (e.g., skipping
ionstep in memory). - Fault Tolerance: Automatic retry logic for unstable steps and task isolation (one task failure doesn't stop the pipeline).
- Phase-Split Execution: Smartly handles ISCE step dependencies to enable checkpoint restart (e.g., skipping
- Storage Optimized: "Nuclear" cleaning scripts to minimize disk usage by 90% after processing.
InSAR_Pipeline/
├── Dockerfile # Docker build configuration
├── run_docker.sh # One-click startup script
├── .env.example # set your API_KEY,delete`.example`
├── environment.yml # python site-packages
├── code/
│ ├── main_parallel.py # Main scheduler & processor
│ ├── modules/ # Helper modules (DEM, Orbit, XML)
│ └── entrypoint.sh # support utilities
└── data/ # Data directory (Mounted volume)
├── raw/ # Sentinel-1 SLC data (.SAFE)
├── orbit_data/ # Sentinel-1 Orbit data (.EOF)
├── dem/ # DEM storage
└── runs/ # Processing outputs
pairs.txt # target pairs
- Docker Desktop (Windows/Mac) or Docker Engine (Linux)
- OpenTopography API Key
Place your Sentinel-1 SLC data into data/raw.
Edit pairs.txt to set your target pairs:
("S1A_...20230203...SAFE", "S1A_...20230215...SAFE")
("S1A_...20230215...SAFE", "S1A_...20230227...SAFE")
("S1A_...20230203...SAFE", "S1A_...20230227...SAFE")Put a pair of pairs on one line, and then jump
Edit .env to set your target pairs:
OPENTOPO_API_KEY=your API
ROI=38.0,41.0,33.0,38.0 # Set the range of downloaded DEM
WORKERS = 2 # Set based on your RAM (rec: 16GB per worker)
Execute the startup script. It will mount your local data and code into the container.
chmod +x run_docker.sh
./run_docker.shInterferogram
see the results_sample/Interferogram
Unwrapped
see the results_sample/Unwrapped Phase
This project is open-sourced under the MIT License.