首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎么能让Skyfield同意太阳衰落的航海年历呢?

我怎么能让Skyfield同意太阳衰落的航海年历呢?
EN

Stack Overflow用户
提问于 2016-07-23 08:09:46
回答 1查看 433关注 0票数 2

这里有一个示例脚本,使用PyEphem和Skyfield计算2016/7/23号格林尼治时间00:00太阳的倾斜度:

代码语言:javascript
复制
import ephem

sun1 = ephem.Sun('2016/7/23 00:00:00')
dec1 = sun1.dec

print 'PyEphem Declination:', dec1

#-------------------------------------
from skyfield.api import load

planets = load('de421.bsp')

earth = planets['earth']
sun2 = planets['sun']

ts = load.timescale()
time2 = ts.utc(2016, 7, 23)

dec2 = earth.at(time2).observe(sun2).apparent().radec()[1]

print 'Skyfield Declination:', dec2

当我运行这个时,我得到:

代码语言:javascript
复制
PyEphem Declination: 20:01:24.0
Skyfield Declination: +20deg 04' 30.0"

航海年历给出了当时的20deg 01.4‘。我不知道我做错了什么来造成这种差异。谢谢!

我使用Python 2.7和Skyfield 0.8。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-26 11:37:12

PyEphem给你的答案与历书完全一致,但表示为传统的小时-分钟-秒弧,而不是小时和十进制分钟。如果用弧秒表示,作为弧分钟量1.4的一部分的分数1.4变成60×0.4 = 24弧秒。所以:

20°1.4‘=20°1’24“

在默认情况下,Skyfield为您提供永久GCRS坐标系中的坐标,这是J2000的更新替代。但是年鉴并没有使用2000年的赤道和春分坐标系,而是使用它所报告的每一个基准的本年度--实际上是精确的时刻。若要要求Skyfield以2016年坐标表示斜度,请给它epoch"date"

代码语言:javascript
复制
from skyfield.api import load

ts = load.timescale()
planets = load('de421.bsp')

earth = planets['earth']
sun = planets['sun']

t = ts.utc(2016, 7, 23)
ra, dec, distance = earth.at(t).observe(sun).apparent().radec(epoch='date')
print(dec)

结果:

代码语言:javascript
复制
+20deg 01' 24.0"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38539625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档