LSSTApplications  19.0.0-14-gb0260a2+1009f50558,20.0.0+089c43b26b,20.0.0+126303c00d,20.0.0+2f3d0e5c40,20.0.0+36ef800059,20.0.0+5efbb753f1,20.0.0+bebc1f60e8,20.0.0+c31f88ab0f,20.0.0+e2e26847c2,20.0.0+f8788d280b,20.0.0-1-g10df615+c10c626ef0,20.0.0-1-g253301a+36ef800059,20.0.0-1-g2b7511a+bebc1f60e8,20.0.0-1-g4d801e7+2364cbef1f,20.0.0-1-g5b95a8c+f41a630bc9,20.0.0-1-g660595b+f45b7d88f4,20.0.0-1-gc96f8cb+4c66cd7cf3,20.0.0-1-gd1c87d7+85c46248f3,20.0.0-1-gedffbd8+f975718b49,20.0.0-13-ge9dc5b3+55648be1db,20.0.0-15-ga86d0f6+bdc7c63f7c,20.0.0-15-gf5872d0+4c66cd7cf3,20.0.0-16-g6fe20a1+a77778c47d,20.0.0-2-g4dae9ad+4c66cd7cf3,20.0.0-2-g7818986+85c46248f3,20.0.0-2-gec03fae+ff10c6d78d,20.0.0-25-g38d2b7ae+bde7f0c6ec,20.0.0-3-g4cc78c6+63636aeed8,20.0.0-3-g6a8623c+55648be1db,20.0.0-3-g750bffe+823a89ab62,20.0.0-4-gfea843c+f45b7d88f4,20.0.0-47-g0830830+f5f993f8be,20.0.0-5-g357b56b+f45b7d88f4,20.0.0-5-gfcebe35+8726ad94da,20.0.0-7-gc818c6e6+aaebb51c78,20.0.0-7-gcda7bf1+2a82aa79eb,20.0.0-9-g61a2a9a3d+14f89e4eca,w.2020.38
LSSTDataManagementBasePackage
Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Static Protected Member Functions | Related Functions | List of all members
lsst::afw::geom::SkyWcs Class Referencefinal

A 2-dimensional celestial WCS that transform pixels to ICRS RA/Dec, using the LSST standard for pixels. More...

#include <SkyWcs.h>

Inheritance diagram for lsst::afw::geom::SkyWcs:
lsst::afw::table::io::PersistableFacade< SkyWcs > lsst::afw::typehandling::Storable lsst::afw::table::io::Persistable

Public Member Functions

 SkyWcs (SkyWcs const &)=default
 
 SkyWcs (SkyWcs &&)=default
 
SkyWcsoperator= (SkyWcs const &)=delete
 
SkyWcsoperator= (SkyWcs &&)=delete
 
 ~SkyWcs () override=default
 
bool operator== (SkyWcs const &other) const
 Equality is based on the string representations being equal. More...
 
bool operator!= (SkyWcs const &other) const
 
 SkyWcs (daf::base::PropertySet &metadata, bool strip=false)
 Construct a SkyWcs from FITS keywords. More...
 
 SkyWcs (ast::FrameDict const &frameDict)
 Construct a SkyWcs from an ast::FrameDict. More...
 
std::shared_ptr< SkyWcscopyAtShiftedPixelOrigin (lsst::geom::Extent2D const &shift) const
 Return a copy of this SkyWcs with the pixel origin shifted by the specified amount. More...
 
std::shared_ptr< daf::base::PropertyListgetFitsMetadata (bool precise=false) const
 Return the WCS as FITS WCS metadata. More...
 
lsst::geom::Angle getPixelScale (lsst::geom::Point2D const &pixel) const
 Get the pixel scale at the specified pixel position. More...
 
lsst::geom::Angle getPixelScale () const
 Get the pixel scale at the pixel origin. More...
 
lsst::geom::Point2D getPixelOrigin () const
 Get the pixel origin, in pixels, using the LSST convention. More...
 
lsst::geom::SpherePoint getSkyOrigin () const
 Get the sky origin, the celestial fiducial point. More...
 
Eigen::Matrix2d getCdMatrix (lsst::geom::Point2D const &pixel) const
 Get the 2x2 CD matrix at the specified pixel position. More...
 
Eigen::Matrix2d getCdMatrix () const
 Get the 2x2 CD matrix at the pixel origin. More...
 
std::shared_ptr< SkyWcsgetTanWcs (lsst::geom::Point2D const &pixel) const
 Get a local TAN WCS approximation to this WCS at the specified pixel position. More...
 
std::shared_ptr< const ast::FrameDictgetFrameDict () const
 Get the contained FrameDict. More...
 
std::shared_ptr< const TransformPoint2ToSpherePointgetTransform () const
 Get a TransformPoint2ToSpherePoint that transforms pixels to sky in the forward direction and sky to pixels in the inverse direction. More...
 
bool isFlipped () const
 Does the WCS follow the convention of North=Up, East=Left? More...
 
bool isPersistable () const noexcept override
 Return true if this particular object can be persisted using afw::table::io. More...
 
lsst::geom::AffineTransform linearizePixelToSky (lsst::geom::SpherePoint const &coord, lsst::geom::AngleUnit const &skyUnit) const
 Return the local linear approximation to pixelToSky at a point given in sky coordinates. More...
 
lsst::geom::AffineTransform linearizePixelToSky (lsst::geom::Point2D const &pixel, lsst::geom::AngleUnit const &skyUnit) const
 Return the local linear approximation to pixelToSky at a point given in pixel coordinates. More...
 
lsst::geom::AffineTransform linearizeSkyToPixel (lsst::geom::SpherePoint const &coord, lsst::geom::AngleUnit const &skyUnit) const
 Return the local linear approximation to skyToPixel at a point given in sky coordinates. More...
 
lsst::geom::AffineTransform linearizeSkyToPixel (lsst::geom::Point2D const &pixel, lsst::geom::AngleUnit const &skyUnit) const
 Return the local linear approximation to skyToPixel at a point given in pixel coordinates. More...
 
lsst::geom::SpherePoint pixelToSky (lsst::geom::Point2D const &pixel) const
 Compute sky position(s) from pixel position(s) More...
 
lsst::geom::SpherePoint pixelToSky (double x, double y) const
 
std::vector< lsst::geom::SpherePointpixelToSky (std::vector< lsst::geom::Point2D > const &pixels) const
 
lsst::geom::Point2D skyToPixel (lsst::geom::SpherePoint const &sky) const
 Compute pixel position(s) from sky position(s) More...
 
std::vector< lsst::geom::Point2DskyToPixel (std::vector< lsst::geom::SpherePoint > const &sky) const
 
bool hasFitsApproximation () const
 Does this SkyWcs have an approximate SkyWcs that can be represented as standard FITS WCS? More...
 
bool isFits () const
 Return true getFitsMetadata(true) will succeed, false if not. More...
 
void writeStream (std::ostream &os) const
 Serialize this SkyWcs to an output stream. More...
 
std::string writeString () const
 Serialize this SkyWcs to a string, using the same format as writeStream. More...
 
std::shared_ptr< typehandling::StorablecloneStorable () const override
 Create a new SkyWcs that is a copy of this one. More...
 
std::string toString () const override
 Create a string representation of this object. More...
 
bool equals (typehandling::Storable const &other) const noexcept override
 Compare this object to another Storable. More...
 
virtual std::size_t hash_value () const
 Return a hash of this object (optional operation). More...
 
void writeFits (std::string const &fileName, std::string const &mode="w") const
 Write the object to a regular FITS file. More...
 
void writeFits (fits::MemFileManager &manager, std::string const &mode="w") const
 Write the object to a FITS image in memory. More...
 
void writeFits (fits::Fits &fitsfile) const
 Write the object to an already-open FITS object. More...
 

Static Public Member Functions

static std::string getShortClassName ()
 
static std::shared_ptr< SkyWcsreadStream (std::istream &is)
 Deserialize a SkyWcs from an input stream. More...
 
static std::shared_ptr< SkyWcsreadString (std::string &str)
 Deserialize a SkyWcs from a string, using the same format as readStream. More...
 
static std::shared_ptr< SkyWcsreadFits (fits::Fits &fitsfile)
 Read an object from an already open FITS object. More...
 
static std::shared_ptr< SkyWcsreadFits (std::string const &fileName, int hdu=fits::DEFAULT_HDU)
 Read an object from a regular FITS file. More...
 
static std::shared_ptr< SkyWcsreadFits (fits::MemFileManager &manager, int hdu=fits::DEFAULT_HDU)
 Read an object from a FITS file in memory. More...
 
static std::shared_ptr< SkyWcsdynamicCast (std::shared_ptr< Persistable > const &ptr)
 Dynamically cast a shared_ptr. More...
 

Protected Types

typedef io::OutputArchiveHandle OutputArchiveHandle
 

Protected Member Functions

std::string getPersistenceName () const override
 Return the unique name used to persist this object and look up its factory. More...
 
std::string getPythonModule () const override
 Return the fully-qualified Python module that should be imported to guarantee that its factory is registered. More...
 
void write (OutputArchiveHandle &handle) const override
 Write the object to one or more catalogs. More...
 

Static Protected Member Functions

template<class T >
static bool singleClassEquals (T const &lhs, Storable const &rhs)
 Test if a Storable is of a particular class and equal to another object. More...
 

Related Functions

(Note that these are not member functions.)

std::ostreamoperator<< (std::ostream &os, Storable const &storable)
 Output operator for Storable. More...
 

Detailed Description

A 2-dimensional celestial WCS that transform pixels to ICRS RA/Dec, using the LSST standard for pixels.

SkyWcs is an immutable object that can not only represent any standard FITS WCS, but can also contain arbitrary Transforms, e.g. to model optical distortion or pixel imperfections.

In order to make a SkyWcs that models optical distortion, say, it is usually simplest to start with a standard FITS WCS (such as a TAN WCS) as an approximation, then insert a transform that models optical distortion by calling makeModifiedWcs. However, it is also possible to build a SkyWcs entirely from transforms, if you prefer, by building an ast::FrameDict and constructing the SkyWcs from that.

Frames of reference

SkyWcs internally keeps track of the following frames of reference:

Pixel position standards

The LSST standard for pixel position is: 0,0 is the center of the lower left image pixel. The FITS standard for pixel position is: 1,1 is the center of the lower left image pixel.

LSST and FITS also use a different origin for subimages:

Internal details: the contained ast::FrameDict

SkyWcs contains an ast::FrameDict which transforms from pixels to sky (in radians) in the forward direction.

This FrameDict contains the named frames described in frames of reference, e.g. "SKY", "IWC", cameraGeom::PIXELS and possibly cameraGeom::ACTUAL_PIXELS. "SKY" is the current frame. If cameraGeom::ACTUAL_PIXELS is present then it is the base frame, otherwise cameraGeom::PIXELS is the base frame.

The "SKY" frame is of type ast::SkyFrame and has the following attributes:

The other frames are of type ast::Frame and have 2 axes.

Definition at line 117 of file SkyWcs.h.

Member Typedef Documentation

◆ OutputArchiveHandle

typedef io::OutputArchiveHandle lsst::afw::table::io::Persistable::OutputArchiveHandle
protectedinherited

Definition at line 108 of file Persistable.h.

Constructor & Destructor Documentation

◆ SkyWcs() [1/4]

lsst::afw::geom::SkyWcs::SkyWcs ( SkyWcs const &  )
default

◆ SkyWcs() [2/4]

lsst::afw::geom::SkyWcs::SkyWcs ( SkyWcs &&  )
default

◆ ~SkyWcs()

lsst::afw::geom::SkyWcs::~SkyWcs ( )
overridedefault

◆ SkyWcs() [3/4]

lsst::afw::geom::SkyWcs::SkyWcs ( daf::base::PropertySet metadata,
bool  strip = false 
)
explicit

Construct a SkyWcs from FITS keywords.

Parameters
[in]metadataFITS header metadata
[in]stripIf true: strip items from metadata used to create the WCS, such as RADESYS, EQUINOX, CTYPE12, CRPIX12, CRVAL12, etc. Always keep keywords that might be wanted for other purpposes, including NAXIS12 and date-related keywords such as "DATE-OBS" and "TIMESYS" (but not "EQUINOX").
Exceptions
lsst::pex::exceptions::TypeErrorif the metadata does not describe a celestial WCS.

Definition at line 156 of file SkyWcs.cc.

157  : SkyWcs(detail::readLsstSkyWcs(metadata, strip)) {}

◆ SkyWcs() [4/4]

lsst::afw::geom::SkyWcs::SkyWcs ( ast::FrameDict const &  frameDict)
explicit

Construct a SkyWcs from an ast::FrameDict.

This is the most general constructor; it can be used to define any celestial WCS. Note that in many cases the result will not be exactly representable as a FITS WCS.

Parameters
[in]frameDictAn ast::FrameDict that describes the transformation from pixels to sky. It must meet the requirements outlined in the contained ast::FrameDict.
Exceptions
lsst::pex::exceptions::TypeErrorif frameDict is missing any of the required frames of reference.

Definition at line 159 of file SkyWcs.cc.

159 : SkyWcs(_checkFrameDict(frameDict)) {}

Member Function Documentation

◆ cloneStorable()

std::shared_ptr< typehandling::Storable > lsst::afw::geom::SkyWcs::cloneStorable ( ) const
overridevirtual

Create a new SkyWcs that is a copy of this one.

Reimplemented from lsst::afw::typehandling::Storable.

Definition at line 353 of file SkyWcs.cc.

353  {
354  return std::make_unique<SkyWcs>(*this);
355 }

◆ copyAtShiftedPixelOrigin()

std::shared_ptr< SkyWcs > lsst::afw::geom::SkyWcs::copyAtShiftedPixelOrigin ( lsst::geom::Extent2D const &  shift) const

Return a copy of this SkyWcs with the pixel origin shifted by the specified amount.

new pixel origin = the old pixel origin + shift
Parameters
[in]shiftThe amount by which to shift the pixel origin (pixels)

Definition at line 213 of file SkyWcs.cc.

213  {
214  auto newToOldPixel = TransformPoint2ToPoint2(ast::ShiftMap({-shift[0], -shift[1]}));
215  return makeModifiedWcs(newToOldPixel, *this, true);
216 }

◆ dynamicCast()

Dynamically cast a shared_ptr.

Dynamically cast a shared pointer and raise on failure.

You must provide an explicit template instantiation in the .cc file for each class that inherits from PersistableFacade. Designed to work around RTTI issues on macOS with hidden symbols;

Exceptions
lsst::pex::exceptions::LogicErrorif the cast fails

param[in] ptr The pointer to be cast.

Returns
The cast pointer.
Exceptions
lsst::pex::exceptions::TypeErrorIf the dynamic cast fails.

Definition at line 218 of file Persistable.cc.

18  {
19  auto result = std::dynamic_pointer_cast<T>(ptr);
20  if (!result) {
21  throw LSST_EXCEPT(pex::exceptions::TypeError, "Dynamic pointer cast failed");
22  }
23  return result;
24 }

◆ equals()

bool lsst::afw::geom::SkyWcs::equals ( typehandling::Storable const &  other) const
overridevirtualnoexcept

Compare this object to another Storable.

Returns
*this == other if other is a SkyWcs; otherwise false.

Reimplemented from lsst::afw::typehandling::Storable.

Definition at line 378 of file SkyWcs.cc.

378  {
379  return singleClassEquals(*this, other);
380 }

◆ getCdMatrix() [1/2]

Eigen::Matrix2d lsst::afw::geom::SkyWcs::getCdMatrix ( ) const

Get the 2x2 CD matrix at the pixel origin.

The elements are in degrees

Definition at line 204 of file SkyWcs.cc.

204 { return getCdMatrix(getPixelOrigin()); }

◆ getCdMatrix() [2/2]

Eigen::Matrix2d lsst::afw::geom::SkyWcs::getCdMatrix ( lsst::geom::Point2D const &  pixel) const

Get the 2x2 CD matrix at the specified pixel position.

The elements are in degrees

Definition at line 198 of file SkyWcs.cc.

198  {
199  auto const pixelToIwc = getFrameDict()->getMapping(ast::FrameSet::BASE, "IWC");
200  auto const pixelToIwcTransform = TransformPoint2ToPoint2(*pixelToIwc);
201  return pixelToIwcTransform.getJacobian(pixel);
202 }

◆ getFitsMetadata()

std::shared_ptr< daf::base::PropertyList > lsst::afw::geom::SkyWcs::getFitsMetadata ( bool  precise = false) const

Return the WCS as FITS WCS metadata.

Parameters
[in]preciseFail if the WCS cannot be accurately represented as FITS metadata? If False then return an approximation. For now that approximation is pure TAN but as of DM-13170 it will be a fit TAN-SIP. The required precision is set by constant TIGHT_FITS_TOL in SkyWcs.cc

FITS representations of WCS are described in "Representations of World Coordinates in FITS" by Greisen and Calabretta and several related papers.

The required precision is hard-coded as constant TIGHT_FITS_TOL in SkyWcs.cc

Exceptions
lsst::pex::exceptions::RuntimeErrorif precise is true and AST cannot represent this WCS as a FITS WCS to sufficient precision.

Definition at line 218 of file SkyWcs.cc.

218  {
219  // Make a FrameSet that maps from GRID to SKY; GRID = the base frame (PIXELS or ACTUAL_PIXELS) + 1
220  auto const gridToPixel = ast::ShiftMap({-1.0, -1.0});
221  auto thisDict = getFrameDict();
222  auto const pixelToIwc = thisDict->getMapping(ast::FrameSet::BASE, "IWC");
223  auto const iwcToSky = thisDict->getMapping("IWC", "SKY");
224  auto const gridToSky = gridToPixel.then(*pixelToIwc).then(*iwcToSky);
225  ast::FrameSet frameSet(ast::Frame(2, "Domain=GRID"), gridToSky, *thisDict->getFrame("SKY", false));
226 
227  // Write frameSet to a FitsChan and extract the metadata
229  os << "Encoding=FITS-WCS, CDMatrix=1, FitsAxisOrder=<copy>, FitsTol=" << TIGHT_FITS_TOL;
230  ast::StringStream strStream;
231  ast::FitsChan fitsChan(strStream, os.str());
232  int const nObjectsWritten = fitsChan.write(frameSet);
234  if (nObjectsWritten == 0) {
235  if (precise) {
237  "Could not represent this SkyWcs using FITS-WCS metadata");
238  } else {
239  // An exact representation could not be written, so try to write a local TAN approximation;
240  // set precise true to avoid an infinite loop, should something go wrong
241  auto tanWcs = getTanWcs(getPixelOrigin());
242  header = tanWcs->getFitsMetadata(true);
243  }
244  } else {
245  header = detail::getPropertyListFromFitsChan(fitsChan);
246  }
247 
248  // Remove DATE-OBS, MJD-OBS: AST writes these if the EQUINOX is set, but we set them via other mechanisms.
249  header->remove("DATE-OBS");
250  header->remove("MJD-OBS");
251 
252  // If CD matrix is present, explicitly set any missing entries to zero, as a convenience to the user
253  bool const hasCd11 = header->exists("CD1_1");
254  bool const hasCd12 = header->exists("CD1_2");
255  bool const hasCd21 = header->exists("CD2_1");
256  bool const hasCd22 = header->exists("CD2_2");
257  if (hasCd11 || hasCd12 || hasCd21 || hasCd22) {
258  if (!hasCd11) header->set("CD1_1", 0.0, "Transformation matrix element");
259  if (!hasCd12) header->set("CD1_2", 0.0, "Transformation matrix element");
260  if (!hasCd21) header->set("CD2_1", 0.0, "Transformation matrix element");
261  if (!hasCd22) header->set("CD2_2", 0.0, "Transformation matrix element");
262  }
263 
264  return header;
265 }

◆ getFrameDict()

std::shared_ptr< const ast::FrameDict > lsst::afw::geom::SkyWcs::getFrameDict ( ) const

Get the contained FrameDict.

The base frame will be cameraGeom::PIXELS or cameraGeom::ACTUAL_PIXELS and the current frame will be SKY, so the forward transform goes from pixels (using the LSST zero convention) to sky ICRS RA, Dec (in radians). For more details see the contained ast::FrameDict

Definition at line 267 of file SkyWcs.cc.

267 { return _frameDict; }

◆ getPersistenceName()

std::string lsst::afw::geom::SkyWcs::getPersistenceName ( ) const
overrideprotectedvirtual

Return the unique name used to persist this object and look up its factory.

Must be less than ArchiveIndexSchema::MAX_NAME_LENGTH characters.

Reimplemented from lsst::afw::table::io::Persistable.

Definition at line 382 of file SkyWcs.cc.

382 { return getSkyWcsPersistenceName(); }

◆ getPixelOrigin()

lsst::geom::Point2D lsst::afw::geom::SkyWcs::getPixelOrigin ( ) const
inline

Get the pixel origin, in pixels, using the LSST convention.

This is CRPIX1 - 1, CRPIX2 -1 in FITS terminology

Definition at line 215 of file SkyWcs.h.

215 { return _pixelOrigin; };

◆ getPixelScale() [1/2]

lsst::geom::Angle lsst::afw::geom::SkyWcs::getPixelScale ( ) const
inline

Get the pixel scale at the pixel origin.

The scale is the square root of the area of the specified pixel on the sky.

The value is cached, so this is a cheap call.

Definition at line 208 of file SkyWcs.h.

208 { return _pixelScaleAtOrigin; };

◆ getPixelScale() [2/2]

lsst::geom::Angle lsst::afw::geom::SkyWcs::getPixelScale ( lsst::geom::Point2D const &  pixel) const

Get the pixel scale at the specified pixel position.

The scale is the square root of the area of the specified pixel on the sky.

Warning
Unlike getPixelScale() the value is not cached, even if pixel = pixel origin.

Definition at line 163 of file SkyWcs.cc.

163  {
164  // Compute pixVec containing the pixel position and two nearby points
165  // (use a vector so all three points can be converted to sky in a single call)
166  double const side = 1.0;
168  pixel,
169  pixel + lsst::geom::Extent2D(side, 0),
170  pixel + lsst::geom::Extent2D(0, side),
171  };
172 
173  auto skyVec = pixelToSky(pixVec);
174 
175  // Work in 3-space to avoid RA wrapping and pole issues
176  auto skyLL = skyVec[0].getVector();
177  auto skyDx = skyVec[1].getVector() - skyLL;
178  auto skyDy = skyVec[2].getVector() - skyLL;
179 
180  // Compute pixel scale in radians = sqrt(pixel area in radians^2)
181  // pixel area in radians^2 = area of parallelogram with sides skyDx, skyDy = |skyDx cross skyDy|
182  // Use squared norm to avoid two square roots
183  double skyAreaSq = skyDx.cross(skyDy).getSquaredNorm();
184  return (std::pow(skyAreaSq, 0.25) / side) * lsst::geom::radians;
185 }

◆ getPythonModule()

std::string lsst::afw::geom::SkyWcs::getPythonModule ( ) const
overrideprotectedvirtual

Return the fully-qualified Python module that should be imported to guarantee that its factory is registered.

Must be less than ArchiveIndexSchema::MAX_MODULE_LENGTH characters.

Will be ignored if empty.

Reimplemented from lsst::afw::table::io::Persistable.

Definition at line 384 of file SkyWcs.cc.

384 { return "lsst.afw.geom"; }

◆ getShortClassName()

std::string lsst::afw::geom::SkyWcs::getShortClassName ( )
static

Definition at line 299 of file SkyWcs.cc.

299 { return "SkyWcs"; };

◆ getSkyOrigin()

lsst::geom::SpherePoint lsst::afw::geom::SkyWcs::getSkyOrigin ( ) const

Get the sky origin, the celestial fiducial point.

This is CRVAL1, CRVAL2 in FITS terminology

Definition at line 187 of file SkyWcs.cc.

187  {
188  // CRVAL is stored as the SkyRef property of the sky frame (the current frame of the SkyWcs)
189  auto skyFrame = std::dynamic_pointer_cast<ast::SkyFrame>(
190  getFrameDict()->getFrame(ast::FrameDict::CURRENT, false)); // false: do not copy
191  if (!skyFrame) {
192  throw LSST_EXCEPT(pex::exceptions::LogicError, "Current frame is not a SkyFrame");
193  }
194  auto const crvalRad = skyFrame->getSkyRef();
195  return lsst::geom::SpherePoint(crvalRad[0] * lsst::geom::radians, crvalRad[1] * lsst::geom::radians);
196 }

◆ getTanWcs()

std::shared_ptr< SkyWcs > lsst::afw::geom::SkyWcs::getTanWcs ( lsst::geom::Point2D const &  pixel) const

Get a local TAN WCS approximation to this WCS at the specified pixel position.

Definition at line 206 of file SkyWcs.cc.

206  {
207  auto const crval = pixelToSky(pixel);
208  auto const cdMatrix = getCdMatrix(pixel);
209  auto metadata = makeSimpleWcsMetadata(pixel, crval, cdMatrix);
210  return std::make_shared<SkyWcs>(*metadata);
211 }

◆ getTransform()

std::shared_ptr<const TransformPoint2ToSpherePoint> lsst::afw::geom::SkyWcs::getTransform ( ) const
inline

Get a TransformPoint2ToSpherePoint that transforms pixels to sky in the forward direction and sky to pixels in the inverse direction.

Definition at line 257 of file SkyWcs.h.

257 { return _transform; };

◆ hasFitsApproximation()

bool lsst::afw::geom::SkyWcs::hasFitsApproximation ( ) const
inline

Does this SkyWcs have an approximate SkyWcs that can be represented as standard FITS WCS?

This feature is not yet implemented, so hasFitsApproximation is always false.

Definition at line 364 of file SkyWcs.h.

364 { return false; }

◆ hash_value()

std::size_t lsst::afw::typehandling::Storable::hash_value ( ) const
virtualinherited

Return a hash of this object (optional operation).

Exceptions
UnsupportedOperationExceptionThrown if this object is not hashable.
Note
C++ subclass authors are responsible for any associated specializations of std::hash.
When called on Python classes, this method delegates to __hash__ if it exists.

Reimplemented in lsst::afw::typehandling::StorableHelper< Base >, lsst::afw::image::Filter, lsst::afw::geom::polygon::Polygon, and lsst::afw::image::VisitInfo.

Definition at line 44 of file Storable.cc.

44  {
45  throw LSST_EXCEPT(UnsupportedOperationException, "Hashes are not supported.");
46 }

◆ isFits()

bool lsst::afw::geom::SkyWcs::isFits ( ) const

Return true getFitsMetadata(true) will succeed, false if not.

In other words, true indicates that the WCS can be accurately represented using FITS WCS metadata.

Definition at line 269 of file SkyWcs.cc.

269  {
270  try {
271  getFitsMetadata(true);
272  } catch (const lsst::pex::exceptions::RuntimeError&) {
273  return false;
274  } catch (const std::runtime_error&) {
275  return false;
276  }
277  return true;
278 }

◆ isFlipped()

bool lsst::afw::geom::SkyWcs::isFlipped ( ) const

Does the WCS follow the convention of North=Up, East=Left?

Returns
False/true if E is along -X/+X when the N/E axes are rotated so that N is along image +Y.
Exceptions
lsst::pex::exceptions::RuntimeErrorif the parity cannot be determined because the CD matrix is singular.

Definition at line 301 of file SkyWcs.cc.

301  {
302  double det = getCdMatrix().determinant();
303  if (det == 0) {
304  throw(LSST_EXCEPT(pex::exceptions::RuntimeError, "CD matrix is singular"));
305  }
306  return (det > 0);
307 }

◆ isPersistable()

bool lsst::afw::geom::SkyWcs::isPersistable ( ) const
inlineoverridevirtualnoexcept

Return true if this particular object can be persisted using afw::table::io.

Reimplemented from lsst::afw::table::io::Persistable.

Definition at line 268 of file SkyWcs.h.

268 { return true; }

◆ linearizePixelToSky() [1/2]

lsst::geom::AffineTransform lsst::afw::geom::SkyWcs::linearizePixelToSky ( lsst::geom::Point2D const &  pixel,
lsst::geom::AngleUnit const &  skyUnit 
) const

Return the local linear approximation to pixelToSky at a point given in pixel coordinates.

The local linear approximation is defined such the following is true (ignoring floating-point errors):

wcs.linearizePixelToSky(pixel, skyUnit)(pixel) == wcs.pixelToSky(pixel).getPosition(skyUnit)

(lsst::geom::AffineTransform::operator() applies the transform in the forward direction)

Parameters
[in]pixelPosition in pixel coordinates where transform is desired.
[in]skyUnitUnits to use for sky coordinates; units of matrix elements will be skyUnits/pixel.

Definition at line 284 of file SkyWcs.cc.

285  {
286  return _linearizePixelToSky(pix, pixelToSky(pix), skyUnit);
287 }

◆ linearizePixelToSky() [2/2]

lsst::geom::AffineTransform lsst::afw::geom::SkyWcs::linearizePixelToSky ( lsst::geom::SpherePoint const &  coord,
lsst::geom::AngleUnit const &  skyUnit 
) const

Return the local linear approximation to pixelToSky at a point given in sky coordinates.

The local linear approximation is defined such the following is true (ignoring floating-point errors):

wcs.linearizePixelToSky(sky, skyUnit)(wcs.skyToPixel(sky)) == sky.getPosition(skyUnit);

(lsst::geom::AffineTransform::operator() applies the transform in the forward direction)

Parameters
[in]coordPosition in sky coordinates where transform is desired.
[in]skyUnitUnits to use for sky coordinates; units of matrix elements will be skyUnits/pixel.

Definition at line 280 of file SkyWcs.cc.

281  {
282  return _linearizePixelToSky(skyToPixel(coord), coord, skyUnit);
283 }

◆ linearizeSkyToPixel() [1/2]

lsst::geom::AffineTransform lsst::afw::geom::SkyWcs::linearizeSkyToPixel ( lsst::geom::Point2D const &  pixel,
lsst::geom::AngleUnit const &  skyUnit 
) const

Return the local linear approximation to skyToPixel at a point given in pixel coordinates.

The local linear approximation is defined such the following is true (ignoring floating-point errors):

wcs.linearizeSkyToPixel(pixel, skyUnit)(wcs.pixelToSky(pixel).getPosition(skyUnit)) == pixel

(lsst::geom::AffineTransform::operator() applies the transform in the forward direction)

Parameters
[in]pixelPosition in pixel coordinates where transform is desired.
[in]skyUnitUnits to use for sky coordinates; units of matrix elements will be pixels/skyUnit.

Definition at line 294 of file SkyWcs.cc.

295  {
296  return _linearizeSkyToPixel(pix, pixelToSky(pix), skyUnit);
297 }

◆ linearizeSkyToPixel() [2/2]

lsst::geom::AffineTransform lsst::afw::geom::SkyWcs::linearizeSkyToPixel ( lsst::geom::SpherePoint const &  coord,
lsst::geom::AngleUnit const &  skyUnit 
) const

Return the local linear approximation to skyToPixel at a point given in sky coordinates.

The local linear approximation is defined such the following is true (ignoring floating-point errors):

wcs.linearizeSkyToPixel(sky, skyUnit)(sky.getPosition(skyUnit)) == wcs.skyToPixel(sky)

(lsst::geom::AffineTransform::operator() applies the transform in the forward direction)

Parameters
[in]coordPosition in sky coordinates where transform is desired.
[in]skyUnitUnits to use for sky coordinates; units of matrix elements will be pixels/skyUnit.

Definition at line 289 of file SkyWcs.cc.

290  {
291  return _linearizeSkyToPixel(skyToPixel(coord), coord, skyUnit);
292 }

◆ operator!=()

bool lsst::afw::geom::SkyWcs::operator!= ( SkyWcs const &  other) const
inline

Definition at line 136 of file SkyWcs.h.

136 { return !(*this == other); }

◆ operator=() [1/2]

SkyWcs& lsst::afw::geom::SkyWcs::operator= ( SkyWcs &&  )
delete

◆ operator=() [2/2]

SkyWcs& lsst::afw::geom::SkyWcs::operator= ( SkyWcs const &  )
delete

◆ operator==()

bool lsst::afw::geom::SkyWcs::operator== ( SkyWcs const &  other) const

Equality is based on the string representations being equal.

Two SkyWcs constructed the same way will be equal, and a SkyWcs that has been saved and restored will be equal to the original. However, it is possible to construct two SkyWcs that behave identically as far as transforming points go, but will compare as unequal due to subtle internal differences, such as a contained ast::Mapping that has a different ID in one SkyWcs than another.

Thus equality is primarily useful for testing persistence.

Definition at line 161 of file SkyWcs.cc.

161 { return writeString() == other.writeString(); }

◆ pixelToSky() [1/3]

lsst::geom::SpherePoint lsst::afw::geom::SkyWcs::pixelToSky ( double  x,
double  y 
) const
inline

Definition at line 337 of file SkyWcs.h.

337  {
338  return pixelToSky(lsst::geom::Point2D(x, y));
339  }

◆ pixelToSky() [2/3]

lsst::geom::SpherePoint lsst::afw::geom::SkyWcs::pixelToSky ( lsst::geom::Point2D const &  pixel) const
inline

Compute sky position(s) from pixel position(s)

Definition at line 334 of file SkyWcs.h.

334  {
335  return _transform->applyForward(pixel);
336  }

◆ pixelToSky() [3/3]

std::vector<lsst::geom::SpherePoint> lsst::afw::geom::SkyWcs::pixelToSky ( std::vector< lsst::geom::Point2D > const &  pixels) const
inline

Definition at line 340 of file SkyWcs.h.

340  {
341  return _transform->applyForward(pixels);
342  }

◆ readFits() [1/3]

static std::shared_ptr<SkyWcs > lsst::afw::table::io::PersistableFacade< SkyWcs >::readFits ( fits::Fits fitsfile)
inlinestaticinherited

Read an object from an already open FITS object.

Parameters
[in]fitsfileFITS object to read from, already positioned at the desired HDU.

Definition at line 183 of file Persistable.h.

183  {
184  return dynamicCast(Persistable::_readFits(fitsfile));
185  }

◆ readFits() [2/3]

static std::shared_ptr<SkyWcs > lsst::afw::table::io::PersistableFacade< SkyWcs >::readFits ( fits::MemFileManager manager,
int  hdu = fits::DEFAULT_HDU 
)
inlinestaticinherited

Read an object from a FITS file in memory.

Parameters
[in]managerManager for the memory to read from.
[in]hduHDU to read, where 0 is the primary. The special value of afw::fits::DEFAULT_HDU skips the primary HDU if it is empty.

Definition at line 205 of file Persistable.h.

205  {
206  return dynamicCast(Persistable::_readFits(manager, hdu));
207  }

◆ readFits() [3/3]

static std::shared_ptr<SkyWcs > lsst::afw::table::io::PersistableFacade< SkyWcs >::readFits ( std::string const &  fileName,
int  hdu = fits::DEFAULT_HDU 
)
inlinestaticinherited

Read an object from a regular FITS file.

Parameters
[in]fileNameName of the file to read.
[in]hduHDU to read, where 0 is the primary. The special value of afw::fits::DEFAULT_HDU skips the primary HDU if it is empty.

Definition at line 194 of file Persistable.h.

194  {
195  return dynamicCast(Persistable::_readFits(fileName, hdu));
196  }

◆ readStream()

std::shared_ptr< SkyWcs > lsst::afw::geom::SkyWcs::readStream ( std::istream is)
static

Deserialize a SkyWcs from an input stream.

Parameters
[in]isinput stream from which to deserialize this SkyWcs

Definition at line 309 of file SkyWcs.cc.

309  {
310  int version;
311  is >> version;
312  if (version != 1) {
313  throw LSST_EXCEPT(pex::exceptions::TypeError, "Unsupported version " + std::to_string(version));
314  }
315  std::string shortClassName;
316  is >> shortClassName;
317  if (shortClassName != SkyWcs::getShortClassName()) {
319  os << "Class name in stream " << shortClassName << " != " << SkyWcs::getShortClassName();
320  throw LSST_EXCEPT(pex::exceptions::TypeError, os.str());
321  }
323  is >> hasFitsApproximation;
324  auto astStream = ast::Stream(&is, nullptr);
325  auto astObjectPtr = ast::Channel(astStream).read();
326  auto frameSet = std::dynamic_pointer_cast<ast::FrameSet>(astObjectPtr);
327  if (!frameSet) {
329  os << "The AST serialization was read as a " << astObjectPtr->getClassName()
330  << " instead of a FrameSet";
331  throw LSST_EXCEPT(pex::exceptions::TypeError, os.str());
332  }
333  ast::FrameDict frameDict(*frameSet);
334  return std::make_shared<SkyWcs>(frameDict);
335 }

◆ readString()

std::shared_ptr< SkyWcs > lsst::afw::geom::SkyWcs::readString ( std::string str)
static

Deserialize a SkyWcs from a string, using the same format as readStream.

Definition at line 337 of file SkyWcs.cc.

337  {
338  std::istringstream is(str);
339  return SkyWcs::readStream(is);
340 }

◆ singleClassEquals()

template<class T >
static bool lsst::afw::typehandling::Storable::singleClassEquals ( T const &  lhs,
Storable const &  rhs 
)
inlinestaticprotectedinherited

Test if a Storable is of a particular class and equal to another object.

This method template simplifies implementations of equals that delegate to operator== without supporting cross-class comparisons.

Template Parameters
TThe class expected of the two objects to be compared.
Parameters
lhs,rhsThe objects to compare. Note that rhs need not be a T, while lhs must be.
Returns
true if rhs is a T and lhs == rhs; false otherwise.
Exception Safety\n Provides the same level of exception safety as operator==.
Most implementations of operator== do not throw.
Note
This method template calls operator== with both arguments of compile-time type T const&. Its use is not recommended if there would be any ambiguity as to which operator== gets picked by overload resolution.

This method template is typically called from equals as:

bool MyType::equals(Storable const& other) const noexcept {
    return singleClassEquals(*this, other);
}

Definition at line 151 of file Storable.h.

151  {
152  auto typedRhs = dynamic_cast<T const*>(&rhs);
153  if (typedRhs != nullptr) {
154  return lhs == *typedRhs;
155  } else {
156  return false;
157  }
158  }

◆ skyToPixel() [1/2]

lsst::geom::Point2D lsst::afw::geom::SkyWcs::skyToPixel ( lsst::geom::SpherePoint const &  sky) const
inline

Compute pixel position(s) from sky position(s)

Definition at line 349 of file SkyWcs.h.

349  {
350  return _transform->applyInverse(sky);
351  }

◆ skyToPixel() [2/2]

std::vector<lsst::geom::Point2D> lsst::afw::geom::SkyWcs::skyToPixel ( std::vector< lsst::geom::SpherePoint > const &  sky) const
inline

Definition at line 352 of file SkyWcs.h.

352  {
353  return _transform->applyInverse(sky);
354  }

◆ toString()

std::string lsst::afw::geom::SkyWcs::toString ( ) const
overridevirtual

Create a string representation of this object.

An example of the output might look like this (note the newlines):

FITS standard SkyWcs:
Sky Origin: (0.000000, +45.000000)
Pixel Origin: (100, 100)
Pixel Scale: 1 arcsec/pixel

Reimplemented from lsst::afw::typehandling::Storable.

Definition at line 357 of file SkyWcs.cc.

357  {
359  if (isFits()) {
360  os << "FITS standard SkyWcs:";
361  } else {
362  os << "Non-standard SkyWcs (Frames: ";
363  // Print the frames in index order (frames are numbered from 1).
364  std::string delimiter = "";
365  for (size_t i = 1; i <= getFrameDict()->getAllDomains().size(); ++i) {
366  os << delimiter << getFrameDict()->getFrame(i)->getDomain();
367  delimiter = ", ";
368  }
369  os << "): ";
370  }
371  std::string delimiter = "\n";
372  os << delimiter << "Sky Origin: " << getSkyOrigin();
373  os << delimiter << "Pixel Origin: " << getPixelOrigin();
374  os << delimiter << "Pixel Scale: " << getPixelScale().asArcseconds() << " arcsec/pixel";
375  return os.str();
376 }

◆ write()

void lsst::afw::geom::SkyWcs::write ( OutputArchiveHandle handle) const
overrideprotectedvirtual

Write the object to one or more catalogs.

The handle object passed to this function provides an interface for adding new catalogs and adding nested objects to the same archive (while checking for duplicates). See OutputArchiveHandle for more information.

Reimplemented from lsst::afw::table::io::Persistable.

Definition at line 386 of file SkyWcs.cc.

386  {
387  SkyWcsPersistenceHelper const& keys = SkyWcsPersistenceHelper::get();
388  table::BaseCatalog cat = handle.makeCatalog(keys.schema);
389  std::shared_ptr<table::BaseRecord> record = cat.addNew();
390  record->set(keys.wcs, formatters::stringToBytes(writeString()));
391  handle.saveCatalog(cat);
392 }

◆ writeFits() [1/3]

void lsst::afw::table::io::Persistable::writeFits ( fits::Fits fitsfile) const
inherited

Write the object to an already-open FITS object.

Parameters
[in]fitsfileOpen FITS object to write to.

Definition at line 18 of file Persistable.cc.

18  {
19  OutputArchive archive;
20  archive.put(this);
21  archive.writeFits(fitsfile);
22 }

◆ writeFits() [2/3]

void lsst::afw::table::io::Persistable::writeFits ( fits::MemFileManager manager,
std::string const &  mode = "w" 
) const
inherited

Write the object to a FITS image in memory.

Parameters
[in]managerName of the file to write to.
[in]modeIf "w", any existing file with the given name will be overwritten. If "a", new HDUs will be appended to an existing file.

Definition at line 29 of file Persistable.cc.

29  {
30  fits::Fits fitsfile(manager, mode, fits::Fits::AUTO_CLOSE | fits::Fits::AUTO_CHECK);
31  writeFits(fitsfile);
32 }

◆ writeFits() [3/3]

void lsst::afw::table::io::Persistable::writeFits ( std::string const &  fileName,
std::string const &  mode = "w" 
) const
inherited

Write the object to a regular FITS file.

Parameters
[in]fileNameName of the file to write to.
[in]modeIf "w", any existing file with the given name will be overwritten. If "a", new HDUs will be appended to an existing file.

Definition at line 24 of file Persistable.cc.

24  {
25  fits::Fits fitsfile(fileName, mode, fits::Fits::AUTO_CLOSE | fits::Fits::AUTO_CHECK);
26  writeFits(fitsfile);
27 }

◆ writeStream()

void lsst::afw::geom::SkyWcs::writeStream ( std::ostream os) const

Serialize this SkyWcs to an output stream.

Version 1 format is as follows:

If and when fits approximation is supported, the approximate WCS will be written as a second FrameDict immediately following the first.

Parameters
[out]osoutput stream to which to serialize this SkyWcs

Definition at line 342 of file SkyWcs.cc.

342  {
343  os << SERIALIZATION_VERSION << " " << SkyWcs::getShortClassName() << " " << hasFitsApproximation() << " ";
344  getFrameDict()->show(os, false); // false = do not write comments
345 }

◆ writeString()

std::string lsst::afw::geom::SkyWcs::writeString ( ) const

Serialize this SkyWcs to a string, using the same format as writeStream.

Definition at line 347 of file SkyWcs.cc.

347  {
349  writeStream(os);
350  return os.str();
351 }

Friends And Related Function Documentation

◆ operator<<()

std::ostream & operator<< ( std::ostream os,
Storable const &  storable 
)
related

Output operator for Storable.

Parameters
osthe desired output stream
storablethe object to print
Returns
a reference to os
Exceptions
UnsupportedOperationExceptionThrown if storable does not have an implementation of Storable::toString.

Definition at line 174 of file Storable.h.

174  {
175  return os << storable.toString();
176 }

The documentation for this class was generated from the following files:
y
int y
Definition: SpanSet.cc:49
ast::FrameDict::getMapping
std::shared_ptr< Mapping > getMapping(int from, std::string const &to) const
Variant of FrameSet::getMapping with the second frame specified by domain.
Definition: FrameDict.h:162
lsst::afw::geom::SkyWcs::isFits
bool isFits() const
Return true getFitsMetadata(true) will succeed, false if not.
Definition: SkyWcs.cc:269
lsst::afw::table::io::Persistable::writeFits
void writeFits(std::string const &fileName, std::string const &mode="w") const
Write the object to a regular FITS file.
Definition: Persistable.cc:24
ast::FrameSet
A FrameSet consists of a set of one or more Frames (which describe coordinate systems),...
Definition: FrameSet.h:99
std::string
STL class.
std::shared_ptr
STL class.
lsst::afw::table::SpherePoint
lsst::geom::SpherePoint SpherePoint
Definition: misc.h:35
version
table::Key< int > version
Definition: PhotoCalib.cc:374
std::vector
STL class.
ast::Mapping::then
SeriesMap then(Mapping const &next) const
Return a series compound mapping this(first(input)) containing shallow copies of the original.
Definition: Mapping.cc:37
lsst::afw::geom::detail::getPropertyListFromFitsChan
std::shared_ptr< daf::base::PropertyList > getPropertyListFromFitsChan(ast::FitsChan &fitsChan)
Copy values from an AST FitsChan into a PropertyList.
Definition: frameSetUtils.cc:256
ast::FitsChan
A specialized form of Channel which reads and writes FITS header cards.
Definition: FitsChan.h:202
version
Definition: version.py:1
std::istringstream
STL class.
ast::FrameDict
A FrameSet whose frames can be referenced by domain name.
Definition: FrameDict.h:67
astshim.keyMap.keyMapContinued.keys
def keys(self)
Definition: keyMapContinued.py:6
strip
bool strip
Definition: fits.cc:911
lsst::afw::geom::makeModifiedWcs
std::shared_ptr< SkyWcs > makeModifiedWcs(TransformPoint2ToPoint2 const &pixelTransform, SkyWcs const &wcs, bool modifyActualPixels)
Create a new SkyWcs whose pixels are transformed by pixelTransform, as described below.
Definition: SkyWcs.cc:491
crval
table::PointKey< double > crval
Definition: OldWcs.cc:130
ast::FrameDict::getFrame
std::shared_ptr< Frame > getFrame(std::string const &domain, bool copy=true) const
Variant of getFrame(int, bool) where the frame is specified by domain name.
Definition: FrameDict.h:151
ast::Channel
Channel provides input/output of AST objects.
Definition: Channel.h:60
lsst::afw::geom::SkyWcs::SkyWcs
SkyWcs(SkyWcs const &)=default
ast::Stream
A stream for ast::Channel.
Definition: Stream.h:41
lsst::afw::geom::detail::readLsstSkyWcs
std::shared_ptr< ast::FrameDict > readLsstSkyWcs(daf::base::PropertySet &metadata, bool strip=true)
Read an LSST celestial WCS FrameDict from a FITS header.
Definition: frameSetUtils.cc:139
lsst::afw::geom::SkyWcs::getShortClassName
static std::string getShortClassName()
Definition: SkyWcs.cc:299
ast::Frame
Frame is used to represent a coordinate system.
Definition: Frame.h:157
ast::FrameSet::CURRENT
static constexpr int CURRENT
index of current frame
Definition: FrameSet.h:105
lsst::afw::geom::SkyWcs::skyToPixel
lsst::geom::Point2D skyToPixel(lsst::geom::SpherePoint const &sky) const
Compute pixel position(s) from sky position(s)
Definition: SkyWcs.h:349
lsst::afw::fits::Fits::AUTO_CHECK
@ AUTO_CHECK
Definition: fits.h:308
lsst::afw::fits::Fits::AUTO_CLOSE
@ AUTO_CLOSE
Definition: fits.h:307
x
double x
Definition: ChebyshevBoundedField.cc:277
ast::ShiftMap
ShiftMap is a linear Mapping which shifts each axis by a specified constant value.
Definition: ShiftMap.h:40
lsst::ip::isr.fringe.getFrame
def getFrame()
Definition: fringe.py:35
frameSet
table::Key< table::Array< std::uint8_t > > frameSet
Definition: TransformBoundedField.cc:91
lsst::afw::geom::SkyWcs::getCdMatrix
Eigen::Matrix2d getCdMatrix() const
Get the 2x2 CD matrix at the pixel origin.
Definition: SkyWcs.cc:204
other
ItemVariant const * other
Definition: Schema.cc:56
ast::Object::show
void show(std::ostream &os, bool showComments=true) const
Print a textual description the object to an ostream.
Definition: Object.cc:158
std::to_string
T to_string(T... args)
lsst::afw::geom::TransformPoint2ToPoint2
Transform< Point2Endpoint, Point2Endpoint > TransformPoint2ToPoint2
Definition: Transform.h:300
std::runtime_error
STL class.
ptr
uint64_t * ptr
Definition: RangeSet.cc:88
pixel
table::PointKey< int > pixel
Definition: DeltaFunctionKernel.cc:101
result
py::object result
Definition: _schema.cc:429
lsst::afw::geom::SkyWcs::pixelToSky
lsst::geom::SpherePoint pixelToSky(lsst::geom::Point2D const &pixel) const
Compute sky position(s) from pixel position(s)
Definition: SkyWcs.h:334
ast::StringStream
String-based source and sink for channels.
Definition: Stream.h:180
LSST_EXCEPT
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48
lsst::afw::detection
Definition: Footprint.h:50
std::ostringstream
STL class.
ast::Channel::read
std::shared_ptr< Object > read()
Read an object from a channel.
Definition: Channel.cc:52
os
std::ostream * os
Definition: Schema.cc:746
lsst::afw::geom::SkyWcs::getTanWcs
std::shared_ptr< SkyWcs > getTanWcs(lsst::geom::Point2D const &pixel) const
Get a local TAN WCS approximation to this WCS at the specified pixel position.
Definition: SkyWcs.cc:206
lsst::afw::formatters::stringToBytes
ndarray::Array< std::uint8_t, 1, 1 > stringToBytes(std::string const &str)
Encode a std::string as a vector of uint8.
Definition: Utils.cc:162
lsst::afw::table::BaseCatalog
CatalogT< BaseRecord > BaseCatalog
Definition: fwd.h:71
delimiter
char delimiter
Definition: Schema.cc:193
lsst::afw::geom::SkyWcs::getFrameDict
std::shared_ptr< const ast::FrameDict > getFrameDict() const
Get the contained FrameDict.
Definition: SkyWcs.cc:267
lsst::afw::table::io::PersistableFacade< SkyWcs >::dynamicCast
static std::shared_ptr< SkyWcs > dynamicCast(std::shared_ptr< Persistable > const &ptr)
Dynamically cast a shared_ptr.
Definition: Persistable.cc:18
ast::FrameSet::BASE
static constexpr int BASE
index of base frame
Definition: FrameSet.h:104
lsst::geom::Point< double, 2 >
lsst::afw::geom::SkyWcs::getFitsMetadata
std::shared_ptr< daf::base::PropertyList > getFitsMetadata(bool precise=false) const
Return the WCS as FITS WCS metadata.
Definition: SkyWcs.cc:218
lsst::afw::geom::SkyWcs::getPixelScale
lsst::geom::Angle getPixelScale() const
Get the pixel scale at the pixel origin.
Definition: SkyWcs.h:208
lsst::afw::geom::SkyWcs::hasFitsApproximation
bool hasFitsApproximation() const
Does this SkyWcs have an approximate SkyWcs that can be represented as standard FITS WCS?
Definition: SkyWcs.h:364
lsst::geom::radians
constexpr AngleUnit radians
constant with units of radians
Definition: Angle.h:108
lsst::geom::Extent2D
Extent< double, 2 > Extent2D
Definition: Extent.h:400
lsst::afw::geom::SkyWcs::getPixelOrigin
lsst::geom::Point2D getPixelOrigin() const
Get the pixel origin, in pixels, using the LSST convention.
Definition: SkyWcs.h:215
lsst::afw::geom::makeSimpleWcsMetadata
std::shared_ptr< daf::base::PropertyList > makeSimpleWcsMetadata(lsst::geom::Point2D const &crpix, lsst::geom::SpherePoint const &crval, Eigen::Matrix2d const &cdMatrix, std::string const &projection="TAN")
Make FITS metadata for a simple FITS WCS (one with no distortion).
Definition: wcsUtils.cc:172
lsst::afw::geom::SkyWcs::writeString
std::string writeString() const
Serialize this SkyWcs to a string, using the same format as writeStream.
Definition: SkyWcs.cc:347
lsst::afw::geom::SkyWcs::readStream
static std::shared_ptr< SkyWcs > readStream(std::istream &is)
Deserialize a SkyWcs from an input stream.
Definition: SkyWcs.cc:309
lsst::geom::Angle::asArcseconds
constexpr double asArcseconds() const noexcept
Return an Angle's value in arcseconds.
Definition: Angle.h:178
lsst::afw::geom::SkyWcs::getSkyOrigin
lsst::geom::SpherePoint getSkyOrigin() const
Get the sky origin, the celestial fiducial point.
Definition: SkyWcs.cc:187
lsst::afw::geom::SkyWcs::writeStream
void writeStream(std::ostream &os) const
Serialize this SkyWcs to an output stream.
Definition: SkyWcs.cc:342
ast::FrameDict::getAllDomains
std::set< std::string > getAllDomains() const
Get the domain names for all contained Frames (excluding frames with empty or defaulted domain names)...
Definition: FrameDict.cc:45
lsst.pex::exceptions::RuntimeError
Reports errors that are due to events beyond the control of the program.
Definition: Runtime.h:104
lsst::afw::typehandling::Storable::singleClassEquals
static bool singleClassEquals(T const &lhs, Storable const &rhs)
Test if a Storable is of a particular class and equal to another object.
Definition: Storable.h:151
std::pow
T pow(T... args)