lsst.skymap
g6512b7a353+54d4e332a2
Toggle main menu visibility
Loading...
Searching...
No Matches
python
lsst
skymap
equatSkyMap.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__ = [
'EquatSkyMapConfig'
,
'EquatSkyMap'
]
24
25
import
struct
26
27
import
lsst.pex.config
as
pexConfig
28
import
lsst.geom
as
geom
29
from
.baseSkyMap
import
BaseSkyMap
30
from
.tractInfo
import
TractInfo
31
32
33
class
EquatSkyMapConfig
(BaseSkyMap.ConfigClass):
34
numTracts = pexConfig.Field(
35
doc=
"number of tracts; warning: TAN projection requires at least 3"
,
36
dtype=int,
37
default=4,
38
)
39
decRange = pexConfig.ListField(
40
doc=
"range of declination (deg)"
,
41
dtype=float,
42
length=2,
43
default=(-1.25, 1.25),
44
)
45
46
def
setDefaults
(self):
47
self.
projection
=
"CEA"
48
49
50
class
EquatSkyMap
(
BaseSkyMap
):
51
"""Equatorial sky map pixelization, e.g. for SDSS stripe 82 image data.
52
53
EquatSkyMap represents an equatorial band of sky divided along declination
54
into overlapping tracts.
55
56
Parameters
57
----------
58
config : `lsst.skymap.BaseSkyMapConfig` (optional)
59
The configuration for this SkyMap; if None use the default config.
60
"""
61
ConfigClass = EquatSkyMapConfig
62
_version = (1, 0)
# for pickle
63
64
def
__init__
(self, config=None):
65
BaseSkyMap.__init__(self, config)
66
67
decRange = tuple(
geom.Angle
(dr, geom.degrees)
for
dr
in
self.
config
.decRange)
68
midDec = (decRange[0] + decRange[1]) / 2.0
69
tractWidthRA =
geom.Angle
(360.0 / self.
config
.numTracts, geom.degrees)
70
tractOverlap =
geom.Angle
(self.
config
.tractOverlap, geom.degrees)
71
72
for
id
in
range(self.
config
.numTracts):
73
begRA = tractWidthRA * id
74
endRA = begRA + tractWidthRA
75
vertexCoordList = (
76
geom.SpherePoint
(begRA, decRange[0]),
77
geom.SpherePoint
(endRA, decRange[0]),
78
geom.SpherePoint
(endRA, decRange[1]),
79
geom.SpherePoint
(begRA, decRange[1]),
80
)
81
82
midRA = begRA + tractWidthRA / 2.0
83
ctrCoord =
geom.SpherePoint
(midRA, midDec)
84
85
# CRVal must have Dec=0 for symmetry about the equator
86
crValCoord =
geom.SpherePoint
(midRA,
geom.Angle
(0.0))
87
88
# Make initial WCS; don't worry about crPixPos because TractInfo
89
# will shift it as required.
90
wcs = self.
_wcsFactory
.makeWcs(crPixPos=
geom.Point2D
(0, 0), crValCoord=crValCoord)
91
92
self.
_tractInfoList
.append(
TractInfo
(
93
id=id,
94
tractBuilder=self.
_tractBuilder
,
95
ctrCoord=ctrCoord,
96
vertexCoordList=vertexCoordList,
97
tractOverlap=tractOverlap,
98
wcs=wcs,
99
))
100
101
def
__getstate__
(self):
102
"""Support pickle.
103
104
Returns
105
-------
106
stateDict : `dict`
107
a dict containing:
108
- version: a pair of ints
109
- config: the config
110
"""
111
return
dict(
112
version=self.
_version
,
113
config=self.
config
,
114
)
115
116
def
__setstate__
(self, stateDict):
117
"""Support unpickle
118
119
Parameters
120
----------
121
stateDict : `dict`
122
a dict containing:
123
- version: a pair of ints
124
- config: the config
125
"""
126
version = stateDict[
"version"
]
127
if
version >= (2, 0):
128
raise
RuntimeError(
"Version = %s >= (2,0); cannot unpickle"
% (version,))
129
self.
__init__
(stateDict[
"config"
])
130
131
def
getVersion
(self):
132
"""Return version (e.g. for pickle).
133
134
Returns
135
-------
136
result : `tuple` of `int`
137
Version as a pair of integers.
138
"""
139
return
self.
_version
140
141
def
updateSha1
(self, sha1):
142
"""Add subclass-specific state or configuration options to the SHA1."""
143
sha1.update(struct.pack(
"<i2d"
, self.
config
.numTracts, *self.
config
.decRange))
lsst::geom::Angle
lsst::geom::Point< double, 2 >
lsst::geom::SpherePoint
lsst.skymap.baseSkyMap.BaseSkyMap
Definition
baseSkyMap.py:130
lsst.skymap.baseSkyMap.BaseSkyMap._tractInfoList
list _tractInfoList
Definition
baseSkyMap.py:163
lsst.skymap.baseSkyMap.BaseSkyMap.config
config
Definition
baseSkyMap.py:162
lsst.skymap.baseSkyMap.BaseSkyMap._tractBuilder
_tractBuilder
Definition
baseSkyMap.py:170
lsst.skymap.baseSkyMap.BaseSkyMap.__init__
__init__(self, config=None)
Definition
baseSkyMap.py:158
lsst.skymap.baseSkyMap.BaseSkyMap._wcsFactory
_wcsFactory
Definition
baseSkyMap.py:164
lsst.skymap.equatSkyMap.EquatSkyMapConfig
Definition
equatSkyMap.py:33
lsst.skymap.equatSkyMap.EquatSkyMapConfig.projection
str projection
Definition
equatSkyMap.py:47
lsst.skymap.equatSkyMap.EquatSkyMapConfig.setDefaults
setDefaults(self)
Definition
equatSkyMap.py:46
lsst.skymap.equatSkyMap.EquatSkyMap
Definition
equatSkyMap.py:50
lsst.skymap.equatSkyMap.EquatSkyMap.getVersion
getVersion(self)
Definition
equatSkyMap.py:131
lsst.skymap.equatSkyMap.EquatSkyMap.__setstate__
__setstate__(self, stateDict)
Definition
equatSkyMap.py:116
lsst.skymap.equatSkyMap.EquatSkyMap._version
tuple _version
Definition
equatSkyMap.py:62
lsst.skymap.equatSkyMap.EquatSkyMap.updateSha1
updateSha1(self, sha1)
Definition
equatSkyMap.py:141
lsst.skymap.equatSkyMap.EquatSkyMap.__init__
__init__(self, config=None)
Definition
equatSkyMap.py:64
lsst.skymap.equatSkyMap.EquatSkyMap.__getstate__
__getstate__(self)
Definition
equatSkyMap.py:101
lsst.skymap.tractInfo.TractInfo
Definition
tractInfo.py:35
lsst::geom
lsst::pex::config
Generated on
for lsst.skymap by
1.17.0