BaseCoordinateFrame#
- class astropy.coordinates.BaseCoordinateFrame(*args, copy=True, representation_type=None, differential_type=None, **kwargs)[源代码]#
-
坐标系的基类。
这个类被设计成子类来创建特定系统的实例。子类可以实现以下属性:
default_representation
一个子类
BaseRepresentation
它将被视为该帧的默认表示。这是在创建框架时默认采用的表示方式。
default_differential
一个子类
BaseDifferential
它将被视为此帧的默认差分类。这是在创建帧时默认假定的差分类。
Attribute
类属性帧属性,例如
FK4.equinox
或FK4.obstime
使用描述符类定义。有关详细信息,请参阅叙述文档或内置类代码。
frame_specific_representation_info
将表示的名称或类映射到
RepresentationMapping
对象,该对象指示该表示的组件应在此框架上使用哪些名称和默认单位。
除非通过
frame_specific_representation_info
,velocity名称默认为:pm_{lon}_cos{lat}
,pm_{lat}
为SphericalCosLatDifferential
速度分量pm_{lon}
,pm_{lat}
为SphericalDifferential
速度分量radial_velocity
对于任何d_distance
成分v_{x,y,z}
为CartesianDifferential
速度分量
在哪里?
{{lon}}
和{{lat}}
是角度组件的帧名称。- 参数:
- data :
BaseRepresentation
子类实例BaseRepresentation子类实例 表示对象或
None
没有数据(或使用坐标分量参数,请参见下文)。- *args, ** 夸克
使用依赖于子类的名称协调组件。
- representation_type :
BaseRepresentation
subclass,str
,可选BasePresation子类,python:str,可选 表示类或表示类的字符串名称。这将设置预期的输入表示类,从而更改传入数据的预期关键字参数。例如,传递
representation_type='cartesian'
将使类期望具有笛卡尔名称的位置数据,即x, y, z
在大多数情况下,除非通过frame_specific_representation_info
。要查看此框架的名称,请查看<this frame>().representation_info
。- differential_type :
BaseDifferential
subclass,str
,dict
,可选BaseDifferential子类,PYTHON:字符串,PYTHON:DICT,可选 差分类别或差分类别词典(当前仅支持带有关键字‘s’的速度差异)。这将设置预期的输入差异类,从而更改传入数据的预期关键字参数。例如,传递
differential_type='cartesian'
将使类期待带有参数名称的速度数据v_x, v_y, v_z
除非通过以下方式重写frame_specific_representation_info
。要查看此框架的名称,请查看<this frame>().representation_info
。- copy : bool ,可选可选的布尔
如果
True
(默认),复制输入坐标阵列。只能作为关键字参数传入。
- data :
属性摘要
该帧的高速缓存,一个字典。
此对象中坐标的笛卡尔表示的简写。
此对象中坐标的圆柱表示的缩写。
此对象的坐标数据。
用于此帧数据的差分。
如果此帧具有
data
,否则为False。用于存储诸如名称、描述、格式等元信息的容器。
与这些坐标关联的面具。
基础数据是否被屏蔽。
二维固有运动的简写
Quantity
具有角速度单位的对象。径向或视线速度的简写
Quantity
对象。包含此帧的属性名应用于特定表示的信息的字典。
用于此帧数据的表示类。
基础数据的形状。
根据形状计算的对象大小。
此对象中坐标的球面表示的简写。
位置数据的球面表示的速记形式
SphericalCosLatDifferential
此对象中的速度数据。将笛卡尔空间运动作为
CartesianDifferential
对象。方法总结
返回一个带有每个帧属性的默认值的DICT。
get_mask
(*attrs)获取与这些坐标关联的面具。
get_representation_cls
([which])用于此帧的部分数据的类。
get_representation_component_names
([which])get_representation_component_units
([which])insert
(obj, values[, axis])使用插入给定索引之前的坐标值进行副本。
is_equivalent_frame
(其他)检查此对象是否与
other
对象。is_frame_attr_default
\(属性)确定帧属性是否具有其值,因为它是默认值,还是因为此帧是用显式请求的值创建的。
is_transformable_to
(new_frame)确定是否可以将此坐标系转换为另一个给定坐标系。
position_angle
(其他)计算天空位置与另一个坐标的角度。
realize_frame
(data, **kwargs)使用来自另一个帧的新数据生成新帧(可能有数据,也可能没有数据)。
replicate
([copy])返回帧的副本,可选地使用新的帧属性。
replicate_without_data
([copy])返回一个没有数据的副本,可以选择使用新的帧属性。
represent_as
(base[, s, in_frame_units])生成并返回此帧的新表示
data
作为表示对象。separation
(other, *[, origin_mismatch])计算此坐标和另一个坐标之间的天空间隔。
separation_3d
(其他)这个坐标和另一个坐标之间的距离。
set_representation_cls
([base, s])设置此帧数据的表示和/或差分类。
to_table
()转换此
BaseCoordinateFrame
到QTable
.transform_to
(new_frame)将此对象的坐标数据转换为新帧。
属性文档
- cache#
该帧的高速缓存,一个字典。
它存储任何应该根据坐标数据计算的内容( not 来自框架属性)。这可以在函数中使用来存储任何计算成本可能很高但可能被其他函数重复使用的内容。例如::
if 'user_data' in myframe.cache: data = myframe.cache['user_data'] else: myframe.cache['user_data'] = data = expensive_func(myframe.lat)
如果对帧数据进行了就地修改,则应清除缓存:
myframe.cache.clear()
- cartesian#
此对象中坐标的笛卡尔表示的简写。
- cylindrical#
此对象中坐标的圆柱表示的缩写。
- data#
此对象的坐标数据。如果此帧没有数据,则
ValueError
将被提高。使用has_data
检查此帧对象上是否存在数据。
- default_differential = None#
- default_representation = None#
- differential_type#
用于此帧数据的差分。
这将是来自
BaseDifferential
。有关同时设置表示法和差异的信息,请参阅set_representation_cls
方法。
- frame_attributes = {}#
- frame_specific_representation_info = {<class 'astropy.coordinates.representation.cartesian.CartesianDifferential'>: [('d_x', 'v_x', Unit("km / s")), ('d_y', 'v_y', Unit("km / s")), ('d_z', 'v_z', Unit("km / s"))], <class 'astropy.coordinates.representation.spherical.RadialDifferential'>: [('d_distance', 'radial_velocity', Unit("km / s"))], <class 'astropy.coordinates.representation.spherical.SphericalCosLatDifferential'>: [('d_lon_coslat', 'pm_lon_coslat', Unit("mas / yr")), ('d_lat', 'pm_lat', Unit("mas / yr")), ('d_distance', 'radial_velocity', Unit("km / s"))], <class 'astropy.coordinates.representation.spherical.SphericalDifferential'>: [('d_lon', 'pm_lon', Unit("mas / yr")), ('d_lat', 'pm_lat', Unit("mas / yr")), ('d_distance', 'radial_velocity', Unit("km / s"))], <class 'astropy.coordinates.representation.spherical.SphericalRepresentation'>: [('lon', 'lon', 'recommended'), ('lat', 'lat', 'recommended')], <class 'astropy.coordinates.representation.spherical.UnitSphericalCosLatDifferential'>: [('d_lon_coslat', 'pm_lon_coslat', Unit("mas / yr")), ('d_lat', 'pm_lat', Unit("mas / yr")), ('d_distance', 'radial_velocity', Unit("km / s"))], <class 'astropy.coordinates.representation.spherical.UnitSphericalDifferential'>: [('d_lon', 'pm_lon', Unit("mas / yr")), ('d_lat', 'pm_lat', Unit("mas / yr")), ('d_distance', 'radial_velocity', Unit("km / s"))], <class 'astropy.coordinates.representation.spherical.UnitSphericalRepresentation'>: [('lon', 'lon', 'recommended'), ('lat', 'lat', 'recommended')]}#
- info#
用于存储诸如名称、描述、格式等元信息的容器。当对象用作表中的mixin列时,这是必需的,但也可以作为存储元信息的通用方法。
- mask#
与这些坐标关联的面具。
组合基础表示的所有组件的面具,包括可能的差异。
- masked#
基础数据是否被屏蔽。
- 加薪:
ValueError
如果帧没有关联的数据。
- proper_motion#
二维固有运动的简写
Quantity
具有角速度单位的对象。在返回的Quantity
,axis=0
是经度/纬度维度,因此.proper_motion[0]
是纵向的固有运动.proper_motion[1]
是纬向的。纵向固有运动已经包括cos(纬度)项。
- representation_component_names#
- representation_component_units#
- representation_info#
包含此帧的属性名应用于特定表示的信息的字典。
- representation_type#
用于此帧数据的表示类。
这将是来自
BaseRepresentation
。也可以 set 使用表示形式的字符串名称。如果希望设置显式差异类(而不是被推断),请使用set_representation_cls
方法。
- shape#
- size#
- spherical#
此对象中坐标的球面表示的简写。
- sphericalcoslat#
位置数据的球面表示的速记形式
SphericalCosLatDifferential
此对象中的速度数据。
- velocity#
将笛卡尔空间运动作为
CartesianDifferential
对象。这相当于调用
self.cartesian.differentials['s']
。
方法文件
- get_mask(*attrs)[源代码]#
获取与这些坐标关联的面具。
- 参数:
- *attrs :
str
Python :字符串 用于组合面具的属性。项目可以点缀,例如
"data.lon", "data.lat"
.默认情况下,获取所有组件(包括差异)的组合掩蔽,忽略可能的属性掩蔽。
- *attrs :
- 返回:
- 加薪:
ValueError
如果坐标系没有关联数据。
- get_representation_cls(which='base')[源代码]#
用于此帧的部分数据的类。
- 参数:
- 返回:
- 代表 :
BaseRepresentation
或BaseDifferential
.基表示或基差分。
- 代表 :
- insert(obj, values, axis=0)[源代码]#
使用插入给定索引之前的坐标值进行副本。
要插入的值必须符合对象就地设置的规则。
API签名与
np.insert
API,但更为有限。插入索引规范obj
必须是单个整数,并且axis
必须是0
用于索引前的简单插入。- 参数:
- obj :
int
Python :整型 前一个整数索引
values
插入。- values : array_likeNumpy:ARRAY_LIKE
要插入的值。如果
values
与数量不同,values
转换为匹配类型。- axis :
int
,可选PYTHON:int,可选 插入轴
values
. 默认值为0,这是唯一允许的值,将插入一行。
- obj :
- 返回:
- coord :
SkyCoord
,BaseCoordinateFrame
SkyCoord、Base Frame 插入新值的实例副本。
- coord :
- is_equivalent_frame(other)[源代码]#
检查此对象是否与
other
对象。要成为同一帧,两个对象必须是相同的帧类,并且具有相同的帧属性。请注意,确实如此 not 不管对象有什么数据(如果有的话)。
- 参数:
- 其他 :
BaseCoordinateFrame
BaseCoordinateFrame
另一个要检查的帧
- 其他 :
- 返回:
- isequiv : bool布尔
如果帧相同,则为True;否则为False。
- 加薪:
TypeError
如果
other
不是一个BaseCoordinateFrame
或者说子类。
- is_transformable_to(new_frame)[源代码]#
确定是否可以将此坐标系转换为另一个给定坐标系。
- 参数:
- new_frame :
BaseCoordinateFrame
子类或实例BaselaborateFrame子类或实例 要转换为的建议框架。
- new_frame :
- 返回:
笔记
返回值'same'意味着转换可以工作,但它只会返回此对象的一个副本。预期用途是:
if coord.is_transformable_to(some_unknown_frame): coord2 = coord.transform_to(some_unknown_frame)
即使
some_unknown_frame
原来是同一帧类coord
. 这适用于无论帧属性如何(例如ICRS),帧都是相同的,但请注意 可以 还表明有人忘记定义同一帧类但属性不同的两个对象之间的转换。
- position_angle(other: BaseCoordinateFrame | SkyCoord) Angle [源代码]#
计算天空位置与另一个坐标的角度。
- 参数:
- other :
BaseCoordinateFrame
或SkyCoord
BaseCoordinateFrame或SkyCoord 计算位置角度的另一个坐标。它被视为位置角矢量的“头部”。
- other :
- 返回:
实例
>>> from astropy import units as u >>> from astropy.coordinates import ICRS, SkyCoord >>> c1 = SkyCoord(0*u.deg, 0*u.deg) >>> c2 = ICRS(1*u.deg, 0*u.deg) >>> c1.position_angle(c2).to(u.deg) <Angle 90. deg> >>> c2.position_angle(c1).to(u.deg) <Angle 270. deg> >>> c3 = SkyCoord(1*u.deg, 1*u.deg) >>> c1.position_angle(c3).to(u.deg) <Angle 44.995636455344844 deg>
- realize_frame(data, **kwargs)[源代码]#
使用来自另一个帧的新数据生成新帧(可能有数据,也可能没有数据)。粗略地说,与
replicate_without_data
.- 参数:
- data :
BaseRepresentation
BaseRepresentation
用作新帧的数据的表示。
- **kwargs
任何其他关键字都被视为要在新的Frame对象上设置的Frame属性。特别是,
representation_type
可以指定。
- data :
- 返回:
- frameobj :
BaseCoordinateFrame
子类实例BaseCoordinateFrame子类实例 中的新对象 this 框架,具有与此框架相同的框架属性,但具有
data
作为坐标数据。
- frameobj :
- replicate(copy=False, **kwargs)[源代码]#
返回帧的副本,可选地使用新的帧属性。
副本是一个新的frame对象,它具有与此frame对象相同的数据,并且如果将frame属性作为额外的关键字参数提供给此方法,则会覆盖它们。如果
copy
设置为True
然后将生成内部数组的副本。否则,复制副本将尽可能使用对原始阵列的引用来节省内存。内部数组通常不可由用户更改,因此在大多数情况下不必设置copy
到True
.- 参数:
- copy : bool ,可选可选的布尔
如果为True,则生成的对象是数据的副本。如果为False,则尽可能使用引用。此规则也适用于帧属性。
- **kwargs
任何其他关键字都被视为要在新的Frame对象上设置的Frame属性。
- 返回:
- frameobj :
BaseCoordinateFrame
子类实例BaseCoordinateFrame子类实例 此对象的副本,但可能具有新的帧属性。
- frameobj :
- replicate_without_data(copy=False, **kwargs)[源代码]#
返回一个没有数据的副本,可以选择使用新的帧属性。
副本是一个新的frame对象,没有数据,但具有与此对象相同的frame属性,除非被此方法的额外关键字参数覆盖。这个
copy
关键字确定帧属性是否被真正复制而不是被引用(这为帧属性较大的情况节省内存)。这种方法本质上是相反的
realize_frame
.- 参数:
- copy : bool ,可选可选的布尔
如果为True,则生成的对象具有帧属性的副本。如果为False,则尽可能使用引用。
- **kwargs
任何其他关键字都被视为要在新的Frame对象上设置的Frame属性。
- 返回:
- frameobj :
BaseCoordinateFrame
子类实例BaseCoordinateFrame子类实例 此对象的副本,但没有数据,可能具有新的帧属性。
- frameobj :
- represent_as(base, s='base', in_frame_units=False)[源代码]#
生成并返回此帧的新表示
data
作为表示对象。注意:要对帧或SkyCoord对象的表示进行就地更改,请设置
representation
属性,或使用set_representation_cls
方法来设置差分。- 参数:
- base : subclass of
BaseRepresentation
或str
亚类 要生成的表示类型。一定是 类 (不是实例)或表示类的字符串名称。
- s : subclass of
BaseDifferential
,str
,可选亚类 表示任何速度的类。一定是 类 (不是实例)或差异类的字符串名称。如果等于'base'(默认值),则从基类推断。如果
None
,所有速度信息都被丢弃。- in_frame_units : bool ,仅关键字布尔值,仅关键字
强制表示单位与特定于此帧的指定单位相匹配
- base : subclass of
- 返回:
- 加薪:
AttributeError
如果这个物体没有
data
实例
>>> from astropy import units as u >>> from astropy.coordinates import SkyCoord, CartesianRepresentation >>> coord = SkyCoord(0*u.deg, 0*u.deg) >>> coord.represent_as(CartesianRepresentation) <CartesianRepresentation (x, y, z) [dimensionless] (1., 0., 0.)>
>>> coord.representation_type = CartesianRepresentation >>> coord <SkyCoord (ICRS): (x, y, z) [dimensionless] (1., 0., 0.)>
- separation(other: BaseCoordinateFrame | SkyCoord, *, origin_mismatch: Literal['ignore', 'warn', 'error'] = 'warn') Angle [源代码]#
计算此坐标和另一个坐标之间的天空间隔。
有关如何使用此(及相关)功能的详细信息,请参阅中的示例 分隔、偏移、目录匹配和相关功能 .
- 参数:
- other :
BaseCoordinateFrame
或SkyCoord
BaseCoordinateFrame或SkyCoord 得到分离的坐标。
- origin_mismatch{“warn”,“ignore”,“error”},仅关键字
如果
other
坐标位于不同的框架中,那么它们必须进行转换,如果转换不是纯旋转,那么self.separation(other)
可以不同于other.separation(self)
.与origin_mismatch="warn"
(默认)始终执行变换,但如果不是纯旋转,则会发出警告。如果origin_mismatch="ignore"
那么所需的转换总是在没有警告的情况下执行。如果origin_mismatch="error"
那么仅允许纯旋转的变换。
- other :
- 返回:
- sep :
Angle
角度 在天空中这个和
other
协调。
- sep :
笔记
分离是用Vincenty公式计算的,该公式在所有位置都是稳定的,包括极点和对极 [1].
- separation_3d(other)[源代码]#
这个坐标和另一个坐标之间的距离。
有关如何使用此(及相关)功能的详细信息,请参阅中的示例 分隔、偏移、目录匹配和相关功能 .
- 参数:
- other :
BaseCoordinateFrame
或SkyCoord
BaseCoordinateFrame或SkyCoord 要获取距离的坐标系。
- other :
- 返回:
- sep :
Distance
距离 这两个坐标之间的实际空间距离。
- sep :
- 加薪:
ValueError
如果这个或另一个坐标没有距离。
- set_representation_cls(base=None, s='base')[源代码]#
设置此帧数据的表示和/或差分类。
- 参数:
- base :
str
,BaseRepresentation
子类,可选Python:字符串,BasePresation子类,可选 用于表示坐标数据的名称或子类。
- s :
BaseDifferential
子类,可选基差分子类,可选 用来表示任何速度的微分子类,如固有运动和径向速度。如果等于'base',这是默认值,它将从表示中推断出来。如果
None
,则表示将删除任何差分。
- base :
- to_table() QTable [源代码]#
转换此
BaseCoordinateFrame
到QTable
.与
BaseCoordinateFrame
将转换为QTable
.所有其他属性都将被记录为元数据。- 返回:
QTable
A
QTable
包含这个的数据BaseCoordinateFrame
.
实例
>>> from astropy.coordinates import ICRS >>> coord = ICRS(ra=[40, 70]*u.deg, dec=[0, -20]*u.deg) >>> t = coord.to_table() >>> t <QTable length=2> ra dec deg deg float64 float64 ------- ------- 40.0 0.0 70.0 -20.0 >>> t.meta {'representation_type': 'spherical'}
- transform_to(new_frame)[源代码]#
将此对象的坐标数据转换为新帧。
- 参数:
- new_frame : astropy:coordinate-like占星体:类似于坐标
要将此坐标框架转换为的框架。
- 返回:
- transframe : astropy:coordinate-like占星体:类似于坐标
属性中表示的坐标数据的新对象
newframe
系统。
- 加薪:
ValueError
如果没有可能的转换路径。