【问题标题】:Confusion with using dec/ra to compute sub-lunar location使用 dec/ra 计算月下位置的困惑
【发布时间】:2019-12-19 04:08:40
【问题描述】:

我需要计算给定日期/时间的明显方位角和仰角以及月下纬度/经度。我得到的 az/el 角通常与其他来源(MoonCalc.org、Horizo​​ns 等)一致,但对于月下纬度/经度没有很好的比较来源。更重要的是,我怀疑使用 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

正如预期的那样,正如从 z/el 角所证实的那样,随着地球自转,月球从东向西摆动,并在此期间的某个地方达到峰值高度。但是,各种 dec/ra 值都没有显着变化。在这 6 小时的跨度内,我预计 ra 会发生大约 6 小时的变化。显然,当我使用这些 ra 值中的任何一个来计算经度时,我得到了错误的答案。看来 dev/ra 的参考系没有随地球旋转。但是,文档表明我应该期望它。

有人愿意解释一下我对各种赤经变量的理解哪里出了问题,以及计算月下纬度/经度最直接的方法是什么?请注意,我宁愿避免使用将明显的 az/el 位置旋转到大地纬度/经度的方法。

【问题讨论】:

  • 您能否更具体地引用将赤经 (RA) 描述为随着地球转动而变化的文档?我自己的理解是,一个物体的赤经是它对着星星的位置,所以月球的赤经需要大约1个月的时间才能经过360°。
  • 布兰登,这是我的主要误解。不是来自仰视的天文学界,而是来自俯视的遥感界,我不知道赤经的参考系,也不是地球固定的。看来合并恒星时是我计算中缺少的因素。
  • 很高兴我们找到了混乱的根源,您可以再次前进!那我就写一个小答案,方便以后有同样问题的人轻松找到答案。

标签: pyephem


【解决方案1】:

“赤经”测量不是针对地球的旋转表面,而是针对天空中的固定恒星——它是一种经度,但其原点是星图上两个伟大的“天空的赤道”,地球的赤道和“太阳系的赤道”,黄道(这不是真正太阳系赤道,因为它是地球轨道的平面,而不是加权平均所有行星轨道),交叉。

由于他们的交叉点会随着时代的流逝而移动,因此每年的右升系统都略有不同,并且在几个世纪和数千年之间也有很大的不同。所以赤经和赤纬(天体纬度)总是必须相对于某个日期来指定,比如 B1950 或 J2000 之类的确切时刻。

现在有一个不移动的 RA 和 dec 固定坐标系,即 ICRS,其方向与 J2000 类似,但使用类星体的位置定义,(我们假设)在生命周期内不会发生可测量的移动我们的物种。

【讨论】:

    【解决方案2】:

    关于你的这部分问题

    计算月下纬度/经度最直接的方法是什么?

    这是我计算月下点的代码。

    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
    

    希望对您有所帮助。我也使用相同的方法来计算次太阳点。对我很有用。

    编辑:是的...格林威治的纬度设置为零,因为这个计算根本不重要。

    【讨论】:

      【解决方案3】:

      您可以通过查看此其他链接来加强您对这种方法方向的思考:

      Computing sub-solar point

      这给出了基本相同的解决方案,但对于 sub_solar_point,也来自 Liam Kennedy(他为格林威治提供了非零纬度),以及 Brandon Rhodes 的答案,他将 xephem 库包装在 python 中给我们 pyephem ,并且直到最近一直在积极维护它。 Brandon 现在更多地关注他的下一个迭代,一个名为 skyfield 的纯 Python 库,它使用最新的可用星历和更直观的 API。

      https://pypi.org/project/skyfield/

      https://rhodesmill.org/skyfield/installation.html

      虽然我现在不能提供它,但我是否可以建议比较 pyephem 和 skyfield 的结果,也许在一个或两个 matplotlib 图中,IOW,skyfield 的结果可能有多大不同/改进?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-31
        • 1970-01-01
        相关资源
        最近更新 更多