Sentinel-1 TOPS InSAR Workflow using ISCE2 and Mintpy
This post is a summary of the workflow of Sentinel-1 TOPS InSAR using ISCE2 and MintPy.
1. Installation of ISCE2 and MintPy
This step was done in the previous post. See Installation of ISCE2 and MintPy in Win10 for details.
2. Sentiell-1 TOPS InSAR Workflow
2.1 Data Preparation
2.1.0 Prepare workdir
Prepare workdir for data download and processing.
Source config.rc
to export path.
1 |
|
To process stackSentinel.py
these following DIR are required []:
- SLC
- DEM
- ORBIT
Use makedir
to create these DIRs then export path to ~/tools/conda-envs/insar/config.rc
1 |
|
2.1.1 Download Sentinel-1 Data
Download data from ASF-search using SSARA.
- Fill out
name
andpassword
in~/tools/utils/SSARA/password_config.py
. - cd to workdir
cd ~/workspace/data/sentinel
and run:
1 |
|
Query result is:

If the list is Ok, run same command with --download
to download data. In case needed parallel downloading add --parallel=n
at the end. ssara_federated_query.py -p SENTINEL-1A,SENTINEL-1B -r 142 -f 106 -s 2024-12-01 -e 2025-04-15 --download --parallel=n
. (n is the number of parallel downloading, here we use 5)
2.1.2 Download DEM data
The dem.py
from ISCE2
simplifies the process of DEM data download and stitching, but with a bit few arugments.
First make sure that .netrc
is set up correctly.
1 |
|

2.1.3 Download orbit data
Here we use sentineleof
package to download orbit data.
1 |
|
Make sure that .netrc
is set up correctly.
使用eof下载orbit数据可能需要注册 Copernicus Data Space 或 NASA Earthdata
编辑~/.netrc
文件:
1 |
|
然后运行:
1 |
|
-p $SLC_PATH
specifies the directory where the SLC files are located. --save-dir $ORBIT_PATH
specifies the directory where the orbit files will be saved. Then sentineleof
will download the orbit files for each SLC file in the specified directory.
3. Acquisition InSAR interferograms using stackSentinel.py
stackSentinel.py
is not a one-click command, its function is to read the parameters you provide, generate the corresponding runfile executable file, and the associated configuration parameter information. Only after running stackSentinel.py
and obtaining the runfile do we officially begin the interferometric operations. Here are the parameters I used for the run:
1 |
|
-s $SLC_PATH
: Specifies the directory where the SLC files are located.-w $WORK_DIR
: Specifies the directory where the work files will be saved.-a $AUX_PATH
: Specifies the directory where the auxiliary files are located.-d $DEM_PATH/demLat_N32_N35_Lon_E115_E119.dem.wgs84
: Specifies the path to the DEM file.-o $ORBIT_PATH
: Specifies the directory where the orbit files are located.-n 3
: A list of swaths to be processed. Specifies theIW
subswaths sequence number. The optional parameters are 1, 2, or 3. After selecting the corresponding IW strip, only your specified IW strip will be extracted. If your study area is small, this parameter can significantly save storage space for you. (Default : ‘1 2 3’).-b '34.00 34.60 116.50 117.95'
: Specifies the bounding box of the area of interest. Pay attention that this command does not clip the SLC files, but only extract at least 3 burst of SLC files within the specified area. (Notice!! The order of the coordinates areSNWE
, in other words:lat_min lat_max lon_min lon_max
)--useGPU
: Allow App to use GPU when available.-C geometry
: Specifies the configuration file. Has two options:geometry
andNESD
, NESD refines geometric registration based on burst overlap areas. Selecting NESD will significantly increase both processing time and storage requirements. While theoretically this should improve alignment quality (though in my personal case, I didn’t observe substantial improvement).-c 3
: Specifies number of interferograms between each date and subsequent dates (default: 1).-z 1
: Specifies number of looks in azimuth for interferogram multi-looking (default: 3).-r 3
: Specifies number of looks in range for interferogram multi-looking (default: 9).-f 0.6
: Specifies the filter strength for interferogram filtering (default: 0.5)…--num_proc 2
: Specifies number of tasks running in parallel in each run file (default: 1).param_ion
: Ionosphere estimation parameter file. if provided, will do ionosphere estimation.
More of the parameter can be found through stackSentinel.py --help
.
After running stackSentinel.py
, the script will generate a runfile executable file in folder run_files
and a configuration parameter information file in folder configs
under $WORK_DIR
. The runfile executable file is used to run the interferometric operations, and the configuration parameter information file is used to configure the interferometric operations.

Only by executing all files in the run_file do we formally initiate interferogram generation. This process is highly resource-intensive, consuming substantial memory and time.
1 |
|
This process is also possible using python script.
1 |
|
Attention: During this process
run_01
,run_04
,run_05
,run_07
,run_08
,run_10
,run_11
are time-consuming, and the memory usage is high.
All results are saved in $WORK_PATH
, where you can monitor them in real time. Once all run_files have been executed, the desired results are located in the merged
folder. Specifically:
geom_reference
: This folder contains files that document the transformation between radar coordinates and Earth-centered coordinate systems. These files are essential for subsequent geographical encoding tasks.
interferograms
: This folder contains the interferometric results for each date, including:
.unw
: Unwrapped phase results
filt_fine.int
: Filtered interferogram
fine.int
: Original interferogram
.cor
: Coherence results
Notice: All .vrt
, .xml
and .meta
files generated by ISCE
are visible using mdx.py
script.
1 |
|
4. Full ISCE2 workflow
- Download Sentinel data
1 |
|
- Download DEM
1 |
|
- Download orbit data
1 |
|
- Run
stackSentinel.py
1 |
|
5. Errors occured during Porcessing
* run_11_unwrap: Out of Memory
This error happens when runing run_11_unwrap
in run_files
folder. The error message is: ‘Initializing flows with MCF algorithm. Out of memory’.
This error is caused by the memory of the GPU is not enough allocated to WSL.
-
1st solution is to increase the memory of WSL123.
*1. Open folder
C:\Users\mengy
and create a file named.wslconfig
*2. Copy these lines to the file
1
2
3
4
5# Settings apply across all Linux distros running on WSL 2
[wsl2]
# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=12GB*3. Restart WSL
1
wsl --shutdown
*4. Validation
Run this command in WSL.
1
2free -h # check GPU usage
nproc # check core usage -
2nd solution is to reduce the number of looks in azimuth and range. Not validated.
* run_01_unpack_topo_reference: IndexError
This error happens when runing run_01_unpack_topo_reference
in run_files
folder. The error message is: ‘IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed’.
Solution: The error is caused by worng order of coordinates. The order of the coordinates is SNWE
, in other words: lat_min lat_max lon_min lon_max
.