参考代码:

本文章根据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双行轨道数解析相关推荐

  1. 使用TLE(双行)根数计算出轨道数据以供Cesium使用

    使用TLE(双行)根数计算出轨道数据以供Cesium使用 资源: satellite.js:https://download.csdn.net/download/qq_41176306/1936095 ...

  2. 凹形长方形的周长计算_【原创】奥数解析(二十九)长方形和正方形的周长

    四年级奥数解析(二十九)长方形和正方形的周长 <奥赛天天练>第29讲<长方形和正方形的周长>,学习求一些较复杂的周长问题. 一.长方形.正方形周长的基本公式为: 长方形周长=( ...

  3. Rust 1.7.0 处理命令行參数

    std是 Rust 标准函数库: env 模块提供了处理环境函数. 在使用标准函数库的时候,使用 use 导入对应的 module . 一.直接输出 use std::env;fn main(){fo ...

  4. Excel中如何将一列(行)数同时加减乘除同一个数

    Excel中如何将一列(行)数同时加减乘除同一个数 实验要处理大量的数据,需要将这些数的纵坐标放在同一个基准上(x=0的基准线)进行比较.(方法来源百度,具体出处不记得了,侵删) 比如这一列数,我需要 ...

  5. Excel 如何间隔N行取数

    Excel 如何间隔N行取数 文章目录 Excel 如何间隔N行取数 隔N行取数 OFFSET函数的使用 隔N行取数 假设有一列数据,现需要每隔N行取出其中的一个数,该怎么办? OFFSET函数的使用 ...

  6. C#双行计算器和单行计算器

    初学winform,写了一个单行计算器和一个双行计算器.主界面的和代码如下. 单行计算器: using System; using System.Collections.Generic; using ...

  7. java双行合一_计算机四级操作员考证试题理论题目

    这个问题我们可以方便利用WORD中的( A )功能来解决. A.邮件合并 B.邮件发送 C.邮件转发 D.邮件接收 49.以下叙述中( ABCD )是邮件合并的功能.(多选) A.打印信封 B.套用信 ...

  8. 【jiasuba】鲜为人知的Word双行合一设置

    双行合一是Microsoft Office Word软件的一项编辑功能,在编辑Word文档的过程中,有时需要在一行中显示两行文字,然后在相同的行中继续显示单行文字,实现单行.双行文字的混排效果.这时可 ...

  9. phpmyadmin 导入csv时报错: CSV 输入的第 1 行字段数有错

    phpMyAdmin导入csv文件时报错显示:CSV 输入的第 1 行字段数有错 一开始以为是列数不对,结果检查了发现列数并无问题,且分隔符也是正常的逗号.后来发现一切都是因为保存csv时没选对保存类 ...

最新文章

  1. Netty:Java 领域网络编程的王者
  2. hdu 5199 Gunner(STL之map,水)
  3. [Qt教程] 第32篇 网络(二)HTTP
  4. html2canvas的踩坑之路
  5. (9) ebj学习: Jpa的增删查改,CURD方法监听和命名查询
  6. [题解]Codeforces Round #519 - B. Lost Array
  7. 高清、免版权美图资源大全
  8. Python批量提取PDF文件中的文本
  9. C语言之字符串探究(九):空格去除——trim系列
  10. 小学计算机课程报告怎么写,小学计算机课论文摘要怎么写 小学计算机课论文摘要范文参考...
  11. 一个开源vue网站博客,nuxt开源网站,前后端分离项目
  12. webpack3基础总结
  13. python生成双层pdf
  14. 练习Go语言-HTTP压力测试.md
  15. GB28181国标流媒体服务(LiveGBS)-支持海康8700等联网网关通过接入实现web端无插件直播...
  16. 我用3天时间,整理了几十个项目的Python资料
  17. 高斯启发式Gaussian Heuristic 格理论相关知识
  18. css中relative、absolute和float
  19. 白马非马的面向对象分析
  20. jQuery、Ajax分页

热门文章

  1. 基于SSM的书店图书销售管理系统
  2. 从电子请柬切入,顺利融资3000万美金,“低频”的婚庆市场应该怎么做?
  3. 精益画布_敏捷项目管理-精益画布
  4. 利用R处理PDF文件
  5. c语言p1口亮灯,单片机实验开发与微机原理接口技术综合实验装置,上海求育
  6. macOS Swift精品项目之查找图像的主色App 使用CIE LAB颜色空间和k-means聚类算法(教程含源码)
  7. 重磅!涵盖全微服务操作的Spring Cloud 文档竟出自Alibaba
  8. Java项目:SSM药品进货销售管理系统
  9. 运动控制系统 (1)概念、组成、发展
  10. 支付宝和微信开发文档