SPICE/SpiceyPy学习记录整理(五)-- 时空坐标转换

本文详细介绍了SPICE中的时间坐标转换函数,包括UTC、TDB、TDT等之间的转换,以及与航天器时钟SCLK的交互。同时概述了空间坐标系的概念和在SPICE中的应用,展示了如何通过API获取和转换不同坐标系中的位置数据。

目录

一、时间坐标转换

1.1 时间系统和内核

1.2 时间转换函数

1.2.1 UTC\TDB\TDT\TT String To Numeric ET 

1.2.2 Spacecraft Clock String To Numeric Ephemeris Time

1.2.3 Numeric Ephemeris Time To a String

 1.2.4 Numeric Ephemeris Time To Spacecraft Clock String

1.2.5 Numeric Ephemeris Time To Local Solar Time String

1.2.6 总结图

 二、空间坐标转换


SPICE官方课程学习文档链接:

https://naif.jpl.nasa.gov/naif/tutorials.html

一、时间坐标转换

1.1 时间系统和内核

        用户程序的时间输入和输出通常是三种时间系统中表示历元的字符串,分别是历元时间(TT/TDB)、协调世界时(UTC)、航天器时钟(SCLK)。内核文件中的时间戳,以及读取内核数据和计算派生几何图形的SPICE例程的时间输入和输出都是用双精度数字来表示这两个时间系统中的历元,其中数值星历时间(TDB)是从J2000时刻开始计算的星历秒数(注意此处的J2000时刻是TBD系统下的而不是UTC系统下的)。SPICE提供了在这些字符串和数字表示之间进行转换的例程,在SPICE API中用作参数的时间字符串必须在引号中提供,其中Matlab和Python都是用单引号

1.2 时间转换函数

1.2.1 UTC\TDB\TDT\TT String To Numeric ET 

STR2ET(string,ET)

        该函数需要LSK内核,几乎可以转换SPICE时间子系统已知的任何时间字符串格式,SCLK除外,例如:

'1996-12-18T12:28:28'
'1978/03/12 23:28:59.29'
'Mar 2, 1993 11:18:17.287 p.m. PDT'
'1996-12-18T12:28:28Z'
'1995-008T18:28:12'
'1993-321//12:28:28.287'
'2451515.2981 JD'
'jd 2451700.05 TDB'
'1988-08-13, 12:29:48 TDB'
'1992 June 13, 12:29:48 TDT'

1.2.2 Spacecraft Clock String To Numeric Ephemeris Time

SCS2E(scid,string,ET)

 该函数需要LSK内核和SCLK内核,例如:

'5/65439:18:513' (VGR1)
'946814430.172' (MRO)
'1/0344476949-27365' (MSL)

1.2.3 Numeric Ephemeris Time To a String

        时间转换为字符串,格式为Calendar、DOY或Julian Date,时间系统为UTC、TDB或TDT:

TIMOUT(et,fmtpic,STRING)

        fmpic是一个输出时间字符串格式规范,在设置输出时间字符串的外观和使用的时间系统(UTC, TDB, TDT)方面给用户很大的灵活性。

图 1 fmtpic格式规范

 1.2.4 Numeric Ephemeris Time To Spacecraft Clock String

SCE2S(scid,et,SCLKCH)

        输出的SCLK字符串如下例所示:

1/05812:00:001 (Voyager 1 and 2)
1/1487147147.203 (Cassini, MRO)
1/0101519975.65186 (MEX, VEX, Rosetta)

1.2.5 Numeric Ephemeris Time To Local Solar Time String

ET2LST(et,body,long,type,HR,MN,SC,TIME,AMPM)

          要求SPK和PCK内核,计算相对于太阳的行星位置和行星自转。

1.2.6 总结图

图 2 时间系统转换总结图

 二、空间坐标转换

         一个参考系是由三个相互正交的、可能与时间相关的、单位长度方向向量的有序集合指定的,它有一个相关联的中心,而坐标系则指定了在参考系内定位点的机制,当生成或使用状态(位置和速度)或方向(指向)数据时,需要理解所使用的参考系和坐标系。

        所有的参考系都满足右手定则,并且参考系的中心必须是SPICE星历对象,其位置必须与框架的原点(0,0,0)一致。所有惯性参考系的中西都是太阳系统质量中心,自然天体固连坐标系中心则是天体中心。

图 3 坐标系转换API
图 4 坐标系转换API示例
CALL SPKPOS('SUN',ET,'CASSINI_ISS_NAC','LT+S','CASSINI',SUNVEC,LT)
ANGLE = VESP(NAC_BORESIGHT_nac,SUNVEC)

清理 Maven 下载的依赖文件和缓存可以通过多种方式进行,具体取决于用户希望清理的内容(全部缓存、特定项目缓存、下载失败的依赖等)以及使用环境(命令行或 IDE)。以下是几种常见的清理方法: ### 手动删除本地仓库中的依赖文件 Maven 的依赖文件默认存储在本地仓库目录中(通常是 `~/.m2/repository`)。如果需要彻底清除所有依赖缓存,可以手动删除该目录下的所有内容。当再次执行 `mvn install` 或其他构建命令时,Maven 会重新从远程仓库下载所需的依赖文件[^1]。 ### 使用 Maven 命令清理缓存 Maven 提供了内置命令用于清理本地依赖缓存: - **清理所有依赖缓存** 运行以下命令将删除本地仓库中的所有依赖文件,并在下次构建时重新下载: ```bash mvn dependency:purge-local-repository ``` - **清理特定项目的依赖缓存** 如果只想清理某个特定项目的依赖缓存,可以在命令中指定其坐标(groupId 和 artifactId): ```bash mvn dependency:purge-local-repository -DreResolve=com.example:project-name ``` 此方式适用于只需要清理部分模块的历史缓存,而不影响其他项目的依赖文件[^2]。 ### 在 IntelliJ IDEA 中清理 Maven 缓存 如果使用 IntelliJ IDEA 管理 Maven 项目,有时即使执行了 `mvn clean install` 也无法解决缓存导致的问题。此时可以尝试以下操作: 1. 关闭 IDEA。 2. 删除项目中的 `.iml` 文件(例如 `xxx.iml`)。 3. 重新打开 IDEA 并重新加载 Maven 项目。 此外,也可以通过菜单栏选择 `File > Invalidate Caches / Restart` 来清除 IDEA 自身的缓存并重启开发环境[^3]。 ### 清理下载失败的依赖 对于因网络问题或其他异常导致的不完整依赖下载,Maven 会在仓库路径下生成带有 `lastUpdated` 后缀的临时文件。这些文件不会自动删除,可能会影响后续构建过程。可以使用批处理脚本清理此类文件: ```bat set REPOSITORY_PATH=你的maven仓库全路径 (例如:D:\maven-repository) rem 正在搜索... for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do ( del /s /q %%i ) rem 搜索完毕 pause ``` 将上述代码保存为 `.bat` 文件并运行,即可批量删除所有包含 `lastUpdated` 的临时文件[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值