我正在尝试确定一个观察者的子午线在右上升星历的背景下明显的正确提升,这是我使用PyEpehm的Observer
类为观察者获得的。我知道后者将在“日期时代”坐标中提供,但不知道如何在这些坐标中为观察者获得子午线的正确提升。
我认为sidereal_time
会给我我正在寻找的东西
import ephem
import numpy
zone1 = ephem.city('London')
zone1.date = '2014/08/04 11:00:00'
meridian = zone1.sidereal_time()
但我不确定结果坐标是什么纪元。
如何在“日期时代”坐标中获得PyEphem观察者的子午线?
答案 0 :(得分:2)
按照它的定义(至少据我所知!),恒星时间必然是两个时代坐标之间的关系:该日期的昼夜平分点,以及观测位于地球上的点。表面上。
我们可以通过在子午线上选择一个点来检查这一点 - 例如,它在0°纬度穿过天体赤道的点 - 然后问问PyEphem,使用它稍微尴尬的界面,那个点的RA是什么时候你在询问:
import ephem
zone1 = ephem.city('London')
zone1.date = '2014/08/04 11:00:00'
zone1.pressure = 0.0
meridian = zone1.sidereal_time()
print 'Hour angle:', meridian
print
overhead = ephem.degrees('90:00')
south = ephem.degrees('180:00')
zone1.epoch = zone1.date
ra, dec = zone1.radec_of(az=south, alt=overhead - zone1.lat)
print 'Epoch-of-date:'
print 'RA:', ra
print 'dec:', dec
print
zone1.epoch = '2000/1/1'
ra, dec = zone1.radec_of(az=south, alt=overhead - zone1.lat)
print 'Epoch J2000:'
print 'RA:', ra
print 'dec:', dec
print
我认为,输出结果证实,恒星时间与我们所询问的点的最新时期正确提升相同 - 至少我认为那个微小的,更少的 - 比第二秒的差异是由于PyEphem所依赖的libastro
内部的舍入误差,而不是因为逃避我们的一些额外的理论并发症:
Sidereal time: 7:51:14.43
Epoch-of-date:
RA: 7:51:15.24
dec: 0:00:03.5
Epoch J2000:
RA: 7:50:30.36
dec: 0:02:19.5
因为我发现PyEphem对于这些问题有点尴尬,请注意我已经开始了一个新的Skyfield库,试图让计算更简单,如果你想尝试替代方案。无论哪种方式:享受!
答案 1 :(得分:2)
本地恒星时间定义为本地子午线的RA。更确切地说,局部表观恒星时间被定义为该地区的春分点的小时角:它与在同一时刻穿过当地子午线的任何天体的右上升具有相同的值,这正是你想要什么。
你使用pyephem的sideral_time()函数会产生明显的 RA("约会时期" RA在这个定义下也可能是同样的事情但并不意味着同样的事情。)
>>> GST = ephem.Observer()
>>> GST.lat = '0'
>>> GST.lon = '0'
>>> GST.elevation = '0'
>>> GST.elevation = 0
>>> GST.date = '2014/08/04 11:00:00'
>>> GST.sidereal_time()
7:51:44.73
请注意,伦敦和格林威治也不是一回事。
现在让我们在这个RA上放一个明星,看看我们得到了什么 - 这不会确切地解决,但它会足够接近以显示这种关系。
>>> star._ra = '7:51:44.73'
>>> star._dec = '45'
>>> star._epoch = '2014/08/04 11:00:00'
>>> GST.pressure = 0
>>> star.compute(GST)
>>> star.az, star.alt
(359:59:38.7, 45:00:08.2)
在这里,我们可以看到我们的虚拟星在我们的子午线上(以及近距离和蟒蛇将允许我们计算它),其中子午线被定义为0度或180度的方位角。在pyephem中,当你尝试使用它时,它总是表现得有点奇怪,就像在这个演示中一样。让我们在前进方向尝试另一个。
这次我们将选择一颗已知的恒星,并调整该地点的时间,直到LST与恒星的明显RA匹配为止。
>>> vega = ephem.star('Vega') #retrieve vega from star catalog
>>> ephem.now() #get the current time
2015/7/9 01:42:49
>>> GST.date = '2015/7/9 01:42:49' #set time at site
>>> vega.compute(GST) #compute vega over the site for this time
>>> vega.a_ra #retrieve the astronomical RA for vega epoch J2000
18:36:56.47
>>> vega.ra #retrieve apparent RA for vega epoch now
18:37:29.64
请注意,由于地球绕其轴线进动并且由于地球 - 月球相互作用导致轴的章动,它们有点不同
>>> GST.sidereal_time() #get the sidereal time for now
20:49:34.12
请注意,恒星时间与vega的明显RA有点偏差,所以让我们调整时间直到它们完全相同
>>> GST.date = '2015/7/8 23:31:06.16'
>>> GST.sidereal_time()
18:37:29.64
现在他们是完全相同的。现在再次为该网站计算vega。
>>> vega.compute(GST)
>>> vega.ra, vega.dec
(18:37:29.64, 38:48:06.5)
>>> vega.az, vega.alt
(0:00:00.0, 51:11:53.5)
正如您在此处所看到的,方位角正如预期的那样精确地位于子午线上。这个前向演示表明,LST相当于当地子午线的明显RA。