diff --git a/CHANGES.rst b/CHANGES.rst index 8cf290d4f8..dace76e2d8 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -81,6 +81,8 @@ Other Changes and Additions New Features ------------ +- Prevent image wrapping in Imviz with Roman L2 images with GWCS. [#2887] + Cubeviz ^^^^^^^ diff --git a/jdaviz/configs/imviz/plugins/parsers.py b/jdaviz/configs/imviz/plugins/parsers.py index d0a17a321a..be12b31f76 100644 --- a/jdaviz/configs/imviz/plugins/parsers.py +++ b/jdaviz/configs/imviz/plugins/parsers.py @@ -216,7 +216,7 @@ def _parse_image(app, file_obj, data_label, ext=None, parent=None): # NOTE: if extending this beyond GWCS, the mouseover logic # for outside_*_bounding_box should also be updated. data.coords._orig_bounding_box = data.coords.bounding_box - data.coords.bounding_box = None + if not data.meta.get(_wcs_only_label, False): data_label = app.return_data_label(data_label, alt_name="image_data") diff --git a/jdaviz/configs/imviz/wcs_utils.py b/jdaviz/configs/imviz/wcs_utils.py index bae667b156..8425a8f6a6 100644 --- a/jdaviz/configs/imviz/wcs_utils.py +++ b/jdaviz/configs/imviz/wcs_utils.py @@ -6,6 +6,7 @@ import base64 import math from io import BytesIO +import warnings import matplotlib.pyplot as plt import numpy as np @@ -575,7 +576,13 @@ def compute_scale(wcs, fiducial, disp_axis, pscale_ratio=1): if spectral and disp_axis is None: # pragma: no cover raise ValueError('If input WCS is spectral, a disp_axis must be given') - crpix = np.array(wcs.invert(*fiducial)) + if wcs.in_image(*fiducial): + crpix = np.array(wcs.invert(*fiducial)) + else: + # At this point we know the bounding box is probably defined, so we can + # use the central coordinate inside the bounding box + warnings.warn("WCS fiducial coordinates not inside bounding box") + crpix = np.mean(wcs.pixel_bounds, axis=1) delta = np.zeros_like(crpix) spatial_idx = np.where(np.array(wcs.output_frame.axes_type) == 'SPATIAL')[0]