Using mask in ionospheric correction (topsApp) #680
-
Would like to add external mask (such as water mask, or custom #676) to the ionospheric correction steps, specifically with topsApp (or tops stack). I am aware about using the property name="areas masked out in ionospheric phase estimation", but looking for the way to add the option to use external mask besides this and would appreciate any help or suggestion. I notice a comment in runionFilt.py #remove water body. Not helpful, just leave it here, so wonder why is that (@CunrenLiang ). When would be the best step to apply mask: is it before filtering ionosphere? Would it be good to mask out lower and upper band wrapped interferograms before multilooking/unwrapping? Below are the steps/thoughts that I am considering:
add multilook2(maskname, outname = maskNameMl, alks = nalks, rlks=nrlks) after L1471 in runIon.py and/or L1043
|
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 1 reply
-
@CunrenLiang <https://github.com/CunrenLiang> is an expert on the topic and
is better source.
I think ideally we limit the number of wraps across the water body. That
has the assumption of course of no large iono from one island to another.
This might help near la et. This assumption might not always hold up. Im
not sure if feeding zero coherence in snaphu or masking with some nearest
gapfilling could address that. Im not sure how it would. @CunrenLiang
<https://github.com/CunrenLiang> might have played with these before and
knows more of the caveats.
…On Tue, Mar 14, 2023 at 10:22 AM Marin Govorcin ***@***.***> wrote:
Would like to add external mask (such as water mask, or custom #676
<#676>) to the
ionospheric correction steps, specifically with topsApp (or tops stack). I
am aware about using the option , but looking for the way to add the option
to use external mask besides this and would appreciate any help or
suggestion.
I notice a comment in runionFilt.py #remove water body. Not helpful, just
leave it here
<https://github.com/isce-framework/isce2/blob/8af43d2b9f291e2370e9112a3ead1449d0f2a386/components/isceobj/Alos2Proc/runIonFilt.py#L194>,
so wonder why is that ***@***.*** <https://github.com/CunrenLiang> ).
When would be the best step to apply mask: is it before filtering
ionosphere?
Would it be good to mask out lower and upper band wrapped interferograms
before multilooking/unwrapping?
Below are the steps/thoughts that I am considering:
1.
download water mask and covert geo2radar space coordinates
use: wbd.py
<https://github.com/isce-framework/isce2/blob/main/applications/wbd.py>
in combination with waterBodyRadr
<https://github.com/isce-framework/isce2/blob/8af43d2b9f291e2370e9112a3ead1449d0f2a386/components/isceobj/Alos2Proc/Alos2ProcPublic.py#L524>
or geo2radar
<https://github.com/isce-framework/isce2/blob/8af43d2b9f291e2370e9112a3ead1449d0f2a386/contrib/stack/stripmapStack/createWaterMask.py#L105>
2.
Multilook watermask to have it in same dimensions as lowerUnw, upperUnw
add multilook2(maskname, outname = maskNameMl, alks = nalks, rlks=nrlks)
after L1471 in runIon.py
<https://github.com/isce-framework/isce2/blob/8af43d2b9f291e2370e9112a3ead1449d0f2a386/components/isceobj/TopsProc/runIon.py#L1471>
and/or L1043
<https://github.com/isce-framework/isce2/blob/8af43d2b9f291e2370e9112a3ead1449d0f2a386/components/isceobj/TopsProc/runIon.py#L1043>
1.
Add this lines (depending on ionParam.calIonWithMerged flag
<https://github.com/isce-framework/isce2/blob/8af43d2b9f291e2370e9112a3ead1449d0f2a386/components/isceobj/TopsProc/runIon.py#L202>,
add to both options)
wbd = np.fromfile('wbd'+ml2+'.wbd', dtype=np.int8).reshape(length,
width)
cor[np.nonzero(wbd==-1)] = 0.0 *#This just mask coherence (which is
used as weight in computeIonosphere, should we also mask unwrap Lower and
Upper Unw ifgs*
lowerUnw[np.nonzero(wbd==-1)] = 0.0
upperUnw[np.nonzero(wbd==-1)] = 0.0
after L1302 in runIon.py
<https://github.com/isce-framework/isce2/blob/8af43d2b9f291e2370e9112a3ead1449d0f2a386/components/isceobj/TopsProc/runIon.py#L1297>
and L1576
<https://github.com/isce-framework/isce2/blob/8af43d2b9f291e2370e9112a3ead1449d0f2a386/components/isceobj/TopsProc/runIon.py#L1576>
Tagging @sssangha <https://github.com/sssangha> @dbekaert
<https://github.com/dbekaert>
—
Reply to this email directly, view it on GitHub
<#680>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AESZPSKEV7Z6DRBWNJLVG7DW4CSO7ANCNFSM6AAAAAAV2XWSN4>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
The only benefit of mask is reducing phase unwrapping errors. There is no need for masking in filtering ionosphere as filtering uses coherence as weight, and the impact of low coherence areas can be ignored. So as a change to your workflow, if you want to reduce phase unwrapping errors, you can do it before phase unwrapping, rather than after phase unwrapping. You can also generate multilooked lat/lon files first and then use them to generate multilooked water body file, instead of doing multilooking on water body file. Multilooked lat/lon file can be generated using the original single look lat/lon files, or by running the top module. As to David's question, island is a real problem. The unwrapped values of the island might need to be corrected by n * 2pi. Limiting the number of 2pi changes over water might be an option, but still it's an ambiguity hard to resolve. |
Beta Was this translation helpful? Give feedback.
The only benefit of mask is reducing phase unwrapping errors. There is no need for masking in filtering ionosphere as filtering uses coherence as weight, and the impact of low coherence areas can be ignored.
So as a change to your workflow, if you want to reduce phase unwrapping errors, you can do it before phase unwrapping, rather than after phase unwrapping.
You can also generate multilooked lat/lon files first and then use them to generate multilooked water body file, instead of doing multilooking on water body file. Multilooked lat/lon file can be generated using the original single look lat/lon files, or by running the top module.
As to David's question, island is a real problem. The…