🛰️ EnviSAT-ASAR 时间序列 InSAR 数据处理完整流程 (基于Doirs + StaMPS)
🎯 本文将详细介绍如何使用 Doris + StaMPS 软件对 EnviSAT-ASAR 数据进行时序 InSAR 处理,包括数据准备、预处理、配准、干涉图生成、相位解缠、最终时序分析等步骤。处理步骤参考StaMPS操作说明书。
🤔 文中没有提供的脚本,默认使用Doris + StaMPS 官方脚本,可直接调用。
🧭 处理流程概览
- 📁 数据准备
- 📚 数据读取与裁剪
- 🗺️ DEM数据
- 🌊 批量处理
- 🌈 Small Baseline 处理
- 🛠️ StaMPS 时间序列解算
- 📈 形变时间序列提取
1. 📁 数据准备
参考之前的内容数据下载,将每个Frame的数据下载在一个文件夹,数据格式内容如下示例:
ASA_IMS_1PNESA20040104_024344_000000152023_00075_09648_0000.N1
ASA_IMS_1PNESA20040523_024344_000000152027_00075_11652_0000.N1
ASA_IMS_1PNESA20041010_024345_000000152031_00075_13656_0000.N1
ASA_IMS_1PNESA20041114_024343_000000152032_00075_14157_0000.N1
ASA_IMS_1PNESA20050123_024341_000000152034_00075_15159_0000.N1
将每一期的数据放置在单独的文件夹,文件夹用日期命名:
1
mkdir.csh
轨道数据,建议在GMTSAR官网, 下载
Orbit Data
,解压存放在/user/local/orbits
目录。或直接运行以下代码下载:1 2 3 4 5 6
http://topex.ucsd.edu/gmtsar/tar/ORBITS.tar sudo -i cd /usr/local mkdir orbits cd orbits tar -xvf ~/Downloads/ORBITS.tar # (need full path to ORBITS.tar)
修改StaMPS安装目录中的
StaMPS_CONFIG.bash
文件,添加以下路径配置:1
export SAR_ODR_DIR="/user/local/orbits"
2. 📚 数据读取与裁剪
⚙️ 在数据处理目录,首先链接数据,运行脚本
1
link_slcs data_path
每个日期下,都存放三个文件
数据链接
ASA_IMS_1PNESA20040104_024344_000000152023_00075_09648_0000.N1
image.slc
和image.slc.rsc
选择一个日期,作为超级主影像,使剩余影像均与其配准。
1 2
cd master_data step_read_whole_XXX
XXX 代表卫星 ‘ERS’, ‘Envisat’, ‘RSAT’, ‘RSAT2’, ‘TSX’, or ‘CSK’; 这里选择Envisat。
完后后,可打开KML文件查看数据范围。同时
SLC
目录会生成几个文件。编辑
SLC
目录的master_crop_geo.in
文件。lon lat
代表影像中心的经纬度,n_lines n_pixels
代表距离向和方位向的行数,一般取30000和5000。lon 113.5
lat 42.33
n_lines 30000
n_pixels 5000
编辑完成后,在master_date
目录下运行以下代码,使剩余所有影像均裁剪至与主影像一致。1 2 3
step_master_read_geo cd .. make_read_geo
3. 🗺️ DEM数据
在
SLC
与INSAR_master_date
同级目录下建立DEM
文件夹,将DEM.flt
放置于此,格式转换如下:gdal_translate -of ENVI DEM.grd DEM.flt
进入
INSAR_master_date
文件夹,运行以下代码。1
step_master_orbit_ODR
然后,基于
DEM.flt
信息,编辑timing.dorisin
文件以下内容。SAM_IN_FORMAT real4
SAM_IN_DEM /data/T156/DEM/DEM.flt //DEM路径
SAM_IN_SIZE 5222 6070 // rows cols
SAM_IN_DELTA 0.000092592574951594 // 分辨率
SAM_IN_UL 46.42181 -122.46252 // 左上角的维度、经度
SAM_IN_NODATA -9999
完成后,运行脚本:
1
step_master_timing
🌟🌟🌟 这一步运行时间可能较长,可以同时和
make_orbits
(很快完成)、make_coarse
(用时较久)和make_coreg
(用时较久)运行。1 2 3
make_orbits make_coarse make_coreg
一个命令一个终端,同时处理。
4. 🗺️ 批量处理
以下代码,按顺序依次进行,做完一个再做下一个。
1 2 3
make_dems make_resample make_ifgs
进入任意一个辅影像文件夹,运行脚本
1
step_geo
5. 🌈 Small Baseline 处理
首先提取影像基线信息
1
mt_extract_info
打开matlab,运行代码,生成
small_baselines.list
。1 2 3
ps_load_info sb_find(rho_min,Ddiff_max,Bdiff_max) %默认0.5,1500,1070 plot_sb_baselines
一般需要不断调试Ddiff_max,Bdiff_max。使基线组合匀称合理。
按照生成的干涉组合进行差分干涉,在终端执行命令
1
make_small_baselines
在
SMALL_BASELINES
目录中,运行以下代码分块1
mt_prep 0.6 3 2 50 200
0.6 = amplitude difference dispersion (0.6 is reasonable)
3 = number of patches in range (default 1)
2 = number of patches in azimuth, (default 1)
50 = overlapping pixels between patches in range (default 50)
200 = overlapping pixels between patches in azimuth (default 200)
6. 🛠️ StaMPS 时间序列解算
设置参数
weed_standard_dev
(标准差筛选阈值), 推荐选择2.0。并行处理n_cores
,选择10。1 2
setparm('weed_standard_dev',2.0) setparm('n_cores',10)
参数设置完成后,即可运行以下命令,开始解算SBAS
1
stamps
7. 📈 形变时间序列提取
时间序列分析是InSAR的关键环节,我们在这里介绍如何提取StaMPS结果中一些点位的时间序列。
查看时间序列,在matlab中运行命令
1
ps_plot('V-do','ts')
- 可以点击
TS plot
按钮,在地图中选点,绘制时间序列 - 或者,在StaMPS安装目录中,找到
/StaMPS-4.1-beta/matlab/ts_plot.m
文件,在44行之后重新设置点的经纬度:
1 2 3
[lon0,lat0] = ginput(1); % turn on when final lon0 = 112.15575; %时序点的经度 lat0 = 37.53895; %时序点的维度
- 可以点击
StaMPS中能够绘制点的时间序列,运行以下命令,可将时间序列导出
1 2 3
ts_table = [day(:), ts(:)]; ts_table_double = double(ts_table); % 转成 double save('output.txt', 'ts_table_double', '-ascii');