天文坐标系 (astropy.coordinates

介绍

这个 coordinates 该包提供了表示各种天体/空间坐标及其速度分量的类,以及以统一方式在公共坐标系之间转换的工具。

入门

开始使用的最佳方法 coordinates 是使用 SkyCoord 班级。 SkyCoord 对象通过在指定单位和坐标系的位置(和可选速度)中传递来实例化。天空位置通常作为 Quantity 对象,并使用字符串名称指定框架。

例子

创建一个 SkyCoord 物体代表一个ICRS(赤经 [RA] ,赤纬 [Dec] )天空位置:

>>> from astropy import units as u
>>> from astropy.coordinates import SkyCoord
>>> c = SkyCoord(ra=10.625*u.degree, dec=41.2*u.degree, frame='icrs')

的初始值设定项 SkyCoord 非常灵活,并且支持以多种方便格式提供的输入。以下初始化坐标的方法都与上述方法等效:

>>> c = SkyCoord(10.625, 41.2, frame='icrs', unit='deg')
>>> c = SkyCoord('00h42m30s', '+41d12m00s', frame='icrs')
>>> c = SkyCoord('00h42.5m', '+41d12m')
>>> c = SkyCoord('00 42 30 +41 12 00', unit=(u.hourangle, u.deg))
>>> c = SkyCoord('00:42.5 +41:12', unit=(u.hourangle, u.deg))
>>> c  
<SkyCoord (ICRS): (ra, dec) in deg
    (10.625, 41.2)>

上面的示例说明了创建坐标对象时要遵循的一些规则:

  • 坐标值可以作为未命名的位置参数或通过关键字参数提供,例如 radeclb (取决于框架)。

  • 坐标系 frame 关键字是可选的,因为它默认为 ICRS .

  • 必须为所有组件指定角度单位,或者传入 Quantity 对象(例如, 10.5*u.degree ),通过将它们包含在值中(例如。, '+41d12m00s' ),或通过 unit 关键字。

SkyCoord 以及所有其他 coordinates 对象还支持数组坐标。它们的工作方式与单值坐标相同,但它们在单个对象中存储多个坐标。当您要将相同的操作应用于许多不同的坐标(例如,从目录中),这是比列表更好的选择 SkyCoord 对象,因为它将 much 比将操作应用于每个 SkyCoord 在一个 for 循环。就像底层 ndarray 包含数据的实例, SkyCoord 对象可以被切片、重塑等,以及,在 numpy 1.17及更高版本,可与以下函数一起使用 numpy.moveaxis 等等,影响形状:

.. doctest-requires:: numpy>=1.17
>>> import numpy as np
>>> c = SkyCoord(ra=[10, 11, 12, 13]*u.degree, dec=[41, -5, 42, 0]*u.degree)
>>> c
<SkyCoord (ICRS): (ra, dec) in deg
    [(10., 41.), (11., -5.), (12., 42.), (13.,  0.)]>
>>> c[1]
<SkyCoord (ICRS): (ra, dec) in deg
    (11., -5.)>
>>> c.reshape(2, 2)
<SkyCoord (ICRS): (ra, dec) in deg
    [[(10., 41.), (11., -5.)],
     [(12., 42.), (13.,  0.)]]>
>>> np.roll(c, 1)
<SkyCoord (ICRS): (ra, dec) in deg
    [(13.,  0.), (10., 41.), (11., -5.), (12., 42.)]>

协调访问

一旦你有了一个坐标对象,你就可以访问这个坐标的组件(例如,RA,Dec)来获得完整坐标的字符串表示。

组件值是使用(通常是小写)命名属性访问的,这些属性依赖于坐标系(例如,ICRS、Galactic等)。默认情况下,坐标组件名称为 radec ::

>>> c = SkyCoord(ra=10.68458*u.degree, dec=41.26917*u.degree)
>>> c.ra  
<Longitude 10.68458 deg>
>>> c.ra.hour  
0.7123053333333335
>>> c.ra.hms  
hms_tuple(h=0.0, m=42.0, s=44.299200000000525)
>>> c.dec  
<Latitude 41.26917 deg>
>>> c.dec.degree  
41.26917
>>> c.dec.radian  
0.7202828960652683

可以使用 to_string() 方法:

>>> c = SkyCoord(ra=10.68458*u.degree, dec=41.26917*u.degree)
>>> c.to_string('decimal')
'10.6846 41.2692'
>>> c.to_string('dms')
'10d41m04.488s 41d16m09.012s'
>>> c.to_string('hmsdms')
'00h42m44.2992s +41d16m09.012s'

有关更多信息,请参见 使用角度 .

变换

转换到新坐标系的一种方便方法是访问适当命名的属性。

例子

以获得 Galactic 帧使用:

>>> c_icrs = SkyCoord(ra=10.68458*u.degree, dec=41.26917*u.degree, frame='icrs')
>>> c_icrs.galactic  
<SkyCoord (Galactic): (l, b) in deg
    (121.17424181, -21.57288557)>

为了获得更多的控制,可以使用 transform_to 方法,它接受框架名称、框架类或框架实例:

>>> c_fk5 = c_icrs.transform_to('fk5')  # c_icrs.fk5 does the same thing
>>> c_fk5  
<SkyCoord (FK5: equinox=J2000.000): (ra, dec) in deg
    (10.68459154, 41.26917146)>

>>> from astropy.coordinates import FK5
>>> c_fk5.transform_to(FK5(equinox='J1975'))  # precess to a different equinox  
<SkyCoord (FK5: equinox=J1975.000): (ra, dec) in deg
    (10.34209135, 41.13232112)>

这种形式的 transform_to 也使得从天体坐标到 AltAz 坐标,允许使用 SkyCoord 作为计划观察的工具。有关更完整的示例,请参见 测定和标绘天体的高度/方位角 .

一些坐标系,例如 AltAz 在转换到/从其他帧转换时需要地球自转信息(UT1-UTC偏移量和/或极轴运动)。这些地球自转值在需要时自动从国际地球自转和参考系统(IERS)服务下载。看到了吗 IERS数据访问 (astropy.utils.iers ) 有关此过程的详细信息。

表现

到目前为止,我们在所有的例子中都使用了球面坐标表示,这是内置框架的默认值。通常,使用不同的表示(如笛卡尔坐标或圆柱坐标)来初始化坐标或使用坐标是很方便的。这可以通过设置 representation_type 对任何一个 SkyCoord 对象或低级帧坐标对象。

例子

要使用不同的表示法(如笛卡尔坐标或圆柱坐标)初始化坐标或使用坐标,请执行以下操作:

>>> c = SkyCoord(x=1, y=2, z=3, unit='kpc', representation_type='cartesian')
>>> c  
<SkyCoord (ICRS): (x, y, z) in kpc
    (1., 2., 3.)>
>>> c.x, c.y, c.z  
(<Quantity 1. kpc>, <Quantity 2. kpc>, <Quantity 3. kpc>)

>>> c.representation_type = 'cylindrical'
>>> c  
<SkyCoord (ICRS): (rho, phi, z) in (kpc, deg, kpc)
    (2.23606798, 63.43494882, 3.)>

有关所有详细信息,请参见 陈述 .

距离

SkyCoord 各个帧类也支持指定距帧原点的距离。原点取决于特定的坐标系;例如,可以以地球为中心,以太阳系重心为中心,等等。

实例

两个角度和一个距离指定三维空间中的唯一点,这也允许将坐标转换为笛卡尔表示:

>>> c = SkyCoord(ra=10.68458*u.degree, dec=41.26917*u.degree, distance=770*u.kpc)
>>> c.cartesian.x  
<Quantity 568.71286542 kpc>
>>> c.cartesian.y  
<Quantity 107.3008974 kpc>
>>> c.cartesian.z  
<Quantity 507.88994292 kpc>

指定距离后, SkyCoord 方便的方法更强大,因为它们可以利用三维信息。例如,要计算空间中两点之间的物理三维间隔:

>>> c1 = SkyCoord(ra=10*u.degree, dec=9*u.degree, distance=10*u.pc, frame='icrs')
>>> c2 = SkyCoord(ra=11*u.degree, dec=10*u.degree, distance=11.5*u.pc, frame='icrs')
>>> c1.separation_3d(c2)  
<Distance 1.52286024 pc>

方便方法

SkyCoord 定义了许多方便的方法,例如,在天空(即角度)和两个坐标之间的三维分离上进行计算。

实例

要计算两个坐标之间的天空和三维距离:

>>> c1 = SkyCoord(ra=10*u.degree, dec=9*u.degree, frame='icrs')
>>> c2 = SkyCoord(ra=11*u.degree, dec=10*u.degree, frame='fk5')
>>> c1.separation(c2)  # Differing frames handled correctly  
<Angle 1.40453359 deg>

或交叉匹配目录坐标(详见 匹配目录 ):

>>> target_c = SkyCoord(ra=10*u.degree, dec=9*u.degree, frame='icrs')
>>> # read in coordinates from a catalog...
>>> catalog_c = ... 
>>> idx, sep, _ = target_c.match_to_catalog_sky(catalog_c) 

这个 astropy.coordinates sub-package also provides a quick way to get coordinates for named objects, assuming you have an active internet connection. The from_name method of SkyCoord uses Sesame 要检索特定坐标的命名对象。

要检索特定命名对象的坐标:

>>> SkyCoord.from_name("PSR J1012+5307")  
<SkyCoord (ICRS): (ra, dec) in deg
    (153.1393271, 53.117343)>

在某些情况下,坐标嵌入到对象的目录名中。对于这样的对象名, from_name 如果给定 parse=True 选项。对于慢速连接,这可能比针对相同对象名的sesame查询快得多。但是,值得注意的是,以这种方式提取的坐标可能与数据库坐标相差几分秒,因此只有在坐标不需要亚弧秒精度的情况下才使用此选项:

>>> SkyCoord.from_name("CRTS SSS100805 J194428-420209", parse=True)  
<SkyCoord (ICRS): (ra, dec) in deg
    (296.11666667, -42.03583333)>

对于地球上的地点(主要是观测站), astropy.coordinates 提供了一种快速获取 EarthLocation - of_site 方法:

>>> from astropy.coordinates import EarthLocation
>>> apo = EarthLocation.of_site('Apache Point Observatory')  
>>> apo  
<EarthLocation (-1463969.30185172, -5166673.34223433, 3434985.71204565) m>

要查看可用站点名称的列表,请使用 astropy.coordinates.EarthLocation.get_site_names() .

对于任意地球地址(例如,不是观测站),请使用 of_address 类方法。传递给这个函数的任何地址都使用Google地图来检索经纬度,还可以(可选)查询Google地图以获取位置的高度。与Google maps一样,它使用完全指定的地址、位置名称、城市名称等:

>>> EarthLocation.of_address('1002 Holy Grail Court, St. Louis, MO')
<EarthLocation (-26726.98216371, -4997009.8604809, 3950271.16507911) m>
>>> EarthLocation.of_address('1002 Holy Grail Court, St. Louis, MO',
...                          get_height=True)
<EarthLocation (-26727.6272786, -4997130.47437768, 3950367.15622108) m>
>>> EarthLocation.of_address('Danbury, CT')
<EarthLocation ( 1364606.64511651, -4593292.9428273,  4195415.93695139) m>

注解

from_name, of_site, and of_address are for convenience, and hence are by design relatively low precision. If you need more precise coordinates for an object you should find the appropriate reference and input the coordinates manually, or use more specialized functionality like that in the astroqueryastroplan 附属软件包。

还要注意,这些方法从因特网上检索数据来确定天体或地球坐标。在线数据可能会更新,因此如果您需要保证脚本在长期内是可复制的,请参阅 访问远程资源的方法的使用提示/建议 部分。

这个功能可以组合起来完成更复杂的任务,比如计算径向速度观测值的重心修正(也是一个受支持的高层 SkyCoord 方法-参见 径向速度修正 ):

>>> from astropy.time import Time
>>> obstime = Time('2017-2-14')
>>> target = SkyCoord.from_name('M31')  
>>> keck = EarthLocation.of_site('Keck')  
>>> target.radial_velocity_correction(obstime=obstime, location=keck).to('km/s')  
<Quantity -22.359784554780255 km / s>

速度(固有运动和径向速度)

除了位置坐标, coordinates 支持存储和转换速度。这些都可以通过较低级别获得 coordinate frame classes ,和(v3.0中的新功能)通过 SkyCoord 物体::

>>> sc = SkyCoord(1*u.deg, 2*u.deg, radial_velocity=20*u.km/u.s)
>>> sc  
<SkyCoord (ICRS): (ra, dec) in deg
    (1., 2.)
 (radial_velocity) in km / s
    (20.,)>

有关速度支持(和限制)的更多详细信息,请参见 在天文坐标系中处理速度 页。

概述 astropy.coordinates 概念

注解

这个 coordinates package from v0.4 onward builds from previous versions of the package, and more detailed information and justification of the design is available in APE (Astropy Proposal for Enhancement) 5 .

这里我们提供了包和相关框架的概述。使用此背景信息不是必需的 coordinates ,特别是如果您使用 SkyCoord 高级类,但它有助于更高级的使用,特别是创建自己的框架、转换或表示。另一个有用的背景信息是 重要定义 当它们被用于 coordinates .

coordinates 构建在一个三层对象系统上:表示、框架和高级类。表示类是存储三维数据点(或点)的一种特殊方式,例如笛卡尔坐标或球面极坐标。帧是特定的参考帧,如FK5或ICRS,它们可以以不同的表示形式存储数据,但彼此之间具有定义良好的转换。这些转换都存储在 astropy.coordinates.frame_transform_graph ,用户可以创建新的转换。最后,高水平班( SkyCoord )使用框架类,但为这些对象提供了更易访问的接口,以及各种方便的方法和更多的字符串解析功能。

分离这些概念可以更容易地扩展 coordinates . 它允许单独定义或扩展表示、框架和转换,同时仍然保留 SkyCoord 班级。

实例:

测定和标绘天体的高度/方位角 例如使用 coordinates 准备观测运行的功能。

使用 astropy.coordinates

有关使用该软件包的更多详细信息,请参见下文。

此外,此包功能的另一个资源是 astropy.coordinates.tests.test_api_ape5 测试文件。它展示了包的大部分主要功能,因此是对本文档的一个有用的补充。您可以下载Astropy源代码的副本,或者在IPython会话中键入以下内容:

In [1]: from astropy.coordinates.tests import test_api_ape5
In [2]: test_api_ape5??

性能提示

如果您正在使用 SkyCoord 对于许多不同的坐标,如果创建一个 SkyCoord 与创建单独的 SkyCoord 每个坐标的对象:

>>> coord = SkyCoord(ra_array, dec_array, unit='deg')  

此外,在 SkyCoord 对象可能很慢。如果需要将坐标变换为不同的帧,则变换单个帧的速度要快得多 SkyCoord 使用值数组,而不是在 SkyCoord 把它们单独转化。

最后,对于更高级的用户,请注意您可以使用广播来进行转换 SkyCoord 将对象放入具有向量特性的帧中。

例子

利用广播来改变 SkyCoord 对象到具有向量属性的帧中::

>>> from astropy.coordinates import SkyCoord, EarthLocation
>>> from astropy import coordinates as coord
>>> from astropy.coordinates.tests.utils import randomly_sample_sphere
>>> from astropy.time import Time
>>> from astropy import units as u
>>> import numpy as np

>>> # 1000 random locations on the sky
>>> ra, dec, _ = randomly_sample_sphere(1000)
>>> coos = SkyCoord(ra, dec)

>>> # 300 times over the space of 10 hours
>>> times = Time.now() + np.linspace(-5, 5, 300)*u.hour

>>> # note the use of broadcasting so that 300 times are broadcast against 1000 positions
>>> lapalma = EarthLocation.from_geocentric(5327448.9957829, -1718665.73869569, 3051566.90295403, unit='m')
>>> aa_frame = coord.AltAz(obstime=times[:, np.newaxis], location=lapalma)

>>> # calculate alt-az of each object at each time.
>>> aa_coos = coos.transform_to(aa_frame)  

提高阵列的性能 obstime

在依赖于观察者的坐标系之间转换时最昂贵的操作(例如。 AltAz )和天空固定框架(例如。 ICRS )是对地球方位和位置的计算。

如果 SkyCoord 将转换大量紧密间隔的实例 obstime ,这些计算可以加速因子高达100,同时仍然保持微秒级的精度,通过使用插值而不是计算每个单独点的地球定向参数。

要在坐标变换中对天体测量值使用插值,请使用:

>>> from astropy.coordinates import SkyCoord, EarthLocation, AltAz
>>> from astropy.coordinates.erfa_astrom import erfa_astrom, ErfaAstromInterpolator
>>> from astropy.time import Time
>>> from time import perf_counter
>>> import numpy as np
>>> import astropy.units as u


>>> # array with 10000 obstimes
>>> obstime = Time('2010-01-01T20:00') + np.linspace(0, 6, 10000) * u.hour
>>> location = location = EarthLocation(lon=-17.89 * u.deg, lat=28.76 * u.deg, height=2200 * u.m)
>>> frame = AltAz(obstime=obstime, location=location)
>>> crab = SkyCoord(ra='05h34m31.94s', dec='22d00m52.2s')

>>> # transform with default transformation and print duration
>>> t0 = perf_counter()
>>> crab_altaz = crab.transform_to(frame)  
>>> print(f'Transformation took {perf_counter() - t0:.2f} s')  
Transformation took 1.77 s

>>> # transform with interpolating astrometric values
>>> t0 = perf_counter()
>>> with erfa_astrom.set(ErfaAstromInterpolator(300 * u.s)): 
...     crab_altaz_interpolated = crab.transform_to(frame)  
>>> print(f'Transformation took {perf_counter() - t0:.2f} s')  
Transformation took 0.03 s

>>> err = crab_altaz.separation(crab_altaz_interpolated)  
>>> print(f'Mean error of interpolation: {err.to(u.microarcsecond).mean():.4f}')  
Mean error of interpolation: 0.0... uarcsec

>>> # To set erfa_astrom for a whole session, use it without context manager:
>>> erfa_astrom.set(ErfaAstromInterpolator(300 * u.s))  

在这里,我们考虑选择合适的 time_resolution . 我们将从 ICRSAltAz 并为不同的值计算精度和运行时 time_resolution 与非插值、默认方法相比。

from time import perf_counter

import numpy as np
import matplotlib.pyplot as plt

from astropy.coordinates.erfa_astrom import erfa_astrom, ErfaAstromInterpolator
from astropy.coordinates import SkyCoord, EarthLocation, AltAz
from astropy.time import Time
import astropy.units as u

np.random.seed(1337)

# 100_000 times randomly distributed over 12 hours
t = Time('2020-01-01T20:00:00') + np.random.uniform(0, 1, 10_000) * u.hour

location = location = EarthLocation(
    lon=-17.89 * u.deg, lat=28.76 * u.deg, height=2200 * u.m
)

# A celestial object in ICRS
crab = SkyCoord.from_name("Crab Nebula")

# target horizontal coordinate frame
altaz = AltAz(obstime=t, location=location)


# the reference transform using no interpolation
t0 = perf_counter()
no_interp = crab.transform_to(altaz)
reference = perf_counter() - t0
print(f'No Interpolation took {reference:.4f} s')


# now the interpolating approach for different time resolutions
resolutions = 10.0**np.arange(-1, 5) * u.s
times = []
seps = []

for resolution in resolutions:
    with erfa_astrom.set(ErfaAstromInterpolator(resolution)):
        t0 = perf_counter()
        interp = crab.transform_to(altaz)
        duration = perf_counter() - t0

    print(
        f'Interpolation with {resolution.value: 9.1f} {str(resolution.unit)}'
        f' resolution took {duration:.4f} s'
        f' ({reference / duration:5.1f}x faster) '
    )
    seps.append(no_interp.separation(interp))
    times.append(duration)

seps = u.Quantity(seps)

fig = plt.figure()

ax1, ax2 = fig.subplots(2, 1, gridspec_kw={'height_ratios': [2, 1]}, sharex=True)

ax1.plot(
    resolutions.to_value(u.s),
    seps.mean(axis=1).to_value(u.microarcsecond),
    'o', label='mean',
)

for p in [25, 50, 75, 95]:
    ax1.plot(
        resolutions.to_value(u.s),
        np.percentile(seps.to_value(u.microarcsecond), p, axis=1),
        'o', label=f'{p}%', color='C1', alpha=p / 100,
    )

ax1.set_title('Transformation of SkyCoord with 100.000 obstimes over 12 hours')

ax1.legend()
ax1.set_xscale('log')
ax1.set_yscale('log')
ax1.set_ylabel('Angular distance to no interpolation / µas')

ax2.plot(resolutions.to_value(u.s), reference / np.array(times), 's')
ax2.set_yscale('log')
ax2.set_ylabel('Speedup')
ax2.set_xlabel('time resolution / s')

ax2.yaxis.grid()
fig.tight_layout()

(png _, svgpdf

../_images/index-1.png

也见

一些对理解此处所实现的坐标系的细微差别特别有用的参考包括:

  • USNO Circular 179

    国际天文学联盟2000/2003年围绕ICRS/IERS/CIRS开展的工作以及精密坐标系工作中的相关问题。

  • Standards Of Fundamental Astronomy

    IAU定义算法的最终实现。“地球态度沙发工具”文件对于详细了解国际天文学联盟最新标准特别有价值。

  • IERS Conventions (2010)

    一份详尽的参考文献,涵盖了ITRS,IAU2000天体坐标框架,以及现代坐标公约的其他相关细节。

  • Meeus,J.“天文算法”

    一个有价值的文本描述了一系列与坐标相关的问题和概念的细节。

  • Revisiting Spacetrack Report #3

    讨论了卫星轨道的简化一般摄动(SGP),并描述了真赤道平均分点(TEME)坐标系。

内置框架类

astropy.coordinates.builtin_框架包裹

下图显示了所有内置坐标系、它们的别名(对于使用属性样式访问将其他坐标转换为它们很有用)以及它们之间的预定义转换。用户可以通过在这些系统之间定义新的转换来覆盖这些转换中的任何一个,但是预定义的转换对于典型的使用来说应该足够了。

图中一条边的颜色(即两个帧之间的转换)由变换类型设置;图例框定义从变换类名到颜色的映射。

digraph AstropyCoordinateTransformGraph { graph [rankdir=LR] FK5 [shape=oval label="FK5\n`fk5`"]; ICRS [shape=oval label="ICRS\n`icrs`"]; FK4NoETerms [shape=oval label="FK4NoETerms\n`fk4noeterms`"]; Galactic [shape=oval label="Galactic\n`galactic`"]; FK4 [shape=oval label="FK4\n`fk4`"]; Galactocentric [shape=oval label="Galactocentric\n`galactocentric`"]; CIRS [shape=oval label="CIRS\n`cirs`"]; GCRS [shape=oval label="GCRS\n`gcrs`"]; HCRS [shape=oval label="HCRS\n`hcrs`"]; BarycentricMeanEcliptic [shape=oval label="BarycentricMeanEcliptic\n`barycentricmeanecliptic`"]; HeliocentricMeanEcliptic [shape=oval label="HeliocentricMeanEcliptic\n`heliocentricmeanecliptic`"]; BarycentricTrueEcliptic [shape=oval label="BarycentricTrueEcliptic\n`barycentrictrueecliptic`"]; HeliocentricTrueEcliptic [shape=oval label="HeliocentricTrueEcliptic\n`heliocentrictrueecliptic`"]; HeliocentricEclipticIAU76 [shape=oval label="HeliocentricEclipticIAU76\n`heliocentriceclipticiau76`"]; CustomBarycentricEcliptic [shape=oval label="CustomBarycentricEcliptic\n`custombarycentricecliptic`"]; LSR [shape=oval label="LSR\n`lsr`"]; LSRK [shape=oval label="LSRK\n`lsrk`"]; LSRD [shape=oval label="LSRD\n`lsrd`"]; Supergalactic [shape=oval label="Supergalactic\n`supergalactic`"]; GalacticLSR [shape=oval label="GalacticLSR\n`galacticlsr`"]; AltAz [shape=oval label="AltAz\n`altaz`"]; ITRS [shape=oval label="ITRS\n`itrs`"]; TETE [shape=oval label="TETE\n`tete`"]; PrecessedGeocentric [shape=oval label="PrecessedGeocentric\n`precessedgeocentric`"]; GeocentricMeanEcliptic [shape=oval label="GeocentricMeanEcliptic\n`geocentricmeanecliptic`"]; GeocentricTrueEcliptic [shape=oval label="GeocentricTrueEcliptic\n`geocentrictrueecliptic`"]; TEME [shape=oval label="TEME\n`teme`"]; FK5 -> FK5[ color = "#1b9e77" ]; FK5 -> ICRS[ color = "#1b9e77" ]; FK5 -> FK4NoETerms[ color = "#1b9e77" ]; FK5 -> Galactic[ color = "#1b9e77" ]; FK4 -> FK4[ color = "#d95f02" ]; FK4 -> FK4NoETerms[ color = "#d95f02" ]; FK4NoETerms -> FK4NoETerms[ color = "#1b9e77" ]; FK4NoETerms -> FK4[ color = "#d95f02" ]; FK4NoETerms -> FK5[ color = "#1b9e77" ]; FK4NoETerms -> Galactic[ color = "#1b9e77" ]; ICRS -> Galactocentric[ color = "#555555" ]; ICRS -> FK5[ color = "#1b9e77" ]; ICRS -> CIRS[ color = "#d95f02" ]; ICRS -> GCRS[ color = "#d95f02" ]; ICRS -> HCRS[ color = "#555555" ]; ICRS -> BarycentricMeanEcliptic[ color = "#1b9e77" ]; ICRS -> HeliocentricMeanEcliptic[ color = "#555555" ]; ICRS -> BarycentricTrueEcliptic[ color = "#1b9e77" ]; ICRS -> HeliocentricTrueEcliptic[ color = "#555555" ]; ICRS -> HeliocentricEclipticIAU76[ color = "#555555" ]; ICRS -> CustomBarycentricEcliptic[ color = "#1b9e77" ]; ICRS -> LSR[ color = "#555555" ]; ICRS -> LSRK[ color = "#555555" ]; ICRS -> LSRD[ color = "#555555" ]; Galactocentric -> ICRS[ color = "#555555" ]; Galactic -> FK5[ color = "#1b9e77" ]; Galactic -> FK4NoETerms[ color = "#1b9e77" ]; Galactic -> Supergalactic[ color = "#7570b3" ]; Galactic -> GalacticLSR[ color = "#555555" ]; Supergalactic -> Galactic[ color = "#7570b3" ]; CIRS -> ICRS[ color = "#d95f02" ]; CIRS -> CIRS[ color = "#d95f02" ]; CIRS -> AltAz[ color = "#d95f02" ]; CIRS -> GCRS[ color = "#d95f02" ]; CIRS -> ITRS[ color = "#d95f02" ]; GCRS -> ICRS[ color = "#d95f02" ]; GCRS -> GCRS[ color = "#d95f02" ]; GCRS -> HCRS[ color = "#d95f02" ]; GCRS -> TETE[ color = "#d95f02" ]; GCRS -> CIRS[ color = "#d95f02" ]; GCRS -> PrecessedGeocentric[ color = "#d95f02" ]; GCRS -> GeocentricMeanEcliptic[ color = "#d95f02" ]; GCRS -> GeocentricTrueEcliptic[ color = "#d95f02" ]; HCRS -> ICRS[ color = "#555555" ]; HCRS -> HCRS[ color = "#d95f02" ]; TETE -> TETE[ color = "#d95f02" ]; TETE -> GCRS[ color = "#d95f02" ]; TETE -> ITRS[ color = "#d95f02" ]; AltAz -> CIRS[ color = "#d95f02" ]; AltAz -> AltAz[ color = "#d95f02" ]; ITRS -> TETE[ color = "#d95f02" ]; ITRS -> CIRS[ color = "#d95f02" ]; ITRS -> ITRS[ color = "#d95f02" ]; ITRS -> TEME[ color = "#d95f02" ]; PrecessedGeocentric -> GCRS[ color = "#d95f02" ]; TEME -> ITRS[ color = "#d95f02" ]; GeocentricMeanEcliptic -> GCRS[ color = "#d95f02" ]; BarycentricMeanEcliptic -> ICRS[ color = "#1b9e77" ]; HeliocentricMeanEcliptic -> ICRS[ color = "#555555" ]; GeocentricTrueEcliptic -> GCRS[ color = "#d95f02" ]; BarycentricTrueEcliptic -> ICRS[ color = "#1b9e77" ]; HeliocentricTrueEcliptic -> ICRS[ color = "#555555" ]; HeliocentricEclipticIAU76 -> ICRS[ color = "#555555" ]; CustomBarycentricEcliptic -> ICRS[ color = "#1b9e77" ]; LSR -> ICRS[ color = "#555555" ]; GalacticLSR -> Galactic[ color = "#555555" ]; LSRK -> ICRS[ color = "#555555" ]; LSRD -> ICRS[ color = "#555555" ]; overlap=false }

  • AffineTransform:

  • FunctionTransform:

  • FunctionTransformWithFiniteDifference:

  • StaticMatrixTransform:

  • DynamicMatrixTransform:

Classes

ICRS * ARGs [, copy, representation_type, ...] )

ICRS系统中的坐标或框架。

FK5 * ARGs [, copy, representation_type, ...] )

FK5系统中的坐标或框架。

FK4 * ARGs [, copy, representation_type, ...] )

FK4系统中的坐标或框架。

FK4NoETerms * ARGs [, copy, ...] )

FK4系统中的一个坐标或帧,但去掉了像差的E项。

Galactic * ARGs [, copy, representation_type, ...] )

银河系中的坐标系或坐标系。

Galactocentric * ARGs, *  * 克瓦格斯)

坐标系银河系中的坐标或坐标系。

galactocentric_frame_defaults ()

此类控制中帧属性的默认值的全局设置 Galactocentric 框架,它可能在将来的版本中更新 astropy .

Supergalactic * ARGs [, copy, ...] )

超星系坐标(见Lahav等人。

AltAz * ARGs, *  * 克瓦格斯)

高度-方位角系统(水平坐标)中的一个坐标或框架。

GCRS * ARGs [, copy, representation_type, ...] )

地心天体参考系(GCRS)中的坐标或坐标系。

CIRS * ARGs [, copy, representation_type, ...] )

天球中间参考系(CIRS)中的坐标或坐标系。

ITRS * ARGs [, copy, representation_type, ...] )

国际地球参考系(ITRS)中的坐标或坐标系。

HCRS * ARGs [, copy, representation_type, ...] )

日心坐标系日心坐标系中的坐标或坐标系,轴线与ICRS对准。

TEME * ARGs [, copy, representation_type, ...] )

真赤道平均分界线(TEME)中的坐标或坐标系。

TETE * ARGs [, copy, representation_type, ...] )

赤道坐标使用真赤道和真春分点(TETE)的赤道坐标或坐标系。

PrecessedGeocentric * ARGs [, copy, ...] )

一种坐标系,其定义与GCRS相似,但进动到要求的(平均)春分点。

GeocentricMeanEcliptic * ARGs [, copy, ...] )

地心平均黄道坐标。

BarycentricMeanEcliptic * ARGs [, copy, ...] )

重心平均黄道坐标。

HeliocentricMeanEcliptic * ARGs [, copy, ...] )

日心平均黄道坐标。

GeocentricTrueEcliptic * ARGs [, copy, ...] )

地心真黄道坐标。

BarycentricTrueEcliptic * ARGs [, copy, ...] )

重心真黄道坐标。

HeliocentricTrueEcliptic * ARGs [, copy, ...] )

日心真黄道坐标。

SkyOffsetFrame * ARGs, *  * 克瓦格斯)

一种相对于某一特定位置的框架,其方向与框架相匹配。

GalacticLSR * ARGs [, copy, ...] )

局部静止标准(LSR)中的一个坐标或帧,轴与 Galactic 框架。

LSR * ARGs [, copy, representation_type, ...] )

局部静止标准(LSR)中的坐标或坐标系。

LSRK * ARGs [, copy, representation_type, ...] )

运动学局部静止标准(LSR)中的坐标或坐标系。

LSRD * ARGs [, copy, representation_type, ...] )

动态局部静止标准(LSRD)中的坐标或框架

BaseEclipticFrame * ARGs [, copy, ...] )

一个基类,用于具有类似黄道帧的名称和约定的帧。

BaseRADecFrame * ARGs [, copy, ...] )

一个基类,根据典型的“赤道”约定,将经度和纬度表示为赤经和赤纬的帧的默认表示信息。

HeliocentricEclipticIAU76 * ARGs [, copy, ...] )

日心平均值(IAU 1976)黄道坐标。

CustomBarycentricEcliptic * ARGs [, copy, ...] )

具有自定义倾角的重心黄道坐标。

参考/API

天文坐标包裹

这个子包包含天文物体天体坐标的类和函数。它还包含坐标系之间转换的框架。

功能

cartesian_to_spherical \(x、y、z)

将三维直角笛卡尔坐标转换为球极坐标。

concatenate \(coords)

将多个坐标对象合并为一个 SkyCoord .

concatenate_representations \(重复)

通过连接每个组件中的数据,将多个表示对象组合到一个实例中。

get_body \(身体,时间)[, location, ephemeris] )

得到一个 SkyCoord 从地球上某个位置观察到的太阳系天体 GCRS 参考系。

get_body_barycentric \(身体,时间)[, ephemeris] )

计算太阳系天体的重心位置。

get_body_barycentric_posvel \(身体,时间)[, ...] )

计算太阳系天体的重心位置和速度。

get_constellation \(坐标[, short_name, ...] )

确定给定坐标对象包含的星座。

get_icrs_coordinates (姓名) [, parse, cache] )

通过使用联机名称解析服务检索指定名称的坐标来检索ICRS对象。

get_moon \(时间[, location, ephemeris] )

得到一个 SkyCoord 因为地球上的月球 GCRS 参考系。

get_sun \(时间)

确定太阳在给定时间(如果输入是数组,则为一个或多个时间)的位置 Time 对象),在地心坐标系中。

make_transform_graph_docs \(转换图)

生成可在其他docstring中使用的字符串,以包含转换图,显示可用的变换和坐标系。

match_coordinates_3d \(matchcoord,catalogcoord)

查找目录坐标集中一个或多个坐标的最接近的三维匹配。

match_coordinates_sky \(matchcoord,catalogcoord)

查找目录坐标集中一个或多个坐标的最近天空匹配。

search_around_3d \(坐标1、坐标2、距离限制)

搜索至少与三维空间中指定距离相等的点对。

search_around_sky \(coords1,coords2,seplimit)

搜索角度间隔至少与指定角度接近的点对。

spherical_to_cartesian \(r、lat、lon)

将球形极坐标转换为矩形笛卡尔坐标。

Classes

AffineTransform \(转换u func、fromsys、tosys)

一种指定为一个函数的坐标变换,它产生一个3x3笛卡尔变换矩阵和一个位移向量元组。

AltAz * ARGs, *  * 克瓦格斯)

高度-方位角系统(水平坐标)中的一个坐标或框架。

Angle \(角度[, unit, dtype, copy] )

一个或多个角度值,单位等于弧度或度。

Attribute \ [default, secondary_attribute] )

保存帧属性的不可变数据描述符。

BarycentricMeanEcliptic * ARGs [, copy, ...] )

重心平均黄道坐标。

BarycentricTrueEcliptic * ARGs [, copy, ...] )

重心真黄道坐标。

BaseAffineTransform \(从sys,到sys[, ...] )

之间的公共功能的基类 AffineTransform -类型子类。

BaseCoordinateFrame * ARGs [, copy, ...] )

坐标系的基类。

BaseDifferential * ARGs, *  * 克瓦格斯)

表示不同表示的基类。

BaseEclipticFrame * ARGs [, copy, ...] )

一个基类,用于具有类似黄道帧的名称和约定的帧。

BaseRADecFrame * ARGs [, copy, ...] )

一个基类,根据典型的“赤道”约定,将经度和纬度表示为赤经和赤纬的帧的默认表示信息。

BaseRepresentation * ARGs [, differentials] )

在三维坐标系中表示点的基。

BaseRepresentationOrDifferential * ARGs, *  * 克瓦格斯)

三维坐标表示和微分。

BaseSphericalCosLatDifferential * ARGs, *  * 克瓦格斯)

球底表示上点的微分。

BaseSphericalDifferential * ARGs, *  * 克瓦格斯)

BoundsError 

当角度超出用户指定的界限时引发。

CIRS * ARGs [, copy, representation_type, ...] )

天球中间参考系(CIRS)中的坐标或坐标系。

CartesianDifferential \(d u x)[, d_y, d_z, unit, ...] )

三维笛卡尔坐标中点的微分。

CartesianRepresentation (x) [, y, z, unit, ...] )

三维笛卡尔坐标中点的表示。

CartesianRepresentationAttribute \ [default, ...] )

一种帧属性,它是具有指定单位的CartesianRepresentation。

CompositeTransform \(转换,fromsys,tosys)

一种由一系列单步变换组合而成的变换。

ConvertError 

如果无法将坐标系转换为另一个坐标系,则引发

CoordinateAttribute \(框架[, default, ...] )

作为坐标对象的帧属性。

CoordinateTransform \(从sys,到sys[, ...] )

将坐标从一个坐标系转换到另一个坐标系的对象。

CustomBarycentricEcliptic * ARGs [, copy, ...] )

具有自定义倾角的重心黄道坐标。

CylindricalDifferential (d u rho)[, d_phi, d_z, ...] )

柱坐标中点的微分。

CylindricalRepresentation \(rho)[, phi, z, ...] )

三维柱坐标中点的表示。

DifferentialAttribute \ [default, ...] )

作为差分实例的帧属性。

Distance \ [value, unit, z, cosmology, ...] )

一维距离。

DynamicMatrixTransform \(矩阵u func,fromsys,…)

一种坐标变换,被指定为一个能产生3×3笛卡尔变换矩阵的函数。

EarthLocation * ARGs, *  * 克瓦格斯)

地球上的位置。

EarthLocationAttribute \ [default, ...] )

可以作为 EarthLocation .

FK4 * ARGs [, copy, representation_type, ...] )

FK4系统中的坐标或框架。

FK4NoETerms * ARGs [, copy, ...] )

FK4系统中的一个坐标或帧,但去掉了像差的E项。

FK5 * ARGs [, copy, representation_type, ...] )

FK5系统中的坐标或框架。

FunctionTransform \(func,fromsys,tosys[, ...] )

由接受坐标对象并返回转换后的坐标对象的函数定义的坐标变换。

FunctionTransformWithFiniteDifference \(函数,…)

一种工作方式类似于 FunctionTransform ,但基于相对于其中一个帧属性的有限差分计算速度偏移。

GCRS * ARGs [, copy, representation_type, ...] )

地心天体参考系(GCRS)中的坐标或坐标系。

Galactic * ARGs [, copy, representation_type, ...] )

银河系中的坐标系或坐标系。

GalacticLSR * ARGs [, copy, ...] )

局部静止标准(LSR)中的一个坐标或帧,轴与 Galactic 框架。

Galactocentric * ARGs, *  * 克瓦格斯)

坐标系银河系中的坐标或坐标系。

GenericFrame (帧属性)

不能存储数据但可以保存任意帧属性的帧对象。

GeocentricMeanEcliptic * ARGs [, copy, ...] )

地心平均黄道坐标。

GeocentricTrueEcliptic * ARGs [, copy, ...] )

地心真黄道坐标。

HCRS * ARGs [, copy, representation_type, ...] )

日心坐标系日心坐标系中的坐标或坐标系,轴线与ICRS对准。

HeliocentricEclipticIAU76 * ARGs [, copy, ...] )

日心平均值(IAU 1976)黄道坐标。

HeliocentricMeanEcliptic * ARGs [, copy, ...] )

日心平均黄道坐标。

HeliocentricTrueEcliptic * ARGs [, copy, ...] )

日心真黄道坐标。

ICRS * ARGs [, copy, representation_type, ...] )

ICRS系统中的坐标或框架。

ITRS * ARGs [, copy, representation_type, ...] )

国际地球参考系(ITRS)中的坐标或坐标系。

IllegalHourError \(小时)

当小时值不在[0,24]范围内时引发。

IllegalHourWarning \(小时[, alternativeactionstr] )

当小时值为24时引发。

IllegalMinuteError \(分钟)

当分钟值不在范围内时引发 [0,60] .

IllegalMinuteWarning \(分钟[, ...] )

当分钟值为60时引发。

IllegalSecondError \(秒)

当第二个值(时间)不在范围内时引发 [0,60] .

IllegalSecondWarning \(秒[, ...] )

当第二个值为60时引发。

LSR * ARGs [, copy, representation_type, ...] )

局部静止标准(LSR)中的坐标或坐标系。

LSRD * ARGs [, copy, representation_type, ...] )

动态局部静止标准(LSRD)中的坐标或框架

LSRK * ARGs [, copy, representation_type, ...] )

运动学局部静止标准(LSR)中的坐标或坐标系。

Latitude \(角度[, unit] )

类似纬度的角度,必须在-90到+90度的范围内。

Longitude \(角度[, unit, wrap_angle] )

在一个连续的360度范围内环绕的类似经度的角度。

PhysicsSphericalDifferential (直径φ)[, ...] )

使用物理约定的三维球坐标微分。

PhysicsSphericalRepresentation \(功率因数[, theta, ...] )

在三维球坐标系中表示点(使用 phitheta (对于磁极和方位角)。

PrecessedGeocentric * ARGs [, copy, ...] )

一种坐标系,其定义与GCRS相似,但进动到要求的(平均)春分点。

QuantityAttribute \ [default, ...] )

一种帧属性,它是具有指定单位和形状的数量(可选)。

RadialDifferential * ARGs, *  * 克瓦格斯)

径向距离差分。

RadialRepresentation \(距离[, ...] )

表示点到原点的距离。

RangeError 

当某个角度的某个部分超出其有效范围时引发。

RepresentationMapping \(reprname,framename[, ...] )

这个 namedtuple 用于 frame_specific_representation_info 属性告诉帧要将哪些属性名称(和默认单位)用于特定表示。

SkyCoord * ARGs [, copy] )

高级对象为天体坐标表示、操作和系统之间的转换提供了一个灵活的接口。

SkyCoordInfo \ [bound] )

用于存储诸如名称、描述、格式等元信息的容器。

SkyOffsetFrame * ARGs, *  * 克瓦格斯)

一种相对于某一特定位置的框架,其方向与框架相匹配。

SpectralCoord *  * 功能(千瓦)

与其对应单位的光谱坐标。

SpectralQuantity \(值[, unit, ...] )

一个或多个光谱单位。

SphericalCosLatDifferential 科斯拉特[, ...] )

三维球坐标中点的微分。

SphericalDifferential (德隆)[, d_lat, ...] )

三维球坐标中点的微分。

SphericalRepresentation \(隆[, lat, ...] )

三维球坐标中点的表示。

StaticMatrixTransform \(矩阵,fromsys,tosys)

定义为3×3笛卡尔变换矩阵的坐标变换。

Supergalactic * ARGs [, copy, ...] )

超星系坐标(见Lahav等人。

TEME * ARGs [, copy, representation_type, ...] )

真赤道平均分界线(TEME)中的坐标或坐标系。

TETE * ARGs [, copy, representation_type, ...] )

赤道坐标使用真赤道和真春分点(TETE)的赤道坐标或坐标系。

TimeAttribute \ [default, secondary_attribute] )

作为时间对象的数量的帧属性描述符。

TransformGraph ()

表示坐标系之间路径的图。

UnitSphericalCosLatDifferential (德隆·科斯拉特)

单位球面上点的微分。

UnitSphericalDifferential (德隆)[, d_lat, copy] )

单位球面上点的微分。

UnitSphericalRepresentation \(隆[, lat, ...] )

单位球面上点的表示。

UnknownSiteException \(站点,属性[, ...] )

galactocentric_frame_defaults ()

此类控制中帧属性的默认值的全局设置 Galactocentric 框架,它可能在将来的版本中更新 astropy .

solar_system_ephemeris ()

用于计算太阳系天体位置的默认星历表。

类继承图

Inheritance diagram of astropy.coordinates.transformations.AffineTransform, astropy.coordinates.builtin_frames.altaz.AltAz, astropy.coordinates.angles.Angle, astropy.coordinates.attributes.Attribute, astropy.coordinates.builtin_frames.ecliptic.BarycentricMeanEcliptic, astropy.coordinates.builtin_frames.ecliptic.BarycentricTrueEcliptic, astropy.coordinates.transformations.BaseAffineTransform, astropy.coordinates.baseframe.BaseCoordinateFrame, astropy.coordinates.representation.BaseDifferential, astropy.coordinates.builtin_frames.ecliptic.BaseEclipticFrame, astropy.coordinates.builtin_frames.baseradec.BaseRADecFrame, astropy.coordinates.representation.BaseRepresentation, astropy.coordinates.representation.BaseRepresentationOrDifferential, astropy.coordinates.representation.BaseSphericalCosLatDifferential, astropy.coordinates.representation.BaseSphericalDifferential, astropy.coordinates.errors.BoundsError, astropy.coordinates.builtin_frames.cirs.CIRS, astropy.coordinates.representation.CartesianDifferential, astropy.coordinates.representation.CartesianRepresentation, astropy.coordinates.attributes.CartesianRepresentationAttribute, astropy.coordinates.transformations.CompositeTransform, astropy.coordinates.errors.ConvertError, astropy.coordinates.attributes.CoordinateAttribute, astropy.coordinates.transformations.CoordinateTransform, astropy.coordinates.builtin_frames.ecliptic.CustomBarycentricEcliptic, astropy.coordinates.representation.CylindricalDifferential, astropy.coordinates.representation.CylindricalRepresentation, astropy.coordinates.attributes.DifferentialAttribute, astropy.coordinates.distances.Distance, astropy.coordinates.transformations.DynamicMatrixTransform, astropy.coordinates.earth.EarthLocation, astropy.coordinates.attributes.EarthLocationAttribute, astropy.coordinates.builtin_frames.fk4.FK4, astropy.coordinates.builtin_frames.fk4.FK4NoETerms, astropy.coordinates.builtin_frames.fk5.FK5, astropy.coordinates.transformations.FunctionTransform, astropy.coordinates.transformations.FunctionTransformWithFiniteDifference, astropy.coordinates.builtin_frames.gcrs.GCRS, astropy.coordinates.builtin_frames.galactic.Galactic, astropy.coordinates.builtin_frames.lsr.GalacticLSR, astropy.coordinates.builtin_frames.galactocentric.Galactocentric, astropy.coordinates.baseframe.GenericFrame, astropy.coordinates.builtin_frames.ecliptic.GeocentricMeanEcliptic, astropy.coordinates.builtin_frames.ecliptic.GeocentricTrueEcliptic, astropy.coordinates.builtin_frames.hcrs.HCRS, astropy.coordinates.builtin_frames.ecliptic.HeliocentricEclipticIAU76, astropy.coordinates.builtin_frames.ecliptic.HeliocentricMeanEcliptic, astropy.coordinates.builtin_frames.ecliptic.HeliocentricTrueEcliptic, astropy.coordinates.builtin_frames.icrs.ICRS, astropy.coordinates.builtin_frames.itrs.ITRS, astropy.coordinates.errors.IllegalHourError, astropy.coordinates.errors.IllegalHourWarning, astropy.coordinates.errors.IllegalMinuteError, astropy.coordinates.errors.IllegalMinuteWarning, astropy.coordinates.errors.IllegalSecondError, astropy.coordinates.errors.IllegalSecondWarning, astropy.coordinates.builtin_frames.lsr.LSR, astropy.coordinates.builtin_frames.lsr.LSRD, astropy.coordinates.builtin_frames.lsr.LSRK, astropy.coordinates.angles.Latitude, astropy.coordinates.angles.Longitude, astropy.coordinates.representation.PhysicsSphericalDifferential, astropy.coordinates.representation.PhysicsSphericalRepresentation, astropy.coordinates.builtin_frames.gcrs.PrecessedGeocentric, astropy.coordinates.attributes.QuantityAttribute, astropy.coordinates.representation.RadialDifferential, astropy.coordinates.representation.RadialRepresentation, astropy.coordinates.errors.RangeError, astropy.coordinates.baseframe.RepresentationMapping, astropy.coordinates.sky_coordinate.SkyCoord, astropy.coordinates.sky_coordinate.SkyCoordInfo, astropy.coordinates.builtin_frames.skyoffset.SkyOffsetFrame, astropy.coordinates.spectral_coordinate.SpectralCoord, astropy.coordinates.spectral_quantity.SpectralQuantity, astropy.coordinates.representation.SphericalCosLatDifferential, astropy.coordinates.representation.SphericalDifferential, astropy.coordinates.representation.SphericalRepresentation, astropy.coordinates.transformations.StaticMatrixTransform, astropy.coordinates.builtin_frames.supergalactic.Supergalactic, astropy.coordinates.builtin_frames.equatorial.TEME, astropy.coordinates.builtin_frames.equatorial.TETE, astropy.coordinates.attributes.TimeAttribute, astropy.coordinates.transformations.TransformGraph, astropy.coordinates.representation.UnitSphericalCosLatDifferential, astropy.coordinates.representation.UnitSphericalDifferential, astropy.coordinates.representation.UnitSphericalRepresentation, astropy.coordinates.errors.UnknownSiteException, astropy.coordinates.builtin_frames.galactocentric.galactocentric_frame_defaults, astropy.coordinates.solar_system.solar_system_ephemeris