观察员的位置(纬度/经度)

时间:2017-10-04 18:35:58

标签: python-3.x pyephem

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

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

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/