我需要计算给定日期/时间的视方位角和仰角以及亚月经度。我得到的az/el角通常与其他来源(MoonCalc.org、Horizons等)一致。但是,对于次月经/次月经,还没有很好的比较来源。更重要的是,我怀疑我使用dec/ra值得到的经度/经度,因为ra在很长一段时间内几乎没有变化。
这是我所做的基本决定:
roc.date='2018/1/1 01:00:00'
moon=ephem.Moon(roc)
print('rocMoonTest: %s UTC-4, lat/lon = %0.4f [+N], %0.4f [+E]' %
(roc.date, math.degrees(roc.lat), math.degrees(roc.lon)))
print('Moon dec/ra = %s [+N], %s [+W]' % (moon.dec, moon.ra ))
print('Moon a_dec/a_ra = %s [+N], %s [+W]' % (moon.a_dec, moon.a_ra ))
print('Moon g_dec/g_ra = %s [+N], %s [+W]' % (moon.g_dec, moon.g_ra ))
print('Moon az/el = %0.4f, %0.4f' %
(math.degrees(moon.az), math.degrees(moon.alt)))然后我每3个小时重复一次。以下是输出:
rocMoonTest: 2018/1/1 01:00:00 UTC-4, lat/lon = 43.0000 [+N], -78.0000 [+E]
Moon dec/ra = 18:53:07.1 [+N], 5:43:03.33 [+W]
Moon a_dec/a_ra = 19:22:21.3 [+N], 5:39:38.43 [+W]
Moon g_dec/g_ra = 19:22:44.7 [+N], 5:40:41.41 [+W]
Moon az/el = 105.3953, 43.0670
rocMoonTest: 2018/1/1 04:00:00 UTC-4, lat/lon = 43.0000 [+N], -78.0000 [+E]
Moon dec/ra = 19:07:55.4 [+N], 5:49:00.24 [+W]
Moon a_dec/a_ra = 19:32:24.2 [+N], 5:47:42.22 [+W]
Moon g_dec/g_ra = 19:32:35.1 [+N], 5:48:45.29 [+W]
Moon az/el = 169.5907, 65.8406
rocMoonTest: 2018/1/1 07:00:00 UTC-4, lat/lon = 43.0000 [+N], -78.0000 [+E]
Moon dec/ra = 19:13:15.7 [+N], 5:54:49.89 [+W]
Moon a_dec/a_ra = 19:41:07.2 [+N], 5:55:47.50 [+W]
Moon g_dec/g_ra = 19:41:05.5 [+N], 5:56:50.65 [+W]
Moon az/el = 246.5737, 49.4664正如预期的那样,正如az/el角所证实的那样,在此期间,当地球自转并达到某处的峰值高度时,月球会从东向西摆动。然而,不同的dec/ra值都没有显著变化。在这6个小时的跨度中,我希望看到ra大约6个小时的变化。显然,当我使用这些ra值中的任何一个来计算经度时,我得到了错误的答案。看起来dev/ra的参照系并没有随着地球旋转。然而,文档表明我应该期待它的出现。
有人愿意解释一下我对各种赤经变量的理解错误在哪里吗?最直接的方法是计算子月球的纬度/经度吗?请注意,我宁愿避免使用将表观的az/el位置旋转到大地经度/经度的方法。
发布于 2018-09-17 02:59:44
测量“赤道”不是针对地球的旋转表面,而是针对天空中固定的恒星--它是一种经度,但其原点是星图上两个最大的“天空赤道”--地球的赤道和“太阳系的赤道”--黄道(不是真正的太阳系赤道,因为它是地球轨道的平面,而不是所有行星轨道的加权平均)的交叉点。
由于它们的交叉点本身会随着时代的推移而移动,因此右提升的系统每年都会有很小的不同,而且在几个世纪和几千年之间也会有很大的不同。因此,必须始终相对于某个日期、某个精确时刻(如B1950或J2000 )指定右升和赤纬(天纬度)。
现在RA和dec有一个固定的坐标系,不动,ICRS,它像J2000一样定向,但定义使用类星体的位置(我们假设)在我们物种的生命周期内不会有明显的移动。
发布于 2019-04-23 12:48:46
关于你问题的这部分
计算次月球纬度/经度最直接的方法是什么?
这是我计算月下点的代码。
greenwich = ephem.Observer()
greenwich.lat = "0"
greenwich.lon = "0"
greenwich.date = datetime.utcnow()
#add Moon Sub Solar Point
moon = ephem.Moon(greenwich)
moon.compute(greenwich.date)
moon_lon = math.degrees(moon.ra - greenwich.sidereal_time() )
# map longitude value from -180 to +180
if moon_lon < -180.0 :
moon_lon = 360.0 + moon_lon
elif moon_lon > 180.0 :
moon_lon = moon_lon - 360.0
moon_lat = math.degrees(moon.dec)
print "moon Lon:",moon_lon, "Lat:",moon_lat希望这能有所帮助。我也使用相同的方法来计算次太阳点。对我来说很有用。
编辑:是...格林威治纬度被设置为零,因为它对此计算根本无关紧要。
发布于 2019-12-19 04:08:40
您可以通过查看以下链接来强化您在此方法方向上的思考:
这给出了基本上相同的解决方案,但对于sub_solar_point,也来自Liam肯尼迪(他为格林威治提供了一个非零拉特),以及Brandon Rhodes的回答,他用python包装了xephem库,为我们提供了pyephem,直到最近还在积极维护它。Brandon现在更专注于他的下一次迭代,一个名为skyfield的纯python库,它使用了最新可用的星历和更直观的API。
https://pypi.org/project/skyfield/
https://rhodesmill.org/skyfield/installation.html
虽然我现在不能贡献它,但我是否可以建议将pyephem和skyfield的结果进行比较,也许在matplotlib图中,IOW,skyfield的结果可能有多大的不同/改进?
https://stackoverflow.com/questions/52338971
复制相似问题