Python 3.x 观察者位置(横向/纵向)

Python 3.x 观察者位置(横向/纵向),python-3.x,pyephem,Python 3.x,Pyephem,我在玩弄pyephem和jplephem,我似乎不知道如何使用这些包及时跟踪观察者(或给定的lat/lon/date)的路径。我想做的是记录地球上提供的纬度/长/日期相对于太阳的位置(x,y,x)。想象一下,地球表面的一个跟踪器在太阳的照射下产生的轨迹 有没有一种方法可以很容易地得到一个点在给定时间内相对于地球重心的位置 提前感谢。PyEphem库是建立在一个名为libastro的天文学库之上的,唉,它不提供对其底层向量的访问。而jplephem对行星在太阳系中的位置一无所知 但是,jpleph

我在玩弄pyephem和jplephem,我似乎不知道如何使用这些包及时跟踪观察者(或给定的lat/lon/date)的路径。我想做的是记录地球上提供的纬度/长/日期相对于太阳的位置(x,y,x)。想象一下,地球表面的一个跟踪器在太阳的照射下产生的轨迹

有没有一种方法可以很容易地得到一个点在给定时间内相对于地球重心的位置


提前感谢。

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的主页:


您可以从JPLEphem获得地球和太阳的位置。你还可以得到地球的详细旋转、进动和章动。现在求出你所喜欢的椭球体(或大地水准面)与地球-太阳矢量在给定时间的交点,也就是说,这个问题太广泛了。如果你有一个具体的编码问题,我很乐意为你提供帮助。哇,这个方法非常简单。非常感谢,布兰登!