利用SBAS-InSAR技术获取Etna火山形变特征——基于ISCE+GIANT软件

时序InSAR数据处理过程——ISCE + GIANT 处理软件

ISCE 软件是一款常用的干涉处理软件,基于该软件可生成一系列干涉图,再通过时序分析软件(GIANT)即可完成时序InSAR数据处理过程。不过较为可惜的是目前GIANT软件的开发人员大部分被抽调去进行ISCE的维护与研发,GIANT软件已经很久没有更新过,本人暂时还没有在ubuntu18.04上成功安装过(只在ubuntu16.04上成功过)。如果无法正常安装giant,可以尝试利用stamps等软件进行时序分析。

一、数据准备

1.1、SAR数据准备

本文以意大利Enta火山为例,通过哨兵数据获取其喷发前的地表形变特征,以2017年与2018年的喷发事件作为研究时间窗口,下载得到覆盖火山口的降轨影像共41景(如图所示),轨道号为124。
利用SBAS-InSAR技术获取Etna火山形变特征——基于ISCE+GIANT软件_第1张图片

1.2、dem数据准备

参考上一篇博文

二、干涉像对生成

干涉像对的生成步骤为:首先计算所有满足时间基线的干涉对,计算这些干涉对的空间基线长度,再从中挑选空间基线长度满足要求的像对进行干涉处理,生成干涉图。

2.1、时间基线与空间基线选取

生成干涉像对之前要确定最长时间间隔,即干涉像对的最大时间基线,一味追求尽量多的时间基线会导致干涉像对的相干性降低,影响结果质量。最大时间基线的选取要考虑研究区域的地形地貌特征以及使用的影像数据的波长,一般在寒冷干燥的区域时间基线可以适量放大,在气候湿润、草木茂盛的地区时间基线要适量减小,本例中最大时间基线选择是200,即生成所有时间基线不超过200天的干涉对(其实这一步不需要计算完成的干涉图,只需要计算这些干涉对的空间基线即可)。

首先需要更改SAR影像文件名,将数据获取时间作为影像的文件名。如图,需要将文件名从左边更改为右边所示。

mv S1A_IW_SLC__1SDV_20170425T050421_20170425T050448_016296_01AF5C_3FD0.SAFE  20170425

像这样一个一个改比较麻烦,我们可以将safe文件写入一个文本文件,再用foreach循环读取批量更改,脚本如下:

#!/bin/csh 
rm -f list_all
ls > safe.list
foreach safe (`cat safe.list`)
        echo $safe
        set slc=`echo $safe | awk '{print substr($1,18,8)}'`
        echo $slc
        echo " $slc " >> list_all
        mv $safe $slc
end

注意文件夹下不要放除了safe文件以外的任何文件

利用SBAS-InSAR技术获取Etna火山形变特征——基于ISCE+GIANT软件_第2张图片

全部更改完成后:
利用SBAS-InSAR技术获取Etna火山形变特征——基于ISCE+GIANT软件_第3张图片
数据准备好就可以构建满足时间基线长度的像对,我的思路是先默认任意两幅影像都进行干涉处理,在处理之前计算干涉对的时间基线长度,对于时间基线超过200天的影像即跳过计算空间基线长度步骤,这样最后就能得到满足时间基线限制的所有干涉对的空间基线长度(可结合gamit软件中的doy命令辅助计算时间间隔天数)。
计算空间基线的命令:

topsApp.py insarApp.xml --steps   --start=startup --end=computeBaselines

由于在这里需要计算所有满足空间基线长度的干涉对,用一个循环实现自动生成 insarApp.xml 文件以及自动计算可以大大提高我们的运算效率,对这部分的脚本有感兴趣的小伙伴可以邮件找我要(邮箱:[email protected])。

通过计算得到baseline_list,如下所示:其中第一列、第二列分别表示主从影像,第三列为空间基线长度,第四列S1A是卫星号,在giant中进行时序分析需要。
利用SBAS-InSAR技术获取Etna火山形变特征——基于ISCE+GIANT软件_第4张图片得到基线长度列表后可以手动筛选空间基线长度不符合要求的干涉对,然后再进行干涉处理。

2.2 干涉处理

参考上一篇博文
本例中我们需要计算多个干涉对,但是原理上与计算单个干涉对是一样的,跟之前计算基线长度一样,加一个循环让计算过程实现自动化,能大大提高效率,需要脚本的可以邮件找我要。
本例中干涉结束一共得到358幅干涉图,需要将merged文件夹中生成的相位文件 filt_topophase.unw.geo和相干性 topophase.cor.geo 提取出来,并命名为类似20170612-20171103.unw 和 20170624-20170811.cor的格式(即主影像在前从影像在后的格式),方便后续时序处理。

注意:在进行干涉处理时一定要限制范围!就算是需要计算整幅影像的干涉图,同样需要限制范围,这个范围可以包含一整幅影像(可以从safe文件中的kml文件中查看影像四个角的经纬度),不然会导致时序分析那一步报错。

利用SBAS-InSAR技术获取Etna火山形变特征——基于ISCE+GIANT软件_第5张图片至此所有的干涉工作已经完成,下一步可以进行时序分析。在进行时序分析前,还可以通过经验从所有干涉图中挑选质量较差的影像进行剔除,以提高时序分析的效果。

三、GIANT进行时序分析

3.1 数据准备

进行时序分析前需要准备的文件包含:
  上一步(2.2节)中的干涉图和相干性文件
  prepxml.py文件
  userfn.py
  ifg.list
  example.rsc

3.1.1 prepxml.py 文件

用来生成后续处理过程中所需的参数文件(data.xml;mints.xml;sbas.xml)
prepxml.py 文件包含以下内容

import tsinsar as ts
import argparse
import numpy as np

def parse():
    parser= argparse.ArgumentParser(description='Preparation of XML files for setting up the processing chain. Check tsinsar/tsxml.py for details on the parameters.')
    parser.parse_args()


parse()
g = ts.TSXML('data')
g.prepare_data_xml('example',xlim=[0,5400],ylim=[0,2881],rxlim=[1350,1800],rylim=[500,800],latfile='',lonfile='',hgtfile='',inc=21.,cohth=0.26,chgendian='False',masktype='f4',unwfmt='RMG',corfmt='RMG')
g.writexml('data.xml')


g = ts.TSXML('params')
g.prepare_sbas_xml(nvalid=10,netramp=True,atmos='',demerr=False,uwcheck=False,regu=True,masterdate='20170419',filt=0.25)
g.writexml('sbas.xml')


g = ts.TSXML('params')
g.prepare_mints_xml(netramp=True,atmos='',demerr=False,uwcheck=False,regu=True,masterdate='20170419')
g.writexml('mints.xml')

11行中data表示相干性文件与干涉图的储存路径
xlim 和 ylim表示干涉图的大小(可从data/20170419-20170425.unw.xml获取);因为在干涉处理中我们对干涉图的范围进行了约束,所以生成的干涉图的大小都是一致的。
rxlim 和 rylim是指研究范围内相干稳定的地块。
cohth 指相干性阈值

20170419 是指参考主影像,一般习惯将获取时间最早的一幅作为sbas-InSAR技术中的参考主影像。

3.1.2 userfn.py

userfn.py文件包含以下内容

######This needs to be custom written for your stacks if needed
def makefnames(dates1,dates2,sensor):
    ####Sensor input is ignored in this case
    dirname = 'data'     #Relative path provided. Change to absolute path if needed.
    iname = '%s/%s-%s.unw'%(dirname,dates1,dates2)
    cname = '%s/%s-%s.cor'%(dirname,dates1,dates2)

    return iname,cname



def timedict():
    rep = [['ISPLINES',[3],[48]]]
    return rep

3.1.3 ifg.list

ifg.list文件是指在生成空间基线步骤中生成的baseline.list文件,只需要将文件名更改为ifg.list就可以了。

利用SBAS-InSAR技术获取Etna火山形变特征——基于ISCE+GIANT软件_第6张图片

3.1.4 example.rsc

example.rsc文件包含以下内容

WIDTH 5400
FILE_LENGTH 2881
WAVELENGTH 0.0555041628
HEADING_DEG -2.91336631858
CENTER_LINE_UTC 40224

WIDTH FILE_LENGTH 分别表示unw文件的长宽,跟之前prepxml.py里面是一样的。
WAVELENGTH 卫星雷达波长
HEADING_DEG 卫星雷达射线入射角
CENTER_LINE_UTC 获取影像的具体时间这个参数是用来做大气干扰矫正的,如果不需要做大气改正就随便给个参数就行

3.2 数据处理过程

python prepxml.py
PrepIgramStack.py 
ProcessStack.py
SBASInvert.py

第一步生成xml配置文件
第二步将干涉图转换成HDF5文件
第三步 数据重采样并进行掩膜处理(去除相干性低于阈值的像元)
第四步 sbas处理

3.3 结果分析

处理后的时间序列包含在LS-PARAMS.h5文件中,利用matlab中的h5disp可以读取该文件。
由于giant处理时采用的是像元坐标,所以在读取文件时需要对每一个像元值赋上经纬度坐标值,但是由于影像已经经过了地理编码,这里的赋值也就仅仅是单纯将像元坐标更改为经纬度而已,不做任何形式的转换。



clc;
clear all;
h5disp('LS-PARAMS.h5','/recons')
data = h5read('LS-PARAMS.h5','/recons');          
o_lon=14;%最小经度
d_lon=0.0002777006;%步长
o_lat=37.2;%最小纬度
d_lat=0.0002775749;%步长
for n=1:41; %影像数
    fname=[num2str(n), '.recons'];  
    C=fopen(fname,'w+');
        for i=1:5400;%5400经度方向像元数
            X = o_lon+d_lon*i;
            k = 0;
         for j=2881:-1:1;%2881纬度方向像元数
            k = k+1;
            Y = o_lat+d_lat*k;
            los=data(i,j,n);
             fprintf(C,'%10.8f %10.8f %12.6f \n',X,Y,los);

         end
        end
        fclose(C);
end

这样我们就得到41个包含形变时间序列的文件,因为我们把获取时间最早的那幅设定为参考主影像,所以1.recons里面全部是0。
现在只需要将这些时间序列绘图制作出来即可
利用SBAS-InSAR技术获取Etna火山形变特征——基于ISCE+GIANT软件_第7张图片利用SBAS-InSAR技术获取Etna火山形变特征——基于ISCE+GIANT软件_第8张图片

可以看出,2017年火山口并没有出现明显形变特征,到2018年接近火山喷发的时间,火山口才表现出强烈的地表隆升现象,最大视线向抬升超过40mm。

你可能感兴趣的:(时序insar,isce,giant)