Displacement Time Series using Persistent Scatterers
Epic for this feature: ARIA-39: Displacement Time Series using Persistent ScatterersOpen
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.
Anaconda (with isce2 and mesa-libgl-cos6-x86_64)
StaMPS
ISCE
Triangle
Need to compile triangle with following command:
cc -O -o triangle triangle.c -lm
Snaphu (v2.0.0)
For MacOS, compile the snaphu executable from the src directory using
make
command
MATLAB
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
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
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
Testing: 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