1. 首先,需要安装几个包
    jplephem,astropy,numpy
    直接pip安装即可
  2. 需要下载NASA的行星历表,jplephem的文档里面讲了怎么下载
    jplephem的官方文档,下面的例子中使用的是de421
  3. 代码
#计算金星凌日发生的时间(1900-2050)
from jplephem.spk import SPK
from astropy.time import Time
import numpy as npstart_time = '1900-01-03T00:00:00.0'
end_time = '2050-06-10T00:00:00.0'#起止时间st = Time(start_time, format='isot')
et = Time(end_time, format='isot')st_jd=st.jd
et_jd=et.jd                #将起止时间转换为儒略历bins=(et_jd-st_jd)*24      #每隔一个小时计算是否发生金星凌日if int(bins+1)-bins<0.5:bins+=1times=np.linspace(st_jd,et_jd,int(bins)+1)kernel = SPK.open('de421.bsp')       #读入JPL星表v_position = kernel[0,2].compute(times)#金星相对太阳系质心的位置
e_position = kernel[0,3].compute(times)#地球相对太阳系质心的位置ev_deg=np.zeros(len(times))for i in range(len(times)):ev_deg[i]=np.arccos(e_position[:,i].dot(v_position[:,i])/np.linalg.norm(e_position[:,i])/np.linalg.norm(v_position[:,i]))*180/np.pi#计算金星太阳连线和地球太阳连线的夹角transit_deg=[x for x in ev_deg if x<=0.25]#夹角大于太阳角直径的一半即可判断为凌日ind_dict = dict((k,i) for i,k in enumerate(ev_deg))
inter = set(ind_dict).intersection(transit_deg)
indices = [ ind_dict[x] for x in inter ]
#找到金星凌日发生时的索引indices.sort()#顺序排列duration = Time(times[indices], format='jd')
duration = Time(times[indices], format='jd')
if len(duration)!=0:utc_duration=duration.fits  #将儒略历时间转换为普通时间#输出金星凌日发生的时间all_transit=times[indices]transit_bin = [all_transit[i+1]-all_transit[i] for i in range(len(all_transit)-1)]knot=[i for (i, v) in enumerate(transit_bin) if v >100]print('from ',utc_duration[0],'to ',utc_duration[knot[0]])for i in range(len(knot)-1):print('from ',utc_duration[knot[i]+1],'to ',utc_duration[knot[i+1]])print('from ',utc_duration[knot[-1]+1],'to ',utc_duration[-1])
else:utc_duration=[]

同理,也可以计算水星凌日,日食,外行星冲等的时间

python计算金星凌日相关推荐

  1. 使用OpenCV和Python计算图像的“彩色度”

    使用OpenCV和Python计算图像"彩色度" 1. 效果图 2. 炫彩度量方法是什么? 3. 源代码 参考 你是否尝试过计算每个图像的炫彩值,并根据炫彩值对自己的图像数据集进行 ...

  2. Python计算训练数据集(测试集)中某个分类变量阴性(阳性)标签样本的不同水平(level)或者分类值的统计个数以及比例

    Python计算训练数据集(测试集)中某个分类变量阴性(阳性)标签样本的不同水平(level)或者分类值的统计个数以及比例 目录

  3. Python计算两个numpy数组的交集(Intersection)实战:两个输入数组的交集并排序、获取交集元素及其索引、如果输入数组不是一维的,它们将被展平(flatten),然后计算交集

    Python计算两个numpy数组的交集(Intersection)实战:两个输入数组的交集并排序.获取交集元素及其索引.如果输入数组不是一维的,它们将被展平(flatten),然后计算交集 目录

  4. Python使用datetime中的timedelta模块实现时间增减:python计算100天后是哪年那月那日?

    Python使用datetime中的timedelta模块实现时间增减:python计算100天后是哪年那月那日? 目录

  5. python计算特征的统计值并文本输出

    python计算特征的统计值并文本输出 # 输出统计分位数 df.describe(percentiles=[0.05, 0.25, 0.5, 0.75, 0.95]) featname:A => ...

  6. python计算特征与目标的相关性并可视化

    python计算特征与目标的相关性并可视化 pandas计算相关性 # 相关性 tips.corr() Out[2]: total_bill tip size total_bill 1.000000 ...

  7. python计算时间差

    python计算时间差 # 使用datetime 和 timedelta import datetime old_time = datetime.datetime.now() print(old_ti ...

  8. python计算两个字典的相同点(从key、value、item角度)

    python计算两个字典的相同点(从key.value.item角度) 字典是由一个一个的 key-value 构成的,key 是找到数据的关键,Python 对字典的操作都是通过 key 来完成的. ...

  9. python计算两个向量之间的欧氏距离

    python计算两个向量之间的欧氏距离 代码: import numpy as np # 向量的值 feature_1 = np.array([1,2,3]) feature_2 = np.array ...

  10. python计算文件md5值_用python 正确计算大文件md5 值

    python 计算文件的md5值很方便,但如果只是简单的把文件都入到内存中,大文件会导致问题,一般采用切片的方式分段计算,下面的几个函数可以很好的解决这个问题. 使用 hashlib import h ...

最新文章

  1. python数据分析及展示(一)
  2. 深度信念网络Deep Belief Networks资料汇总
  3. 详解单链表经典OJ题
  4. 在翻译群里看到的一个句子的翻译
  5. 怎样建设WEB Cache
  6. php中添加分类的界面设计,zblog php新增自定义分类模板和文章模板
  7. 金士顿 datatraveler写保护_【脑洞大开】金士顿推出限量版羽毛球闪存盘
  8. input长度随输入内容动态变化 input光标定位在最右侧
  9. Oracle 11g 间隔分区(INTERVAL)批量规范命名
  10. 关于指针int *p=a和*p=a的纠正
  11. 校园网下实验室的服务器如何实现远程登录
  12. mfc 使用flash控件注意事项
  13. 什么是 PHP? 为什么用 PHP? 有谁在用 PHP?
  14. IT人,更应该要注意保养!!
  15. mysql怎样发给别人_怎么把数据库发给别人
  16. wifi 验证加密 总结
  17. windows7经典开机音乐_糖豆人加入索尼克皮肤;三国群英传8上线Steam;疑似PS5开机音效...
  18. 【Python】利用tkinter开发测手速小游戏
  19. sync.WaitGroup的用法
  20. initialization of 'XXX' is skipped by 'case' label 原因及解决办法

热门文章

  1. 熔断漏洞和幽灵漏洞_崩溃和幽灵:发现新的英特尔CPU漏洞
  2. 什么是驱动程序?为什么要用驱动程序?
  3. relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol may bind externally can not be used 【ARM64平台编译】
  4. 知乎上的那些神回复,已笑趴~~~
  5. 数据开发者启示录:《我,阿里P7,找不到工作》
  6. HTML+CSS+JS 制作简单动漫网页
  7. 梁念坚与鲍尔默大唱反调
  8. python黑魔法指南_python黑魔法
  9. windows11安装日语输入法(添加输入法)
  10. 京东手机评论分析(二):关键词提取