demo_03_卫星加站点
This commit is contained in:
@ -26,6 +26,15 @@ export const DEMO_DATA = {
|
|||||||
RA_OF_ASC_NODE: 63.0294,
|
RA_OF_ASC_NODE: 63.0294,
|
||||||
REV_AT_EPOCH: 13,
|
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
|
tleString: `2025-045B
|
||||||
1 63158U 25045B 25071.65907894 .00072212 -50502-6 39937-3 0 9999
|
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`,
|
2 63158 19.0363 63.0294 7375486 181.9338 171.6150 2.21786616 127`,
|
53
src/pages/Satellite/Cesium/cesium-demos/demo_03_卫星加站点.ts
Normal file
53
src/pages/Satellite/Cesium/cesium-demos/demo_03_卫星加站点.ts
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
import type { Viewer } from 'cesium';
|
||||||
|
|
||||||
|
import * as Cesium from 'cesium';
|
||||||
|
|
||||||
|
export function demo_卫星加站点(viewer: Viewer) {
|
||||||
|
// 1. 添加一个卫星
|
||||||
|
const satellite = viewer.entities.add({
|
||||||
|
label: {
|
||||||
|
font: '14pt monospace',
|
||||||
|
pixelOffset: new Cesium.Cartesian2(0, 20),
|
||||||
|
text: '卫星',
|
||||||
|
},
|
||||||
|
name: '测试卫星',
|
||||||
|
point: {
|
||||||
|
color: Cesium.Color.RED,
|
||||||
|
pixelSize: 10, // 卫星显示为一个点
|
||||||
|
},
|
||||||
|
position: Cesium.Cartesian3.fromDegrees(114, 40, 500_000), // 经度、纬度、高度(500km)
|
||||||
|
});
|
||||||
|
|
||||||
|
// 2. 添加一个地面检测站点
|
||||||
|
const detectionSite = viewer.entities.add({
|
||||||
|
label: {
|
||||||
|
font: '14pt monospace',
|
||||||
|
pixelOffset: new Cesium.Cartesian2(0, 20),
|
||||||
|
text: '检测站',
|
||||||
|
},
|
||||||
|
name: '检测站点',
|
||||||
|
point: {
|
||||||
|
color: Cesium.Color.BLUE,
|
||||||
|
pixelSize: 8,
|
||||||
|
},
|
||||||
|
position: Cesium.Cartesian3.fromDegrees(116, 39, 0), // 北京附近的一个地面站点
|
||||||
|
});
|
||||||
|
|
||||||
|
// 3. 可选:绘制卫星与站点之间的连线
|
||||||
|
viewer.entities.add({
|
||||||
|
polyline: {
|
||||||
|
material: Cesium.Color.YELLOW.withAlpha(0.5),
|
||||||
|
positions: new Cesium.CallbackProperty(() => {
|
||||||
|
const satellitePosition = satellite.position?.getValue(Cesium.JulianDate.now());
|
||||||
|
const sitePosition = detectionSite.position?.getValue(Cesium.JulianDate.now());
|
||||||
|
|
||||||
|
if (!satellitePosition || !sitePosition) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [satellitePosition, sitePosition];
|
||||||
|
}, false),
|
||||||
|
width: 2,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
@ -1,20 +1,21 @@
|
|||||||
|
/* eslint-disable perfectionist/sort-objects */
|
||||||
/* prettier-ignore */
|
/* prettier-ignore */
|
||||||
export const TOOLTIP_MAP = {
|
export const TOOLTIP_MAP = {
|
||||||
ARG_OF_PERICENTER_近地点幅角: "8位数字,如'181.9338',表示近地点相对升交点的角度(度),范围0°-360°",
|
NORAD_CAT_ID_卫星编号: "5位数字,如'63158',表示NORAD卫星唯一目录编号",
|
||||||
BSTAR_BSTAR拖曳项: "BSTAR参数。8位科学计数法,如'39937-3'表示0.39937×10⁻³/地球半径,表示大气拖曳影响",
|
|
||||||
CLASSIFICATION_TYPE_卫星分类: "1个字母,如'U',表示数据分类",
|
CLASSIFICATION_TYPE_卫星分类: "1个字母,如'U',表示数据分类",
|
||||||
ECCENTRICITY_离心率: "7位数字,无小数点,如'7375486'表示0.7375486,小数点隐含在最前面",
|
OBJECT_ID_国际标识符: "8个字符,如'25045B'(年份+发射编号+部件),不足时右侧补空格",
|
||||||
ELEMENT_SET_NO_元素集编号: "4位数字,如'9999',表示TLE版本号",
|
|
||||||
EPHEMERIS_TYPE_星历类型: "通常为'0',表示使用SGP4星历模型",
|
|
||||||
EPOCH_历元时间: "14位数字,如'25071.65907894',表示轨道数据的参考时间(年份+年积日.一天中的小数部分)",
|
EPOCH_历元时间: "14位数字,如'25071.65907894',表示轨道数据的参考时间(年份+年积日.一天中的小数部分)",
|
||||||
|
MEAN_MOTION_DOT_平均运动一阶导数: "10位数字,如'.00072212',表示平均运动变化率的一半,单位圈/天²,左侧补空格",
|
||||||
|
MEAN_MOTION_DDOT_平均运动二阶导数: "8位科学计数法,如'-50502-6'表示-5.0502×10⁻⁶圈/天³,最后一位是指数",
|
||||||
|
BSTAR_BSTAR拖曳项: "BSTAR参数。8位科学计数法,如'39937-3'表示0.39937×10⁻³/地球半径,表示大气拖曳影响",
|
||||||
|
EPHEMERIS_TYPE_星历类型: "通常为'0',表示使用SGP4星历模型",
|
||||||
|
ELEMENT_SET_NO_元素集编号: "4位数字,如'9999',表示TLE版本号",
|
||||||
// CHECKSUM_校验和: "1位数字,用于验证数据完整性,可选项",
|
// CHECKSUM_校验和: "1位数字,用于验证数据完整性,可选项",
|
||||||
INCLINATION_轨道倾角: "8位数字,如'19.0363',表示轨道与赤道平面的夹角(度),范围0°-180°",
|
INCLINATION_轨道倾角: "8位数字,如'19.0363',表示轨道与赤道平面的夹角(度),范围0°-180°",
|
||||||
MEAN_ANOMALY_平近点角: "8位数字,如'171.6150',表示历元时的平近点角(度),范围0°-360°",
|
|
||||||
MEAN_MOTION_DDOT_平均运动二阶导数: "8位科学计数法,如'-50502-6'表示-5.0502×10⁻⁶圈/天³,最后一位是指数",
|
|
||||||
MEAN_MOTION_DOT_平均运动一阶导数: "10位数字,如'.00072212',表示平均运动变化率的一半,单位圈/天²,左侧补空格",
|
|
||||||
MEAN_MOTION_平均运动: "11位数字,如'2.21786616',表示卫星每天绕地球的圈数(圈/天)",
|
|
||||||
NORAD_CAT_ID_卫星编号: "5位数字,如'63158',表示NORAD卫星唯一目录编号",
|
|
||||||
OBJECT_ID_国际标识符: "8个字符,如'25045B'(年份+发射编号+部件),不足时右侧补空格",
|
|
||||||
RA_OF_ASC_NODE_升交点赤经: "8位数字,如'63.0294',表示轨道升交点的赤经(度),范围0°-360°",
|
RA_OF_ASC_NODE_升交点赤经: "8位数字,如'63.0294',表示轨道升交点的赤经(度),范围0°-360°",
|
||||||
|
ECCENTRICITY_离心率: "7位数字,无小数点,如'7375486'表示0.7375486,小数点隐含在最前面",
|
||||||
|
ARG_OF_PERICENTER_近地点幅角: "8位数字,如'181.9338',表示近地点相对升交点的角度(度),范围0°-360°",
|
||||||
|
MEAN_ANOMALY_平近点角: "8位数字,如'171.6150',表示历元时的平近点角(度),范围0°-360°",
|
||||||
|
MEAN_MOTION_平均运动: "11位数字,如'2.21786616',表示卫星每天绕地球的圈数(圈/天)",
|
||||||
REV_AT_EPOCH_历元时的圈数: "5位数字,如'13',表示卫星在历元时完成的轨道圈数",
|
REV_AT_EPOCH_历元时的圈数: "5位数字,如'13',表示卫星在历元时完成的轨道圈数",
|
||||||
};
|
};
|
||||||
|
@ -1,15 +1,16 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { Viewer } from 'cesium';
|
import type { Viewer } from 'cesium';
|
||||||
|
|
||||||
|
import { TLE_LIST } from './cesium-demos/_TLE_DATA';
|
||||||
|
import { demo_卫星加站点 } from './cesium-demos/demo_03_卫星加站点';
|
||||||
import { cesium_init } from './cesium-helper/00.cesium-init';
|
import { cesium_init } from './cesium-helper/00.cesium-init';
|
||||||
import { TLE_LIST } from './cesium-helper/_TLE_DATA';
|
|
||||||
import SatelliteSelector from './components/SatelliteSelector.vue';
|
import SatelliteSelector from './components/SatelliteSelector.vue';
|
||||||
|
|
||||||
// Cesium相关
|
// Cesium相关
|
||||||
let viewer = $ref<null | Viewer>(null);
|
let viewer = $ref<null | Viewer>(null);
|
||||||
|
|
||||||
const tleList = ref([TLE_LIST[0]] as string[]);
|
const tleList = ref([TLE_LIST[0]] as string[]);
|
||||||
const spinning = ref(true);
|
const spinning = ref(false);
|
||||||
|
|
||||||
// 模拟接口获取TLE数据
|
// 模拟接口获取TLE数据
|
||||||
const fetchTLEData = async () => {
|
const fetchTLEData = async () => {
|
||||||
@ -29,6 +30,8 @@ onMounted(async () => {
|
|||||||
viewer = cesium_init(container);
|
viewer = cesium_init(container);
|
||||||
|
|
||||||
Object.assign(globalThis, { viewer });
|
Object.assign(globalThis, { viewer });
|
||||||
|
|
||||||
|
demo_卫星加站点(viewer);
|
||||||
});
|
});
|
||||||
|
|
||||||
// 清理资源
|
// 清理资源
|
||||||
|
Reference in New Issue
Block a user