StaMPS Process of Feng-Pei County using Sentinel1A in LiDO3
Intro
This post is about working in Land Subsidence in Feng-Pei county in Xuzhou city. Cause the only free and available SAR dataset in this area is Sentinel-1A, so we downloaded 20 scenes SLC data to process.
snap2stamps process in LiDO
Errors and Solutions
Error 1 No pathlib found in python module
Solution
1
2
import os
from pathlib2 import Path
Error 2 Error: [NodeId: Apply-Orbit-File] qc.sentinel1.eo.esa.int: Name or service not known
Solution
Both indicates outdated SNAP versions, run Menu > Help > Check for Updates?
the most recent version is 8.0.4 (Menu > Help > About SNAP)1
1 |
|
Error 3 [NodeId: Interferogram] org.jblas.NativeBlas.dgemm
1 |
|
Solution
My workaround linking the v7 jblas.jar, suggested in the first post in this thread, only worked until an update was applied, which unfortunately overwrote the linked files in v73. So linking was not the best solution. I had to download v7 again to get the jblas.jar2.
If you have this issue, I recommend keeping a copy of the v7 jblas.jar so you can overwrite the file if it is required after it is replaced by an update. The workaround uses the v7 jblas.jar which is linked to older GLIBC library. Just copy the v7 file:
snap_7.0.4/s1tbx/modules/ext/org.jlinda.jlinda-core/org-jblas/jblas.jar
over both:
snap_8.0.9/s1tbx/modules/ext/org.jlinda.jlinda-core/org-jblas/jblas.jar
snap_8.0.9/s1tbx/modules/ext/org.jlinda.jlinda-nest/org-jblas/jblas.jar
snap2staps
1 |
|
StaMPS Process
After snap2stamps, move folder to /work/smyumeng/Sentinel_PS/Feng-Pei/, start stamps processing with slurm scripts in folder /work/smyumeng/project/scripts/.
1 |
|
Prefilter phase before unwrapping to reduce noise. SCLA and AOE subtraction is applied when step 6 is redone after step 7. To avoid subtraction use scla_reset.
Note In case of re-running Step 6 after a full StaMPS run, estimates of SCLA and master atmosphere and orbit error (AOE) will be subtracted before unwrapping. If you do not wish this to occur, reset these estimates before running Step 6 again with scla_reset. This is useful if one is interested in local signals only, or when looking for landslides in a larger area. This subtraction of SCLA and master AOE has not been implemented with the unwrap_prefilter_flag = ‘n’ option.)
How to process in StaMPS
run steps 1-65
checkps_plot ('u')
add bad ifgs to scla_drop_index
run step 7
checkps_plot('u-dm')
is generally smoother
rerun step 6
checkps_plot('u')
remove ifgs that have improved in unwrapping result from scla_index and rerun step 7
rerun step 6 and check again.
keep doing this process until results are satisfying and command:ps_plot('v-do'. 'ts')
to check if the total velocities are okay, if result is not > satisfying try:
rerun from step 6 with more goldstein filtering
rerun from step 5 with a highermerge_resample_size
rerun from step 4 with changes to theweed_standard_dev
parameter
rerun from step 2 with bad ifgs added todrop_ifg_index
and possible changes to parameters step 2 and 3
set your reference location for plotting using:
1 |
|
StaMPS Plotting
Display wrapped phase with
>>ps_plot('w')
: Check the wrapped phase of the selected pixels. In terms of reprocessing, the first parameter to play with isweed_standard_dev
. If it looks like too many noisy pixels are being chosen, the value can be reduced. If very few pixels are chosen, the value can be increased. If still too few pixels are being selected such that any signal is generally undersampled, variation of Step 2 parameters can be tried. The number of initial candidates can also be increased by setting the amplitude dispersion higher inmt_prep
(step 5)4.
Display unwrapping error with
>>ps_plot('u')
: Check for unwrapping errors i.e., phase jumps in space which are uncorrelated in time (step 6). Pay attention to the color scale. It may help to set it to a narrower range . Unwrapping errors are more likely to occur in longer perpendicular baseline interferograms. This is for two reasons, firstly there is more noise associated with each PS pixel, and secondly, the phase due to any spatially-correlated look angle (SCLA) error is larger, as it is proportional to perpendicular baseline. Noise is reduced by spatial filtering before unwrapping, but it is also possible to reduce the SCLA error phase by estimating the SCLA error from the interferograms that have been unwrapped OK by running Step 7. If Step 6 is re-run after Step 7 has been run, the SCLA error phase is temporarily subtracted from the wrapped phase before unwrapping. The unwrapping accuracy is further improved by also temporarily subtracting the atmosphere and orbit error (AOE) phase of the master image, present in all the interferograms, which is also estimated in Step 7.
Display the estimate of SCLA error with
>>ps plot('d')
: Units are phase per m of perpendicular baseline, with 0.01 radians/m corresponding to about 12 m of DEM error for the Envisat I2 swath. You can use>>K2q
to do the conversion for ERS, Envisat I2 swath or ALOS.
Display the estimate of master atmosphere and orbit erroe AOE phase with
>>ps plot('m')
Display the phase ramps (if scla_deramp
is set to ‘y’) with
>>ps_plot('o')
Unwrapped phase minus one of, or a combination of the above can be plotted with u-d
, u-m
, u-o
, u-dm
, u-do
and u-dmo
.
After running step 7, check that the estimates seem reasonable, i.e. ps plot(‘u-dm’) looks generally smoother than ps plot(‘u’) (note that the default colour scales will be different). If not generally smoother, one or more interferograms have probably been incorrectly unwrapped (usually those with large perpendicular baselines)4.
Post-StaMPS
To convert the corrected LOS displacement from StaMPS into combined ascending and descending vertical displacement I have created a few python scripts to ease this process. The scripts can be downloaded from this git and meed to be adjusted to your folder system5.
first script to run is vertical_displacement_calculator.py second script to run is asc_desc_combiner.py.
Vertical Displacement
When all images are from the same track, you get the displacement along the line-of-sight (LOS) between the earth and the sensor. If you want to have vertical displacement, you need images from both ascending and descending tracks. There are lots of approaches to achieve this, some are trightforward, others are more complex. At the moment, none of them is implemented in SNAP6.
Visualization
Visualization of the data in this project is done using QGIS and Python. All scripts used can be found in this Git and shapefiles used can be requested by contacting me directly. Scripts will have to be adjusted to personal file structure and projections to be usable5.
If all results are satisfying make a kml file with all data for visualization:
1 |
|
or make a csv file with all data vor visualizations:
1 |
|
if you want to use TRAIN check the TRAIN manual but using linear correction try this:
1 |
|
TRAIN
TRAIN - Toolbox for Reducing Atmospheric InSAR Noise7
One of the main challenges in InSAR processing is related to atmospheric delays, especially tropospheric delays. Different correction methods are applied today based on auxiliary data, including GNSS, weather models (e.g. ECMWF ERA-I, WRF, NARR, etc), spectrometer data (MERIS and MODIS), or combinations of different sources. Alternative methods exist to estimate the tropospheric delays from the radar data themselves. The success rate of the different techniques is dependant on multiple factors like temporal and spatial resolution, cloud cover, signal contamination, local topography, etc.
Below we provide a set of MATLAB tools that can be use to correct for tropospheric delays in InSAR data. Once set-up for one correction method, the toolbox allows for easy comparison with other methods, as all are formatted in the same way. The toolbox is fully compatible, but not limited, to the Doris and StaMPS (v4.1+ or github) software. Initial debugging has been done for ROI_PAC and PI-rate processed data, but user feedback and reporting will allow for further development. The toolbox includes the correction methods provided below, with a full descriptive manual on the input parameters, and tips/hints in case of problems. The latest developers version of the manual can be downloaded by clicking here. TRAIN is distributed under a GNU-GPL license and available on github.
Included module
TRAIN is under continuous development with expansion of additional techniques and models. Most of the methods include download scripts and set-up of the source data. In the latest version we include support for the following techniques:
- Spectrometer - MERIS correction (only Envisat support for now)
- Spectrometer - MODIS correction
- Weather model correction - ERA-I, MERRA, MERRA-2, GACOS
- Weather model correction - when running your own Weather Research and Forecasting Model (WRF)
- Phase-based - Power-law correction for tropospheric delays
- Phase-based - Linear phase-topography correction
Correction
Using linear correction try this5:
1 |
|
Notes
-
edit
aps_weather_model_times.m
to avoid the need for the Financial Toolbox. Simply replacetoday
byfloor(now)
in line 19. -
edit
aps_weather_model_InSAR.m
sincesetparm_aps('lambda', ...)
does not seem to be working correctly. Setlambda = 0.0547
(wavelength [m] for S1) in line 74. -
Conclusions from Hooper et al. (2015)8:
Our analysis included methods based on spectrometer measurements, output of weather models, and empirical interferometric phase-based methods. When available and limited to cloud-free and daylight acquisitions only, we found the spectrometers to provide the largest RMSE reduction. We found that the estimated tropospheric delays using MODIS have at best an accuracy equal to that of MERIS, and at worst twice that of MERIS. We found the phase-based methods (linear and power-law) to outperform the weather model methods in regions where tropospheric delays are mainly correlated with topography. For regions over which this is less apparent, due to turbulence in the troposphere and dynamic local weather, weather models can potentially offer better performance. In those instances where weather models mis-estimate the location of turbulent features, they will have a correspondingly higher RMSE. We did not find a significant improvement when using a local high-resolution weather model (7 km and 2 km) instead of the global reanalysis products. With a longer required runtime, local weather model are less suitable for near real-time InSAR application. From a cloud cover analysis, we found the performance of the different correction methods to worsen with increasing cloud cover, with a ~ 10–20% increase in RMSE for each cloudy SAR date.
Result
Result 1
This attempt was resulted by all parameter set at default.
Result 2
Change parameter according to gis_blog
Parameter | Default | Description | Description |
---|---|---|---|
scla_deramp |
‘n’ | ‘y’ | If set to ‘y’, a phase ramp is estimated for each interferogram. The estimated ramp will be subtracted before unwrapping. This is useful if one is interested in local signals only (interesting when looking for landslides in a larger area). |
unwrap_gold_n_win |
32 | 16 | Window size for Goldstein filter. |
unwrap_grid_size |
200 | 100 | Resampling grid spacing. If unwrap_prefilter_flag is set to ‘y’, phase is resampled to this grid. Should be at least as large as merge_grid_size . |
unwrap_time_win |
730 | 360 | Smoothing window (in days) for estimating phase noise distribution for each pair of neighbouring pixels (i.e. smoothing filter length in days for smoothing phase in time by estimate the noise contribution for each phase arc). The time series phase for each pair is smoothed using a Gaussian window with standard deviation of this size. Original phase minus smoothed phase is assumed to be noise, which is used for determining probability of a phase jump between the pair in each interferogram. Could be importand when looking for Landslides. See unwrap_grid_size |
scn_time_win |
365 | 180 | Temporal filtering window size. |
Tranfer folder to Windows for futher analysis!
Result 3
Parameter | Default | Description |
---|---|---|
scla_deramp |
‘n’ | ‘y’ |
unwrap_gold_n_win |
32 | 8 |
unwrap_grid_size |
200 | 50 |
unwrap_time_win |
730 | 60 |
scn_time_win |
365 | 120 |
Time series plot and export to Visualization in MATLAB
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!