WCS#
- class astropy.wcs.WCS(header=None, fobj=None, key=' ', minerr=0.0, relax=True, naxis=None, keysel=None, colsel=None, fix=True, translate_units='', _do_set=True)[源代码]#
基类:
FITSWCSAPIMixin
,WCSBase
WCS对象执行标准WCS转换,并更正 SIP 和 distortion paper 表查找转换,基于从FITS文件读取的WCS关键字和补充数据。
另请参见:https://docs.astropy.org/en/stable/wcs/
- 参数:
- header :
Header
,PrimaryHDU
,ImageHDU
,str
、类似词典的,或者None
,可选Header、PrimaryHDU、ImageHDU、PYTHON:STR、DICT-LIKE或PYTHON:无,可选 如果 页眉 如果未提供或没有,则对象将初始化为默认值。
- fobj :
HDUList
,可选HDUList,可选 当标题关键字指向 distortion paper 查找表存储在不同的扩展名中。
- key :
str
,可选Python:字符串,可选 要使用的特定WCS转换的名称。这可能是
' '
或'A'
-“Z”和对应于 ``"a"
部分CTYPEia
卡。 key 仅在以下情况下提供 页眉 也提供。- minerr :
float
,可选Python:Float,可选 失真校正必须具有的最小值才能应用。如果
CQERRja
小于 矿工 ,则不应用相应的失真。- relax : bool 或
int
,可选Bool或python:int,可选 允许程度:
- naxis :
int
或 sequence ,可选PYTHON:INT或PYTHON:SEQUENCE,可选 使用提取特定坐标轴
sub()
. 如果提供了标题,并且 纳西族 不是None
, 纳西族 将传递给sub()
以便从收割台选择特定轴。看到了吗sub()
有关此参数的详细信息。- keysel : sequence 的
str
,可选PYTHON:PYTHON的序列:字符串,可选 用于选择wcslb考虑的关键字类型的标志序列。什么时候
None
,则只考虑标准图像标题关键字(并调用底层wcspih()C函数)。为了使用二进制表图像阵列或像素列表关键字, 按键选择 必须设置。列表中的每个元素都应该是以下字符串之一:
“image”:图像标题关键字
“binary”:二进制表图像数组关键字
“pixel”:像素列表关键字
关键词如
EQUIna
或RFRQna
二进制表图像数组和像素列表(包括WCSNna
和TWCSna
)由“二进制”和“像素”选择。- colsel : sequence 的
int
,可选PYTHON:PYTHON的序列:int,可选 表列号的序列,用于将WCS转换限制为只考虑与指定列有关的那些转换。如果
None
没有限制,没有限制。- fix : bool ,可选可选的布尔
什么时候?
True
(默认),调用fix
在结果对象上修复头中的任何非标准用法。FITSFixedWarning
如果进行了任何更改,将发出警告。- translate_units :
str
,可选Python:字符串,可选 指定要执行的非标准单位字符串的潜在不安全转换。默认情况下,不执行任何操作。看到了吗
WCS.fix
有关此参数的详细信息。仅在以下情况下有效fix
是True
.
- header :
- 加薪:
MemoryError
内存分配失败。
ValueError
密钥无效。
KeyError
在FITS标题中找不到键。
ValueError
头中存在查找表失真,但是 fobj 未提供。
笔记
astropy.wcs 支持任意 n 核心WCS的维度(WCSLIB处理的转换)。但是 distortion paper 查找表和 SIP 扭曲必须是二维的。因此,如果尝试创建一个WCS对象,其中核心WCS的维度数与2不同,并且该对象还包含 distortion paper 查阅表格或 SIP 变形,a
ValueError
将引发异常。为了避免这种情况,请考虑使用 纳西族 kwarg从核心WCS中选择两个维度。转换中的坐标轴数不是直接由
NAXIS
关键字,但不是从最高的:NAXIS
关键字WCSAXESa
关键字任何参数化WCS关键字中的最高轴数。keyvalue和关键字必须在语法上有效,否则将不考虑它。
如果这些关键字类型都不存在,也就是说,如果报头只包含特定坐标表示的辅助WCS关键字,则不会为其构造坐标描述。
轴数,设置为
naxis
成员,对于同一图像的不同坐标表示可能不同。当标头包含重复的关键字时,在大多数情况下,将使用最后遇到的关键字。
set
在构造之后立即调用,因此任何无效的关键字或转换都将由构造函数引发,而不是在随后调用转换方法时。
属性摘要
WCS应用到的数据的形状作为长度的元组
pixel_n_dim
在里面(row, column)
order(Python中数组的约定)。返回一个 (
world_n_dim
,pixel_n_dim
)表示使用布尔值的矩阵表示给定的世界坐标是否依赖于给定的像素坐标。每个坐标轴的世界名称。
仅包括天轴的当前WCS的副本。
A
DistortionLookupTable
用于探测器图像平面校正的对象 x 轴。A
DistortionLookupTable
用于探测器图像平面校正的对象 y 轴。返回
True
如果存在任何失真项。返回对底层低级别WCS对象的引用。
描述每个像素轴名称的字符串的iterable。
在其中定义WCS的边界(以像素坐标为单位),如具有
pixel_n_dim
(min, max)
元组。像素坐标系中的轴数。
WCS应用到的数据的形状作为长度的元组
pixel_n_dim
在里面(x, y)
订单(如果是图像,x
是水平坐标和y
是垂直坐标)。指示Python对象是以序列化形式还是作为实际的Python对象给定的。
仅包含光谱轴的当前WCS的副本。
仅包含时间轴的当前WCS的副本。
一个iterable字符串,用于描述每个世界轴的名称。
提供有关为世界坐标构造高级对象的信息的词典。
一份清单
world_n_dim
元素提供有关为世界坐标构造高级对象的信息。描述每个世界轴的物理类型的字符串iterable。
给定每个轴的世界坐标单位的一种字符串。
世界坐标系中的轴数。
方法总结
all_pix2world
(*args, **kwargs)将像素坐标转换为世界坐标。
all_world2pix
(*arg[, tolerance, maxiter, ...])将世界坐标转换为像素坐标,使用数值迭代来反转全正向变换
all_pix2world
完全畸变模型。array_index_to_world
(*index_arrays)将阵列索引转换为世界坐标(由Astropy对象表示)。
array_index_to_world_values
(*index_arrays)将数组索引转换为世界坐标。
calc_footprint
([header, undistort, axes, center])计算图像在天空中的足迹。
copy
\()返回对象的浅副本。
deepcopy
\()返回对象的深层副本。
det2im
(*args)使用将探测器坐标转换为图像平面坐标 distortion paper 表查找更正。
dropaxis
\(Dropax)从WCS中删除轴。
fix
([translate_units, naxis])从wcslib执行修复操作,并对其所做的任何更改发出警告。
footprint_contains
(coord, **kwargs)确定给定的SkyCoord是否包含在wcs示意图中。
footprint_to_file
([filename, color, width, ...])写出一个 ds9 样式区域文件。
get_axis_types
\()类似
self.wcsprm.axis_types
但以更友好的Python格式提供信息。p4_pix2foc
(*args)使用将像素坐标转换为焦平面坐标 distortion paper 表查找更正。
pix2foc
(*args)使用将像素坐标转换为焦平面坐标 SIP 多项式失真约定和 distortion paper 表查找更正。
pixel_to_world
(*pixel_arrays)将像素坐标转换为世界坐标(由高级对象表示)。
pixel_to_world_values
(*pixel_arrays)将像素坐标转换为世界坐标。
printwcs
\()对于一个 天空的 WCS(参见
astropy.wcs.WCS.celestial
), returns pixel area of the image pixel at theCRPIX
location once it is projected onto the "plane of intermediate world coordinates" as defined in Greisen & Calabretta 2002, A&A, 395, 1061 .沿图像像素的每个轴计算像素比例
CRPIX
将其投影到中定义的“中间世界坐标平面”后的位置 Greisen & Calabretta 2002, A&A, 395, 1061 .重新定位WCS,使天轴在前,光谱轴在后,其他轴在后。
sip_foc2pix
(*args)使用将焦平面坐标转换为像素坐标 SIP 多项式失真约定。
sip_pix2foc
(*args)使用将像素坐标转换为焦平面坐标 SIP 多项式失真约定。
slice
(view[, numpy_order])使用Numpy切片对WCS实例进行切片。
sub
\(轴)从中提取子图像的坐标描述
WCS
对象。swapaxes
(ax0, ax1)交换WCS中的轴。
to_fits
([relax, key])生成一个
HDUList
对象中存储的所有信息。to_header
([relax, key])生成
astropy.io.fits.Header
对象中存储的基本WCS和SIP信息。to_header_string
([relax])相同的
to_header
,但返回包含头卡的字符串。wcs_pix2world
(*args, **kwargs)只需执行基本操作,即可将像素坐标转换为世界坐标 wcslib 转变。
wcs_world2pix
(*args, **kwargs)将世界坐标转换为像素坐标,仅使用基本 wcslib WCS转换。
world_to_array_index
(*world_objects)将世界坐标(由天体对象表示)转换为数组索引。
world_to_array_index_values
(*world_arrays)将世界坐标转换为数组索引。
world_to_pixel
(*world_objects)将世界坐标(由Astropy对象表示)转换为像素坐标。
world_to_pixel_values
(*world_arrays)将世界坐标转换为像素坐标。
属性文档
- array_shape#
- axis_correlation_matrix#
- celestial#
仅包括天轴的当前WCS的副本。
- cpdis1#
-
预线性变换失真查找表,
CPDIS1
.
- cpdis2#
-
预线性变换失真查找表,
CPDIS2
.
- det2im1#
A
DistortionLookupTable
用于探测器图像平面校正的对象 x 轴。
- det2im2#
A
DistortionLookupTable
用于探测器图像平面校正的对象 y 轴。
- has_celestial#
- has_spectral#
- has_temporal#
- is_celestial#
- is_spectral#
- is_temporal#
- low_level_wcs#
- pixel_axis_names#
描述每个像素轴名称的字符串的iterable。
如果轴没有名称,则应返回空字符串(如果子类不重写此属性,则这是所有轴的默认行为)。请注意,这些名称仅用于显示目的,不是标准化的。
- pixel_bounds#
- pixel_n_dim#
- pixel_scale_matrix#
- pixel_shape#
- serialized_classes#
- spectral#
仅包含光谱轴的当前WCS的副本。
- temporal#
仅包含时间轴的当前WCS的副本。
- world_axis_names#
- world_axis_object_classes#
- world_axis_object_components#
- world_axis_physical_types#
- world_axis_units#
- world_n_dim#
方法文件
- all_pix2world(*args, **kwargs)[源代码]#
将像素坐标转换为世界坐标。
按系列执行以下所有操作:
探测器到图像平面校正(如果在FITS文件中有)
SIP 失真校正(如果在FITS文件中存在)
distortion paper 表格查找更正(如果在FITS文件中存在)
wcslib “核心”WCS改造
- 参数:
- 返回:
- result :
array
数组 返回天空坐标,以度为单位。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。
- result :
- 加薪:
MemoryError
内存分配失败。
SingularMatrixError
线性变换矩阵是奇异的。
InconsistentAxisTypesError
坐标轴类型不一致或无法识别。
ValueError
参数值无效。
ValueError
坐标转换参数无效。
ValueError
x和y坐标阵列的大小不同。
InvalidTransformError
坐标转换参数无效。
InvalidTransformError
病态坐标变换参数。
笔记
结果的轴顺序由
CTYPEia
FITS标题中的关键字,因此它可能不总是形式( ra , dec )这个lat
,lng
,lattyp
和lngtyp
成员可用于确定轴的顺序。
- all_world2pix(*arg, tolerance=1.0e-4, maxiter=20, adaptive=False, detect_divergence=True, quiet=False)[源代码]#
将世界坐标转换为像素坐标,使用数值迭代来反转全正向变换
all_pix2world
完全畸变模型。- 参数:
- *args
位置参数有两种可接受的形式:
2个参数:一个 N X 纳西族 坐标数组,以及 起源 .
多于2个参数:每个轴都有一个数组,后跟一个 起源 . 这些数组必须可以相互广播。
在这里, 起源 是图像左上角的坐标。在FITS和Fortran标准中,这是1。在Numpy和C标准中,这是0。
对于非二维的转换,必须使用双参数形式。
- ra_dec_order : bool ,可选可选的布尔
什么时候?
True
将确保世界坐标始终以( ra , dec )对,而不考虑在中指定的轴的顺序CTYPE
关键词。默认为False
.- tolerance :
float
,可选(默认为1.0E-4)Python:Float,可选(默认值=1.0E-4) 溶液的耐受性。当迭代解算器估计“真解”在当前估计的许多像素范围内时,迭代终止,更具体地说,当在上一次迭代中找到的解的校正小于(在L2范数的意义上)时
tolerance
.- maxiter :
int
,可选(默认为20)PYTHON:int,可选(默认值=20) 达到解决方案所允许的最大迭代次数。
- quiet : bool ,可选(默认=
False
)布尔值,可选(默认值=python:FALSE) 不要扔
NoConvergence
当方法在指定的最大迭代次数内未收敛到具有所需精度的解决方案时出现异常maxiter
参数。相反,只需返回找到的解决方案。
- 返回:
- result :
array
数组 返回像素坐标。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。
- result :
- 其他参数:
- adaptive : bool ,可选(默认=
False
)布尔值,可选(默认值=python:FALSE) 指定是否仅自适应地选择未收敛到下一次迭代所需精度范围内的解的点。对于HST和大多数其他仪器,建议使用默认值。
备注
这个
all_world2pix()
使用连续近似法的矢量化实现(请参见Notes
(下面的节)在其中迭代 all 输入点 不管 直到达到要求的精度为止 all 输入点。在某些情况下,可能 几乎全部 点已达到要求的精度,但只有少数输入数据点需要额外的迭代(这主要取决于给定仪器的几何畸变特性)。在这种情况下adaptive
=True
在这种情况下all_world2pix()
将继续迭代 only 在尚未收敛到所需精度的点上。然而,对于HST的ACS/WFC探测器来说,它在所有HST仪器中具有最强的失真,测试表明启用此选项将导致大约50-100%的计算时间损失(取决于图像的具体情况、几何失真和要转换的输入点的数量)。因此,对于HST和可能的仪表,建议设置adaptive
=False
. 错误设置的唯一危险是性能损失。备注
什么时候?
detect_divergence
是True
,all_world2pix()
一旦检测到发散,将自动切换到自适应算法。- detect_divergence : bool ,可选(默认=
True
)布尔值,可选(默认值=python:TRUE) 指定是否对收敛到解决方案执行更详细的分析。正常
all_world2pix()
可能无法达到所需的精度,如果tolerance
或maxiter
论据太低了。然而,对于某些几何扭曲,可能会发生下列情况:对于某些几何扭曲,使用的连续逼近法的收敛条件all_world2pix()
可能不满足,在这种情况下,解的连续近似将发散,而不管tolerance
或maxiter
设置。什么时候?
detect_divergence
是False
,这些发散点将被检测为未达到要求的精度(没有进一步的细节)。另外,如果adaptive
是False
然后算法将不知道解(对于特定点)是发散的,并将继续迭代并尝试“改进”发散解。这可能导致NaN
或Inf
返回结果中的值(除了性能惩罚)。即使什么时候detect_divergence
是False
,all_world2pix()
,将在迭代过程结束时识别无效结果 (NaN
或Inf
)作为“分歧”的解决方案,并将提出NoConvergence
除非quiet
参数设置为True
.什么时候?
detect_divergence
是True
,all_world2pix()
将检测当前对坐标的校正大于上一次迭代期间应用的校正的点 if 要求的准确度 尚未实现 . 在这种情况下,如果adaptive
是True
,这些点将被排除在进一步的迭代中,如果adaptive
是False
,all_world2pix()
会自动切换到自适应算法。因此,所报告的发散解将是立即计算的最新收敛解 之前 已检测到发散。备注
当达到精度时,由于舍入误差(当
adaptive
是False
)而这样的增长将被忽略。备注
基于我们使用HST ACS/WFC图像的测试,设置
detect_divergence
到True
将导致大约5-20%的性能损失,较大的惩罚对应于adaptive
设置为True
. 因为启用此功能的好处超过了较小的性能损失,尤其是在adaptive
=False
,建议设置detect_divergence
到True
,除非对特定仪器图像的畸变模型进行大量测试,表明数值方法在广泛的坐标范围内(甚至在图像本身之外)具有良好的稳定性。备注
发散逆解的指数将在
divergent
凸起的属性NoConvergence
异常对象。
- adaptive : bool ,可选(默认=
- 加薪:
NoConvergence
方法未在由设置的指定最大迭代次数内收敛到所需精度的解决方案
maxiter
参数。要关闭此异常,请设置quiet
到True
. 未达到要求精度的点的索引(如有)将列在slow_conv
凸起的属性NoConvergence
异常对象。见
NoConvergence
有关详细信息的文档。MemoryError
内存分配失败。
SingularMatrixError
线性变换矩阵是奇异的。
InconsistentAxisTypesError
坐标轴类型不一致或无法识别。
ValueError
参数值无效。
ValueError
坐标转换参数无效。
ValueError
x和y坐标阵列的大小不同。
InvalidTransformError
坐标转换参数无效。
InvalidTransformError
病态坐标变换参数。
笔记
输入世界数组的轴顺序由
CTYPEia
FITS标题中的关键字,因此它可能不总是形式( ra , dec )这个lat
,lng
,lattyp
和lngtyp
成员可用于确定轴的顺序。使用不动点迭代近似法,我们从初始近似开始迭代,初始近似是使用无失真感知计算的
wcs_world2pix()
(或等效物)。这个
all_world2pix()
函数使用连续近似法的矢量化实现,因此在以下情况下它是高效的(>30x) all 需要从天空坐标转换为图像坐标的数据点在 once . 因此,建议尽可能将需要转换为的所有点的长数组作为输入传递all_world2pix()
而不是打电话all_world2pix()
对于每个数据点。另请参见adaptive
参数。实例
>>> import astropy.io.fits as fits >>> import astropy.wcs as wcs >>> import numpy as np >>> import os
>>> filename = os.path.join(wcs.__path__[0], 'tests/data/j94f05bgq_flt.fits') >>> hdulist = fits.open(filename) >>> w = wcs.WCS(hdulist[('sci',1)].header, hdulist) >>> hdulist.close()
>>> ra, dec = w.all_pix2world([1,2,3], [1,1,1], 1) >>> print(ra) [ 5.52645627 5.52649663 5.52653698] >>> print(dec) [-72.05171757 -72.05171276 -72.05170795] >>> radec = w.all_pix2world([[1,1], [2,1], [3,1]], 1) >>> print(radec) [[ 5.52645627 -72.05171757] [ 5.52649663 -72.05171276] [ 5.52653698 -72.05170795]] >>> x, y = w.all_world2pix(ra, dec, 1) >>> print(x) [ 1.00000238 2.00000237 3.00000236] >>> print(y) [ 0.99999996 0.99999997 0.99999997] >>> xy = w.all_world2pix(radec, 1) >>> print(xy) [[ 1.00000238 0.99999996] [ 2.00000237 0.99999997] [ 3.00000236 0.99999997]] >>> xy = w.all_world2pix(radec, 1, maxiter=3, ... tolerance=1.0e-10, quiet=False) Traceback (most recent call last): ... NoConvergence: 'WCS.all_world2pix' failed to converge to the requested accuracy. After 3 iterations, the solution is diverging at least for one input point.
>>> # Now try to use some diverging data: >>> divradec = w.all_pix2world([[1.0, 1.0], ... [10000.0, 50000.0], ... [3.0, 1.0]], 1) >>> print(divradec) [[ 5.52645627 -72.05171757] [ 7.15976932 -70.8140779 ] [ 5.52653698 -72.05170795]]
>>> # First, turn detect_divergence on: >>> try: ... xy = w.all_world2pix(divradec, 1, maxiter=20, ... tolerance=1.0e-4, adaptive=False, ... detect_divergence=True, ... quiet=False) ... except wcs.wcs.NoConvergence as e: ... print("Indices of diverging points: {0}" ... .format(e.divergent)) ... print("Indices of poorly converging points: {0}" ... .format(e.slow_conv)) ... print("Best solution:\n{0}".format(e.best_solution)) ... print("Achieved accuracy:\n{0}".format(e.accuracy)) Indices of diverging points: [1] Indices of poorly converging points: None Best solution: [[ 1.00000238e+00 9.99999965e-01] [ -1.99441636e+06 1.44309097e+06] [ 3.00000236e+00 9.99999966e-01]] Achieved accuracy: [[ 6.13968380e-05 8.59638593e-07] [ 8.59526812e+11 6.61713548e+11] [ 6.09398446e-05 8.38759724e-07]] >>> raise e Traceback (most recent call last): ... NoConvergence: 'WCS.all_world2pix' failed to converge to the requested accuracy. After 5 iterations, the solution is diverging at least for one input point.
>>> # This time turn detect_divergence off: >>> try: ... xy = w.all_world2pix(divradec, 1, maxiter=20, ... tolerance=1.0e-4, adaptive=False, ... detect_divergence=False, ... quiet=False) ... except wcs.wcs.NoConvergence as e: ... print("Indices of diverging points: {0}" ... .format(e.divergent)) ... print("Indices of poorly converging points: {0}" ... .format(e.slow_conv)) ... print("Best solution:\n{0}".format(e.best_solution)) ... print("Achieved accuracy:\n{0}".format(e.accuracy)) Indices of diverging points: [1] Indices of poorly converging points: None Best solution: [[ 1.00000009 1. ] [ nan nan] [ 3.00000009 1. ]] Achieved accuracy: [[ 2.29417358e-06 3.21222995e-08] [ nan nan] [ 2.27407877e-06 3.13005639e-08]] >>> raise e Traceback (most recent call last): ... NoConvergence: 'WCS.all_world2pix' failed to converge to the requested accuracy. After 6 iterations, the solution is diverging at least for one input point.
- array_index_to_world(*index_arrays)#
将阵列索引转换为世界坐标(由Astropy对象表示)。
如果使用单个高级对象来表示世界坐标(例如,如果
len(wcs.world_axis_object_classes) == 1
),则按原样返回(不在元组/列表中),否则返回高级对象的元组。看到了吗array_index_to_world_values
用于像素索引和排序约定。
- array_index_to_world_values(*index_arrays)#
将数组索引转换为世界坐标。
这和
pixel_to_world_values
但指标应在(i, j)
订单,哪里有图像i
是一排而且j
是列(即与pixel_to_world_values
)如果
world_n_dim
是1
,此方法返回单个标量或数组,否则返回标量或数组的元组。
- calc_footprint(header=None, undistort=True, axes=None, center=True)[源代码]#
计算图像在天空中的足迹。
脚印被定义为在应用了所有可用的扭曲之后图像的角点在天空中的位置。
- 参数:
- 返回:
- coord : (4, 2)
array
(的) x , y )坐标。(4,2) 顺序是从左下角开始顺时针。
- coord : (4, 2)
- det2im(*args)[源代码]#
使用将探测器坐标转换为图像平面坐标 distortion paper 表查找更正。
输出是绝对像素坐标,而不是相对于
CRPIX
.- 参数:
- *args
位置参数有两种可接受的形式:
2个参数:一个 N X 2 坐标数组,以及 起源 .
多于2个参数:每个轴都有一个数组,后跟一个 起源 . 这些数组必须可以相互广播。
在这里, 起源 是图像左上角的坐标。在FITS和Fortran标准中,这是1。在Numpy和C标准中,这是0。
- 返回:
- result :
array
数组 返回像素坐标。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。
- result :
- 加薪:
MemoryError
内存分配失败。
ValueError
坐标转换参数无效。
- fix(translate_units='', naxis=None)[源代码]#
从wcslib执行修复操作,并对其所做的任何更改发出警告。
- 参数:
- translate_units :
str
,可选Python:字符串,可选 指定要执行的非标准单位字符串的潜在不安全转换。默认情况下,不执行任何操作。
虽然
"S"
通常用于表示秒,其翻译为"s"
由于标准认可"S"
正式地说是西门子,但很少使用。同样适用于"H"
几个小时(亨利),还有"D"
好几天(黛比)。此字符串控制在这种情况下要执行的操作,并且不区分大小写。
如果字符串包含
"s"
,翻译"S"
到"s"
.如果字符串包含
"h"
,翻译"H"
到"h"
.如果字符串包含
"d"
,翻译"D"
到"d"
.
因此
''
不会做任何不安全的翻译'shd'
所有的都可以。- naxis :
int
array
,可选Python:整型数组,可选 图像轴长度。如果此数组设置为零或
None
然后cylfix
不会被调用。
- translate_units :
- get_axis_types()[源代码]#
类似
self.wcsprm.axis_types
但以更友好的Python格式提供信息。- 返回:
- result :
list
的dict
PYTHON:PYTHON列表:DICT 返回字典列表,每个轴对应一个字典,每个字典都包含有关该轴类型的属性。
每个字典都有以下键:
“坐标类型”:
无:非特定坐标类型。
“斯托克斯”:斯托克斯坐标。
“天体”:天体坐标(包括
CUBEFACE
)“光谱”:光谱坐标。
“比例”:
“线性”:线性轴。
“量子化”:量子化轴 (
STOKES
,CUBEFACE
)“非线性天体”:非线性天轴。
“非线性光谱”:非线性光谱轴。
“对数”:对数轴。
“表格”:表格轴。
'组'
组号,例如查找表编号
'编号'
对于天轴:
0:经度坐标。
1: 纬度坐标。
2:
CUBEFACE
数字。
对于查阅表格:
多维表中的轴号。
CTYPEia
在里面"4-3"
具有无法识别的算法代码的窗体将生成错误。
- result :
- p4_pix2foc(*args)[源代码]#
使用将像素坐标转换为焦平面坐标 distortion paper 表查找更正。
输出是绝对像素坐标,而不是相对于
CRPIX
.- 参数:
- *args
位置参数有两种可接受的形式:
2个参数:一个 N X 2 坐标数组,以及 起源 .
多于2个参数:每个轴都有一个数组,后跟一个 起源 . 这些数组必须可以相互广播。
在这里, 起源 是图像左上角的坐标。在FITS和Fortran标准中,这是1。在Numpy和C标准中,这是0。
- 返回:
- result :
array
数组 返回焦点坐标。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。
- result :
- 加薪:
MemoryError
内存分配失败。
ValueError
坐标转换参数无效。
- pix2foc(*args)[源代码]#
使用将像素坐标转换为焦平面坐标 SIP 多项式失真约定和 distortion paper 表查找更正。
输出是绝对像素坐标,而不是相对于
CRPIX
.- 参数:
- *args
位置参数有两种可接受的形式:
2个参数:一个 N X 2 坐标数组,以及 起源 .
多于2个参数:每个轴都有一个数组,后跟一个 起源 . 这些数组必须可以相互广播。
在这里, 起源 是图像左上角的坐标。在FITS和Fortran标准中,这是1。在Numpy和C标准中,这是0。
- 返回:
- result :
array
数组 返回焦点坐标。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。
- result :
- 加薪:
MemoryError
内存分配失败。
ValueError
坐标转换参数无效。
- pixel_to_world(*pixel_arrays)#
将像素坐标转换为世界坐标(由高级对象表示)。
如果使用单个高级对象来表示世界坐标(例如,如果
len(wcs.world_axis_object_classes) == 1
),则按原样返回(不在元组/列表中),否则返回高级对象的元组。看到了吗pixel_to_world_values
用于像素索引和排序约定。
- pixel_to_world_values(*pixel_arrays)#
将像素坐标转换为世界坐标。
这种方法需要
pixel_n_dim
标量或数组作为输入,像素坐标应该从零开始。退换商品world_n_dim
标量或数组,单位由world_axis_units
. 注意,在每个维度的第一个像素的中心,像素坐标被假定为0。如果像素位于未定义WCS的区域中,则可以返回NaN。坐标应在(x, y)
订单,哪里有图像,x
是水平坐标和y
是垂直坐标。如果
world_n_dim
是1
,此方法返回单个标量或数组,否则返回标量或数组的元组。
- proj_plane_pixel_area()[源代码]#
对于一个 天空的 WCS(参见
astropy.wcs.WCS.celestial
), returns pixel area of the image pixel at theCRPIX
location once it is projected onto the "plane of intermediate world coordinates" as defined in Greisen & Calabretta 2002, A&A, 395, 1061 .备注
这个函数是有关的 only 关于变换“图像平面”->“投影平面”和 not “关于天球”—>“关于天体平面的投影”。因此,该函数忽略了由于大多数投影的非线性性质而产生的失真。
备注
此方法仅在WCS包含天轴时返回合理的答案,即
celestial
WCS对象。- 返回:
- area :
Quantity
数量 像素的面积(在投影平面中)
CRPIX
位置。
- area :
- 加薪:
笔记
根据应用,像素区域的平方根可用于表示面积等于一般非方形像素的面积的等效方形像素的单个像素比例。
- proj_plane_pixel_scales()[源代码]#
沿图像像素的每个轴计算像素比例
CRPIX
将其投影到中定义的“中间世界坐标平面”后的位置 Greisen & Calabretta 2002, A&A, 395, 1061 .备注
这种方法值得关注 only 关于变换“图像平面”->“投影平面”和 not “关于天球”—>“关于天体平面的投影”。因此,该函数忽略了由于大多数投影的非线性性质而产生的失真。
备注
此方法仅在WCS包含天轴时返回合理的答案,即
celestial
WCS对象。
- sip_foc2pix(*args)[源代码]#
使用将焦平面坐标转换为像素坐标 SIP 多项式失真约定。
适合WCS distortion paper 不应用表查找失真校正,即使初始化它的FITS文件中存在该信息
WCS
对象。- 参数:
- *args
位置参数有两种可接受的形式:
2个参数:一个 N X 2 坐标数组,以及 起源 .
多于2个参数:每个轴都有一个数组,后跟一个 起源 . 这些数组必须可以相互广播。
在这里, 起源 是图像左上角的坐标。在FITS和Fortran标准中,这是1。在Numpy和C标准中,这是0。
- 返回:
- result :
array
数组 返回像素坐标。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。
- result :
- 加薪:
MemoryError
内存分配失败。
ValueError
坐标转换参数无效。
- sip_pix2foc(*args)[源代码]#
使用将像素坐标转换为焦平面坐标 SIP 多项式失真约定。
输出以像素坐标表示,相对于
CRPIX
.适合WCS distortion paper 不应用表查找更正,即使在初始化它的FITS文件中存在该信息
WCS
对象。要纠正这个问题,请使用pix2foc
或p4_pix2foc
.- 参数:
- *args
位置参数有两种可接受的形式:
2个参数:一个 N X 2 坐标数组,以及 起源 .
多于2个参数:每个轴都有一个数组,后跟一个 起源 . 这些数组必须可以相互广播。
在这里, 起源 是图像左上角的坐标。在FITS和Fortran标准中,这是1。在Numpy和C标准中,这是0。
- 返回:
- result :
array
数组 返回焦点坐标。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。
- result :
- 加薪:
MemoryError
内存分配失败。
ValueError
坐标转换参数无效。
- sub(axes)[源代码]#
从中提取子图像的坐标描述
WCS
对象。子图像的世界坐标系必须是可分离的,即子图像中任何点的世界坐标必须仅依赖于提取的轴的像素坐标。实际上,这意味着
PCi_ja
原始图像的矩阵不得包含将任何子图像轴与任何非子图像轴关联的非零非对角项。sub
也可以向wcsprm对象添加轴。新轴将使用Wcsprm构造函数设置的默认值创建,该构造函数生成一个简单、未命名的线性轴,其世界坐标等于像素坐标。可以在调用之前更改这些默认值set
.- 参数:
- axes :
int
或a
序列。PYTHON:int或序列。 如果是int,则包括第一个 N 轴的原始顺序。
如果序列包含图像轴编号(1-相对)或特殊轴标识符(见下文)的组合。顺序重要;
axes[0]
是与子图像中的第一个轴相对应的输入图像的轴号,等等。使用0轴号可使用默认值创建新轴。如果
0
,[]
或None
,做一个深拷贝。
坐标轴类型可以使用字符串或特殊整数常量指定。可用类型包括:
'longitude'
/WCSSUB_LONGITUDE
:天文经度'latitude'
/WCSSUB_LATITUDE
:天体纬度'cubeface'
/WCSSUB_CUBEFACE
:四边形立方体CUBEFACE
轴'spectral'
/WCSSUB_SPECTRAL
:光谱轴'stokes'
/WCSSUB_STOKES
:斯托克斯轴'temporal'
/WCSSUB_TIME
:时间轴(需要WCSLIB
7.8版或更高版本)'celestial'
/WCSSUB_CELESTIAL
:组合的别名'longitude'
,'latitude'
和'cubeface'
.
- axes :
- 返回:
- 加薪:
MemoryError
内存分配失败。
InvalidSubimageSpecificationError
子图像规范无效(无光谱轴)。
NonseparableSubimageCoordinateSystemError
不可分离子像坐标系。
笔记
通过将整数常量与“二进制或”组合,可以按照在输入图像中出现的相同顺序提取特定类型的子图像轴的组合 (
|
)操作员。例如::wcs.sub([WCSSUB_LONGITUDE | WCSSUB_LATITUDE | WCSSUB_SPECTRAL])
将以与输入图像相同的顺序提取经度、纬度和光谱轴。如果每一个都存在,结果对象将有三个维度。
为了方便,
WCSSUB_CELESTIAL
定义为组合WCSSUB_LONGITUDE | WCSSUB_LATITUDE | WCSSUB_CUBEFACE
.对于所有类型,也可以指定为“求反”的类型,例如:
wcs.sub([ WCSSUB_LONGITUDE, WCSSUB_LATITUDE, WCSSUB_CUBEFACE, -(WCSSUB_SPECTRAL | WCSSUB_STOKES)])
最后一个指定除光谱或斯托克斯之外的所有轴类型。按照指定的顺序执行提取
axes
,即首先提取经轴(如果存在)(通过axes[0]
)而不是随后(通过axes[3]
). 对于本例中的纬度轴和立方轴也是如此。返回对象中的维度数可能小于或大于的长度
axes
. 但是,它永远不会超过输入图像中的轴数。
- to_fits(relax=False, key=None)[源代码]#
生成一个
HDUList
对象中存储的所有信息。这在逻辑上应该与输入FITS文件相同,但它将以多种方式标准化。见
to_header
对于所生成的输出的一些警告。
- to_header(relax=None, key=None)[源代码]#
生成
astropy.io.fits.Header
对象中存储的基本WCS和SIP信息。这在逻辑上应该与输入FITS文件相同,但是它将以多种方式规范化。警告
此函数不写出FITS WCS distortion paper 信息,因为这需要多个FITS头数据单元。若要获取此对象中所有内容的完整表示,请使用
to_fits
.- 参数:
- 返回:
笔记
几乎可以肯定的是,输出标题在许多方面与输入不同:
输出标头仅包含与WCS相关的关键字。特别是,它不包含语法上需要的关键字,例如
SIMPLE
,NAXIS
,BITPIX
或END
.不推荐(例如。
CROTAn
)或者非标准用法将转换为标准(这部分取决于fix
已应用)。数量将被转换成内部使用的单位,基本上是SI加上度数。
浮点数可以采用不同的十进制精度。
元素
PCi_j
当且仅当它们与单位矩阵不同时,才会写出矩阵。因此,如果矩阵是统一的,那么就不会写出任何元素。其他关键字,如
WCSAXES
,CUNITia
,LONPOLEa
和LATPOLEa
可能会出现。但是,原始的keycomments将丢失
to_header
努力写有意义的评论。关键字顺序可以更改。
- wcs_pix2world(*args, **kwargs)[源代码]#
只需执行基本操作,即可将像素坐标转换为世界坐标 wcslib 转变。
不 SIP 或 distortion paper 应用查表修正。要执行失真校正,请参见
all_pix2world
,sip_pix2foc
,p4_pix2foc
或pix2foc
.- 参数:
- 返回:
- result :
array
数组 返回世界坐标,以度为单位。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。
- result :
- 加薪:
MemoryError
内存分配失败。
SingularMatrixError
线性变换矩阵是奇异的。
InconsistentAxisTypesError
坐标轴类型不一致或无法识别。
ValueError
参数值无效。
ValueError
坐标转换参数无效。
ValueError
x和y坐标阵列的大小不同。
InvalidTransformError
坐标转换参数无效。
InvalidTransformError
病态坐标变换参数。
笔记
结果的轴顺序由
CTYPEia
FITS标题中的关键字,因此它可能不总是形式( ra , dec )这个lat
,lng
,lattyp
和lngtyp
成员可用于确定轴的顺序。
- wcs_world2pix(*args, **kwargs)[源代码]#
将世界坐标转换为像素坐标,仅使用基本 wcslib WCS转换。不 SIP 或 distortion paper 应用表查找转换。
- 参数:
- 返回:
- result :
array
数组 返回像素坐标。如果输入是单个数组和原点,则返回单个数组,否则返回数组元组。
- result :
- 加薪:
MemoryError
内存分配失败。
SingularMatrixError
线性变换矩阵是奇异的。
InconsistentAxisTypesError
坐标轴类型不一致或无法识别。
ValueError
参数值无效。
ValueError
坐标转换参数无效。
ValueError
x和y坐标阵列的大小不同。
InvalidTransformError
坐标转换参数无效。
InvalidTransformError
病态坐标变换参数。
笔记
输入世界数组的轴顺序由
CTYPEia
FITS标题中的关键字,因此它可能不总是形式( ra , dec )这个lat
,lng
,lattyp
和lngtyp
成员可用于确定轴的顺序。
- world_to_array_index(*world_objects)#
将世界坐标(由天体对象表示)转换为数组索引。
如果
pixel_n_dim
是1
,此方法返回单个标量或数组,否则返回标量或数组的元组。看到了吗world_to_array_index_values
用于像素索引和排序约定。索引应返回为四舍五入整数。
- world_to_array_index_values(*world_arrays)#
将世界坐标转换为数组索引。
这和
world_to_pixel_values
只是索引应该返回(i, j)
订单,哪里有图像i
是一排而且j
是列(即与pixel_to_world_values
). 索引应返回为四舍五入整数。如果
pixel_n_dim
是1
,此方法返回单个标量或数组,否则返回标量或数组的元组。
- world_to_pixel(*world_objects)#
将世界坐标(由Astropy对象表示)转换为像素坐标。
如果
pixel_n_dim
是1
,此方法返回单个标量或数组,否则返回标量或数组的元组。看到了吗world_to_pixel_values
用于像素索引和排序约定。
- world_to_pixel_values(*world_arrays)#
将世界坐标转换为像素坐标。
这种方法需要
world_n_dim
标量或数组作为输入,单位由world_axis_units
. 退换商品pixel_n_dim
标量或数组。注意,在每个维度的第一个像素的中心,像素坐标被假定为0。如果世界坐标没有匹配的像素坐标,则可以返回NaN。坐标应该返回到(x, y)
订单,哪里有图像,x
是水平坐标和y
是垂直坐标。如果
pixel_n_dim
是1
,此方法返回单个标量或数组,否则返回标量或数组的元组。