测定和标绘天体的高度/方位角#

此示例演示坐标转换和可见性曲线的创建,以帮助观察运行计划。

在本例中,我们将 SkyCoord M33的实例。然后使用 astropy.coordinates.EarthLocationastropy.time.Time 物体。

此示例旨在演示 astropy.coordinates package. For more convenient and/or complex observation planning, consider the astroplan 包裹。

签字人:Erik Tollerud,Kelle Cruz

许可证:BSD

假设你打算去美国纽约风景如画的熊山州立公园,你带着望远镜(当然),有人告诉你M33是一个很好的观测目标。你碰巧知道你在当地时间晚上11:00有空,你想知道是否会有空。 Astropy 可以回答这个问题。

导入numpy和matplotlib。对于后者,请使用一组更好的打印参数,并设置对打印/转换数量的支持。

import matplotlib.pyplot as plt
import numpy as np

from astropy.visualization import astropy_mpl_style, quantity_support

plt.style.use(astropy_mpl_style)
quantity_support()
<astropy.visualization.units.quantity_support.<locals>.MplQuantityConverter object at 0x7f4f9f64c7d0>

导入查找坐标和进行坐标转换所需的包

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

astropy.coordinates.SkyCoord.from_name 使用Simbad解析对象名并检索坐标。

得到M33的坐标:

使用 astropy.coordinates.EarthLocation 提供Bear Mountain的位置并将时间设置为美国东部时间2012年7月12日晚上11点:

bear_mountain = EarthLocation(lat=41.3 * u.deg, lon=-74 * u.deg, height=390 * u.m)
utcoffset = -4 * u.hour  # Eastern Daylight Time
time = Time("2012-7-12 23:00:00") - utcoffset

astropy.coordinates.EarthLocation.get_site_namesget_site_names 可用于获取主要观测站的位置。

使用 astropy.coordinates 为了找到2012年7月12日晚上11点从熊山观测到的M33 at的Alt,Az坐标。

m33altaz = m33.transform_to(AltAz(obstime=time, location=bear_mountain))
print(f"M33's Altitude = {m33altaz.alt:.2}")
M33's Altitude = 0.13 deg

这是有帮助的,因为它发现M33在这个时候几乎没有超出地平线。在夜间发现M33的气团信息更丰富。

在美国东部时间晚上10点到上午7点之间,以100倍的平均间隔计算M33的alt,az坐标:

将高度、方位角转换为空气质量 secz 属性:

将空气质量绘制为时间函数:

plt.plot(delta_midnight, m33airmasss_July13night)
plt.xlim(-2, 10)
plt.ylim(1, 4)
plt.xlabel("Hours from EDT Midnight")
plt.ylabel("Airmass [Sec(z)]")
plt.show()
plot obs planning

使用 get_sun 要找到太阳在7月12日中午到7月13日中午之间1000个等距时间的位置:

用同样的方法 get_body 找出月亮升起的时间。请注意,这将需要从互联网上下载一个10MB的文件来获得月球的准确位置。

同时求出M33的alt,az坐标:

画一个美丽的图形来说明夜间、M33和太阳的高度:

plt.plot(delta_midnight, sunaltazs_July12_to_13.alt, color="r", label="Sun")
plt.plot(
    delta_midnight, moonaltazs_July12_to_13.alt, color=[0.75] * 3, ls="--", label="Moon"
)
plt.scatter(
    delta_midnight,
    m33altazs_July12_to_13.alt,
    c=m33altazs_July12_to_13.az.value,
    label="M33",
    lw=0,
    s=8,
    cmap="viridis",
)
plt.fill_between(
    delta_midnight,
    0 * u.deg,
    90 * u.deg,
    sunaltazs_July12_to_13.alt < -0 * u.deg,
    color="0.5",
    zorder=0,
)
plt.fill_between(
    delta_midnight,
    0 * u.deg,
    90 * u.deg,
    sunaltazs_July12_to_13.alt < -18 * u.deg,
    color="k",
    zorder=0,
)
plt.colorbar().set_label("Azimuth [deg]")
plt.legend(loc="upper left")
plt.xlim(-12 * u.hour, 12 * u.hour)
plt.xticks((np.arange(13) * 2 - 12) * u.hour)
plt.ylim(0 * u.deg, 90 * u.deg)
plt.xlabel("Hours from EDT Midnight")
plt.ylabel("Altitude [deg]")
plt.show()
plot obs planning

Total running time of the script: (0分1.837秒)

Gallery generated by Sphinx-Gallery