熟悉ISCE topsStack的同学应该很眼熟了。 需要说明的是,流程图中的黑色文本框表示原ISCE中的处理方法,红色文本框意味着在原ISCE处理方法的基础上做了某些添加或修改。 首先,给出流程中需要用到的命令参数。

二、MintPy篇 

本文代码仓库克隆了MintPy-1.6.1。 关于MintPy的配置和运行方法,官方手册已经相当完备了,这里简单介绍下处理过程。

mintpy的处理参数均在配置文件中设置,官方给出的配置文件中包含每个参数的详细说明和引用算法, 这里列一下常用的处理参数。

当具备了上述ISCE输出的baselines、merged、reference、secondarys四个文件夹后,我们在同级路径下(其他路径的话需要在配置文件编辑)创建一个新的mintpy文件夹并进入, 然后将编辑好的配置文件(如smallbaselineSentinel.txt)也一同放进去并运行smallbaselineApp.py就OK了。 这里有一点需要注意,配置文件名中需要包含Sentinel字段。

mkdir -vp ${working_directory}/mintpy && cd ${working_directory}/mintpy
smallbaselineApp.py smallbaselineSentinel.txt

         mintpy的处理参数均在配置文件中设置,官方给出的配置文件中包含每个参数的详细说明和引用算法, 这里列一下常用的处理参数。

mintpy.compute.maxMemory = 16  # 程序运行的最大内存
mintpy.compute.cluster   = auto #[local / slurm / pbs / lsf / none], auto for none, 设为local可开启多线程
mintpy.compute.numWorker = auto #[int > 1 / all / num%], auto for 4 (local) or 40 (slurm / pbs / lsf), num of workers
 
mintpy.subset.yx            = auto   #[y0:y1,x0:x1 / no], auto for no  根据xy坐标裁剪范围
mintpy.subset.lalo          = auto    #[S:N,W:E / no], auto for no  根据地理坐标裁剪范围
 
mintpy.network.coherenceBased  = yes  # 开启根据相干性进行网络校正
mintpy.network.minCoherence    = 0.4  # 去除相干性低于0.4的干涉图
 
mintpy.reference.yx            = auto   #[257,151 / auto]  输入参考点的xy坐标
mintpy.reference.lalo          = 41.20373,121.99064  #[31.8,130.8 / auto]  输入参考点的地理坐标
 
mintpy.unwrapError.method          = phase_closure  # 选择相位解缠误差校正的方法
 
mintpy.networkInversion.minTempCoh  = 0.6  # 掩膜时间相干性低于0.6的像元
 
mintpy.deramp          = quadratic  # 去除相位趋势面的模型参数
 
mintpy.topographicResidual                   = yes  # 开启去除DEM误差
mintpy.topographicResidual.polyOrder         = 3  # DEM误差模型参数
 
mintpy.timeFunc.polynomial = auto   #[int >= 0],auto for 1  形变模型参数,默认1为线性形变速率

  mintpy运行结束后,过程文件主要以图片格式保存在pic文件夹中,数据文件以h5格式保存在geo文件夹中。

MintPy仓库包含很多实用的方法,希望大家不要局限于它的主程序运行,多多分析它的源码方法。 这里列出几个查看和导出数据文件的方法,比如“info.py”查看数据信息,“view.py”图形显示数据,“save_*.py”命令导出数据,下面是一些常用命令和查看的形变速率结果:

view.py ./geo/geo_velocity.h5 velocity -v -10 10 -u mm  # 查看形变速率,颜色栏阈值为[-10,10],单位为mm
tsview.py ./geo/geo_timeseries_ERA5_ramp_demErr.h5 -v -20 20  # 查看时序形变结果,可以通过设置--ref-date参数将参考日期设为首个日期
save_gdal.py ./geo/geo_velocity.h5  # 形变速率导出为GTiff格式
geocode.py ifgramStack.h5 -d unwrapPhase -l geometryRadar.h5
save_gdal.py geo_unwrapPhase.h5 -d unwrapPhase-20220608_20220831 --of ISCE

三、MSBAS篇
        MSBAS同样是一款出色的开源时序InSAR数据处理软件,相较于MintPy致力于去除各种相位残差和干涉图优化,它更侧重于实现一维至多维时序形变求解,其主页讲述了三个版本MSBASv3、MSBASv6和MSBASv10的迭代过程。 本文代码仓库克隆了MSBASv6,对MSBAS不熟悉的同学可以阅读论文并下载软件学习。 为了防止大家走丢,我在代码仓库中一并放入了MSBASv3,其中包含源码、样例数据、论文和使用说明。

不同版本MSBAS主程序运行的头文件参数可能有所不同,但是整体上处理过程是类似的。 详细的程序运行方法大家参考下我的运行脚本“run_msbas.sh”。

当你通过上面的ISCE+MintPy处理得到同一区域升降轨的数据结果,那么就可以通过MSBAS将LOS向形变分解为二维形变了(三维形变解算我还没了解过~)。 MSBAS程序运行的核心思路大概分为三步,数据准备、写入参数文件、运行。 “run_msbas.sh”中大部分内容都是在从MintPy处理的时序结果中导出MSBAS所需的数据,最后通过“msbas header.txt”运行核心的时序形变解算,最后还可以使用“msbas_extract”命令以文本的方式提取某一形变点的时间序列。 下面是一个头文件header.txt样例。


        下图是结合墨西哥城升降轨数据计算的UD向和EW向形变速率图。

四、GMT篇
        这里是GMT作图专区,误认GMTSAR的同学绕行哈~

如果觉得MintPy自动保存的图片不满足需求,或是在寻求比Arcgis省时的批量出图方法,这里就要力荐一波GMT了。 需要注意一下,镜像中通过apt安装的GMT版本为6.0.0,而代码仓库中的制图脚本为GMT5格式。 通常情况下GMT6可以运行GMT5语法的脚本,如果遇到问题的话大家可以自行在系统上安装GMT5或是将脚本语法升级为GMT6。

由于GMT具有自己复杂的语法,又有很强的定制化属性,本文给出两个制图脚本“plot_deformation.sh”、“plotp_deformation.sh”供大家参考,用于从MintPy的输出结果中绘制形变速率图和时序形变图,建议初学者对照GMT官方手册理解脚本命令。 这两个绘图脚本的不同之处在于,“plotp_deformation.sh”需要一个由“select_pslike.py”脚本提取的“geo_tcp”文件,只绘制提取后的形变点,感兴趣的同学可以自行查看脚本。 这里放一张“plotp_deformation.sh”绘制的形变速率图。 也可在脚本中添加“gmt psimage”命令添加DEM或光学影像底图,可以说GMT制图效果取决于大伙的需求和对GMT语法的掌握程度。

写在最后:
以上内容算是对之前某段时期工作的部分总结了,就先写到这儿吧。 当时感觉差强人意的内容,如今看来也乏善可陈。 时隔两年,整理不易,希望大家能以批判的眼光看待,也希望能为新人开发者提供一些解决问题的思路。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/weixin_42180970/article/details/145706798

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐