Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Epic for this feature: ARIA-39 - Getting issue details... STATUS

PS-Time Series with StaMPS

Introduction

StaMPS (Stanford Method for Persistent Scatterers) is a software package that implements an InSAR persistent scatterer (PS) method developed to work even in terrains devoid of man-made structures and/or undergoing non-steady deformation. StaMPS/MTI (Multi-Temporal InSAR) is an extended version of StaMPS that also includes a small baseline method and a combined multi-temporal InSAR method.


Requirements

Run the TopsStack Processor (PGE) using the link here. A merged directory, similar to the one shown below, will be used as the input. It must contain the baselines, geom_master, and SLC sub-directories.

Output Structure of Merged Directory

merged/
    baselines/
        20190506/
        20190518/
        20190530/
            20190530
            20190530.full.vrt
            20190530.vrt
            20190530.xml
    geom_master/
	    *.rdr.aux.xml
        *.rdr.full
        *.rdr.full.aux.xml
        *.rdr.full.vrt
        *.rdr.full.xml
    SLC/
        20190506/
        20190518/
        20190530/
            20190530.slc.full
            20190530.slc.full.aux.xml
            20190530.slc.full.vrt
            20190530.slc.full.xml
            20190530.slc.hdr


Setup

1. Install and configure the following packages and software. It is recommended that most of the packages be kept in a single directory.

2. Configure StaMPS_CONFIG.bash in the StaMPS-master directory with package and software paths. An example is provided below:

Example of StaMPS_CONFIG.bash

#####################################
# Main ENV variables 
#####################################
export STAMPS="/home/ahooper/StaMPS_v3.2"
export SAR="/home/ahooper/software/ROI_PAC_3_0"
export GETORB_BIN="/home/ahooper/software/getorb/bin"
export SAR_ODR_DIR="/home/ahooper/software/SAR_FILES/ODR"
#export SAR_PRC_DIR  "/home/ahooper/software/SAR_FILES/PRC"
export VOR_DIR="/home/ahooper/software/SAR_FILES/VOR"
export INS_DIR="/home/ahooper/software/SAR_FILES/INS"
export DORIS_BIN="/home/ahooper/software/doris_v4.02/bin"
export TRIANGLE_BIN="/home/ahooper/software/triangle/bin"
export SNAPHU_BIN="/home/ahooper/software/snaphu-v1.4.2/bin"
export ISCE_CONTRIB_BIN=/home/ahooper/software/isce2-master/contrib/timeseries/prepStackToStaMPS/bin
export ISCE_APP=/home/ahooper/software/isce2-master/applications
export MATLAB_COMMAND=/Applications/MATLAB_R2019a.app/bin
export ANACONDA_PATH=/anaconda3/bin
#####################################

export ROI_PAC="$SAR/ROI_PAC"
#####################################
# ROI_PAC VERSION 3 
#####################################
export INT_BIN="$ROI_PAC/INT_BIN"
export INT_SCR="$ROI_PAC/INT_SCR"
#####################################

#####################################
# ROI_PAC VERSION 2.3 and before 
#####################################
#set MACH=`uname -s`
#if ($MACH == "HP-UX") then
#  export ARCHC=HP
#else if ($MACH == "IRIX") then
#  export ARCHC=SGI
#else if ($MACH == "SunOS") then
#  export ARCHC=SUN
#else if ($MACH == "Linux") then
#  export ARCHC=LIN
#else if ($MACH == "Darwin") then
#  export ARCHC=MAC
#fi
#export INT_LIB="$ROI_PAC/LIB/$ARCHC"
#export INT_BIN="$ROI_PAC/BIN/$ARCHC"
#export FFTW_LIB="$SAR/FFTW/$ARCHC""_fftw_lib"
#####################################

#####################################
# shouldn't need to change below here
#####################################

export MY_BIN="$INT_BIN"
export MATLABPATH=$STAMPS/matlab:`echo $MATLABPATH`
export DORIS_SCR="$STAMPS/DORIS_SCR"

# Needed for ROI_PAC (a bit different to standard)

### use points not commas for decimals, and give dates in US english
export LC_NUMERIC="en_US.UTF-8"
export LC_TIME="en_US.UTF-8"


export MY_SAR="$SAR"
export OUR_SCR="$MY_SAR/OUR_SCR"
export MY_SCR="$STAMPS/ROI_PAC_SCR"

export SAR_TAPE="/dev/rmt/0mn"

export PATH=${PATH}:$STAMPS/bin:$MY_SCR:$INT_BIN:$INT_SCR:$OUR_SCR:$DORIS_SCR:$GETORB_BIN:$DORIS_BIN:$TRIANGLE_BIN:$SNAPHU_BIN:$ISCE_CONTRIB_BIN:$MATLAB_COMMAND:$MATLABPATH:$ANACONDA_PATH:$ISCE_APP

3. In terminal, use conda activate base to activate Anaconda environment.

4. Use source StaMPS_CONFIG.bash in the StaMPS directory to set environment variables.

  • Use printenv to check if the environment variables and PATH have been set.


Running ISCE to StaMPS

1. Generate a file called ”input_file” at the location where the INSAR_master_date needs to be generated. The following parameters should be contained in the input_file. Required parameters are indicated with (R), optional parameters with (O). The master date can be chosen based on minimizing perpendicular and temporal baseline. The baselines will be automatically re-inverted to the chosen master. A template and an example is shown below:

Template of input_file

Example of input_file

source_data 				slc_stack
slc_stack_path 				/home/ahooper/slc_stack/merged/SLC
slc_stack_master 			20190506
slc_stack_geom_path 		/home/ahooper/slc_stack/merged/geom_master
slc_stack_baseline_path 	/home/ahooper/slc_stack/merged/baselines
maskfile 					/home/ahooper/slc_stack/merged/geom_master/shadowMask.rdr.full
range_looks 				40
azimuth_looks 				10
aspect_ratio 				4
lambda 						0.056
slc_suffix 					.full 
geom_suffix 				.full

2. To generate the single master setup run make_single_master_stack_isce in directory with input_file.

  • The output of the INSAR_master_date directory should be similar to the example directory below:

Example of make_single_master_stack_isce Output

INSAR_20190506/
├── 20190518
├── 20190530
├── baselineGRID_20190518
├── baselineGRID_20190518.vrt
├── baselineGRID_20190518.xml
├── baselineGRID_20190530
├── baselineGRID_20190530.vrt
├── baselineGRID_20190530.xml
├── baseline_overview_new
├── dem.raw
├── dem.raw.vrt
├── dem.raw.xml
├── e.raw
├── e.raw.vrt
├── e.raw.xml
├── heading.1.in
├── heading.raw
├── heading.raw.vrt
├── heading.raw.xml
├── inc_angle.raw
├── inc_angle.raw.vrt
├── inc_angle.raw.xml
├── input_file
├── isce.log
├── lambda.1.in
├── lat.raw
├── lat.raw.vrt
├── lat.raw.xml
├── len.txt
├── lon.raw
├── lon.raw.vrt
├── lon.raw.xml
├── master
├── n.raw
├── n.raw.vrt
├── n.raw.xml
├── processing_SM.log
├── slcs.list
├── u.raw
├── u.raw.vrt
├── u.raw.xml
└── width.txt

3 directories, 39 files
  • If needed, there are more details about Running ISCE to StaMPS in the ISCE2STAMPS_Manual.pdf below:


PS Processing using StaMPS

1. In the INSAR_master_date directory, run mt_prep_isce for ISCE. For example:

mt_prep_isce 0.4 3 2 50 200 where

0.4 = amplitude dispersion (0.4-0.42 are reasonable values)

3 = number of patches in range (default 1)

2 = number of patches in azimuth, (default 1)

50 = overlapping pixels between patches in range (default 50)

200 = overlapping pixels between patches in azimuth (default 200)

The number of patches you choose will depend on the size of your area and the memory on your computer. Generally, patches containing < 5 million SLC pixels are OK. The output of mt_prep_isce should be similar to the output below:

Example Output of mt_prep_isce

INSAR_20190506
├── 20190518
├── 20190530
├── PATCH_1
├── PATCH_2
├── PATCH_3
├── PATCH_4
├── PATCH_5
├── PATCH_6
├── STAMPS.log
├── baselineGRID_20190518
├── baselineGRID_20190518.vrt
├── baselineGRID_20190518.xml
├── baselineGRID_20190530
├── baselineGRID_20190530.vrt
├── baselineGRID_20190530.xml
├── baseline_overview_new
├── bperp.1.in
├── calamp.in
├── calamp.out
├── day.1.in
├── dem.raw
├── dem.raw.vrt
├── dem.raw.xml
├── e.raw
├── e.raw.vrt
├── e.raw.xml
├── heading.1.in
├── heading.raw
├── heading.raw.vrt
├── heading.raw.xml
├── inc_angle.raw
├── inc_angle.raw.vrt
├── inc_angle.raw.xml
├── input_file
├── isce.log
├── lambda.1.in
├── lat.raw
├── lat.raw.vrt
├── lat.raw.xml
├── len.txt
├── lon.raw
├── lon.raw.vrt
├── lon.raw.xml
├── master
├── master_day.1.in
├── n.raw
├── n.raw.vrt
├── n.raw.xml
├── parms.mat
├── patch.list
├── processing_SM.log
├── processor.txt
├── ps_parms_initial.log
├── pscdem.in
├── psclonlat.in
├── pscphase.in
├── selpsc.in
├── slc_osfactor.1.in
├── slcs.list
├── u.raw
├── u.raw.vrt
├── u.raw.xml
└── width.txt

9 directories, 54 files

2. In the terminal, launch MATLAB by typing in matlab. This will open the MATLAB program with the INSAR_master_date directory.

  • The parameters that control the processing are set to default values which you can view with:

>>getparm

  • You can modify any parameters from the default using

>>setparm(‘param_name’,param_value)

Only enough characters of param name to make it unique are required. Setting param value to nan resets the parameter to the default value.

  • To run stamps end to end, use the following command:

>>stamps

This will run the following steps:

Step 1: Load data

Step 2: Estimate phase noise

Step 3: PS selection

Step 4: PS weeding

Step 5: Phase correction

Step 6: Phase unwrapping

Step 7: Estimate spatially-correlated look angle error

Step 8: Atmospheric filtering

The default is to run all steps. A subset of steps can also be selected, see >>help stamps for details.

  • If needed, there are more details about PS Processing using StaMPS in the StaMPS_Manual.pdf below:


Plotting StaMPS Output

Time Series Plots

Example 1:

>>ps_plot('v-d',1,0,0,[1:3,7:8],'ts')

Plots the mean LOS velocity, calculated from single master interferograms for PS processing, or small baseline interferograms for SB and combined processing. The ‘ts’ switch enables the user to select individual points for generating time series (TS) plots.

Initially, mouse input is activated to select a point on the velocity plot which is defined by ‘v-d’ switch. Later, using the ‘new TS plot’ button, you can define additional new points for the TS plot.

You can change ‘radius factor’ in the white text box to search in a larger radius, unless you can’t find points with the default factor (search radius = radius factor * radius, where radius is 1 arcsecond by default). After selecting a point, the following plots are produced:

Figure 2 is a v-d graph centered on the point selected with a radius around that point

Figure 3 is a LOS-time graph based on the points within the circular area in Figure 2

Example 2:

>>ps_plot('v-d',1,0,0,[], 0, 0, 0,[], [28.6 28.9], [41.2 41.27],'ts')

plots velocities for the subset defined by longitude and latitude, and generates TS plots, the rest of the switches are set to default values.

Tip: The position of ‘ts’ switch could be anywhere after plot option ‘v-d‘. For details type ps plot without any arguments on the matlab prompt to get help.

Using the ‘V-D’ option (rather than ‘v-d’) forces the use of single master interferograms for the estimation, even for SB or combined processing

Google earth KML file

Example 1:

>>ps_gescatter('project_velo.kml',ph_disp,10,0.4)

Using ps_gescatter.m will generates a kml file from ph_disp matrix for every 10 points with an opacity of 0.4. Later, you can load the ‘project_velo.kml’ file to google earth for visualization.

Tip: Use >>ps_plot('v-d',-1) to save PS velocity estimation to a mat file and later retrieve with >>load_ps_plot_v-d ph_disp command and use as an input to ps_gescatter.m .


Troubleshooting

A user group is maintained at http://groups.google.com/group/mainsar/ . If you have a query, check the discussion threads there and, if not resolved, submit your question to the group.


References

Hooper A; Bekaert D; Spaans K; Arikan M (2012), Recent advances in SAR interferometry

time series analysis for measuring crustal deformation, Tectonophysics, 514-517, pp.1-13. doi:

10.1016/j.tecto.2011.10.013

  • No labels