写在前面
InSAR数据处理,包含大量的计算工作,尤其现在一景数据,动辄4、5个GB,再加上配准、干涉中间数据处理过程多,一块区域处理一个星期都有可能,就别提返工了,个把月就过去了。
以SBAS-InSAR数据处理为例,多期数据可能产生数百个干涉对,这些个干涉对,如果逐个进行干涉、解缠计算,运算量极大。
在计算机性能允许的情况下,如果能同时并行处理多个干涉对,可以大大提高干涉效率。
下文就举一个GMTSAR并行解缠的例子。
软件环境配置
计算机环境:Ubtuntu18
InSAR处理软件:GMTSAR 5.4
并行数据处理依赖于一个第三方的软件叫parallel
使用命令 apt-get install parallel 安装,一个命令就搞定。
配置处理命令
这里以GMTSAR的解缠命令为例,进行配置。
假设我们要解缠6个干涉对,所在绝对路径是:
/home/gmtsar/cl/intf_all/2015329_2015353
/home/gmtsar/cl/intf_all/2015329_2016012
/home/gmtsar/cl/intf_all/2015329_2016036
/home/gmtsar/cl/intf_all/2015329_2016060
/home/gmtsar/cl/intf_all/2015329_2016108
/home/gmtsar/cl/intf_all/2015329_2016132
GMTSAR使用snaphu_interp.csh命令进行解缠,需要做两步动作
1.进入干涉文件夹;2.使用snaphu_interp.csh脚本进行解缠。
我们要做6次解缠操作,就写6个独立的数据脚本:
第一个:
#!/bin/csh -f
cd /home/gmtsar/cl/intf_all/2015329_2015353
ln -s ../mask_def.grd .
snaphu_interp.csh 0.001 0
命名为1.csh
第二个:
#!/bin/csh -f
cd /home/gmtsar/cl/intf_all/2015329_2016012
ln -s ../mask_def.grd .
snaphu_interp.csh 0.001 0
命名为2.csh
以此类推,写完全部处理脚本(你可以用任何用顺手的方式批量写,我用的python)
这样我们就得到了全部处理脚本1.csh、2.csh、3.csh、4.csh、5.csh、6.csh
最后,写一个总脚本,逐行把单个脚本的执行命令逐行写进去,类似这样
./1.csh
./2.csh
./3.csh
./4.csh
./5.csh
./6.csh
命名为batchUnwrap.csh
这里就能做并行解缠了
命令为 parallel --jobs 6 < batchUnwrap.csh
这里的6是并行数,也就是6个一起算,大家可以根据机器性能自己尝试。
最后
parallel是一个第三方的软件,也就是你可以用他并行处理其他软件的任务,不论GMRSAR,还是ISCE,还是GAMMA,都一样。所以超好用!!