StaMPS实验全流程

本笔记记录使用StaMPS-InSAR方法对sentinel1 SAR 数据进行PS-InSAR实验的全过程,从程序安装到结果输出。

程序安装

在安装StaMPS之前,需要先安装以下依赖软件: ‘matlab’, ‘snaphu’, ‘triangle’, ‘TRAIN’, ‘GMT’

MATLAB

StaMPS是基于MATLAB开发的,因此需要先安装MATLAB。本次安装选择经过多名学者验证的R2020b版本。安装完成后,需要将StaMPS的路径添加到MATLAB的搜索路径中。

具体安装过程此处不再赘述,可以参考MATLAB官网的安装指南。

matlab加入.bashrc

1
2
export MATLAB_ROOT="/usr/local/MATLAB/R2020b"
export PATH="$MATLAB_ROOT/bin:$PATH"

snaphu

conda install

安装 snaphu 是 InSAR 处理流程中的一个关键步骤,它负责进行相位解缠(Phase Unwrapping)。如果已经在使用 Conda (Anaconda/Miniconda) 来管理您的 Python 环境(例如 conda activate insar),这是迄今为止最简单、最不容易出错的方法。

1
conda install -c conda-forge snaphu

验证snaphu是否安装成功:

1
2
3
4
5
6
7
(insar1) yuchi@yuchi-MSI:~$ python
Python 3.12.11 | packaged by conda-forge | (main, Jun 4 2025, 14:45:31) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import snaphu
>>> print(snaphu.get_snaphu_version())
2.0.7
>>> exit()

develop mode

  • 清理错误的编译文件
1
2
cd /home/yuchi/tools/StaMPS/snaphu-v2.0.7/src
make clean
  • 正确修改 Makefile 文件
1
2
3
4
5
# 找到这一行
CFLAGS = -m64 x86_64 $(OPTIMFLAGS) -Wall # -arch arm64 -Wuninitialized -m64 -D NO_CS2

# 将其修改为:
CFLAGS = -m64 $(OPTIMFLAGS) -Wall
  • 创建手册页目录
1
sudo mkdir -p /usr/local/man/man1
  • 重新编译和安装
1
2
make
sudo make install
  • 验证安装
1
2
which snaphu
/usr/local/bin/snaphu

至此snaphu安装成功!

triangle

安装 triangle 是 InSAR 处理流程中的一个关键步骤,它负责进行三角网生成。可以从triangle官网下载并安装。下载好后,将其解压到一个目录中,例如 /home/yuchi/tools/StaMPS/triangle,并执行make命令。

TRAIN

TRAIN是一个用于处理InSAR数据的工具,StaMPS也依赖于它。可以从TRAIN官网下载并安装。

StaMPS

StaMPS可以从StaMPS官网GitHub下载并安装。

注意: StamPS需要使用gcc-7进行编译,否则在mt_prep_snap时会出现Segmentation Fault错误

  • 使用update-alternatives来切换gcc版本:
1
2
3
4
5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 --slave /usr/bin/g++ g++ /usr/bin/g++-11 --slave /usr/bin/gcov gcov /usr/bin/gcov-11
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7 --slave /usr/bin/gcov gcov /usr/bin/gcov-7

sudo update-alternatives --config gcc
# type 2 and ENTER in my case

修改gcc版本

Install StaMPS/MTI:

1
2
3
4
tar -xvf StaMPS v4.1b.tar
cd /home/yuchi/tools/StaMPS/StaMPS-4.1-beta/src
make
make install

stamps安装结果

然后我们要写入Path以便正常执行相关指令,我们使用sudo gedit ~/.bashrc来编辑bash启动脚本。

Edit StaMPS CONFIG.tcsh or StaMPS CONFIG.bash (depending on which shell you prefer to use) to point to the correct directories for your set-up (you will need additional programs installed, see below).

1
cd /home/yuchi/tools/StaMPS/StaMPS-4.1-beta

编辑CONFIG.bash文件,添加以下内容:

1
2
3
export STAMPS="/home/yuchi/tools/StaMPS/StaMPS-4.1-beta"
export TRIANGLE_BIN="/home/yuchi/tools/StaMPS/triangle"
export SNAPHU_BIN="/home/yuchi/tools/StaMPS/snaphu-v2.0.7/bin"

每次执行stamps时必须source /home/yuchi/tools/StaMPS/StaMPS-4.1-beta/StaMPS_CONFIG.bash,或者将它家加入到.bashrc中。

使用mt_prep_snap验证安装是否成功。

1
2
source ~/.bashrc
mt_prep_snap

验证安装

GMT

GMT是一个用于处理地理数据的工具,StaMPS依赖于它来生成地图和图形。可以从GMT官网下载并安装。

GMT(Generic Mapping Tools)是一款开源软件,用于处理和可视化地理空间数据。它以命令行形式操作,适合生成高质量的地图和图表。用户可以通过脚本编写和命令组合,灵活地创建各种类型的地形图、等高线图和矢量图等。GMT 支持多种数据格式,如 ASCII、NetCDF 和 GeoTIFF,适合与其他 GIS 软件集成。其生成的图形可以输出为高分辨率的 PostScript 和 PDF 文件,非常适合学术出版和展示。该软件在地球科学、气象学和海洋学等多个领域广泛应用。GMT 的文档和教程非常丰富,用户可以通过这些资源学习使用。同时,它也拥有活跃的社区支持,用户可以在论坛或邮件列表中交流经验和解决问题。

1
sudo apt install gmt gmt-dcw gmt-gshhg

然后我们通过sudo apt install <包名>来安装剩下的工具

  • Ghostscript:生成PDF,jpg图片的必要工具,必须安装:sudo apt install ghostscript
  • GDAL:地理空间数据转化工具,必须安装:sudo apt install gdal-bin
  • GraphicsMagick:生成GIF动画的工具,非必须安装:sudo apt install graphicsmagick
  • FFmpeg:生成MP4等视频格式动画的工具,非必须安装:sudo apt install ffmpeg

验证安装

启动matlab验证stamps是否正确安装:

set_path -> Add with Subfolder -> 选择/home/yuchi/tools/StaMPS

1
stamps --version

matlab中验证安装

snap2stamps

snap2stamps是一个用于将SNAP格式的干涉图转换为StaMPS格式的工具。可以从SNAP官网下载并安装。

  • 成功安装snap2stamps之后,在/home/yuchi/tools/stamps/snap2stamps/bin目录下修改project_topsar.conf文件,内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#################### TOPSAR CONFIGURATION FILE ######################
#####################################################################
[PROJECT_DEFINITION]
PROJECTFOLDER = /home/yuchi/Documents/01_vscode/AMIPS/data/02_interim/snap_test
GRAPHSFOLDER = /home/yuchi/tools/StaMPS/snap2stamps/graphs
#####################################################################
[PROC_OPTIONS]
# Y / N OPTIONS
OVERWRITE = N
SMARTHDD = N
PLOTTING = Y
#####################################################################
[PROC_PARAMETERS]
# SENSOR : S1
SENSOR = S1
POLARISATION = VV
MASTER = /home/yuchi/Documents/01_vscode/AMIPS/data/02_interim/snap_test/master
# MASTER SEL : AUTO / FIRST / LAST / MANUAL
MASTERSEL = AUTO
EXTDEM =
#####################################################################
[AOI_DEFINITION]
#AOI_MODE OPTIONS WKT / BBOX / SHP / KML / GeoJSON
AOI_MODE = BBOX
LONMIN = 117.108
LATMIN = 34.1904
LONMAX = 117.3097
LATMAX = 34.3588
WKT = POLYGON((11.997 41.455,11.997 42.294,12.936 42.294,12.936 41.455,11.997 41.455))
AOI_FILE = /tmp/my_aoi.shp
#####################################################################
[SEARCH_PARAMS]
# autoDownload : Y / N
autoDownload = N
# TRACK =
# beamMode : SLC / GRD
beamMode = SLC
# START/ STOP in YYYY-MM-DD
START = 2024-11-01
END = 2025-04-01
# SAT : S1 / S1A / S1B
SAT= S1A
ASF_USER = mengyuchile
ASF_PASS = 5212109Mengle
# Number of Parallel Downloads (NPD)
[SEARCH_PDOWNLOADS]
NPD = 4
#####################################################################
[SNAP_GPT]
SNAP_INSTALLATION_FOLDER = /home/yuchi/esa-snap
SNAP_HOME_DIR = /home/yuchi/.snap
#####################################################################
[COMPUTING_RESOURCES]
CPU = 14
CACHE = 118G
#####################################################################
  • 在目录/home/yuchi/Documents/01_vscode/AMIPS/data/02_interim/snap_test下新建secondaries,master文件夹。并将已经下载好的slc压缩文件放入secondaries下。

  • 或者在目录/home/yuchi/tools/StaMPS/snap2stamps/bin命令行下运行python asf_s1_downloader.py -F project_topsar.conf将数据下载到secondaries目录下。

  • 在目录/home/yuchi/tools/StaMPS/snap2stamps/bin下运行其余的snap2stamps命令

1
2
3
4
5
6
7
8
9
conda activate snap2stamps

python topsar_step_0_secondaries_prep.py -F project_topsar.conf
python topsar_automaster.py -F project_topsar.conf -M AUTO #[optional]
python topsar_step_1_splitting_master_multi_IW.py -F project_topsar.conf
python topsar_step_2_splitting_secondaries.py -F project_topsar.conf
python topsar_step_3_coreg_ifg_topsar_smart.py -F project_topsar.conf
python topsar_step_4_plotting_all.py -F project_topsar.conf #[optional]
python topsar_step_5_stamps_export_multiIW.py -F project_topsar.conf
  • cd到INSAR_YYYYMMDD并运行mt_prep_snap
1
mt_prep_snap 20250102 /home/yuchi/Documents/01_vscode/AMIPS/data/02_interim/snap_test/INSAR_20250102 0.6 4 1 50 200 

mt_prep_snap运行结果

ISCE2数据准备

  • 使用ISCE进行StamPS的预处理同Mintpy的略有区别,不可以直接使用前一步Mintpy的结果,需要重新处理。区别在与-W的设置,StaMPS需要将-W设置为slc,而Mintpy则是默认,即为interferogram。生成结果的区别是:

  • mintpy运行结果中../merged/SLC/YYYYMMDD中没有*_slc_full文件,但是运行StaMPS时需要用到生成的*_slc_full文件

  • mintpy运行结果中../merged/SLC/YYYYMMDD中没有baselines文件夹,但是运行StaMPS时需要用到生成的baselines文件夹

所以必须重新进行ISCE2的处理。

在文件夹/home/yuchi/Documents/01_vscode/AMIPS/data/02_interim/xuzhou_test中新建prep_stamps文件夹,并cd到该目录下执行:

1
stackSentinel.py -s /home/yuchi/Documents/01_vscode/AMIPS/data/01_raw/slc -d /home/yuchi/Documents/01_vscode/AMIPS/data/01_raw/dem/demLat_N34_N35_Lon_E117_E118.dem.wgs84 -a /home/yuchi/Documents/01_vscode/AMIPS/data/01_raw/aux -o /home/yuchi/Documents/01_vscode/AMIPS/data/01_raw/orbits -b '34.19 34.36 117.10 117.31' -W slc

将生成文件夹run_files, 新建批处理python脚本文件auto_run_isce.py并运行得到ISCE2StamPS的结果。

脚本运行结果

结果文件

StaMPS数据处理

  • 新建input_file文件夹,并在其中创建所需的输入文件。
1
2
3
4
5
6
7
8
9
10
11
source_data                    slc_stack
slc_stack_path /home/yuchi/Documents/01_vscode/AMIPS/data/02_interim/gnss_test_area/prep_stamps/merged/SLC/
slc_stack_reference 20250102
slc_stack_geom_path /home/yuchi/Documents/01_vscode/AMIPS/data/02_interim/gnss_test_area/prep_stamps/merged/geom_reference/
slc_stack_baseline_path /home/yuchi/Documents/01_vscode/AMIPS/data/02_interim/gnss_test_area/prep_stamps/merged/baselines/
range_looks 4
azimuth_looks 1
aspect_ratio 3
lambda 0.056
slc_suffix .full
geom_suffix .full
  • make_single_reference_stack_isce的路径写入PATH并运行
1
2
export PATH=/home/yuchi/tools/src/isce2/contrib/timeseries/prepStackToStaMPS/bin:$PATH
make_single_reference_stack_isce

运行结束将在/home/yuchi/Documents/01_vscode/AMIPS/data/02_interim/gnss_test_area/prep_stamps生成INSAR_20250102文件夹.

运行结果

PS preprocess

In the INSAR_master_date directory run mt_prep_isce for ISCE.

1
mt_prep_isce 0.4 4 1 50 200
  • 打开matlab and run getparm
1
matlab
1
getparm

运行结果

  • 因为StaMPS-4.1-beta包很久没有更新维护,导致下载的源码缺少2个文件,在StaMPS的github主页下载load_isce.mmatlab/sb_load_initial_isce.m并复制到/home/yuchi/tools/StaMPS/StaMPS-4.1-beta/matlab/目录下。

  • 同样因为更新维护问题,导致ps_load_initial_isce.m脚本中有一个错误,导致无法运行。需要修改文件中的以下内容:

1
2
3
4
5
% line 33
masterdayname=['master_day.1.in']; % YYYYMMDD

% 修改为
masterdayname=['reference_day.1.in']; % YYYYMMDD

或直接在github page下载最新的ps_load_initial_isce.m文件。

PS process


StaMPS实验全流程
https://mengyuchi.gitlab.io/2025/08/20/StaMPS实验全流程/
Author
Yuchi Meng
Posted on
August 20, 2025
Licensed under