Files
vue-ts-example/src/pages/_cesium-demos/_TLE_DATA.ts

189 lines
6.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// eslint-disable no-useless-spread
/* eslint-disable unicorn/numeric-separators-style */
// eslint-disable no-unused-vars
// https://en.wikipedia.org/wiki/Two-line_element_set#Format
export const DEMO_DATA = {
// #############################
tleJson: {
ARG_OF_PERICENTER: 181.9338,
BSTAR: 0.00039937,
CLASSIFICATION_TYPE: 'U',
ECCENTRICITY: 0.7375486,
ELEMENT_SET_NO: 999,
EPHEMERIS_TYPE: 0,
EPOCH: '2025-03-12T15:49:04.420416',
INCLINATION: 19.0363,
MEAN_ANOMALY: 171.615,
MEAN_MOTION: 2.21786616,
MEAN_MOTION_DDOT: -5.0502e-7,
MEAN_MOTION_DOT: 0.00072212,
NORAD_CAT_ID: 63158,
OBJECT_ID: '2025-045B',
OBJECT_NAME: '2025-045B',
RA_OF_ASC_NODE: 63.0294,
REV_AT_EPOCH: 13,
},
get tleLine1() {
return this.tleString.split('\n')[1];
},
get tleLine2() {
return this.tleString.split('\n')[2];
},
get tleName() {
return this.tleString.split('\n')[0];
},
tleString: `2025-045B
1 63158U 25045B 25071.65907894 .00072212 -50502-6 39937-3 0 9999
2 63158 19.0363 63.0294 7375486 181.9338 171.6150 2.21786616 127`,
};
export const TLE_LIST = [
DEMO_DATA.tleString,
...[
`STARLINK-32915
1 63152U 25043W 25070.91668981 .00451203 87802-4 12020-2 0 9994
2 63152 43.0011 279.4620 0003944 269.6759 119.1758 15.93738994 2341`,
`STARLINK-32915 [测修改1]
1 00000U 00000W 25070.91668981 .00000000 00000-0 00000-0 0 0000
2 00000 43.0011 279.4620 0003944 269.6759 119.1758 15.93738994 0000`,
],
];
// 为了twoline2satrec函数需要哪些参数
// https://github.com/shashwatak/satellite-js/blob/0e921026d20b75f42553366994af70eed63a304f/src/io.js#L62
function twoline2satrecFake(longstr1: string, longstr2: string) {
console.group('twoline2satrecFake');
const satrec = {} as Record<string, any>;
satrec.error = 0;
satrec.satnum = longstr1.slice(2, 7);
console.debug(`longstr1.substring(2, 7) :>>`, `"${longstr1.slice(2, 7)}"`);
satrec.epochyr = Number.parseInt(longstr1.slice(18, 20), 10);
console.debug(`longstr1.substring(18, 20) :>>`, `"${longstr1.slice(18, 20)}"`);
satrec.epochdays = Number.parseFloat(longstr1.slice(20, 32));
console.debug(`longstr1.substring(20, 32) :>>`, `"${longstr1.slice(20, 32)}"`);
satrec.ndot = Number.parseFloat(longstr1.slice(33, 43));
console.debug(`longstr1.substring(33, 43) :>>`, `"${longstr1.slice(33, 43)}"`);
satrec.nddot = Number.parseFloat(`.${Number.parseInt(longstr1.slice(44, 50), 10)}E${longstr1.slice(50, 52)}`);
console.debug(`longstr1.substring(44, 50) :>>`, `"${longstr1.slice(44, 50)}"`);
console.debug(`longstr1.substring(50, 52) :>>`, `"${longstr1.slice(50, 52)}"`);
satrec.bstar = Number.parseFloat(
`${longstr1.slice(53, 54)}.${Number.parseInt(longstr1.slice(54, 59), 10)}E${longstr1.slice(59, 61)}`,
);
console.debug(`longstr1.substring(53, 54) :>>`, `"${longstr1.slice(53, 54)}"`);
console.debug(`longstr1.substring(54, 59) :>>`, `"${longstr1.slice(54, 59)}"`);
console.debug(`longstr1.substring(59, 61) :>>`, `"${longstr1.slice(59, 61)}"`);
// satrec.satnum = longstr2.substring(2, 7);
satrec.inclo = Number.parseFloat(longstr2.slice(8, 16));
console.debug(`longstr2.substring(8, 16) :>>`, `"${longstr2.slice(8, 16)}"`);
satrec.nodeo = Number.parseFloat(longstr2.slice(17, 25));
console.debug(`longstr2.substring(17, 25) :>>`, `"${longstr2.slice(17, 25)}"`);
satrec.ecco = Number.parseFloat(`.${longstr2.slice(26, 33)}`);
console.debug(`longstr2.substring(26, 33) :>>`, `"${longstr2.slice(26, 33)}"`);
satrec.argpo = Number.parseFloat(longstr2.slice(34, 42));
console.debug(`longstr2.substring(34, 42) :>>`, `"${longstr2.slice(34, 42)}"`);
satrec.mo = Number.parseFloat(longstr2.slice(43, 51));
console.debug(`longstr2.substring(43, 51) :>>`, `"${longstr2.slice(43, 51)}"`);
satrec.no = Number.parseFloat(longstr2.slice(52, 63));
console.debug(`longstr2.substring(52, 63) :>>`, `"${longstr2.slice(52, 63)}"`);
console.groupEnd();
return satrec;
}
let line1 = '';
line1 += '1'; //
line1 += ' '; //
line1 += '62949'; // 卫星编号
line1 += 'U'; // 卫星分类
line1 += ' ';
line1 += '25';
line1 += '029';
line1 += 'B'.padEnd(3, ' ');
line1 += ' ';
line1 += '25070.91668981'; // 🛰️ 历元时间 25070.91668981(年份 2025第 70 天加 0.91668981 天)
line1 += ' ';
line1 += '.00039463'.padStart(10, ' '); //
line1 += '00000+0'.padStart(9, ' '); //
line1 += '99294-3'.padStart(9, ' '); //
line1 += ' ';
line1 += '0';
line1 += ' ';
line1 += '999'.padStart(4, ' ');
line1 += '0';
let line2 = '';
line2 += '2';
line2 += ' ';
line2 += '62949';
line2 += ' ';
line2 += '53.1596'.padStart(8, ' '); // 🛰️ 轨道倾角(度)
line2 += ' ';
line2 += '120.9032'; // 🛰️ 升交点赤经(度)
line2 += ' ';
line2 += '0001355'; // 🛰️ 偏心率
line2 += ' ';
line2 += '101.1211'; // 🛰️ 近地点角距(度)
line2 += ' ';
line2 += '35.9659'.padStart(8, ' '); // 🛰️ 平近点角(度)
line2 += ' ';
line2 += '15.39574303'; // 🛰️ 平均运动(圈/天)
line2 += '580'.padStart(5, ' ');
line2 += '9';
// console.debug(`xxxline2 :>>`, `"${line2}"`);
// console.debug('正确↓');
// console.debug(`longstr2 :>>`, `"${longstr2}"`);
// twoline2satrecFake('', line2);
// twoline2satrecFake('', longstr2);
// const numbers = '0123456789';
// twoline2satrecFake(
// `${numbers}${numbers}${numbers}${numbers}${numbers}${numbers}`,
// '',
// );
// if (__DEV__) {
// const tle = TLE_LIST[0] as string;
// const line1 = tle.split('\n')[1] as string;
// const line2 = tle.split('\n')[2] as string;
// console.clear();
// twoline2satrecFake(line1, line2);
// }
// if (__DEV__) {
// const satrec2 = twoline2satrec(
// `1 62949 25070.91668981 .00039463 00000+0 99294-3 `,
// `2 53.1596 120.9032 0001355 101.1211 35.9659 15.39574303 `,
// );
// const satrec1_str = JSON.stringify(satrec1, null, 2);
// const satrec2_str = JSON.stringify(satrec2, null, 2);
// console.debug(`satrec1_str === satrec2_str :>>`, satrec1_str === satrec2_str);
// }
// longstr1.substring(2, 7) :>> "63157"
// longstr1.substring(18, 20) :>> "25"
// longstr1.substring(20, 32) :>> "069.35219743"
// longstr1.substring(33, 43) :>> " .00000545"
// longstr1.substring(44, 50) :>> "-65692"
// longstr1.substring(50, 52) :>> "-6"
// longstr1.substring(53, 54) :>> " "
// longstr1.substring(54, 59) :>> "00000"
// longstr1.substring(59, 61) :>> "+0"
//
// longstr2.substring(8, 16) :>> " 19.0062"
// longstr2.substring(17, 25) :>> " 64.6364"
// longstr2.substring(26, 33) :>> "7327661"
// longstr2.substring(34, 42) :>> "179.7218"
// longstr2.substring(43, 51) :>> "141.4162"
// longstr2.substring(52, 63) :>> " 2.26206155"