24 """Consider tweaking pixel scale so the average scale is as specified, rather
25 than the scale at the center.
28 __all__ = [
'DodecaSkyMapConfig',
'DodecaSkyMap']
32 import lsst.pex.config
as pexConfig
35 from .baseSkyMap
import BaseSkyMap
36 from .tractInfo
import TractInfo
40 withTractsOnPoles = pexConfig.Field(
41 doc=
"if True center a tract on each pole, else put a vertex on each pole",
55 """Dodecahedron-based sky map pixelization.
57 DodecaSkyMap divides the sky into 12 overlapping Tracts arranged as the
58 faces of a dodecahedron.
62 config : `lsst.skymap.BaseSkyMapConfig` (optional)
63 The configuration for this SkyMap; if None use the default config.
65 ConfigClass = DodecaSkyMapConfig
69 BaseSkyMap.__init__(self, config)
76 tractCoord = detail.coordFromVec(tractVec, defRA=
geom.Angle(0))
77 tractRA = tractCoord.getLongitude()
86 patchInnerDimensions=self.
config.patchInnerDimensions,
87 patchBorder=self.
config.patchBorder,
89 vertexCoordList=[detail.coordFromVec(vec, defRA=tractRA)
for vec
in vertexVecList],
90 tractOverlap=tractOverlap,
102 - version: a pair of ints
116 - version: a pair of ints
119 version = stateDict[
"version"]
120 if version >= (2, 0):
121 raise RuntimeError(
"Version = %s >= (2,0); cannot unpickle" % (version,))
125 """Find the tract whose inner region includes the coord.
129 coord : `lsst.geom.SpherePoint`
130 ICRS sky coordinate to search for.
134 tractInfo : `TractInfo`
135 Info for tract whose inner region includes the coord.
137 return self[self.
_dodecahedron.getFaceInd(coord.getVector())]
140 """Return version (e.g. for pickle).
144 version : `tuple` of `int`
145 Version as a pair of integers.
150 """Return True if there are tracts centered on the poles.
155 """Add subclass-specific state or configuration options to the SHA1."""
156 sha1.update(struct.pack(
"<?", self.
config.withTractsOnPoles))