观察者位置 (lat/lon)

Position of observer (lat/lon)

我正在玩弄 pyephem 和 jplephem,我似乎无法弄清楚如何使用这些包及时跟踪观察者(或给定 lat/lon/date)的路径。我想做的是记录地球上提供的 lat/long/date 相对于太阳的位置 (x,y,x)。想象一下示踪剂在地球表面生成的路径 w.r.t。太阳.

有没有办法在给定时间轻松获得地球表面某个点相对于地球质心的位置?

提前致谢。

PyEphem 库建立在一个名为 libastro 的天文学库之上,遗憾的是,它不提供对其底层向量的访问。而 jplephem 对行星在太阳系中的位置一无所知。

但是为 jplephem 编写的 Skyfield 天文学库可以同时完成这两项工作。以下是找出地球位置相对于太阳的 x、y、z 位置的方法:

from skyfield.api import load, Topos

# Let's consider 72 hours starting at midnight UTC on January 2.

duration_hours = 72

ts = load.timescale()
t = ts.utc(2018, 1, 2, range(duration_hours))

# Load a planetary ephemeris.

planets = load('de421.bsp')
earth, sun = planets['earth'], planets['sun']

# Print where the US Naval Observatory was each hour relative to the Sun.

usno = Topos('38.9215 N', '77.0669 W', elevation_m=92.0)
result = sun.at(t).observe(earth + usno)
for time, position_au in zip(t, result.position.au.T):
    print(time.utc_jpl(), position_au)

生成的行如下所示:

A.D. 2018-Jan-04 21:00:00.0000 UT [-0.24130305  0.87456403  0.37915831]
A.D. 2018-Jan-04 22:00:00.0000 UT [-0.2420075   0.87440863  0.37908723]
A.D. 2018-Jan-04 23:00:00.0000 UT [-0.24271409  0.87425296  0.37901595]

这是 Skyfield 的主页:

http://rhodesmill.org/skyfield/