lsst.skymap
ge3564fa9f0+8223ad0938
Loading...
Searching...
No Matches
python
lsst
skymap
detail
utils.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__ = [
"coordFromVec"
,
"makeSkyPolygonFromBBox"
,
"Index2D"
]
24
25
from
typing
import
NamedTuple
26
import
numpy
27
28
import
lsst.sphgeom
29
import
lsst.geom
as
geom
30
31
_TinyFloat = numpy.finfo(float).tiny
32
33
34
def
coordFromVec
(vec, defRA=None):
35
"""Convert an ICRS cartesian vector to an ICRS `lsst.geom.SpherePoint`.
36
37
Parameters
38
----------
39
vec : `list` of `float`
40
An ICRS catesian vector.
41
defRA : `lsst.geom.Angle` or None
42
The RA to use if the vector is too near a pole;
43
ignored if not near a pole.
44
45
Raises
46
------
47
RuntimeError
48
Raised if vec too near a pole and defRA is None.
49
"""
50
if
abs(vec[0]) < _TinyFloat
and
abs(vec[1]) < _TinyFloat:
51
if
defRA
is
None
:
52
raise
RuntimeError(
"At pole and defRA==None"
)
53
if
vec[2] > 0:
54
decDeg = 90.0
55
else
:
56
decDeg = -90.0
57
return
geom.SpherePoint
(defRA, decDeg*geom.degrees)
58
return
geom.SpherePoint
(
lsst.sphgeom.Vector3d
(*vec))
59
60
61
def
makeSkyPolygonFromBBox(bbox, wcs):
62
"""Make an on-sky polygon from a bbox and a SkyWcs.
63
64
Parameters
65
----------
66
bbox : `lsst.geom.Box2I` or `lsst.geom.Box2D`
67
Bounding box of region, in pixel coordinates.
68
wcs : `lsst.afw.geom.SkyWcs`
69
Celestial WCS.
70
71
Returns
72
-------
73
polygon : `lsst.sphgeom.ConvexPolygon`
74
On-sky region
75
"""
76
pixelPoints =
geom.Box2D
(bbox).getCorners()
77
skyPoints = wcs.pixelToSky(pixelPoints)
78
return
lsst.sphgeom.ConvexPolygon
([sp.getVector()
for
sp
in
skyPoints])
79
80
81
class
Index2D
(NamedTuple):
82
"""Two dimensional index for patches and cells.
83
84
This class contains the x and y values of the location of a patch
85
within a tract, or a cell within a patch.
86
87
Parameters
88
----------
89
x : `int`
90
y : `int`
91
"""
92
x: int
93
y: int
lsst::geom::Box2D
lsst::geom::SpherePoint
lsst.skymap.detail.utils.Index2D
Definition
utils.py:81
lsst::sphgeom::ConvexPolygon
lsst::sphgeom::Vector3d
lsst::geom
lsst.skymap.detail.utils.coordFromVec
coordFromVec(vec, defRA=None)
Definition
utils.py:34
lsst::sphgeom
Generated on Wed Nov 29 2023 09:25:33 for lsst.skymap by
1.9.8