lsst.afw
g3a5ebb7d8a+28b83bf6a5
Toggle main menu visibility
Loading...
Searching...
No Matches
python
lsst
afw
geom
wcsUtils.py
Go to the documentation of this file.
1
# This file is part of afw.
2
#
3
# Developed for the LSST Data Management System.
4
# This product includes software developed by the LSST Project
5
# (https://www.lsst.org).
6
# See the COPYRIGHT file at the top-level directory of this distribution
7
# for details of code ownership.
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 GNU General Public License
20
# along with this program. If not, see <https://www.gnu.org/licenses/>.
21
22
__all__ = [
"getSipMatrixFromMetadata"
,
"computePixelToDistortedPixel"
,
23
"createTrivialWcsMetadata"
,
"deleteBasicWcsMetadata"
,
"getCdMatrixFromMetadata"
,
24
"getImageXY0FromMetadata"
,
"hasSipMatrix"
,
"makeSipMatrixMetadata"
,
25
"makeTanSipMetadata"
]
26
27
import
lsst.geom
28
from
._geom
import
(_getSipMatrixFromMetadata, makeTransform, linearizeTransform,
29
createTrivialWcsMetadata, deleteBasicWcsMetadata, getCdMatrixFromMetadata,
30
getImageXY0FromMetadata, hasSipMatrix, makeSipMatrixMetadata,
31
makeTanSipMetadata)
32
33
34
def
getSipMatrixFromMetadata
(metadata, name):
35
"""Extract a SIP matrix from FITS TAN-SIP WCS metadata.
36
37
Omitted coefficients are set to 0 and all coefficients may be omitted.
38
39
Parameters
40
----------
41
metadata : `lsst.daf.base.PropertySet`
42
FITS metadata.
43
name : `str`
44
Name of TAN-SIP matrix (``"A"``, ``"B"``, ``"Ap"``, or ``"Bp"``).
45
46
Returns
47
-------
48
`numpy.array`
49
The SIP matrix.
50
51
Raises
52
------
53
TypeError
54
If the order keyword ``<name>_ORDER`` (e.g. ``AP_ORDER``) is not found,
55
the value of the order keyword cannot be read as an integer,
56
the value of the order keyword is negative,
57
or if a matrix parameter (e.g. ``AP_5_0``) cannot be read as a float.
58
"""
59
arr = _getSipMatrixFromMetadata(metadata, name)
60
if
arr.shape == ():
# order=0
61
arr.shape = (1, 1)
62
return
arr
63
64
65
def
computePixelToDistortedPixel
(pixelToFocalPlane, focalPlaneToFieldAngle):
66
"""Compute the transform ``pixelToDistortedPixel``, which applies optical
67
distortion specified by ``focalPlaneToFieldAngle``.
68
69
The resulting transform is designed to be used to convert a pure TAN WCS
70
to a WCS that includes a model for optical distortion. In detail,
71
the initial WCS will contain these frames and transforms::
72
73
PIXELS frame -> pixelToIwc -> IWC frame -> gridToIwc -> SkyFrame
74
75
To produce the WCS with distortion, replace ``pixelToIwc`` with::
76
77
pixelToDistortedPixel -> pixelToIwc
78
79
Parameters
80
----------
81
pixelToFocalPlane : `lsst.afw.geom.TransformPoint2ToPoint2`
82
Transform parent pixel coordinates to focal plane coordinates
83
focalPlaneToFieldAngle : `lsst.afw.geom.TransformPoint2ToPoint2`
84
Transform focal plane coordinates to field angle coordinates
85
86
Returns
87
-------
88
pixelToDistortedPixel : `lsst.afw.geom.TransformPoint2ToPoint2`
89
A transform that applies the effect of the optical distortion model.
90
"""
91
# return pixelToFocalPlane -> focalPlaneToFieldAngle -> tanFieldAngleToocalPlane -> focalPlaneToPixel
92
focalPlaneToTanFieldAngle =
makeTransform
(
linearizeTransform
(focalPlaneToFieldAngle,
93
lsst.geom.Point2D
(0, 0)))
94
return
pixelToFocalPlane.then(focalPlaneToFieldAngle) \
95
.then(focalPlaneToTanFieldAngle.inverted()) \
96
.then(pixelToFocalPlane.inverted())
lsst::geom::Point< double, 2 >
lsst::afw::geom.wcsUtils.computePixelToDistortedPixel
computePixelToDistortedPixel(pixelToFocalPlane, focalPlaneToFieldAngle)
Definition
wcsUtils.py:65
lsst::afw::geom.wcsUtils.getSipMatrixFromMetadata
getSipMatrixFromMetadata(metadata, name)
Definition
wcsUtils.py:34
lsst::afw::geom::makeTransform
std::shared_ptr< TransformPoint2ToPoint2 > makeTransform(lsst::geom::AffineTransform const &affine)
Wrap an lsst::geom::AffineTransform as a Transform.
Definition
transformFactory.cc:154
lsst::afw::geom::linearizeTransform
lsst::geom::AffineTransform linearizeTransform(TransformPoint2ToPoint2 const &original, lsst::geom::Point2D const &inPoint)
Approximate a Transform by its local linearization.
Definition
transformFactory.cc:132
lsst::geom
Generated on
for lsst.afw by
1.17.0