TLE双行轨道数解析
参考代码:
本文章根据tle2czml插件改编:tle2czml
引用插件:
朱利安时间转换工具:julian
yarn add julian
js日期处理类库:momentjs
yarn add moment
satellite.js:satellite.js
yarn add satellite.js
啥也不说了,上代码,因为我只是代码搬运工:
const satellite = require('satellite.js')
const moment = require('moment')
const julian = require('julian')exports const tleToCzml = (tleLine = [],sat_name = "czml name"
) => {let res = []; //result for positionlet satrec //Set satrecsatrec = satellite.twoline2satrec(tleLine[0], tleLine[1]);//to go from RAD/DAY -> REV/DAY: rad * 1440 * 0.159155//to go from REV/PER DAY to MINS/REV -> 1440/RevPerDaylet totalIntervalsInDay = satrec.no * 1440 * 0.159155; //1440 = min && 0.159155 = 1turnlet minsPerInterval = 1440 / totalIntervalsInDay; // mins for 1 revolution around earthlet intervalTime = moment(julian.toDate(satrec.jdsatepoch).toISOString()).toISOString()//set intervals let initialTime = moment(julian.toDate(satrec.jdsatepoch).toISOString()).toISOString();//start date of TLE let endTime = moment(julian.toDate(satrec.jdsatepoch).toISOString()).add(120, 'h').toISOString();; //add 120hours(5days)let leadIntervalArray = [];let trailIntervalArray = [];console.log("Setting intervals...");for (let i = 0; i <= 7200; i += minsPerInterval) {//7200===120hours===5days(which is our end time)if (i === 0) { // intial interval intervalTime = moment(intervalTime).add(minsPerInterval, 'm').toISOString();let currentOrbitalInterval = {"interval": `${initialTime}/${intervalTime}`,"epoch": `${initialTime}`,"number": [0, minsPerInterval * 60,minsPerInterval * 60, 0]}let currTrail = {"interval": `${initialTime}/${intervalTime}`,"epoch": `${initialTime}`,"number": [0, 0,minsPerInterval * 60, minsPerInterval * 60]}leadIntervalArray.push(currentOrbitalInterval);trailIntervalArray.push(currTrail);}else { //not initial so make intervals let nextIntervalTime = moment(intervalTime).add(minsPerInterval, 'm').toISOString();let currentOrbitalInterval = {"interval": `${intervalTime}/${nextIntervalTime}`,"epoch": `${intervalTime}`,"number": [0, minsPerInterval * 60,minsPerInterval * 60, 0]}let currTrail = {"interval": `${intervalTime}/${nextIntervalTime}`,"epoch": `${intervalTime}`,"number": [0, 0,minsPerInterval * 60, minsPerInterval * 60]}intervalTime = moment(intervalTime).add(minsPerInterval, 'm').toISOString();leadIntervalArray.push(currentOrbitalInterval);trailIntervalArray.push(currTrail);}}let sec = 0;for (let i = 0; i <= 432000; i++) { //iterates every second (86400sec in 1day)satrec = satellite.twoline2satrec(tleLine[0], tleLine[1]);let positionAndVelocity = satellite.sgp4(satrec, i * 0.0166667); // 0.0166667min = 1seclet positionEci = positionAndVelocity.position;positionEci.x = positionEci.x * 1000;positionEci.y = positionEci.y * 1000;positionEci.z = positionEci.z * 1000;res.push(i, positionEci.x, positionEci.y, positionEci.z);sec += 900;}//set initial object start for czmllet initialCZMLProps = [{"id": "document","name": "CZML Point - Time Dynamic","version": "1.0","clock": {"interval": `${initialTime}/${endTime}`,"multiplier": 1,"range": "LOOP_STOP","step": "SYSTEM_CLOCK"}},{"id": `${sat_name}`,"name": `${sat_name}`,"availability": `${initialTime}/${endTime}`,"description": "Insert the altitude here??","label": {"fillColor": {"rgba": [255, 0, 255, 255]},"font": "11pt Lucida Console","horizontalOrigin": "LEFT","outlineColor": {"rgba": [0, 0, 0, 255]},"outlineWidth": 2,"pixelOffset": {"cartesian2": [12, 0]},"show": true,"style": "FILL_AND_OUTLINE","text": `${sat_name}`,"verticalOrigin": "CENTER"},"path": {"show": [{"interval": `${initialTime}/${endTime}`,"boolean": true}],"width": 1,"material": {"solidColor": {"color": {"rgba": [255, 0, 255, 255]}}},"resolution": 120,"leadTime": leadIntervalArray,"trailTime": trailIntervalArray},"model":{"show": true,"gltf": "../../models/satg.gltf",//Animation(s)."minimumPixelSize": 99,},"position": {"interpolationAlgorithm": "LAGRANGE","interpolationDegree": 2,"referenceFrame": "INERTIAL","epoch": `${initialTime}`,"cartesian": res}}]return initialCZMLProps;
}
// tle: tle双行轨道数,name:czml节点名称
const czml = tleToCzml(tle, name);
// 生成的czml可直接导入Cesium使用
TLE双行轨道数解析相关推荐
- 使用TLE(双行)根数计算出轨道数据以供Cesium使用
使用TLE(双行)根数计算出轨道数据以供Cesium使用 资源: satellite.js:https://download.csdn.net/download/qq_41176306/1936095 ...
- 凹形长方形的周长计算_【原创】奥数解析(二十九)长方形和正方形的周长
四年级奥数解析(二十九)长方形和正方形的周长 <奥赛天天练>第29讲<长方形和正方形的周长>,学习求一些较复杂的周长问题. 一.长方形.正方形周长的基本公式为: 长方形周长=( ...
- Rust 1.7.0 处理命令行參数
std是 Rust 标准函数库: env 模块提供了处理环境函数. 在使用标准函数库的时候,使用 use 导入对应的 module . 一.直接输出 use std::env;fn main(){fo ...
- Excel中如何将一列(行)数同时加减乘除同一个数
Excel中如何将一列(行)数同时加减乘除同一个数 实验要处理大量的数据,需要将这些数的纵坐标放在同一个基准上(x=0的基准线)进行比较.(方法来源百度,具体出处不记得了,侵删) 比如这一列数,我需要 ...
- Excel 如何间隔N行取数
Excel 如何间隔N行取数 文章目录 Excel 如何间隔N行取数 隔N行取数 OFFSET函数的使用 隔N行取数 假设有一列数据,现需要每隔N行取出其中的一个数,该怎么办? OFFSET函数的使用 ...
- C#双行计算器和单行计算器
初学winform,写了一个单行计算器和一个双行计算器.主界面的和代码如下. 单行计算器: using System; using System.Collections.Generic; using ...
- java双行合一_计算机四级操作员考证试题理论题目
这个问题我们可以方便利用WORD中的( A )功能来解决. A.邮件合并 B.邮件发送 C.邮件转发 D.邮件接收 49.以下叙述中( ABCD )是邮件合并的功能.(多选) A.打印信封 B.套用信 ...
- 【jiasuba】鲜为人知的Word双行合一设置
双行合一是Microsoft Office Word软件的一项编辑功能,在编辑Word文档的过程中,有时需要在一行中显示两行文字,然后在相同的行中继续显示单行文字,实现单行.双行文字的混排效果.这时可 ...
- phpmyadmin 导入csv时报错: CSV 输入的第 1 行字段数有错
phpMyAdmin导入csv文件时报错显示:CSV 输入的第 1 行字段数有错 一开始以为是列数不对,结果检查了发现列数并无问题,且分隔符也是正常的逗号.后来发现一切都是因为保存csv时没选对保存类 ...
最新文章
- Netty:Java 领域网络编程的王者
- hdu 5199 Gunner(STL之map,水)
- [Qt教程] 第32篇 网络(二)HTTP
- html2canvas的踩坑之路
- (9) ebj学习: Jpa的增删查改,CURD方法监听和命名查询
- [题解]Codeforces Round #519 - B. Lost Array
- 高清、免版权美图资源大全
- Python批量提取PDF文件中的文本
- C语言之字符串探究(九):空格去除——trim系列
- 小学计算机课程报告怎么写,小学计算机课论文摘要怎么写 小学计算机课论文摘要范文参考...
- 一个开源vue网站博客,nuxt开源网站,前后端分离项目
- webpack3基础总结
- python生成双层pdf
- 练习Go语言-HTTP压力测试.md
- GB28181国标流媒体服务(LiveGBS)-支持海康8700等联网网关通过接入实现web端无插件直播...
- 我用3天时间,整理了几十个项目的Python资料
- 高斯启发式Gaussian Heuristic 格理论相关知识
- css中relative、absolute和float
- 白马非马的面向对象分析
- jQuery、Ajax分页
热门文章
- 基于SSM的书店图书销售管理系统
- 从电子请柬切入,顺利融资3000万美金,“低频”的婚庆市场应该怎么做?
- 精益画布_敏捷项目管理-精益画布
- 利用R处理PDF文件
- c语言p1口亮灯,单片机实验开发与微机原理接口技术综合实验装置,上海求育
- macOS Swift精品项目之查找图像的主色App 使用CIE LAB颜色空间和k-means聚类算法(教程含源码)
- 重磅!涵盖全微服务操作的Spring Cloud 文档竟出自Alibaba
- Java项目:SSM药品进货销售管理系统
- 运动控制系统 (1)概念、组成、发展
- 支付宝和微信开发文档