​sce2+mintpy生成SBAS

  • 时间:2025-12-03 22:00 作者: 来源: 阅读:0
  • 扫一扫,手机访问
摘要:使用isce2+mintpy进行哨兵一号时序InSAR的SBAS形变提取全流程。 数据准备: AUX文件获取:https://sar-mpc.eu/ DEM数据:-a拼接 -b范围 -r运行状态 -s数据类型1或者3 -c将数据从EGM96转到WGS84,注意我们的数据的基准全部都在WGS84下进行 dem.py -a stitch -b 22 23 113 114 -r -s 1 -

使用isce2+mintpy进行哨兵一号时序InSAR的SBAS形变提取全流程。

数据准备:

AUX文件获取:https://sar-mpc.eu/

DEM数据:-a拼接 -b范围 -r运行状态 -s数据类型1或者3 -c将数据从EGM96转到WGS84,注意我们的数据的基准全部都在WGS84下进行


dem.py -a stitch -b 22 23 113 114 -r -s 1 -c

Orbits精轨数据:https://s1qc.asf.alaska.edu/aux_poeorb/

SLC哨兵1号数据:ASF Data Search          https://search.asf.alaska.edu/

使用stackSentinel.py获取干涉图序列

1.创建如下文件夹

可设置工作路径



export ORBIT_PATH='/YOUR_DATA_DIR/orbits'
export AUX_PATH='/YOUR_DATA_DIR/AUXFILE'
export DEM_PATH='/YOUR_DATA_DIR/DEM'
export SLC_PATH='/YOUR_DATA_DIR/SLC'
export WORK_DIR='/YOUR_DATA_DIR/Stacks'

使用stackSentinel.py获取干涉图序列,没有设置工作路径,下面就可以设置为绝对路径 --num_proc 指定同时运行的任务数量,可以理解为多线程运行(可选)


stackSentinel.py -s $SLC_PATH -w $WORK_DIR -a $AUX_PATH -d $DEM_PATH/demLat_N22_N23_Lon_E113_E114.dem.wgs84 -o $ORBIT_PATH -n 3 -b '22.28 22.35 113.86 113.97' --useGPU -C geometry -c 3 -z 1 -r 3 -f 0.6 --num_proc 4 

上一步生成该文件夹run_file config,运行 run_file中的所有文件,才算正式进行干涉图生成,很吃内存也很耗时间

可以一步一步去做,防止中间出错或忽略掉一些提示信息,例如:



cd $WORK_PATH/run_files
bash run_01_unpack_topo_reference

也可写一个代码全流程运行:



#!/bin/bash
 
cwd=$(pwd)
scripts_dir="$cwd/run_files"
 
# 检查是否存在17个脚本文件
script_count=$(find "$scripts_dir" -name "run_*" | wc -l)
if [ "$script_count" -ne 17 ]; then
    echo "错误:期望找到17个脚本文件,但找到了 $script_count 个"
    exit 1
fi
 
# 按顺序运行脚本
for i in $(seq -f "%02g" 1 16); do
    for script in "$scripts_dir"/run_*; do
        if [[ "$script" == *"run_${i}"* ]]; then
            echo "开始运行 $script"
            start_time=$(date +%s)
            bash "$script"
            end_time=$(date +%s)
            duration=$((end_time - start_time))
            echo "$script 处理完成! 耗时: ${duration} 秒"
            break
        fi
    done
done

所有的结果都被保存在$WORK_PATH中,可以实时地去查看,运行完所有的run_files后,我们所需的结果都在merged文件夹中,其中geom_reference里的文件记录了雷达坐标系和地心坐标系之间的转换关系,用于后续地理编码的操作,interferograms文件夹里即为各个日期对应的干涉结果:
.unw 解缠相位结果
filt_fine.int 滤波后干涉图
fine.int 原始干涉结果
.cor 相干性结果

注意ISCE生成的所有的 vrt+xml+meta源文件形式的文件,都可以用 mdx.py检查结果,
例如我查看某一日期对的滤波后干涉影像:



cd $WORK_PATH//media/lx/LIXUAN/SBAS/A/merged/interferograms/20250322_20250403
view.py filt_fine.int -c jet --wrap
mdx.py filt_fine.int  #这个命令我没找到

使用MintPy计算时序InSAR形变序列

在获取了干涉序列后,最后一步就是用MintPy去获得最终的时序InSAR形变产品,首先在 $WORK_PATH中创建一个 mintpy文件夹,作为MintPy的工作文件夹:



mkdir mintpy; cd mintpy
smallbaselineApp.py -g

smallbaselineApp.py是mintpy的核心,这里我们创建了mintpy文件夹,并使用smallbaselineApp.py -g生成了一个cfg参数配置文件,名字叫smallbaselineApp.cfg。(这个配置文件可自动生成,也可自己设置,最后有几个参考)

如果你是按照上述流程配置1进行的stackSentinel生成,那么直接用这个参数是可以获得一个结果的。mintpy系统自带使用pyAPS进行大气校正,需要额外下载ERA5数据,这里比较麻烦就不赘述,后续可以再开一篇博客。


smallbaselineApp.py smallbaselineApp.cfg

运行完成将会自动运行完所有步骤并获取结果

mintpy获取的结果均用hdf5文件(.h5)进行储存,可以看到mintpy文件夹下生成了很多.h5文件,其中比较重要的列举一下:
timeseries.h5:累计形变序列文件
timeseries_demErr.h5:经过地形DEM误差改正后的累计形变序列文件
velocity.h5 :形变速率文件

geo文件夹下储存了所有系统自动进行地理编码后的结果,如geo_timeseries_demErr.h5包含了各个日期对应的累积形变序列,储存于hdf5数据格式中

pic文件夹包括了系统给出的一些可视化结果

    首先,对于所有mintpy生成的h5文件,均可使用info.py查看其文件结构以及相关信息。如info.py timeseries_demErr.h5,这一功能类似于GDAL中的gdalinfo。
    所有的timeseries文件,均可以用tsview.py进行交互式可视化查看,如

tsview.py timeseries_demErr.h5。
    非时间序列的 .h5文件,可以用view.py进行查看,view.py velocity.h5

  save_gdal.py从.h5文件中提取栅格文件转为ENVI或Tiff格式
    geocode.py对文件进行地理编码处理,可以实现rdr雷达坐标系下的栅格文件和WGS84坐标栅格文件的互相转化

配置1:



# vim: set filetype=cfg:
##------------------------ smallbaselineApp.cfg ------------------------##
########## computing resource configuration
mintpy.compute.maxMemory = 24 #分配的运算内存[float > 0.0], auto for 4, max memory to allocate in GB
mintpy.load.processor       = isce  #指定你的干涉处理平台[isce, aria, hyp3, gmtsar, snap, gamma, roipac, nisar], auto for isce
mintpy.load.updateMode      = no  #是否每次都是忽略已有的结果,重新生成结果[yes / no], auto for yes, skip re-loading if HDF5 files are complete
 
##---------for ISCE only:
mintpy.load.metaFile        = ../reference/IW*.xml  #指定IW对应的xml数据[path of common metadata file for the stack], i.e.: ./reference/IW1.xml, ./referenceShelve/data.dat
mintpy.load.baselineDir     = ../baselines  #基线文件夹[path of the baseline dir], i.e.: ./baselines
##---------interferogram stack:
mintpy.load.unwFile         = ../merged/interferograms/*/filt_fine.unw  #所有的解缠后相位文件unw[path pattern of unwrapped interferogram files]
mintpy.load.corFile         = ../merged/interferograms/*/filt_fine.cor  #[path pattern of spatial coherence       files]
mintpy.load.connCompFile    = ../merged/interferograms/*/filt_fine.unw.conncomp  #[path pattern of connected components    files], optional but recommended
##---------geometry用于地理编码的文件:
mintpy.load.demFile         = ../merged/geom_reference/hgt.rdr  #[path of DEM file]
mintpy.load.lookupYFile     = ../merged/geom_reference/lat.rdr  #[path of latitude /row   /y coordinate file], not required for geocoded data
mintpy.load.lookupXFile     = ../merged/geom_reference/lon.rdr  #[path of longitude/column/x coordinate file], not required for geocoded data
mintpy.load.incAngleFile    = ../merged/geom_reference/los.rdr  #[path of incidence angle file], optional but recommended
mintpy.load.azAngleFile     = ../merged/geom_reference/los.rdr  #[path of azimuth   angle file], optional
mintpy.load.shadowMaskFile  = ../merged/geom_reference/shadowMask.rdr  #[path of shadow mask file], optional but recommended
########## 4. correct_unwrap_error (optional)
## supported methods:
## a. phase_closure          - suitable for highly redundant network
## b. bridging               - suitable for regions separated by narrow decorrelated features, e.g. rivers, narrow water bodies
## c. bridging+phase_closure - recommended when there is a small percentage of errors left after bridging
mintpy.unwrapError.method          = bridging  #选择解缠误差改正方法[bridging / phase_closure / bridging+phase_closure / no], auto for no
mintpy.troposphericDelay.method = no  #是否进行大气校正,这里不进行大气校正[pyaps / height_correlation / gacos / no], auto for pyaps
########## 9.2 reference_date
## Reference all time-series to one date in time
## reference: Yunjun et al. (2019, section 4.9)
## no     - do not change the default reference date (1st date)
mintpy.reference.date = no   #指定参考日期,no为第一个日期[reference_date.txt / 20090214 / no], auto for reference_date.txt
mintpy.plot.maxMemory = 16  #分配给绘图的内存[float], auto for 4, max memory used by one call of view.py for plotting.
 

配置2:



# vim: set filetype=cfg:
##------------------------------- ISCE/topsStack ----------------------##
##-------------------------------- MintPy -----------------------------##
########## 1. Load Data (--load to exit after this step)
## load_data.py -H to check more details and example inputs.
#mintpy.load.processor        = isce
##---------for ISCE only:
mintpy.load.metaFile         = ../isceOutEx3/master/IW*.xml
mintpy.load.baselineDir      = ../isceOutEx3/baselines
##---------interferogram datasets:
mintpy.load.unwFile          = ../isceOutEx3/merged/interferograms/*/filt_*.unw
mintpy.load.corFile          = ../isceOutEx3/merged/interferograms/*/filt_*.cor
mintpy.load.connCompFile     = ../isceOutEx3/merged/interferograms/*/filt_*.unw.conncomp
##---------geometry datasets:
mintpy.load.demFile          = ../isceOutEx3/merged/geom_master/hgt.rdr
mintpy.load.lookupYFile      = ../isceOutEx3/merged/geom_master/lat.rdr
mintpy.load.lookupXFile      = ../isceOutEx3/merged/geom_master/lon.rdr
mintpy.load.incAngleFile     = ../isceOutEx3/merged/geom_master/los.rdr
mintpy.load.azAngleFile      = ../isceOutEx3/merged/geom_master/los.rdr
mintpy.load.shadowMaskFile   = ../isceOutEx3/merged/geom_master/shadowMask.rdr
##---------multilook (optional):
## multilook while loading data with nearest interpolation, to reduce dataset size
mintpy.load.ystep          = auto    #[int >= 1], auto for 1 - no multilooking
mintpy.load.xstep          = auto    #[int >= 1], auto for 1 - no multilooking
##---------subset (optional):
## if both yx and lalo are specified, use lalo option unless a) no lookup file AND b) dataset is in radar coord
mintpy.subset.yx           = auto    #[y0:y1,x0:x1 / no], auto for no
mintpy.subset.lalo         = auto    #[S:N,W:E / no], auto for no
########## 2. modify_network
########## 3. reference_point
mintpy.reference.maskFile      = no   #[filename / no], auto for maskConnComp.h5
mintpy.reference.minCoherence  = 0.5   #[0.0-1.0], auto for 0.85, minimum coherence for auto method
########## 4. correct_unwrap_error (optional)
## a. phase_closure          - suitable for highly redundant network
## b. bridging               - suitable for regions separated by narrow decorrelated features, e.g. rivers, narrow water bodies
## c. bridging+phase_closure - recommended when there is a small percentage of errors left after bridging
mintpy.unwrapError.method          = no #[bridging / phase_closure / bridging+phase_closure / no], auto for no
mintpy.unwrapError.waterMaskFile   = no  #[waterMask.h5 / no], auto for waterMask.h5 or no [if not found]
########## 5. invert_network
mintpy.networkInversion.waterMaskFile   = no #[filename / no], auto for waterMask.h5 or no [if not found]
mintpy.networkInversion.maskDataset   = no #[coherence / connectComponent / offsetSNR / no], auto for no
## Temporal coherence is calculated and used to generate the mask as the reliability measure
## reference: Pepe & Lanari (2006, IEEE-TGRS)
mintpy.networkInversion.shadowMask  = auto #[yes / no], auto for yes [if shadowMask is in geometry file] or no.
########## 6. correct_troposphere (optional but recommended)
mintpy.troposphericDelay.method = height_correlation #[pyaps / height_correlation / gacos / no], auto for pyaps
## Notes for height_correlation:
## Extra multilooking is applied to estimate the empirical phase/elevation ratio ONLY.
## For an dataset with 5 by 15 looks, looks=8 will generate phase with (5*8) by (15*8) looks
## to estimate the empirical parameter; then apply the correction to original phase (with 5 by 15 looks),
## if the phase/elevation correlation is larger than minCorrelation.
mintpy.troposphericDelay.polyOrder      = auto  #[1 / 2 / 3], auto for 1
mintpy.troposphericDelay.looks          = auto  #[1-inf], auto for 8, extra multilooking num
mintpy.troposphericDelay.minCorrelation = auto  #[0.0-1.0], auto for 0
########## 7. deramp (optional)
########## 8. correct_topography (optional but recommended)
########## 9.1 residual_RMS (root mean squares for noise evaluation)
########## 9.2 reference_date
mintpy.reference.date = 20200807   #[reference_date.txt / 20090214 / no], auto for reference_date.txt
########## 10. velocity
## Estimate linear velocity and its standard deviation from time-series
## and from tropospheric delay file if exists.
## reference: Fattahi and Amelung (2015, JGR)
mintpy.velocity.excludeDate    = auto   #[exclude_date.txt / 20080520,20090817 / no], auto for exclude_date.txt
mintpy.velocity.startDate      = auto   #[20070101 / no], auto for no
mintpy.velocity.endDate        = auto   #[20101230 / no], auto for no
## Bootstrapping
## refernce: Efron and Tibshirani (1986, Stat. Sci.)
mintpy.velocity.bootstrap      = auto   #[yes / no], auto for no, use bootstrap
mintpy.velocity.bootstrapCount = auto   #[int>1], auto for 400, number of iterations for bootstrapping

配置3:正在用



# vim: set filetype=cfg:
##------------------------ smallbaselineApp.cfg ------------------------##
########## computing resource configuration
mintpy.compute.maxMemory = auto #[float > 0.0], auto for 4, max memory to allocate in GB
## parallel processing with dask
## currently apply to steps: invert_network, correct_topography
## cluster   = none to turn off the parallel computing
## numWorker = all  to use all of locally available cores (for cluster = local only)
## numWorker = 80%  to use 80% of locally available cores (for cluster = local only)
## config    = none to rollback to the default name (same as the cluster type; for cluster != local)
mintpy.compute.cluster   = auto #[local / slurm / pbs / lsf / none], auto for none, cluster type
mintpy.compute.numWorker = auto #[int > 1 / all / num%], auto for 4 (local) or 40 (slurm / pbs / lsf), num of workers
mintpy.compute.config    = auto #[none / slurm / pbs / lsf ], auto for none (same as cluster), config name
 
 
########## 1. load_data
##---------add attributes manually
## MintPy requires attributes listed at: https://mintpy.readthedocs.io/en/latest/api/attributes/
## Missing attributes can be added below manually (uncomment #), e.g.
# ORBIT_DIRECTION = ascending
# PLATFORM = CSK
# ...
## a. autoPath - automatic path pattern defined in mintpy.defaults.auto_path.AUTO_PATH_*
## b. load_data.py -H to check more details and example inputs.
## c. compression to save disk usage for ifgramStack.h5 file:
## no   - save   0% disk usage, fast [default]
## lzf  - save ~57% disk usage, relative slow
## gzip - save ~62% disk usage, very slow [not recommend]
mintpy.load.processor       = isce  #[isce, aria, hyp3, gmtsar, snap, gamma, roipac, nisar], auto for isce
mintpy.load.autoPath        = auto  #[yes / no], auto for no, use pre-defined auto path
mintpy.load.updateMode      = auto  #[yes / no], auto for yes, skip re-loading if HDF5 files are complete
mintpy.load.compression     = auto  #[gzip / lzf / no], auto for no.
##---------for ISCE only:
mintpy.load.metaFile        = ../reference/IW*.xml  #[path of common metadata file for the stack], i.e.: ./reference/IW1.xml, ./referenceShelve/data.dat
mintpy.load.baselineDir     = ../baselines  #[path of the baseline dir], i.e.: ./baselines
##---------interferogram stack:
mintpy.load.unwFile         = ../merged/interferograms/*/filt_*.unw  #[path pattern of unwrapped interferogram files]
mintpy.load.corFile         = ../merged/interferograms/*/filt_*.cor  #[path pattern of spatial coherence       files]
mintpy.load.connCompFile    = ../merged/interferograms/*/filt_*.unw.conncomp  #[path pattern of connected components    files], optional but recommended
mintpy.load.intFile         = auto  #[path pattern of wrapped interferogram   files], optional
mintpy.load.magFile         = auto  #[path pattern of interferogram magnitude files], optional
##---------ionosphere stack (optional):
mintpy.load.ionUnwFile      = auto  #[path pattern of unwrapped interferogram files]
mintpy.load.ionCorFile      = auto  #[path pattern of spatial coherence       files]
mintpy.load.ionConnCompFile = auto  #[path pattern of connected components    files], optional but recommended
##---------offset stack (optional):
mintpy.load.azOffFile       = auto  #[path pattern of azimuth offset file]
mintpy.load.rgOffFile       = auto  #[path pattern of range   offset file]
mintpy.load.azOffStdFile    = auto  #[path pattern of azimuth offset variance file], optional but recommended
mintpy.load.rgOffStdFile    = auto  #[path pattern of range   offset variance file], optional but recommended
mintpy.load.offSnrFile      = auto  #[path pattern of offset signal-to-noise ratio file], optional
##---------geometry:
mintpy.load.demFile         = ../merged/geom_reference/hgt.rdr  #[path of DEM file]
mintpy.load.lookupYFile     = ../merged/geom_reference/lat.rdr  #[path of latitude /row   /y coordinate file], not required for geocoded data
mintpy.load.lookupXFile     = ../merged/geom_reference/lon.rdr  #[path of longitude/column/x coordinate file], not required for geocoded data
mintpy.load.incAngleFile    = ../merged/geom_reference/los.rdr  #[path of incidence angle file], optional but recommended
mintpy.load.azAngleFile     = ../merged/geom_reference/los.rdr  #[path of azimuth   angle file], optional
mintpy.load.shadowMaskFile  = ../merged/geom_reference/shadowMask.rdr  #[path of shadow mask file], optional but recommended
mintpy.load.waterMaskFile   = auto  #[path of water  mask file], optional but recommended
mintpy.load.bperpFile       = auto  #[path pattern of 2D perpendicular baseline file], optional
##---------subset (optional):
## if both yx and lalo are specified, use lalo option unless a) no lookup file AND b) dataset is in radar coord
mintpy.subset.yx            = auto    #[y0:y1,x0:x1 / no], auto for no
mintpy.subset.lalo          = auto    #[S:N,W:E / no], auto for no
##---------multilook (optional):
## multilook while loading data with the specified method, to reduce dataset size
## method - nearest, mean and median methods are applicable to interferogram/ionosphere/offset stack(s), except for:
##   connected components and all geometry datasets, for which nearest is hardwired.
## Use mean / median method with caution! It could smoothen the noise for a better SNR, but it could also smoothen the
##   unwrapping errors, breaking the integer 2pi relationship, which is used in the unwrapping error correction.
##   If you really want to increase the SNR, consider re-generate your stack of interferograms with more looks instead.
mintpy.multilook.method     = auto    #[nearest, mean, median], auto for nearest - lines/rows skipping approach
mintpy.multilook.ystep      = auto    #[int >= 1], auto for 1 - no multilooking
mintpy.multilook.xstep      = auto    #[int >= 1], auto for 1 - no multilooking
 
 
########## 2. modify_network
## 1) Network modification based on temporal/perpendicular baselines, date, num of connections etc.
mintpy.network.tempBaseMax     = auto  #[1-inf, no], auto for no, max temporal baseline in days
mintpy.network.perpBaseMax     = auto  #[1-inf, no], auto for no, max perpendicular spatial baseline in meter
mintpy.network.connNumMax      = auto  #[1-inf, no], auto for no, max number of neighbors for each acquisition
mintpy.network.startDate       = auto  #[20090101 / no], auto for no
mintpy.network.endDate         = auto  #[20110101 / no], auto for no
mintpy.network.excludeDate     = auto  #[20080520,20090817 / no], auto for no
mintpy.network.excludeDate12   = auto  #[20080520_20090817 / no], auto for no
mintpy.network.excludeIfgIndex = auto  #[1:5,25 / no], auto for no, list of ifg index (start from 0)
mintpy.network.referenceFile   = auto  #[date12_list.txt / ifgramStack.h5 / no], auto for no
 
## 2) Data-driven network modification
## a - Coherence-based network modification = (threshold + MST) by default
## reference: Yunjun et al. (2019, section 4.2 and 5.3.1); Chaussard et al. (2015, GRL)
## It calculates a average coherence for each interferogram using spatial coherence based on input mask (with AOI)
## Then it finds a minimum spanning tree (MST) network with inverse of average coherence as weight (keepMinSpanTree)
## Next it excludes interferograms if a) the average coherence < minCoherence AND b) not in the MST network.
mintpy.network.coherenceBased  = auto  #[yes / no], auto for no, exclude interferograms with coherence < minCoherence
mintpy.network.minCoherence    = auto  #[0.0-1.0], auto for 0.7
 
## b - Effective Coherence Ratio network modification = (threshold + MST) by default
## reference: Kang et al. (2021, RSE)
## It calculates the area ratio of each interferogram that is above a spatial coherence threshold.
## This threshold is defined as the spatial coherence of the interferograms within the input mask.
## It then finds a minimum spanning tree (MST) network with inverse of the area ratio as weight (keepMinSpanTree)
## Next it excludes interferograms if a) the area ratio < minAreaRatio AND b) not in the MST network.
mintpy.network.areaRatioBased  = auto  #[yes / no], auto for no, exclude interferograms with area ratio < minAreaRatio
mintpy.network.minAreaRatio    = auto  #[0.0-1.0], auto for 0.75
 
## Additional common parameters for the 2) data-driven network modification
mintpy.network.keepMinSpanTree = auto  #[yes / no], auto for yes, keep interferograms in Min Span Tree network
mintpy.network.maskFile        = auto  #[file name, no], auto for waterMask.h5 or no [if no waterMask.h5 found]
mintpy.network.aoiYX           = auto  #[y0:y1,x0:x1 / no], auto for no, area of interest for coherence calculation
mintpy.network.aoiLALO         = auto  #[S:N,W:E / no], auto for no - use the whole area
 
 
########## 3. reference_point
## Reference all interferograms to one common point in space
## auto - randomly select a pixel with coherence > minCoherence
## however, manually specify using prior knowledge of the study area is highly recommended
##   with the following guideline (section 4.3 in Yunjun et al., 2019):
## 1) located in a coherence area, to minimize the decorrelation effect.
## 2) not affected by strong atmospheric turbulence, i.e. ionospheric streaks
## 3) close to and with similar elevation as the AOI, to minimize the impact of spatially correlated atmospheric delay
mintpy.reference.yx            = auto   #[257,151 / auto]
mintpy.reference.lalo          = auto   #[31.8,130.8 / auto]
mintpy.reference.maskFile      = auto   #[filename / no], auto for maskConnComp.h5
mintpy.reference.coherenceFile = auto   #[filename], auto for avgSpatialCoh.h5
mintpy.reference.minCoherence  = auto   #[0.0-1.0], auto for 0.85, minimum coherence for auto method
 
 
########## quick_overview
## A quick assessment of:
## 1) possible groud deformation
##    using the velocity from the traditional interferogram stacking
##    reference: Zebker et al. (1997, JGR)
## 2) distribution of phase unwrapping error
##    from the number of interferogram triplets with non-zero integer ambiguity of closue phase
##    reference: T_int in Yunjun et al. (2019, CAGEO). Related to section 3.2, equation (8-9) and Fig. 3d-e.
 
 
########## 4. correct_unwrap_error (optional)
## connected components (mintpy.load.connCompFile) are required for this step.
## SNAPHU (Chem & Zebker,2001) is currently the only unwrapper that provides connected components as far as we know.
## reference: Yunjun et al. (2019, section 3)
## supported methods:
## a. phase_closure          - suitable for highly redundant network
## b. bridging               - suitable for regions separated by narrow decorrelated features, e.g. rivers, narrow water bodies
## c. bridging+phase_closure - recommended when there is a small percentage of errors left after bridging
mintpy.unwrapError.method          = bridging  #[bridging / phase_closure / bridging+phase_closure / no], auto for no
mintpy.unwrapError.waterMaskFile   = auto  #[waterMask.h5 / no], auto for waterMask.h5 or no [if not found]
mintpy.unwrapError.connCompMinArea = auto  #[1-inf], auto for 2.5e3, discard regions smaller than the min size in pixels
 
## phase_closure options:
## numSample - a region-based strategy is implemented to speedup L1-norm regularized least squares inversion.
##     Instead of inverting every pixel for the integer ambiguity, a common connected component mask is generated,
##     for each common conn. comp., numSample pixels are radomly selected for inversion, and the median value of the results
##     are used for all pixels within this common conn. comp.
mintpy.unwrapError.numSample       = auto  #[int>1], auto for 100, number of samples to invert for common conn. comp.
 
## bridging options:
## ramp - a phase ramp could be estimated based on the largest reliable region, removed from the entire interferogram
##     before estimating the phase difference between reliable regions and added back after the correction.
## bridgePtsRadius - half size of the window used to calculate the median value of phase difference
mintpy.unwrapError.ramp            = auto  #[linear / quadratic], auto for no; recommend linear for L-band data
mintpy.unwrapError.bridgePtsRadius = auto  #[1-inf], auto for 50, half size of the window around end points
 
 
########## 5. invert_network
## Invert network of interferograms into time-series using weighted least square (WLS) estimator.
## weighting options for least square inversion [fast option available but not best]:
## a. var - use inverse of covariance as weight (Tough et al., 1995; Guarnieri & Tebaldini, 2008) [recommended]
## b. fim - use Fisher Information Matrix as weight (Seymour & Cumming, 1994; Samiei-Esfahany et al., 2016).
## c. coh - use coherence as weight (Perissin & Wang, 2012)
## d. no  - uniform weight (Berardino et al., 2002) [fast]
## SBAS (Berardino et al., 2002) = minNormVelocity (yes) + weightFunc (no)
mintpy.networkInversion.weightFunc      = no#[var / fim / coh / no], auto for var
mintpy.networkInversion.waterMaskFile   = no #[filename / no], auto for waterMask.h5 or no [if not found]
mintpy.networkInversion.minNormVelocity = no #[yes / no], auto for yes, min-norm deformation velocity / phase
 
## mask options for unwrapPhase of each interferogram before inversion (recommend if weightFunct=no):
## a. coherence              - mask out pixels with spatial coherence < maskThreshold
## b. connectComponent       - mask out pixels with False/0 value
## c. no                     - no masking [recommended].
## d. range/azimuthOffsetStd - mask out pixels with offset std. dev. > maskThreshold [for offset]
mintpy.networkInversion.maskDataset   = auto #[coherence / connectComponent / rangeOffsetStd / azimuthOffsetStd / no], auto for no
mintpy.networkInversion.maskThreshold = auto #[0-inf], auto for 0.4
mintpy.networkInversion.minRedundancy = auto #[1-inf], auto for 1.0, min num_ifgram for every SAR acquisition
 
## Temporal coherence is calculated and used to generate the mask as the reliability measure
## reference: Pepe & Lanari (2006, IEEE-TGRS)
mintpy.networkInversion.minTempCoh  = auto #[0.0-1.0], auto for 0.7, min temporal coherence for mask
mintpy.networkInversion.minNumPixel = auto #[int > 1], auto for 100, min number of pixels in mask above
mintpy.networkInversion.shadowMask  = auto #[yes / no], auto for yes [if shadowMask is in geometry file] or no.
 
 
########## correct_LOD
## Local Oscillator Drift (LOD) correction (for Envisat only)
## reference: Marinkovic and Larsen (2013, Proc. LPS)
## automatically applied to Envisat data (identified via PLATFORM attribute)
## and skipped for all the other satellites.
 
 
########## 6. correct_SET
## Solid Earth tides (SET) correction [need to install insarlab/PySolid]
## reference: Milbert (2018); Yunjun et al. (2022, IEEE-TGRS)
mintpy.solidEarthTides = auto #[yes / no], auto for no
 
 
########## 7. correct_ionosphere (optional but recommended)
## correct ionospheric delay [need split spectrum results from ISCE-2 stack processors]
## reference:
##   ISCE-2 topsApp/topsStack: Liang et al. (2019, IEEE-TGRS)
##   ISCE-2 stripmapApp/stripmapStack: Fattahi et al. (2017, IEEE-TGRS)
##   ISCE-2 alos2App/alosStack: Liang et al. (2018, IEEE-TGRS)
mintpy.ionosphericDelay.method        = auto  #[split_spectrum / no], auto for no
mintpy.ionosphericDelay.excludeDate   = auto  #[20080520,20090817 / no], auto for no
mintpy.ionosphericDelay.excludeDate12 = auto  #[20080520_20090817 / no], auto for no
 
 
########## 8. correct_troposphere (optional but recommended)
## correct tropospheric delay using the following methods:
## a. height_correlation - correct stratified tropospheric delay (Doin et al., 2009, J Applied Geop)
## b. pyaps - use Global Atmospheric Models (GAMs) data (Jolivet et al., 2011; 2014)
##      ERA5  - ERA5    from ECMWF [need to install PyAPS from GitHub; recommended and turn ON by default]
##      MERRA - MERRA-2 from NASA  [need to install PyAPS from Caltech/EarthDef]
##      NARR  - NARR    from NOAA  [need to install PyAPS from Caltech/EarthDef; recommended for N America]
## c. gacos - use GACOS with the iterative tropospheric decomposition model (Yu et al., 2018, JGR)
##      need to manually download GACOS products at http://www.gacos.net for all acquisitions before running this step
mintpy.troposphericDelay.method = no  #[pyaps / height_correlation / gacos / no], auto for pyaps
 
## Notes for pyaps:
## a. GAM data latency: with the most recent SAR data, there will be GAM data missing, the correction
##    will be applied to dates with GAM data available and skipped for the others.
## b. WEATHER_DIR: if you define an environment variable named WEATHER_DIR to contain the path to a
##    directory, then MintPy applications will download the GAM files into the indicated directory.
##    MintPy application will look for the GAM files in the directory before downloading a new one to
##    prevent downloading multiple copies if you work with different dataset that cover the same date/time.
mintpy.troposphericDelay.weatherModel = auto  #[ERA5 / MERRA / NARR], auto for ERA5
mintpy.troposphericDelay.weatherDir   = auto  #[path2directory], auto for WEATHER_DIR or "./"
 
## Notes for height_correlation:
## Extra multilooking is applied to estimate the empirical phase/elevation ratio ONLY.
## For an dataset with 5 by 15 looks, looks=8 will generate phase with (5*8) by (15*8) looks
## to estimate the empirical parameter; then apply the correction to original phase (with 5 by 15 looks),
## if the phase/elevation correlation is larger than minCorrelation.
mintpy.troposphericDelay.polyOrder      = auto  #[1 / 2 / 3], auto for 1
mintpy.troposphericDelay.looks          = auto  #[1-inf], auto for 8, extra multilooking num
mintpy.troposphericDelay.minCorrelation = auto  #[0.0-1.0], auto for 0
 
## Notes for gacos:
## Set the path below to directory that contains the downloaded *.ztd* files
mintpy.troposphericDelay.gacosDir = auto # [path2directory], auto for "./GACOS"
 
 
########## 9. deramp (optional)
## Estimate and remove a phase ramp for each acquisition based on the reliable pixels.
## Recommended for localized deformation signals, i.e. volcanic deformation, landslide and land subsidence, etc.
## NOT recommended for long spatial wavelength deformation signals, i.e. co-, post- and inter-seimic deformation.
mintpy.deramp          = auto  #[no / linear / quadratic], auto for no - no ramp will be removed
mintpy.deramp.maskFile = auto  #[filename / no], auto for maskTempCoh.h5, mask file for ramp estimation
 
 
########## 10. correct_topography (optional but recommended)
## Topographic residual (DEM error) correction
## reference: Fattahi and Amelung (2013, IEEE-TGRS)
## stepDate          - specify stepDate option if you know there are sudden displacement jump in your area,
##                     e.g. volcanic eruption, or earthquake
## excludeDate       - dates excluded for the error estimation
## pixelwiseGeometry - use pixel-wise geometry (incidence angle & slant range distance)
##                     yes - use pixel-wise geometry if they are available [slow; used by default]
##                     no  - use the mean   geometry [fast]
mintpy.topographicResidual                   = auto  #[yes / no], auto for yes
mintpy.topographicResidual.polyOrder         = auto  #[1-inf], auto for 2, poly order of temporal deformation model
mintpy.topographicResidual.phaseVelocity     = auto  #[yes / no], auto for no - use phase velocity for minimization
mintpy.topographicResidual.stepDate          = auto  #[20080529,20190704T1733 / no], auto for no, date of step jump
mintpy.topographicResidual.excludeDate       = auto  #[20070321 / txtFile / no], auto for exclude_date.txt
mintpy.topographicResidual.pixelwiseGeometry = auto  #[yes / no], auto for yes, use pixel-wise geometry info
 
 
########## 11.1 residual_RMS (root mean squares for noise evaluation)
## Calculate the Root Mean Square (RMS) of residual phase time-series for each acquisition
## reference: Yunjun et al. (2019, section 4.9 and 5.4)
## To get rid of long spatial wavelength component, a ramp is removed for each acquisition
## Set optimal reference date to date with min RMS
## Set exclude dates (outliers) to dates with RMS > cutoff * median RMS (Median Absolute Deviation)
mintpy.residualRMS.maskFile = auto  #[file name / no], auto for maskTempCoh.h5, mask for ramp estimation
mintpy.residualRMS.deramp   = auto  #[quadratic / linear / no], auto for quadratic
mintpy.residualRMS.cutoff   = auto  #[0.0-inf], auto for 3
 
########## 11.2 reference_date
## Reference all time-series to one date in time
## reference: Yunjun et al. (2019, section 4.9)
## no     - do not change the default reference date (1st date)
mintpy.reference.date = auto   #[reference_date.txt / 20090214 / no], auto for reference_date.txt
 
 
########## 12. velocity
## Estimate a suite of time functions [linear velocity by default]
## from final displacement file (and from tropospheric delay file if exists)
mintpy.timeFunc.startDate   = auto   #[20070101 / no], auto for no
mintpy.timeFunc.endDate     = auto   #[20101230 / no], auto for no
mintpy.timeFunc.excludeDate = auto   #[exclude_date.txt / 20080520,20090817 / no], auto for exclude_date.txt
 
## Fit a suite of time functions
## reference: Hetland et al. (2012, JGR) equation (2-9)
## polynomial function    is  defined by its degree in integer. 1 for linear, 2 for quadratic, etc.
## periodic   function(s) are defined by a list of periods in decimal years. 1 for annual, 0.5 for semi-annual, etc.
## step       function(s) are defined by a list of onset times in str in YYYYMMDD(THHMM) format
## exp & log  function(s) are defined by an onset time followed by an charateristic time in integer days.
##   Multiple exp and log functions can be overlaied on top of each other, achieved via e.g.:
##   20110311,60,120          - two functions sharing the same onset time OR
##   20110311,60;20170908,120 - separated by ";"
mintpy.timeFunc.polynomial = auto   #[int >= 0], auto for 1, degree of the polynomial function
mintpy.timeFunc.periodic   = auto   #[1,0.5 / list_of_float / no], auto for no, periods in decimal years
mintpy.timeFunc.stepDate   = auto   #[20110311,20170908 / 20120928T1733 / no], auto for no, step function(s)
mintpy.timeFunc.exp        = auto   #[20110311,60 / 20110311,60,120 / 20110311,60;20170908,120 / no], auto for no
mintpy.timeFunc.log        = auto   #[20110311,60 / 20110311,60,120 / 20110311,60;20170908,120 / no], auto for no
 
## Uncertainty quantification methods:
## a. residue    - propagate from fitting residue assuming normal dist. in time (Fattahi & Amelung, 2015, JGR)
## b. covariance - propagate from time series (co)variance matrix
## c. bootstrap  - bootstrapping (independently resampling with replacement; Efron & Tibshirani, 1986, Stat. Sci.)
mintpy.timeFunc.uncertaintyQuantification = auto   #[residue, covariance, bootstrap], auto for residue
mintpy.timeFunc.timeSeriesCovFile         = auto   #[filename / no], auto for no, time series covariance file
mintpy.timeFunc.bootstrapCount            = auto   #[int>1], auto for 400, number of iterations for bootstrapping
 
 
########## 13.1 geocode (post-processing)
# for input dataset in radar coordinates only
# commonly used resolution in meters and in degrees (on equator)
# 100,         90,          60,          50,          40,          30,          20,          10
# 0.000925926, 0.000833334, 0.000555556, 0.000462963, 0.000370370, 0.000277778, 0.000185185, 0.000092593
mintpy.geocode              = auto  #[yes / no], auto for yes
mintpy.geocode.SNWE         = auto  #[-1.2,0.5,-92,-91 / none ], auto for none, output extent in degree
mintpy.geocode.laloStep     = auto  #[-0.000555556,0.000555556 / None], auto for None, output resolution in degree
mintpy.geocode.interpMethod = auto  #[nearest], auto for nearest, interpolation method
mintpy.geocode.fillValue    = auto  #[np.nan, 0, ...], auto for np.nan, fill value for outliers.
 
########## 13.2 google_earth (post-processing)
mintpy.save.kmz             = auto   #[yes / no], auto for yes, save geocoded velocity to Google Earth KMZ file
 
########## 13.3 hdfeos5 (post-processing)
mintpy.save.hdfEos5         = auto   #[yes / no], auto for no, save time-series to HDF-EOS5 format
mintpy.save.hdfEos5.update  = auto   #[yes / no], auto for no, put XXXXXXXX as endDate in output filename
mintpy.save.hdfEos5.subset  = auto   #[yes / no], auto for no, put subset range info   in output filename
 
########## 13.4 plot
# for high-resolution plotting, increase mintpy.plot.maxMemory
# for fast plotting with more parallelization, decrease mintpy.plot.maxMemory
mintpy.plot           = auto  #[yes / no], auto for yes, plot files generated by default processing to pic folder
mintpy.plot.dpi       = auto  #[int], auto for 150, number of dots per inch (DPI)
mintpy.plot.maxMemory = auto  #[float], auto for 4, max memory used by one call of view.py for plotting.

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】创建一个本地分支(2025-12-03 22:43)
【系统环境|】git 如何删除本地和远程分支?(2025-12-03 22:42)
【系统环境|】2019|阿里11面+EMC+网易+美团面经(2025-12-03 22:42)
【系统环境|】32位单片机定时器入门介绍(2025-12-03 22:42)
【系统环境|】从 10 月 19 日起,GitLab 将对所有免费用户强制实施存储限制(2025-12-03 22:42)
【系统环境|】价值驱动的产品交付-OKR、协作与持续优化实践(2025-12-03 22:42)
【系统环境|】IDEA 强行回滚已提交到Master上的代码(2025-12-03 22:42)
【系统环境|】GitLab 15.1发布,Python notebook图形渲染和SLSA 2级构建工件证明(2025-12-03 22:41)
【系统环境|】AI 代码审查 (Code Review) 清单 v1.0(2025-12-03 22:41)
【系统环境|】构建高效流水线:CI/CD工具如何提升软件交付速度(2025-12-03 22:41)
手机二维码手机访问领取大礼包
返回顶部