diff --git a/CHANGELOG.md b/CHANGELOG.md index c6a5283..c2513b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html). * Read low resolution Natural Earth land masses from public url due to removal from geopandas package. * For ionosphere computation over water, includes masking conncomp zero, phase bridging, and modified adaptive gaussian filtering * Fix for #135, skip iono computation if there are not land (all zero values) and skip using water mask if the area is outside of SWBD coverage +* Fix for #145 and SET - duplicate orbit xmls for computing azimuth time grid with ISCE2 geo2rdr (duplicate state vectors likely culprit). Ensures orbit object is intialized with unique set of orbit xmls passed. Also, localized metadata appropriately. ### Added * localize_data within __main__.py added option to use/not use water mask for ionosphere processing diff --git a/isce2_topsapp/localize_orbits.py b/isce2_topsapp/localize_orbits.py index 099e73d..a1929be 100644 --- a/isce2_topsapp/localize_orbits.py +++ b/isce2_topsapp/localize_orbits.py @@ -37,6 +37,9 @@ def download_orbits(reference_scenes: list, orbit_file, _ = orbit_fetcher(scene, str(orbit_dir)) secondary_orbits.append(orbit_file) + reference_orbits = list(set(reference_orbits)) + secondary_orbits = list(set(secondary_orbits)) + return { 'orbit_directory': orbit_directory, 'reference_orbits': reference_orbits, diff --git a/isce2_topsapp/solid_earth_tides.py b/isce2_topsapp/solid_earth_tides.py index 5be02d0..c85e0b2 100644 --- a/isce2_topsapp/solid_earth_tides.py +++ b/isce2_topsapp/solid_earth_tides.py @@ -107,7 +107,10 @@ def get_orbit_obj_from_orbit_xmls(orbit_xmls: list[Path], get from the slc_id stored in GUNW products. """ state_vectors = [] - for orbit_xml in orbit_xmls: + # Duplicate XMLs leads to unexpected behavior in geo2rdr see errors in + # https://github.com/ACCESS-Cloud-Based-InSAR/DockerizedTopsApp/issues/145 + orbit_xmls_unique = list(set(orbit_xmls)) + for orbit_xml in orbit_xmls_unique: state_vectors.extend(get_state_vector_arrays(orbit_xml)) orb = Orbit() orb.configure() @@ -232,7 +235,7 @@ def get_azimuth_time_array(orbit_xmls: list[Path], Notes ----- - See get_orbit_obj_from_orbit_xmls as to why slc start time and padding is required. + - See get_orbit_obj_from_orbit_xmls as to why slc start time and padding is required. """ orb = get_orbit_obj_from_orbit_xmls(orbit_xmls,