Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
d1c4d7f
disable polarimetric symmetrization by default
gshiroma Jul 3, 2025
0ef09a8
Merge branch 'isce-framework:develop' into develop
gshiroma Jul 9, 2025
2ac2694
revert changes to `symmetrize_cross_pol_channels`
gshiroma Jul 22, 2025
05d7fda
Update GCOV and GSLC specification XMLs
gshiroma Jul 22, 2025
749058d
Revert changes to the GCOV and GSLC specification XMLs
gshiroma Jul 23, 2025
fc8ac53
Merge branch 'isce-framework:develop' into develop
gshiroma Jul 24, 2025
064d073
Merge branch 'isce-framework:develop' into develop
gshiroma Aug 7, 2025
22464ef
Merge branch 'isce-framework:develop' into develop
gshiroma Aug 7, 2025
a75e7f1
Merge branch 'isce-framework:develop' into develop
gshiroma Aug 11, 2025
ab21d36
Merge branch 'isce-framework:develop' into develop
gshiroma Aug 12, 2025
d61d489
Merge branch 'isce-framework:develop' into develop
gshiroma Aug 18, 2025
0af53dd
Merge branch 'isce-framework:develop' into develop
gshiroma Aug 20, 2025
d454e6a
Merge branch 'isce-framework:develop' into develop
gshiroma Aug 21, 2025
6e7e9d1
Merge branch 'isce-framework:develop' into develop
gshiroma Aug 28, 2025
dd80c38
Merge branch 'isce-framework:develop' into develop
gshiroma Aug 29, 2025
63853b2
Merge branch 'isce-framework:develop' into develop
gshiroma Aug 29, 2025
7c7272f
Merge branch 'isce-framework:develop' into develop
gshiroma Sep 2, 2025
dd18a84
Merge branch 'isce-framework:develop' into develop
gshiroma Sep 17, 2025
d43ca22
Merge branch 'isce-framework:develop' into develop
gshiroma Oct 6, 2025
fa38bc0
Make the radar grid azimuth and range spacing parameters configurable…
gshiroma Oct 6, 2025
7b88217
Make the radar grid azimuth and range spacing parameters configurable…
gshiroma Oct 7, 2025
fd7453b
Make the radar grid azimuth and range spacing parameters configurable…
gshiroma Nov 10, 2025
4ee53eb
Expose sensing start/end times and starting/ending ranges in the STAT…
gshiroma Jan 21, 2026
70355b3
Merge branch 'isce-framework:develop' into improve_static_layers_work…
gshiroma Jan 21, 2026
31a98f0
Expose sensing start/end times and starting/ending ranges in the STAT…
gshiroma Jan 21, 2026
78a018d
rename some radar grid parameters to match focus
gshiroma Jan 26, 2026
5948de6
expose optional input RSLC into the STATIC workflow
gshiroma Jan 26, 2026
98b8c76
enable use of an optional RSLC product to generate static layers
gshiroma Jan 29, 2026
7cf5a1a
improve annotations
gshiroma Jan 29, 2026
f171e22
add default parameter values to get_cropped_orbit_and_attitude()
gshiroma Jan 29, 2026
97129a3
enable fractional precision for radargrid start and end times
gshiroma Feb 8, 2026
3383442
convert start & end date-time string to isce3.core.DateTime before ad…
gshiroma Feb 8, 2026
5b6a9ee
Merge branch 'isce-framework:develop' into improve_static_layers_work…
gshiroma Apr 23, 2026
4e7ec17
Merge branch 'develop' into improve_static_layers_workflow_optional_rslc
gshiroma Apr 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions python/packages/isce3/geometry/bounding_radar_grid.py
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,11 @@ def get_bounding_radar_grid(
Azimuth time spacing of the output grid, in seconds. Must be > 0.
rg_spacing : float
Slant range spacing of the output grid, in meters. Must be > 0.
sensing_start : float
The sensing start time of the input `geo_grid`, in seconds since the epoch of
`orbit`.
starting_range : float
The starting slant range of the input `geo_grid`, in meters.
orbit : isce3.core.Orbit
The trajectory of the radar antenna phase center over a time interval that
includes the observation times of each point in `geo_grid` at each height
Expand Down
60 changes: 48 additions & 12 deletions python/packages/nisar/static/ephemeris.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
from datetime import datetime

from nisar.products.readers.attitude import load_attitude_from_xml
from nisar.products.readers.orbit import load_orbit_from_xml
from nisar.products.readers.orbit import load_orbit_from_xml, load_orbit
from nisar.products.readers import SLC

import isce3

Expand All @@ -13,10 +14,11 @@


def get_cropped_orbit_and_attitude(
orbit_xml_file: str | os.PathLike,
pointing_xml_file: str | os.PathLike,
start_time: str | datetime | None,
end_time: str | datetime | None,
input_file_path: str | os.PathLike | None = None,
orbit_xml_file: str | os.PathLike | None = None,
pointing_xml_file: str | os.PathLike | None = None,
start_time: str | datetime | None = None,
end_time: str | datetime | None = None,
*,
padding: float = 0.0,
) -> tuple[isce3.core.Orbit, isce3.core.Attitude]:
Expand All @@ -31,10 +33,12 @@ def get_cropped_orbit_and_attitude(

Parameters
----------
orbit_xml_file : path-like
input_file_path : str or os.PathLike or None
Path to the input NISAR L1 RSLC formatted HDF5 file.
orbit_xml_file : path-like or None
Path to the input orbit ephemeris XML file. Must be an existing XML file
conforming to the NISAR Orbit Ephemeris Product Specification\ [1]_.
pointing_xml_file : path-like
pointing_xml_file : path-like or None
Path to the input radar pointing XML file. Must be an existing XML file
conforming to the NISAR Radar Pointing Product Specification\ [2]_.
start_time : str or datetime.datetime or None
Expand Down Expand Up @@ -70,16 +74,48 @@ def get_cropped_orbit_and_attitude(

logger = get_logger()

# Load ephemeris data from input XML files.
logger.info(f"Load orbit data from file {orbit_xml_file}")
orbit_full = load_orbit_from_xml(orbit_xml_file)
if orbit_xml_file is not None:
# Load ephemeris data from input XML files.
logger.info(f"Load orbit data from file {orbit_xml_file}")

if input_file_path is not None:
# Ensure the orbit is referenced to the RSLC radar grid
# reference epoch.
rslc_product = SLC(hdf5file=str(input_file_path))
rslc_radar_grid = rslc_product.getRadarGrid()
orbit_full = load_orbit(rslc_product, orbit_xml_file,
rslc_radar_grid.ref_epoch)
else:
orbit_full = load_orbit_from_xml(orbit_xml_file)

elif input_file_path is not None:
# Load ephemeris data from input RSLC HDF5 file.
logger.info(f"Load orbit data from RSLC file {input_file_path}")
rslc_product = SLC(hdf5file=str(input_file_path))
orbit_full = rslc_product.getOrbit()
else:
raise ValueError(
"Either the RSLC HDF5 or the orbit XML file must be provided"
)

logger.info(
"Original orbit data spans time interval"
f" [{orbit_full.start_datetime, orbit_full.end_datetime}]"
)

logger.info(f"Load attitude data from file {pointing_xml_file}")
attitude_full = load_attitude_from_xml(pointing_xml_file)
if pointing_xml_file is not None:
logger.info(f"Load attitude data from file {pointing_xml_file}")
attitude_full = load_attitude_from_xml(pointing_xml_file)
elif input_file_path is not None:
# Load attitude data from input RSLC HDF5 file.
logger.info(f"Load attitude data from RSLC file {input_file_path}")
rslc_product = SLC(hdf5file=str(input_file_path))
attitude_full = rslc_product.getAttitude()
else:
raise ValueError(
"Either the RSLC HDF5 or the pointing XML file must be provided"
)

logger.info(
"Original attitude data spans time interval"
f" [{attitude_full.start_datetime, attitude_full.end_datetime}]"
Expand Down
9 changes: 6 additions & 3 deletions python/packages/nisar/static/product.py
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ def populate_grids_group(
local_incidence_angle: isce3.io.Raster,
line_of_sight_x: isce3.io.Raster,
line_of_sight_y: isce3.io.Raster,
water_mask: isce3.io.Raster,
water_mask: isce3.io.Raster | None,
rtc_gamma_to_sigma_factor: isce3.io.Raster,
rtc_gamma_to_beta_factor: isce3.io.Raster,
geo_grid: isce3.product.GeoGridParameters,
Expand Down Expand Up @@ -439,8 +439,11 @@ def create_raster_layer_dataset(name: str, raster: isce3.io.Raster) -> h5py.Data
dem_dataset = create_raster_layer_dataset("digitalElevationModel", reprojected_dem)
dem_dataset.attrs["disclaimer"] = to_bytes(dem_disclaimer)

water_mask_dataset = create_raster_layer_dataset("waterMask", water_mask)
water_mask_dataset.attrs["disclaimer"] = to_bytes(water_mask_disclaimer)
if water_mask is not None:
water_mask_dataset = create_raster_layer_dataset("waterMask",
water_mask)
water_mask_dataset.attrs["disclaimer"] = to_bytes(
water_mask_disclaimer)

create_raster_layer_dataset("layoverShadowMask", layover_shadow_mask)
create_raster_layer_dataset("localIncidenceAngle", local_incidence_angle)
Expand Down
Loading
Loading