LSST Applications g0f08755f38+9c285cab97,g1635faa6d4+13f3999e92,g1653933729+a8ce1bb630,g1a0ca8cf93+bf6eb00ceb,g28da252d5a+0829b12dee,g29321ee8c0+5700dc9eac,g2bbee38e9b+9634bc57db,g2bc492864f+9634bc57db,g2cdde0e794+c2c89b37c4,g3156d2b45e+41e33cbcdc,g347aa1857d+9634bc57db,g35bb328faa+a8ce1bb630,g3a166c0a6a+9634bc57db,g3e281a1b8c+9f2c4e2fc3,g414038480c+077ccc18e7,g41af890bb2+fde0dd39b6,g5fbc88fb19+17cd334064,g781aacb6e4+a8ce1bb630,g80478fca09+55a9465950,g82479be7b0+d730eedb7d,g858d7b2824+9c285cab97,g9125e01d80+a8ce1bb630,g9726552aa6+10f999ec6a,ga5288a1d22+2a84bb7594,gacf8899fa4+c69c5206e8,gae0086650b+a8ce1bb630,gb58c049af0+d64f4d3760,gc28159a63d+9634bc57db,gcf0d15dbbd+4b7d09cae4,gda3e153d99+9c285cab97,gda6a2b7d83+4b7d09cae4,gdaeeff99f8+1711a396fd,ge2409df99d+5e831397f4,ge79ae78c31+9634bc57db,gf0baf85859+147a0692ba,gf3967379c6+41c94011de,gf3fb38a9a8+8f07a9901b,gfb92a5be7c+9c285cab97,w.2024.46
LSST Data Management Base Package
Loading...
Searching...
No Matches
Functions
lsst.afw.image.exposure.exposureUtils Namespace Reference

Functions

 bbox_to_convex_polygon (bbox, wcs, padding=10)
 
 bbox_contains_sky_coords (bbox, wcs, ra, dec, padding=10)
 

Function Documentation

◆ bbox_contains_sky_coords()

lsst.afw.image.exposure.exposureUtils.bbox_contains_sky_coords ( bbox,
wcs,
ra,
dec,
padding = 10 )
Check if a set of sky positions are in the bounding box.

This uses a two-step process: first check that the coordinates are
inside a padded version of the bbox projected on the sky, and then
project the remaining points onto the bbox, to avoid inverting
the WCS outside of the valid region. The default padding
size was chosen to be sufficient for the most warped detectors at
the edges of the HyperSuprimeCam focal plane.

Parameters
----------
bbox : `lsst.geom.Box2I`
    Pixel bounding box to check sky positions in.
wcs : `lsst.afw.image.SkyWcs`
    WCS associated with the bounding box.
ra : `astropy.Quantity`, (N,)
    Array of Right Ascension, angular units.
dec : `astropy.Quantity`, (N,)
    Array of Declination, angular units.
padding : `int`
   Pixel padding to ensure that bounding box is entirely contained
   within the resulting polygon.

Returns
-------
contained : `np.ndarray`, (N,)
   Boolean array indicating which points are contained in the
   bounding box.

Definition at line 60 of file exposureUtils.py.

60def bbox_contains_sky_coords(bbox, wcs, ra, dec, padding=10):
61 """Check if a set of sky positions are in the bounding box.
62
63 This uses a two-step process: first check that the coordinates are
64 inside a padded version of the bbox projected on the sky, and then
65 project the remaining points onto the bbox, to avoid inverting
66 the WCS outside of the valid region. The default padding
67 size was chosen to be sufficient for the most warped detectors at
68 the edges of the HyperSuprimeCam focal plane.
69
70 Parameters
71 ----------
72 bbox : `lsst.geom.Box2I`
73 Pixel bounding box to check sky positions in.
74 wcs : `lsst.afw.image.SkyWcs`
75 WCS associated with the bounding box.
76 ra : `astropy.Quantity`, (N,)
77 Array of Right Ascension, angular units.
78 dec : `astropy.Quantity`, (N,)
79 Array of Declination, angular units.
80 padding : `int`
81 Pixel padding to ensure that bounding box is entirely contained
82 within the resulting polygon.
83
84 Returns
85 -------
86 contained : `np.ndarray`, (N,)
87 Boolean array indicating which points are contained in the
88 bounding box.
89 """
90 poly = bbox_to_convex_polygon(bbox, wcs, padding=padding)
91
92 _ra = np.atleast_1d(ra.to(units.radian).value).astype(np.float64)
93 _dec = np.atleast_1d(dec.to(units.radian).value).astype(np.float64)
94
95 radec_contained = poly.contains(_ra, _dec)
96
97 contained = np.zeros_like(radec_contained, dtype=bool)
98
99 x_in, y_in = wcs.skyToPixelArray(_ra[radec_contained], _dec[radec_contained], degrees=False)
100 xy_contained = bbox.contains(x_in, y_in)
101
102 # contained[not radec_contained] is already false
103 contained[radec_contained] = xy_contained
104 return contained

◆ bbox_to_convex_polygon()

lsst.afw.image.exposure.exposureUtils.bbox_to_convex_polygon ( bbox,
wcs,
padding = 10 )
Convert a bounding box and wcs to a convex polygon on the sky, with paddding.

The returned polygon has additional padding to ensure that the
bounding box is entirely contained within it.  The default padding
size was chosen to be sufficient for the most warped detectors at
the edges of the HyperSuprimeCam focal plane.

Parameters
----------
bbox : `lsst.geom.Box2I`
    Bounding box to convert.
wcs : `lsst.afw.image.SkyWcs`
    WCS associated with the bounding box.
padding : `int`
   Pixel padding to ensure that bounding box is entirely contained
   within the resulting polygon.

Returns
-------
convex_polygon : `lsst.sphgeom.ConvexPolygon`
   Will be None if wcs is not valid.

Definition at line 29 of file exposureUtils.py.

29def bbox_to_convex_polygon(bbox, wcs, padding=10):
30 """Convert a bounding box and wcs to a convex polygon on the sky, with paddding.
31
32 The returned polygon has additional padding to ensure that the
33 bounding box is entirely contained within it. The default padding
34 size was chosen to be sufficient for the most warped detectors at
35 the edges of the HyperSuprimeCam focal plane.
36
37 Parameters
38 ----------
39 bbox : `lsst.geom.Box2I`
40 Bounding box to convert.
41 wcs : `lsst.afw.image.SkyWcs`
42 WCS associated with the bounding box.
43 padding : `int`
44 Pixel padding to ensure that bounding box is entirely contained
45 within the resulting polygon.
46
47 Returns
48 -------
49 convex_polygon : `lsst.sphgeom.ConvexPolygon`
50 Will be None if wcs is not valid.
51 """
52 # Convert Box2I to Box2D, without modifying original.
53 _bbox = lsst.geom.Box2D(bbox)
54 _bbox.grow(padding)
55 corners = [wcs.pixelToSky(corner).getVector()
56 for corner in _bbox.getCorners()]
57 return lsst.sphgeom.ConvexPolygon(corners)
58
59
A floating-point coordinate rectangle geometry.
Definition Box.h:413
ConvexPolygon is a closed convex polygon on the unit sphere.