文章

🛰️ EnviSAT-ASAR 时间序列 InSAR 数据处理完整流程 (基于Doirs + StaMPS)

🛰️ EnviSAT-ASAR 时间序列 InSAR 数据处理完整流程 (基于Doirs + StaMPS)

🎯 本文将详细介绍如何使用 Doris + StaMPS 软件对 EnviSAT-ASAR 数据进行时序 InSAR 处理,包括数据准备、预处理、配准、干涉图生成、相位解缠、最终时序分析等步骤。处理步骤参考StaMPS操作说明书
🤔 文中没有提供的脚本,默认使用Doris + StaMPS 官方脚本,可直接调用。


🧭 处理流程概览

  1. 📁 数据准备
  2. 📚 数据读取与裁剪
  3. 🗺️ DEM数据
  4. 🌊 批量处理
  5. 🌈 Small Baseline 处理
  6. 🛠️ StaMPS 时间序列解算
  7. 📈 形变时间序列提取

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

    • 将每一期的数据放置在单独的文件夹,文件夹用日期命名:

      mkdir.csh

      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.slcimage.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数据

  • SLCINSAR_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');
    
本文由作者按照 CC BY 4.0 进行授权