Additional interferogram network options for Sentinel Stack processor
stackSentinel.py currently offers for network generation only the --num_connections option. For example, --num_connections 4 will create for each date 4 nearest-neighbor interferograms.
It would be good to have the ability to skip short-term interferograms and to add several interferograms with at least 1 year temporal baseline.
I'd suggest to change the --num_connections option as follows:
--num_connections #_of_connections time_lag
--num_connections #_of_connections1 time_lag1 #_of_connections2 time_lag2
With this
--num_connections 4 40
would create 4 connections with 40 days temporal baseline and more (0-40, 0-52, 0- 64, 0-76_ day interferograms. The option
--num_connections 4 0 2 180 1 365
would create 4 short-temporal baseline interferograms, 2 180-days or longer interferograms, and 1 365-days or longer interferograms Obviously,
--num_connections 4 0
would be the same as --num_connections 4, i.e. we would have full backward compatibility.
We should should add options such as --delaunay with a scaling parameters.
Let me know your thoughts and about any other options that need to be implemented.
Great idea. In general we could have a network selection function which we could use here. Looks like networkx has some nice functionalities. Also we have some select_pairs functions in mintpy that we could reuse here and build on.
Thank you for the suggestion. NetworkX looks great, but the MintPy function is probably easier to implement. Assuming that we don't want a dependency of ISCE on MintPy we probably will copy the network.py from MintPy to ISCE and commit there. Let me know if you seen anything that could be of concern.
I would love to see this functionality added, as it has been one of the main issues I've had with the stack processor. I implemented something along these lines for automating the pair creation with topsApp, where I could define a maximum time difference allowed for the formation of date pairs: https://github.com/mjacqu/ISCE/blob/master/tops.py make_pairs function (example here: https://github.com/mjacqu/ISCE/blob/master/topsrun.py) I think ideally one could define both the minimum and maximum temporal baselines, and all pairs matching that constraint would be run.
In the GMTSAR, they have an script to select pairs according to the given threshold in time and baseline(select_pairs.sh). I think maybe it will help us. But in the first we need to calculate the baseline.