Open scottyhq opened 6 months ago
S1_reader is a pretty heavy dependency since it requires full SLCs and requires isce3
since it is setting up opera burst processing.
If I understand correctly, the code figures out the correct ascending node time from either SLC metadata (based on estimated orbit) or external more precise orbit files https://github.com/isce-framework/s1-reader/blob/bb585c77ee538324212085f4737f3d2d534ac998/src/s1reader/s1_reader.py#L549 . Then computes ESA burstID based on a formula with burst sensingTimes (https://github.com/isce-framework/s1-reader/blob/bb585c77ee538324212085f4737f3d2d534ac998/src/s1reader/s1_burst_id.py#L19)
For this project, the approach is different, matching the ESA database TANX with closest burst TANX in the SLC metadata. Turns out sometimes the TANX per burst in the SLC metadata is relative to the last orbit, so an easy fix is to adjust by the orbital period for that case:
<azimuthTime>2024-01-15T11:41:50.791766</azimuthTime>
<azimuthAnxTime>6.389039610552900e+03</azimuthAnxTime>
<sensingTime>2024-01-15T11:41:51.898668</sensingTime>
<byteOffset>129383331</byteOffset>
<burstId absolute="111941577">148376</burstId>
T_ORBIT = (12 * 86400.0) / 175.0 = 5924s Note 6389s > T_ORBIT
fixed by https://github.com/relativeorbit/hyp3-isce2/pull/1
Leaving this issue open though for awareness because there might be other mis-matched bursts with our current approach...
The code here https://github.com/relativeorbit/hyp3-isce2/blob/944794013abe607be8e8689293f55f1864443282/src/hyp3_isce2/burst.py#L452-L460
Assumes that the S1 Burst Database the time elapsed from ascending node crossing (TANX) closely matches TANX per burst in the S1 SAFE xml annotation file. Each burst in a subswath has ~3s of separation, so we assume these metadata values are precise to ~1s to correctly identify a burst. This issue is documented extensively here https://github.com/isce-framework/s1-reader/issues/117
(The chosen solution in s1-reader was instead of reading tanx in the xml metata, the correct tanx per burst is computed from precise orbit files)
A misidentification case: