1.背景说明
stamps是时序分析软件,所以前面的预处理,需要各种软件完成,列如snap,doris,gamma,isce,将预处理完成的数据,输送给stamps,做后续的处理,一般喂给stamps的数据主要包含以下几个层面:
1.配准后的干涉对
2.干涉数据(ps和单主影像两两干涉、sbas各个干涉对两两干涉)
3.地形数据
4.空间坐标数据,lon.raw和lat.raw文件
5.其他辅助定义文件,列如文件路径、位置、宽度等等,一般用文本明码表明
stamps要做的就是根据后向散射稳定性,去选取候选点位,然后进行时序处理。
stamps(1,2),是进行数据信息的加载,一些参数的计算,就是将二进制文件格式、其他文件格式,统一转换为matlab文件格式;
stamps(3,4), 是进行点位的二次选择,尤其第三步,可能重新计算相干性,进行ps点的选择
stamps(5,8),时序分析、噪声相位去除等工作
所以,如果,数据转换过来,问题出在1、2步,可能是某些数据准备存在问题,常见问题有以下几种:
1.文件夹命名不规范,怎么规范,就得参考手册了
2.文件位数不对,例如需要进行swap_byte 进行转换
3.DEM有问题,表现为hgt.mat文件里面的数值不对
4.lon.raw lon.raw里面的数值有问题,表现为ps1.mat 下面的lonlat变量数值不是经纬度
等等等
别问我怎么知道的,全是泪……
总之,遇到问题,最好打断点,看看哪个变量出了问题,对应去解决。
2.gamma转stamps的介绍
2.1先说下坑
网络上不常见gamma转stamps的介绍,国外谷歌论坛小组上有一些人用的是gamma_resampled_setup命令,以及一系列操作准备数据,该操作的本质是将gamma的数据结果转为doris格式,再通过doris软件进stamps的流程就行。相当于
gamma–>doris–>stamps
即使你顺利活过了ps的处理流程,到small_baseline的处理流程,也会折戟沉沙,而且排除小基线处理流程的错误,需要对整个流程比较深的理解,才能修改掉错误。
所以,既然stamps有专门的转换流程,干嘛舍近求远,先转doris,再转stamps呢?
当然,直接使用gamma的流程,也有坑,但坑小的多,下面进入正题,说说如何转换。
2.2如何转换
下图是手册中,对于gamma需要准备的文件的定义,主要包含:

(1)配准后的文件
gamma配准后的文件,主文件后缀为slc,其他slave文件后缀为rslc,就这一点要注意的
(2)干涉文件
slave 和master的干涉文件,使用mk_diff_2d(gamma命令)生成。列如主影像日期为20210402,有2个slave影像[20210222,20210321],mk_diff_2d运行完之后会有以下文件
20210402_20210222.diff
20210402_20210222.base
20210402_20210222.cc
20210402_20210321.diff
20210402_20210321.base
20210402_2021032.cc
相干系数文件cc,是后续不需要的,把diff文件和base文件,进行重命名,放在diff0文件夹下,重命名后如下:
diff0/20210222.diff
diff0/20210222.base
diff0/20210321.diff
diff0/20210321.base
注意!主影像不用和自己干涉哈
这样配准影像和干涉对,都准备好了。
(3)geo 文件准备
geo文件中的dem文件,就是gamma做干涉用的dem(雷达向,和主影像大小一致 的那个),注意直接改名拿过来用,不用做swap_bytes!!!
重大的事情再说一遍,DEM不用做swap_bytes !!!!
下面就是最头疼的两个lon、lat文件的准备,网上许多人在问,但是国内国外论坛中,都没看到有说准备的方法,还有人说不准备这两个文件也是可以的,emm……当然是不可以的!!!
花了一段时间,摸索出来了准备方法,亲测可行,步骤如下(以下都是gamma的命令):
①使用mkgrid 命令,建立一个和主影像大小一致的pointlist 文件,列如,主影像是9000*12000的,就建一个9000*12000的文件
②使用data2pt 文件,把栅格的dem转换为点格式的,这一步是给第三步用的
③用pt2geo对第一步生成的pointlist,就是主影像的每个像元,生成其对应的空间经纬度数据,pt2geo的函数说明如下:

图中打红色箭头的,就是我们想要的文件。
这个文件是二进制存储的,里面的数据是这样的:[104.01,30.02,0.1.02,30.03……],经纬度交替分布,而我们想要的lon文件是[104.01,104.02……],lat文件是[30.01,30.02……]
所以需要把上述文件拆开,python可以做这件事情,不过第一要将
plat_lon 进行swap_bytes plat_lon plat_lon4 4
然后用Python进行拆分,当然用matlab或者其他自己熟悉的软件也行,python进行转换的代码如下:
“`python
import numpy as np
dataPath=”your path”
cors=np.fromfile(dataPath+ plat_lon4 ,np.float32)
lon=cors[0:len(cors):2]
lat=cors[1:len(cors):2]
lon.tofile(dataPath+ lon.raw )
lat.tofile(dataPath+ lat.raw )
print( done! )
“`
注意,拆分后的lon和lat文件,我这了还要做一次swap_byte 4,真的是神奇。
至此,全部数据准备好了,后续使用mt_prep_gamma命令,就能进行ps数据的准备,可以成功生成path了。你以为坑就完了?NONONO
手册里,说明了子文件夹应该整理成啥样,但是没说上一级目录的命名,而stamps获取主影像的日期的方法是通过上一级目录的文件名,这里我把上一级目录命名为
INSAR_20210402
最后,准备好的文件目录如下:
INSAR_20210402
—-rslc/20210402.slc
—-rslc/20210402.slc.par
—-rslc/20210222.slc
—-rslc/20210222.slc.par
—-diff0/20210222.diff
—-diff0/20210222.base
—-geo/20210402_dem.rdc
—-geo/20210402.lon
—-geo/20210402.lat
这样stamps就能通过文件名,获取正确的主影像日期,到这……差不多就完事了。
后续small_baseline的处理方式,可以如法炮制,然后就是合并ps、sb的结果,做MTI处理……
用开源软件就是累,但谁让咱穷呢~哎~
欢迎大家加入qq群:792912665 交流开源InSAR软件软件使用心得(目前群里主要是学习开源InSAR软件的,涉及QGIS较少)
 
                
 
                 
                 
                





 
                 
                 
                
博主你好,我遇到了你说的第四个坑。lon和lat文件做出来后有一部分值是0。我把dem重采样,提高了分辨率还是这样。我检查了下dem文件是正常的,这个问题你当时是怎么解决的?
博主,这个DEM大小好像只能跟多视后的slc一致吧,怎么跟slc本身一致呢
别人告诉我,处理dem的时候用没有多视的文件处理,stamps只能接受1.1的多视,但是我现在还不会做不多视的dem