lsst.skymap
g6512b7a353+dfe4f595c2
Toggle main menu visibility
Loading...
Searching...
No Matches
python
lsst
skymap
dodecaSkyMap.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
#
9
# This program is free software: you can redistribute it and/or modify
10
# it under the terms of the GNU General Public License as published by
11
# the Free Software Foundation, either version 3 of the License, or
12
# (at your option) any later version.
13
#
14
# This program is distributed in the hope that it will be useful,
15
# but WITHOUT ANY WARRANTY; without even the implied warranty of
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
# GNU General Public License for more details.
18
#
19
# You should have received a copy of the LSST License Statement and
20
# the GNU General Public License along with this program. If not,
21
# see <http://www.lsstcorp.org/LegalNotices/>.
22
#
23
24
"""Consider tweaking pixel scale so the average scale is as specified, rather
25
than the scale at the center.
26
"""
27
28
__all__ = [
'DodecaSkyMapConfig'
,
'DodecaSkyMap'
]
29
30
import
struct
31
32
import
lsst.pex.config
as
pexConfig
33
import
lsst.geom
as
geom
34
from
.
import
detail
35
from
.baseSkyMap
import
BaseSkyMap
36
from
.tractInfo
import
TractInfo
37
38
39
class
DodecaSkyMapConfig
(BaseSkyMap.ConfigClass):
40
withTractsOnPoles = pexConfig.Field(
41
doc=
"if True center a tract on each pole, else put a vertex on each pole"
,
42
dtype=bool,
43
default=
False
,
44
)
45
46
def
setDefaults
(self):
47
self.
tractOverlap
= 3.5
48
self.
patchBorder
= 250
49
self.
pixelScale
= 10.0 / 50.0
# LSST plate scale is 50 um/arcsec and pixel size is 10 um
50
self.
patchInnerDimensions
= (4000, 4000)
51
self.
projection
=
"STG"
52
53
54
class
DodecaSkyMap
(
BaseSkyMap
):
55
"""Dodecahedron-based sky map pixelization.
56
57
DodecaSkyMap divides the sky into 12 overlapping Tracts arranged as the
58
faces of a dodecahedron.
59
60
Parameters
61
----------
62
config : `lsst.skymap.BaseSkyMapConfig` (optional)
63
The configuration for this SkyMap; if None use the default config.
64
"""
65
ConfigClass = DodecaSkyMapConfig
66
_version = (1, 0)
# for pickle
67
68
def
__init__
(self, config=None):
69
BaseSkyMap.__init__(self, config)
70
self.
_dodecahedron
=
detail.Dodecahedron
(withFacesOnPoles=self.
config
.withTractsOnPoles)
71
72
tractOverlap =
geom.Angle
(self.
config
.tractOverlap, geom.degrees)
73
74
for
id
in
range(12):
75
tractVec = self.
_dodecahedron
.getFaceCtr(id)
76
tractCoord = detail.coordFromVec(tractVec, defRA=
geom.Angle
(0))
77
tractRA = tractCoord.getLongitude()
78
vertexVecList = self.
_dodecahedron
.getVertices(id)
79
80
# Make initial WCS; don't worry about crPixPos because TractInfo
81
# will shift it as required.
82
wcs = self.
_wcsFactory
.makeWcs(crPixPos=
geom.Point2D
(0, 0), crValCoord=tractCoord)
83
84
self.
_tractInfoList
.append(
85
TractInfo
(
86
id=id,
87
tractBuilder=self.
_tractBuilder
,
88
ctrCoord=tractCoord,
89
vertexCoordList=[detail.coordFromVec(vec, defRA=tractRA)
for
vec
in
vertexVecList],
90
tractOverlap=tractOverlap,
91
wcs=wcs,
92
)
93
)
94
95
def
__getstate__
(self):
96
"""Support pickle.
97
98
Returns
99
-------
100
result : `dict`
101
A dict containing:
102
- version: a pair of ints
103
- config: the config
104
"""
105
return
dict(
106
version=self.
_version
,
107
config=self.
config
,
108
)
109
110
def
__setstate__
(self, stateDict):
111
"""Support unpickle
112
113
Parameters
114
----------
115
stateDict : `dict`
116
- version: a pair of ints
117
- config: the config
118
"""
119
version = stateDict[
"version"
]
120
if
version >= (2, 0):
121
raise
RuntimeError(
"Version = %s >= (2,0); cannot unpickle"
% (version,))
122
self.
__init__
(stateDict[
"config"
])
123
124
def
findTract
(self, coord):
125
"""Find the tract whose inner region includes the coord.
126
127
Parameters
128
----------
129
coord : `lsst.geom.SpherePoint`
130
ICRS sky coordinate to search for.
131
132
Returns
133
-------
134
tractInfo : `TractInfo`
135
Info for tract whose inner region includes the coord.
136
"""
137
return
self[self.
_dodecahedron
.getFaceInd(coord.getVector())]
138
139
def
getVersion
(self):
140
"""Return version (e.g. for pickle).
141
142
Returns
143
-------
144
version : `tuple` of `int`
145
Version as a pair of integers.
146
"""
147
return
self.
_version
148
149
def
getWithTractsOnPoles
(self):
150
"""Return True if there are tracts centered on the poles.
151
"""
152
return
self.
_dodecahedron
.getWithFacesOnPoles()
153
154
def
updateSha1
(self, sha1):
155
"""Add subclass-specific state or configuration options to the SHA1."""
156
sha1.update(struct.pack(
"<?"
, self.
config
.withTractsOnPoles))
lsst::geom::Angle
lsst::geom::Point< double, 2 >
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.detail.dodecahedron.Dodecahedron
Definition
dodecahedron.py:9
lsst.skymap.dodecaSkyMap.DodecaSkyMapConfig
Definition
dodecaSkyMap.py:39
lsst.skymap.dodecaSkyMap.DodecaSkyMapConfig.projection
str projection
Definition
dodecaSkyMap.py:51
lsst.skymap.dodecaSkyMap.DodecaSkyMapConfig.patchBorder
int patchBorder
Definition
dodecaSkyMap.py:48
lsst.skymap.dodecaSkyMap.DodecaSkyMapConfig.setDefaults
setDefaults(self)
Definition
dodecaSkyMap.py:46
lsst.skymap.dodecaSkyMap.DodecaSkyMapConfig.patchInnerDimensions
tuple patchInnerDimensions
Definition
dodecaSkyMap.py:50
lsst.skymap.dodecaSkyMap.DodecaSkyMapConfig.pixelScale
float pixelScale
Definition
dodecaSkyMap.py:49
lsst.skymap.dodecaSkyMap.DodecaSkyMapConfig.tractOverlap
float tractOverlap
Definition
dodecaSkyMap.py:47
lsst.skymap.dodecaSkyMap.DodecaSkyMap
Definition
dodecaSkyMap.py:54
lsst.skymap.dodecaSkyMap.DodecaSkyMap.__getstate__
__getstate__(self)
Definition
dodecaSkyMap.py:95
lsst.skymap.dodecaSkyMap.DodecaSkyMap.findTract
findTract(self, coord)
Definition
dodecaSkyMap.py:124
lsst.skymap.dodecaSkyMap.DodecaSkyMap._version
tuple _version
Definition
dodecaSkyMap.py:66
lsst.skymap.dodecaSkyMap.DodecaSkyMap.updateSha1
updateSha1(self, sha1)
Definition
dodecaSkyMap.py:154
lsst.skymap.dodecaSkyMap.DodecaSkyMap.getVersion
getVersion(self)
Definition
dodecaSkyMap.py:139
lsst.skymap.dodecaSkyMap.DodecaSkyMap.getWithTractsOnPoles
getWithTractsOnPoles(self)
Definition
dodecaSkyMap.py:149
lsst.skymap.dodecaSkyMap.DodecaSkyMap.__init__
__init__(self, config=None)
Definition
dodecaSkyMap.py:68
lsst.skymap.dodecaSkyMap.DodecaSkyMap._dodecahedron
_dodecahedron
Definition
dodecaSkyMap.py:70
lsst.skymap.dodecaSkyMap.DodecaSkyMap.__setstate__
__setstate__(self, stateDict)
Definition
dodecaSkyMap.py:110
lsst.skymap.tractInfo.TractInfo
Definition
tractInfo.py:35
lsst::geom
lsst::pex::config
Generated on
for lsst.skymap by
1.17.0