3

我刚刚开始使用PyEphem. 我的当务之急是,给定日期和时间,用latitude-longitude数值计算地球上的次太阳点。我会深入PyEphem研究解决这个问题,但如果有人已经这样做了,我会很感激示例代码。

4

2 回答 2

2

我去寻找与OP相同的答案。许多帖子“提到”了 PyEphem 是如何走的路,但没有提供实际的例子。

这是我计算亚太阳点的工作示例。将所有内容映射到 -180 到 + 180 度之间的经度。

greenwich = ephem.Observer()
greenwich.lat = "0"
greenwich.lon = "0"
greenwich.date = datetime.utcnow()
sun = ephem.Sun(greenwich)
sun.compute(greenwich.date)
sun_lon = math.degrees(sun.ra - greenwich.sidereal_time() )
if sun_lon < -180.0 :
  sun_lon = 360.0 + sun_lon 
elif sun_lon > 180.0 :
  sun_lon = sun_lon - 360.0
sun_lat = math.degrees(sun.dec)
print "Subsolar Point Sun Lon:",sun_lon, "Lat:",sun_lat

我不是 PyEphem 方面的专家,可能有更好的方法——但到目前为止,我的测试已经满足了我的目的。

ps是的..上面的格林威治实际上并没有设置为实际的纬度/经度......实际上只有0.0的经度才能获得我们需要的适当恒星时间。

于 2017-07-10T05:54:26.817 回答
0

我无法从今天早上的位置测试实际代码,但是:赤纬φ的物体应该始终位于地球上具有纬度φ的一系列位置的正上方,因此纬度数由身体的.dec属性直接提供给您(或.a_dec.g_dec取决于您的应用程序)。

现在,经度呢?

想象一下这种情况,我认为这种情况大约每天都会发生一次,当时格林威治在 0° 经度处抬头看到天空中 0° 赤经的线就在头顶。在那一刻,天体在赤经θ处将俯视经度θ,假设经度为正向东,就像 PyEphem 的情况一样。

现在,如果格林威治正在寻找一条非零的赤经线呢?然后在我看来,我们只需要从物体的赤经中减去它就可以得到经度,因为随着时间的推移,地球转动,赤经线越过格林威治,分配给它们的赤经也越来越大,任何给定的天体都会向西穿过地球,它的经度会随着它穿过西半球而变小,然后变成负数。

在任何给定时刻格林威治的赤经头顶线都可以通过在 0° 经度处创建一个观察者并询问.sidereal_time()我是否正确回忆快速参考来确定。所以我认为身体下方的经度可能是:

lon = body.ra - greenwich.sidereral_time()

我将在今天晚些时候对此进行快速测试,看看是否能得出合理的数字。

于 2013-06-24T11:50:33.393 回答