LSSTApplications  1.1.2+25,10.0+13,10.0+132,10.0+133,10.0+224,10.0+41,10.0+8,10.0-1-g0f53050+14,10.0-1-g4b7b172+19,10.0-1-g61a5bae+98,10.0-1-g7408a83+3,10.0-1-gc1e0f5a+19,10.0-1-gdb4482e+14,10.0-11-g3947115+2,10.0-12-g8719d8b+2,10.0-15-ga3f480f+1,10.0-2-g4f67435,10.0-2-gcb4bc6c+26,10.0-28-gf7f57a9+1,10.0-3-g1bbe32c+14,10.0-3-g5b46d21,10.0-4-g027f45f+5,10.0-4-g86f66b5+2,10.0-4-gc4fccf3+24,10.0-40-g4349866+2,10.0-5-g766159b,10.0-5-gca2295e+25,10.0-6-g462a451+1
LSSTDataManagementBasePackage
Functions | Variables
lsst.ap.utils.skyTileUtils Namespace Reference

Functions

def findWcsCoveringSkyTile
 
def createImageCoveringSkyTile
 

Variables

list __all__ = ["findWcsCoveringSkyTile", "createImageCoveringSkyTile"]
 

Function Documentation

def lsst.ap.utils.skyTileUtils.createImageCoveringSkyTile (   skyPixelization,
  skyTileId,
  imageRes,
  imageType = afwImage.DecoratedImageU 
)
Creates an image of the specified type and resolution along with
a WCS that covers the given sky tile. If the requested image type
is an lsst.afw.image.ExposureX, the exposure WCS is set automatically.
Otherwise, the WCS is translated to a lsst.daf.base.PropertySet and set
as lsst.afw.image.[Decorated]ImageX metadata.

Definition at line 74 of file skyTileUtils.py.

74 
75  imageType=afwImage.DecoratedImageU):
76  """Creates an image of the specified type and resolution along with
77  a WCS that covers the given sky tile. If the requested image type
78  is an lsst.afw.image.ExposureX, the exposure WCS is set automatically.
79  Otherwise, the WCS is translated to a lsst.daf.base.PropertySet and set
80  as lsst.afw.image.[Decorated]ImageX metadata.
81  """
82  wcs = findWcsCoveringSkyTile(skyPixelization, skyTileId, imageRes)
83  img = imageType(afwGeom.Extent2I(imageRes, imageRes))
84  if hasattr(img, 'setWcs'):
85  img.setWcs(wcs)
86  elif hasattr(img, 'setMetadata'):
87  img.setMetadata(wcs.getFitsMetadata())
88  return img, wcs
89 
def lsst.ap.utils.skyTileUtils.findWcsCoveringSkyTile (   skyPixelization,
  skyTileId,
  imageRes 
)
Computes and returns a TAN WCS such that a 2D image with the
given WCS and the following properties completely covers the
sky-tile with the given pixel id:

- NAXIS1/NAXIS2 >= imageRes
- CRPIX1 = NAXIS1 / 2 + 0.5
- CRPIX2 = NAXIS2 / 2 + 0.5

Definition at line 33 of file skyTileUtils.py.

33 
34 def findWcsCoveringSkyTile(skyPixelization, skyTileId, imageRes):
35  """Computes and returns a TAN WCS such that a 2D image with the
36  given WCS and the following properties completely covers the
37  sky-tile with the given pixel id:
38 
39  - NAXIS1/NAXIS2 >= imageRes
40  - CRPIX1 = NAXIS1 / 2 + 0.5
41  - CRPIX2 = NAXIS2 / 2 + 0.5
42  """
43  if not isinstance(imageRes, (int, long)):
44  raise TypeError("Image resolution must be an integer")
45  if imageRes < 1:
46  raise RuntimeError("Image resolution must be at least 1")
47  crpix = afwGeom.Point2D(0.5*(imageRes + 1), 0.5*(imageRes + 1))
48  crval = geom.sphericalCoords(skyPixelization.getCenter(skyTileId))
49  crval = afwCoord.makeCoord(afwCoord.ICRS, crval[0] * afwGeom.degrees, crval[1] * afwGeom.degrees)
50  skyTile = skyPixelization.getGeometry(skyTileId)
51  # Start with a huge TAN image centered at the sky-tile center,
52  # then shrink it using binary search to determine suitable
53  # CD matrix coefficients
54  scale = 1000.0 # deg/pixel, ridiculously large
55  delta = 0.5*scale
56  frac = 0.01 # desired relative accuracy of CD matrix coeffs
57  wcs = afwImage.makeWcs(crval, crpix, scale, 0.0, 0.0, scale)
58  imagePoly = skypix.imageToPolygon(wcs, imageRes, imageRes)
59  # Make sure the initial guess really is too large
60  if not imagePoly.contains(skyTile):
61  raise RuntimeError("Failed to construct image WCS covering sky-tile")
62  # Search for a WCS with a tight fit to the sky-tile. Note that the
63  # tightness of fit could be further improved by searching for a rotation
64  # and not just a pixel scale.
65  while delta >= frac * scale:
66  tmp = scale - delta
67  wcs = afwImage.makeWcs(crval, crpix, tmp, 0.0, 0.0, tmp)
68  imagePoly = skypix.imageToPolygon(wcs, imageRes, imageRes)
69  delta *= 0.5
70  if imagePoly.contains(skyTile):
71  scale = tmp
72  return afwImage.makeWcs(crval, crpix, scale, 0.0, 0.0, scale)
Wcs::Ptr makeWcs(coord::Coord const &crval, geom::Point2D const &crpix, double CD11, double CD12, double CD21, double CD22)
Create a Wcs object from crval, crpix, CD, using CD elements (useful from python) ...
Definition: makeWcs.cc:87
Coord::Ptr makeCoord(CoordSystem const system, lsst::afw::geom::Point3D const &p3d, bool normalize=true, lsst::afw::geom::Angle const defaultLongitude=lsst::afw::geom::Angle(0.))
Factory function to create a Coord of arbitrary type with a Point3D.
Definition: Coord.cc:1311

Variable Documentation

list lsst.ap.utils.skyTileUtils.__all__ = ["findWcsCoveringSkyTile", "createImageCoveringSkyTile"]

Definition at line 31 of file skyTileUtils.py.