-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Inconsistency between overlapping frames #54
Comments
Hmm, I would expect the overlapping region having the same SET as well. Your 2nd plot shows this residual is a ramp long the range direction and almost centered around zero. The 0.5 mm is really small, I am wondering if the two frames have the geometry file from the same date as well? And similarly, could you try to concatenate the incidence and azimuth angle, and check their overlapping regions too? |
Hello @yunjunz upon closer inspection, it looks like the geometry files indeed are slightly off between the two frames, so I wonder if this may Regardless of this though, as a rough sanity check I hacked the
What I found after doing so was still a shift between the frames (see the E component below). I understand this is not to be expected, and am struggling to pinpoint the source of the discrepancy: |
I guess this could be due to the If confirmed (consistent between overlapping frames with step of 1), it means we should adjust the step/grid selection and resize code . |
@yunjunz , your suggested test works! So looks like we would have to adjust the step as you advised. Thanks again for helping to debug! |
Hello @yunjunz , as an amendment to my previous comment I manually re-referenced the two frames to the same coordinate after the fields were generated. To clarify though, is this necessary or should the outputs be agnostic to a reference point? I see the output Because if I don't re-reference the grids manually, I get a constant offset as so, event after setting the |
If subtracting 1 from the dimensions like this intentional? |
Yes, this was intentional, to ensure the generated SET from the fortran program to have the size of |
Assuming this is still
Hmm... Is the magnitude of this offset equivalent to shifting one or a few pixels? |
[Thoughts In Progress] until we figure out the offset without spatial referencing. With these tests you have done here, which is super helpful, I think we should adjust the step as below, e.g. given a shape of 1033 x 2526 with a step size of 20:
|
Apologies, not sure I understand. It's a vertical offset that doesn't seem to translate laterally. And yes I did manually hack it still to use Thanks for the advice here! I'm working to test out your suggestions. Quick point of clarification though, how would you be defining the starting coord using the step_size in this case? Would it be like:
And also, how would this work if the specified
So I would adjust this e.g. as so?:
This would already be captured by this section, right? |
@yunjunz , I just realized something. The fact that we don't use the same datetime info between these frames should play a role here, no? E.g. refer to this section where we feed in this info to the function. The reported center time will be different for adjacent frames. |
I agree with you, that's the timing difference along the orbit! If it's not accounted for, this timing variation will introduce a small ramp along the azimuth direction for a long track (I described this in section III.E.2 in my 2022 TGRS paper, after Dr. Dennis Milber brought it up in our email communications); and for the multiple frames stitching, as in your case here, it looks like a jump in our current implementation! I intended to write a Note that adding a constant offset, or setting the same UTC time, fixes the "look" (to be continuous), but the ramp along azimuth still exists, which we have been ignoring so far. |
Good point. Then we should still use the precise corner coordinates of the corner pixels, i.e. the UL pixel's UL corner, UR pixel's UR corner, LL pixel's LL corner and LR pixel's LR corner. The adjusted procedure should be, e.g. given a shape of 1033 x 2526 with a step size of 20:
That does not capture the cropping, at least not properly accounting for the extra pixels falling into the last partial coarse step. |
To clarify though, how do you envision this
So for the aforementioned application involving embedding SET within the GUNW, could you please advise on my current plan of action, specifically on whether or not this sounds good on a high level? We compute SET as downsampled metadata layers for 4 height levels within the GUNW for each individual frame, for which of course different sensing times for the center of the scenes are captured and passed. This leads to this apparent offset which I "correct" by sequentially stitching the downsampled layers (before interpolation) in cases multiple frames are involved (i.e. estimate the integer offset in areas of overlap at incrementally apply it). This is captured in this ARIA-tools PR. Also note following our discussions, we are not passing reference and secondary estimates of SET directly, as opposed to inverting the differential fields. Marin and myself have made adjustments to prep_aria to reflect this through this branch. As far as commits to pysolid, I will issue a PR capturing your most recent suggestions regarding adjustments to the number of steps. Perhaps from there we could perhaps gameplan how a Again thanks for your ongoing help and advice, myself and the team really appreciate it! |
The start/stop sensing time information is available from ISCE (I am not sure about this detail in ARIA products), which can be used to generate the pixel-wised 2D matrix for the timing, similar to what we have for incidence angle. We could have a function in pysolid or mintpy to generate this. On the implementation side, I would imagine we have a Python API from the Fortran code, e.g. |
I agree. Your plan of action looks good to me, except for one detail: the output of pysolid is already interpolated, so I would leverage that, and stitch the interpolated SET in ARIA-tools, instead of the downsampled one. |
Great, but to clarify I meant to stitch the downsampled products intentionally for the sake of efficiency/speed. I.e. current interpolation procedure takes ~a few secs or so depending on the footprint of the image, so it would save a great deal of time to interpolate after stitching. Unless you would recommend otherwise?
Are you referring to this function? |
I don't have a strong opinion on this: code simplicity and efficiency are both important. Your call.
Yes. |
When using
calc_solid_earth_tides_grid
through MintPy for two separate runs involving overlapping frames, I notice unexpected behavior.Specifically, I would expect the overlapping region between the two to be consistent after referencing epochs in the stack to the same reference date and point, but I instead find a non-zero, sub-mm level mean offset (~0.1 mm, and a range of ~0.5mm) and stdev (~0.33 mm):
Here is the residual within the overlapping region:
Please let me know how I can help to debug, if I should clarify anything, and if also perhaps it would be best to share the input files I used on the MintPy end. Many thanks
The text was updated successfully, but these errors were encountered: