Javascript 如何创建卫星轨道并使用SGP4模型为其设置动画?

Javascript 如何创建卫星轨道并使用SGP4模型为其设置动画?,javascript,cesium,satellite,Javascript,Cesium,Satellite,我是铯和Javascript代码的初学者。我需要创建一个环绕地球的卫星轨道(ESEO)。卫星必须按照SGP4型号移动。我如何在铯沙堡创造它? 我遇到了麻烦,因为我在网上找不到任何教程或例子来解释如何做到这一点。 现在我只把地面站定位在我想要的地方 var viewer = new Cesium.Viewer ('cesiumContainer', { scene3DOnly: false, selectionIndication: false, baseLayerPick

我是铯和Javascript代码的初学者。我需要创建一个环绕地球的卫星轨道(ESEO)。卫星必须按照SGP4型号移动。我如何在铯沙堡创造它? 我遇到了麻烦,因为我在网上找不到任何教程或例子来解释如何做到这一点。 现在我只把地面站定位在我想要的地方

var viewer = new Cesium.Viewer ('cesiumContainer', {
    scene3DOnly: false,
    selectionIndication: false,
    baseLayerPicker: true
                                });

Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI4ODY0ZjkwMy03YmZlLTRlNGEtYmNhOS0xMDBlZGVmNDRkZGMiLCJpZCI6OTE4MSwic2NvcGVzIjpbImFzciIsImdjIl0sImlhdCI6MTU1MzYxMjM5Mn0.aYYX1f1MQfg9zLFu0vnP3A56Neo4Y_N3G2O5tuTS0XM';

// Enable lighting based on sun/moon positions
viewer.scene.globe.enableLighting = true;

//Stazione di terra
var entity = viewer.entities.add({
  position: Cesium.Cartesian3.fromDegrees(12.04, 44.23),
  ellipse : {
    semiMinorAxis : 150000.0,
    semiMajorAxis : 150000.0,
    material : Cesium.Color.YELLOW.withAlpha(0.5)
  }
});
var ellipse = entity.ellipse;
ellipse.material = new Cesium.GridMaterialProperty({
  color : Cesium.Color.YELLOW,
  cellAlpha : 0.2,
  lineCount : new Cesium.Cartesian2(8, 8),
  lineThickness : new Cesium.Cartesian2(2.0, 2.0)
});


var GroundStation = viewer.entities.add({
    name : 'Ground Station',
    position : Cesium.Cartesian3.fromDegrees(12.07, 44.23),
    point : {
        pixelSize : 5,
        color : Cesium.Color.RED,
        outlineColor : Cesium.Color.WHITE,
        outlineWidth : 2
    },
    label : {
        text : 'Ground Station',
        font : '14pt monospace',
        style: Cesium.LabelStyle.FILL_AND_OUTLINE,
        outlineWidth : 2,
        verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
        pixelOffset : new Cesium.Cartesian2(0, -9)
    }
});


当人们用铯绘制轨道时,他们通常使用多段线,而不是您使用的椭圆实体

链接到多段线/多段线集合:

现在关于SGP4,这个传播子接受一个NORAD双线元素。所以,如果你有你的轨道参数,你可以创建你自己的TLE。这在外部python程序中应该很容易做到,并将其写入JSON文件,该文件可以读入javascript,然后传递给传播程序。关于TLEs的更多信息,维基百科对其格式有很好的描述

TLE信息:

对于实际的SGP4实现,有一个Satellite.js包,其github链接如下。他们能够正确地实现一个传播器,接收NORAD TLE并输出轨迹信息

Satellite.js github:

我很确定,你必须将TLE转换成不同的参数,然后传递给传播它的satellite js模块

在执行此操作时,我强烈建议为代码创建一个工作线程来执行,因为这会带来很大的开销。你不希望所有的数学重浮雕都与铯的图形渲染一起完成


另一个重要注意事项:如果可以避免的话,绝对不应该使用SGP4。您应该创建适合项目需要的自己的传播工具。轨道确定可能很棘手,但比使用用于NORAD卫星跟踪的传播器要好得多

你可以看看这个项目,看看aaastro答案中列出的一些项目的演示

您还可以查看这篇伟大的论文和支持源,以进一步解释TLE、SGP4和铯


不太可能会有一个非常具体的教程。但听起来基本上是一个数学模型。所以应该有一些算法或计算来做。计算机擅长数学,大多数编程语言,包括JavaScript,都有很多可以使用的数学函数和运算符,你只需要查找它们。我会先在纸上计划好你的计算,然后试着计算出如何让代码一步一步地执行每个计算。在你至少尝试自己动手之前,这里不可能有人会帮助你。我已经做了数学模型,但现在的问题只是在铯沙堡上创建轨道。我不知道如何在ITS上可视化路径和卫星运动,所以你想用图形显示它,而不仅仅是计算?我不确定这个问题是否清楚。你是否已经完成了铯工具的基础知识,以解决如何制作简单形状等问题?是的,第一个问题是使用周期、半轴长轴、偏心率等参数创建一般轨道,如STK场景。我想显示路径和一个点,代表卫星在上面移动。我已经说过,我是铯和Javascript的初学者,我正在尝试使用教程和示例学习,但关于这一点,我找不到任何东西。我在铯js页面上使用了这些教程: