LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
cellInfo.py
Go to the documentation of this file.
1 #
2 # LSST Data Management System
3 # Copyright 2008, 2009, 2010 LSST Corporation.
4 #
5 # This product includes software developed by the
6 # LSST Project (http://www.lsst.org/).
7 #
8 # This program is free software: you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation, either version 3 of the License, or
11 # (at your option) any later version.
12 #
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
17 #
18 # You should have received a copy of the LSST License Statement and
19 # the GNU General Public License along with this program. If not,
20 # see <http://www.lsstcorp.org/LegalNotices/>.
21 #
22 
23 __all__ = ["CellInfo"]
24 
25 from .detail import makeSkyPolygonFromBBox
26 
27 
28 class CellInfo:
29  """Information about a cell within a patch of a tract of a sky map.
30 
31  See `PatchInfo` and `TractInfo` for more information.
32 
33  Parameters
34  ----------
35  index : `lsst.skymap.Index2D`
36  x,y index of a cell (a pair of ints)
37  innerBBox : `lsst.geom.Box2I`
38  Inner bounding box.
39  outerBBox : `lsst.geom.Box2I`
40  Outer bounding box.
41  sequentialIndex : `int`
42  Cell sequential index.
43  tractWcs : `lsst.afw.geom.SkyWcs`
44  Tract WCS object.
45  """
46  def __init__(self, index, innerBBox, outerBBox, sequentialIndex, tractWcs):
47  self._index_index = index
48  self._sequentialIndex_sequentialIndex = sequentialIndex
49  self._innerBBox_innerBBox = innerBBox
50  self._outerBBox_outerBBox = outerBBox
51  self._wcs_wcs = tractWcs
52  if not outerBBox.contains(innerBBox):
53  raise RuntimeError("outerBBox=%s does not contain innerBBox=%s" % (outerBBox, innerBBox))
54 
55  def getIndex(self):
56  """Return cell index: a tuple of (x, y)
57 
58  Returns
59  -------
60  result : `lsst.skymap.Index2D`
61  Patch index (x, y).
62  """
63  return self._index_index
64 
65  index = property(getIndex)
66 
67  def getSequentialIndex(self):
68  """Return cell sequential index.
69 
70  Returns
71  -------
72  result : `int`
73  Sequential cell index.
74  """
75  return self._sequentialIndex_sequentialIndex
76 
77  sequential_index = property(getSequentialIndex)
78 
79  def getWcs(self):
80  """Return the associated tract wcs
81 
82  Returns
83  -------
84  wcs : `lsst.afw.geom.SkyWcs`
85  Tract WCS.
86  """
87  return self._wcs_wcs
88 
89  wcs = property(getWcs)
90 
91  def getInnerBBox(self):
92  """Get inner bounding box.
93 
94  Returns
95  -------
96  bbox : `lsst.geom.Box2I`
97  The inner bounding Box.
98  """
99  return self._innerBBox_innerBBox
100 
101  inner_bbox = property(getInnerBBox)
102 
103  def getOuterBBox(self):
104  """Get outer bounding box.
105 
106  Returns
107  -------
108  bbox : `lsst.geom.Box2I`
109  The outer bounding Box.
110  """
111  return self._outerBBox_outerBBox
112 
113  outer_bbox = property(getOuterBBox)
114 
115  def getInnerSkyPolygon(self, tractWcs=None):
116  """Get the inner on-sky region.
117 
118  Parameters
119  ----------
120  tractWcs : `lsst.afw.image.SkyWcs`, optional
121  WCS for the associated tract.
122 
123  Returns
124  -------
125  result : `lsst.sphgeom.ConvexPolygon`
126  The inner sky region.
127  """
128  _tractWcs = tractWcs if tractWcs is not None else self._wcs_wcs
129  return makeSkyPolygonFromBBox(bbox=self.getInnerBBoxgetInnerBBox(), wcs=_tractWcs)
130 
131  @property
132  def inner_sky_polygon(self):
133  return self.getInnerSkyPolygongetInnerSkyPolygon()
134 
135  def getOuterSkyPolygon(self, tractWcs=None):
136  """Get the outer on-sky region.
137 
138  Parameters
139  ----------
140  tractWcs : `lsst.afw.image.SkyWcs`, optional
141  WCS for the associated tract.
142 
143  Returns
144  -------
145  result : `lsst.sphgeom.ConvexPolygon`
146  The outer sky region.
147  """
148  _tractWcs = tractWcs if tractWcs is not None else self._wcs_wcs
149  return makeSkyPolygonFromBBox(bbox=self.getOuterBBoxgetOuterBBox(), wcs=_tractWcs)
150 
151  @property
152  def outer_sky_polygon(self):
153  return self.getOuterSkyPolygongetOuterSkyPolygon()
154 
155  def __eq__(self, rhs):
156  return (self.getIndexgetIndex() == rhs.getIndex()) \
157  and (self.getInnerBBoxgetInnerBBox() == rhs.getInnerBBox()) \
158  and (self.getOuterBBoxgetOuterBBox() == rhs.getOuterBBox())
159 
160  def __ne__(self, rhs):
161  return not self.__eq____eq__(rhs)
162 
163  def __str__(self):
164  return "CellInfo(index=%s)" % (self.getIndexgetIndex(),)
165 
166  def __repr__(self):
167  return "CellInfo(index=%s, innerBBox=%s, outerBBox=%s)" % \
168  (self.getIndexgetIndex(), self.getInnerBBoxgetInnerBBox(), self.getOuterBBoxgetOuterBBox())
def __init__(self, index, innerBBox, outerBBox, sequentialIndex, tractWcs)
Definition: cellInfo.py:46
def getInnerSkyPolygon(self, tractWcs=None)
Definition: cellInfo.py:115
def getOuterSkyPolygon(self, tractWcs=None)
Definition: cellInfo.py:135
def makeSkyPolygonFromBBox(bbox, wcs)
Definition: utils.py:61