SPICE系统中一个非常重要的概念就是内核,spiceypy的核心也是调用内核数据进行相关的处理,这里先简要介绍元内核 (MK Meta-Kernel)、闰秒内核 ( LSK, Leapseconds Kernel )、航天器和行星星历(SPK , Spacecraft and Planet Ephemeris Kernel)、行星常数内核 ( PCK, Planetary Constants Kernel )

以UTC、ET时间和航天器时间转换为例介绍,MK、LSK、相关函数

一、时间尺度转换

UTC 协调世界时
通常是日月年的字符形式,不利于科学计算因此需要转化为数值型的时间尺度
ET 历书时(Ephemeris Time)
描述天体运动的方程式中采用的时间,或天体历表中应用的时间。它是由天体力学的定律确定的均匀时间,又称牛顿时,最初被设计为一种统一时间尺度的方法,以摆脱地球自转不规则的影响。主要是他为数值型的时间尺度。

UTC与ET存在不规则变化的差异,称为闰秒,因此转换需要闰秒内核LSK。相关内核文件可在SPICE网站中下载,SPK、LSK主要在通用内核目录下
https://naif.jpl.nasa.gov/pub/naif/

航天器计时(Spacecraft Clock Time),航天器携带的时钟计时,为了测量航天器的空间轨迹,导航员使用这些计时器来精确跟踪信号的发送和接收时间。利用这些时间测量来计算航天器的确切距离、速度和行进方向。这一参数需要加载航天器星历内核SCLK,可在SPICE网站中相关任务目录下下载

spiceype的绝大多数程序需要加载内核,且涉及多过程的情况下需要加载多个内核

1、内核的加载与卸载

import spiceypy
kernel = "D:\\Spice\\kernel\\naif0012.tls"  # 内核文件路径
# 载入内核文件
spiceypy.furnsh(kernel)
# 卸载内核文件
spiceypy.unload( kernel )

2、元内核的加载

由于程序常常涉及大量内核的加载,SPICE提供元内核MK形式的加载,加载方式同上,元内核文件构建
,只需新建txt按如下格式写入内核路径即可。

\begindata
KERNELS_TO_LOAD = ( 'E:/working/shallow/Spice/kernel/naif0012.tls','E:/Spice/kernel/lro_clkcor_2009210_v00.tsc')
\begintext

\begindataPATH_VALUES     = ( 'cspice/kernels/fk','cspice/kernels/pck','cspice/kernels/lsk','cspice/kernels/spk' )PATH_SYMBOLS    = ( 'FK', 'PCK', 'LSK', 'SPK' )KERNELS_TO_LOAD = ( '$FK/earth_assoc_itrf93.tf','$PCK/earth_predict.bpc','$PCK/earth_720101_070426.bpc','$PCK/earth_latest_high_prec.bpc','$PCK/pck00010.tpc','$LSK/latest_leapseconds.tls','$SPK/de440s.bsp' )\begintext

3、时间转换函数

 def convtm(time):# 元内核的加载kernel = "D:\\Spice\\kernel\\convtm.txt" spiceypy.furnsh(kernel)# 航天器编号  LRO探测器的航天器编号 可在SLCK中找到,航天器为负的,星体编号为正SCLKID = -85utctim = timeprint( 'Converting UTC Time: {:s}'.format( utctim ) )# UTC转ET 世界时转历书时et = spiceypy.str2et( utctim )print( '   ET Seconds Past J2000: {:16.3f}'.format( et ) )#ET 历书时字符串形式calet = spiceypy.timout( et, 'YYYY-MON-DDTHR:MN:SC ::TDB' )print( '   Calendar ET (timout):  {:s}'.format( calet ) )# 转化为航天器计时 sclkst = spiceypy.sce2s( SCLKID, et )print( '   Spacecraft Clock Time: {:s}'.format( sclkst ) )spiceypy.unload( kernel )
convtm("2009-06-30T15:11:03")#结果展示
Converting UTC Time: 2009-06-30T15:11:03
ET Seconds Past J2000:    299646729.184
Calendar ET (timout):  2009-JUN-30T15:12:09
Spacecraft Clock Time: 1/0268067462.63877

参考内容:

相关概念百度百科
https://spiceypy.readthedocs.io/en/master/insitu_sensing.html

SpiceyPy-内核与时间尺度转换相关推荐

  1. 怎么查linux的虚拟内核,Linux 内核 虚拟地址 物理地址 转换

    这里只分析分配连续物理地址的函数.对于 vmalloc() 这种分配非连续物理地址的函数不在本记录范围之内. 1.kmalloc() 分配连续的物理地址,用于小内存分配. 2.__get_free_p ...

  2. Linux用户态和内核态

    究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子: 1)例 ...

  3. LINUX内核分析第八周总结:进程的切换和系统的一般执行过程

    一.进程调度与进程切换 1.不同的进程有不同的调度需求 第一种分类: I/O密集型(I/O-bound) 频繁的进行I/O 通常会花费很多时间等待I/O操作的完成 CPU密集型(CPU-bound) ...

  4. Linux预备知识(三):系统调用-用户态/内核态

    1)示例 void testfork() { if(0 = = fork()){ printf("create new process success!\n"); }printf( ...

  5. Linux 操作系统原理 — 内核态与用户态

    目录 文章目录 目录 Linux 的内核态与用户态 系统调用(System Call) Shell 用户态和内核态的切换 进程的用户空间和内核空间的内存布局 内核空间 用户空间 Linux 的内核态与 ...

  6. Linux 内核详解以及内核缓冲区技术

    Linux 内核简介 现在让我们从一个比较高的高度来审视一下 GNU/Linux 操作系统的体系结构.您可以从两个层次上来考虑操作系统,如图 2 所示. 图 2. GNU/Linux 操作系统的基本体 ...

  7. 2018-2019-1 20189206 《Linux内核原理与分析》第六周作业

    linux内核分析学习笔记 --第五章 系统调用的三层机制 学习重点--深入理解系统调用的过程 给MenuOS添加命令 添加命令的方式较为简单,在LinuxKernel/menu/test.c目录下, ...

  8. 多线程之:用户态和内核态的区别

    一:大话版用户态和内核态 (1)用户态和内核态的概念? --->内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序 ---& ...

  9. 最小的linux内核编译,Linux最小内核移植

    class="markdown_views prism-github-gist"> Linux内核编译 本篇博客来自凌云实验室开发板介绍及其烧录学习笔记 1.内核介绍 一种开 ...

最新文章

  1. echarts前后端交互数据_SpringBoot2.0实战(26)整合SpringSecurity前后端分离JSON交互...
  2. 网络资源(4) - extJS视频
  3. cpio/rpm2cpio 命令
  4. 如何让类对象只在栈(堆)上分配空间?(转)
  5. binlog二进制文件解析
  6. 基于JAVA+Servlet+JSP+MYSQL的党员信息管理系统
  7. git push 使用总结
  8. 高等数学_第一章第一节_映射与级数
  9. 仪表指针样式_PPT标准图表太丑?试试仪表盘图表!
  10. 数据结构(直接插入排序、希尔排序、直接选择排序、堆排序、冒泡排序、快速排序)
  11. [原创]开心农场助手V1.21 发布
  12. 五十位名嘴用文字悼念心中永远的榜样罗京
  13. (CVPR-2020)Strip Pooling:重新思考场景解析的空间池化
  14. Android 软件行为监控系统 的原理 主要是利用binder机制原理添加一个filter
  15. 2021-11-09水洗碳带有什么特点
  16. torch_points_kernels遭遇 ModuleNotFoundError: No module named ‘torch_points_kernels.points_cpu‘
  17. 小米6线刷兼救砖_解账户锁_纯净刷机包_教程
  18. 【C语言】函数参数试探:传指针与传引用——以队列为例
  19. 【转】钓鱼邮件攻击检测
  20. 【String字符串分割以及字符串截取】

热门文章

  1. wps大纲栏显示在右边_5分钟帮你搞定PPT!金山偷偷上线WPS智能PPT完全免费
  2. 关于H5页面在iPhoneX刘海屏适配(转)
  3. java mocked,JMockit 中被 Mocked 的对象属性及方法的默认值
  4. js之原生js轮盘抽奖实例分析(幸运大转盘抽奖)
  5. 【开发经验】java代码中实现限流
  6. 那周余嘉熊掌将得队对男上加男,强人所男、修!咻咻! 团队的Beta产品测试报告...
  7. 转微信小程序行业解析
  8. Reactive 响应式编程简单使用
  9. 卧室.餐厅.客厅要选择挂什么油画?
  10. android 人物行走动画,android 3D 游戏实现之人物行走(MD2)