Details on Ionospheric correction with ISCE2 & MintPy

75 views
Skip to first unread message

Giorgos Kouroupis

unread,
Mar 31, 2025, 7:22:33 AMMar 31
to MintPy
Greetings dear all! :)

I would like to express my gratitude for creating such a vast tool for InSAR processing.
I look forward to better understanding the correction of the effects of the Ionosphere. After experimenting with ISCE2 and MintPy, I run into some problems, and for this please allow me to post here my questions.

Question 1:
In my understanding, all interferograms (to be) created should have their respective interferogram for ionospheric correction, correct?
i.e. ifg_clean_date1_date2 = ifg_origin_date1_date2 - ifg_iono_date1_date2 (eq.1)


Some Context:

The implementation for the topsStack which follows the https://www.researchgate.net/publication/331314888_Ionospheric_Correction_of_InSAR_Time_Series_Analysis_of_C-band_Sentinel-1_TOPS_Data which splits the groups of ionospheric interferograms based on their "first range".

and hence these comments on the git repo:

Comments:

A. "The swath starting ranges need to be the same among all acquisitions; otherwise a phase offset between adjacent swaths needs to be estimated in order to maintain consistency among the swaths, which might not be accurate enough." and
B. "In stack ionospheric phase estimation, acquisitions with same swath starting ranges are put in a group. A network is formed within a group. Extra pairs are also processed to connect the different groups so that all acquisitions are connected. But we need to estimate a phase offset for these extra pairs, which might not be accurate. Therefore, for a particular swath starting range, if there are only a few acquisitions, it's better to just discard them so that we don't have to estimate the phase offsets."

Assume I try to re-create the topsStack present in https://www.researchgate.net/publication/335024567_Small_baseline_InSAR_time_series_analysis_Unwrapping_error_correction_and_noise_reduction and run the MintPy-SBAS as well, by including Ionospheric corrections (just for the sake of doing it).

This set is comprised of 98 SAR images.
Based on the "first_range" property there are 3 groups formed, that contain the images in the following order
G0 = [2014-12-13, 2014-12-25, 2015-05-06, ..., 2016-11-08]
G1 = [2015-03-07, 2015-03-19, 2015-03-31, 2015-04-12, 2015-04-24]
G2 = [2016-11-20, ..., 2018-06-19]

The iono interferograms to be created would be with 5 connections:
From G0
ifg_iono_2014-12-12_2014-12-25
ifg_iono_2014-12-12_2015-05-06
ifg_iono_2014-12-12_2015-05-18
etc

From G1
ifg_iono_2015-03-07_2015-03-19
ifg_iono_2015-03-07_2015-04-
ifg_iono_2015-03-07_2015-04-12 etc

Similarly for G2.


Question 2:

The interferograms: ifg_iono_2014-12-12_2015-05-06, ifg_iono_2014-12-12_2015-05-18 and so on that would be created, where might they be used? Why are they even created since they do not have an original interferogram to be subtracted from? (e1. 1)


Question 3:
If we have a look at the pairs_diff_starting_ranges.txt for "num-of-connections=5":
*
ionosphere phase estimation pairs with different swath starting ranges
20141213_20150307
20141213_20150319
20141213_20150331
20141213_20150412
20141225_20150307

ionosphere phase estimation pairs with different platforms
*

we observe that any connection to G2 is missing.
-> What was the intended use here of group connection here?
because it breaks the process in ISCE2 - step 24: run_24_invertIon because the network of Ion interferograms is no longer connected.

As we can see from the G0, G1 and G2 above, G1 chronologically lies within the date range of G0, and hence G1 cannot be connected to G2. Similarly, the last element of G0 cannot be connected to G2 that would make sense if it were to respect the chronological order. This leads to not being able to create all pairs from the different range pairs to connect the groups and have a respective original interferogram.


Question 4:
From "mintpy/cli/iono_split_spectrum.py" we have:
EXAMPLE = """example:

CAUTION: Failed split spectrum estimations are common, check & locate pairs with failed estimations, exclude them using mintpy.ionosphericDelay.excludeDate(12) options. (in the config file.)

How can we, with a simple rule of thumb, tell which ifgs are good or not, and secondly, how is this connected to the first-range mismatch iono ifgs?
Do we always have to avoid using the interferograms which are present in the pairs_diff_starting_ranges and exclude them from the mintpy-config.cfg file with the mintpy.ionosphericDelay.excludeDate12?
and if there are any interferograms in such groups (see comment B.) and we exclude them, will it not drive the same break in the process as in Q3 due to the network of Ion interferograms not being fully connected?

Question 5:
Is there any rule of thumb for setting the values in ion_param.txt or are there any rules/textbooks/references that would allow us to understand the effects of these parameters on a successful ionospheric network of interferograms?


for example the Ion merged interferogram of ifg_iono_2014-12-12_2014-12-25 looks like the attachement. It is obviously wrong. So i am wondering, what is my mistake here? and how to avoid it in the future? Notice, that this area of the paper is an island area, which is said to be careful of, but how exactly?


My apologies for such a long post. However, with this, i would like to understand a bit better with these questions, and perhaps help others as well. 


Any input is very much approciated.

Thanks all in advance!


Giorgos

ifg_iono_2014-12-12_2014-12-25.png

Giorgos Kouroupis

unread,
Mar 31, 2025, 7:54:50 AMMar 31
to MintPy
Additional Information:

Operating system: Linux
MintPy installation method: conda
MintPy version: 1.6.1, date 2024-07-31

Reply all
Reply to author
Forward
0 new messages