javascript - 如何创建卫星轨道并使用 SGP4 模型对其进行动画处理?

标签 javascript cesium satellite

我是 Cesium 和 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)
    }
});

最佳答案

当人们在 Cesium 中绘制轨道时,他们通常使用折线而不是您使用的椭圆实体。

链接到折线/折线集合:https://cesiumjs.org/Cesium/Build/Documentation/Polyline.html

现在关于 SGP4,这个传播器采用 NORAD 两行元素。因此,如果您有轨道参数,您可以创建自己的 TLE。这应该很容易在外部 python 程序中完成,并将其写入 JSON 文件,该文件可以读入 javascript,然后传递给传播器。有关 TLE 的更多信息,维基百科对它的格式有很好的描述。

电话信息:https://en.wikipedia.org/wiki/Two-line_element_set

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

Satellite.js github:https://github.com/shashwatak/satellite-js

我很确定您必须将 TLE 转换为您传递给传播它的卫星 js 模块的不同参数。

当你这样做时,我强烈建议创建一个工作线程来执行代码,因为开销很大。您不想让所有繁重的数学工作与 Cesium 的图形渲染一起完成。

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

关于javascript - 如何创建卫星轨道并使用 SGP4 模型对其进行动画处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55547442/

相关文章:

javascript - 通过Post方法将数据保存为JSON格式

quaternions - 铯 : How to animate an aircraft from pitch, 滚动,标题?

html-lists - 语法错误 : private fields are not currently supported

google-maps-api-3 - 带有 Google 卫星图层的 Leaflet Map API

javascript - 如何读取Github存储库中的.yaml文件并将内容发布到Github页面

javascript - Firefox 中的输入类型 "number"与 Knockout 的绑定(bind)问题

android - GPS卫星数量和位置过滤

android - 没有标签的离线世界卫星 map (Android)

javascript - 如何将列/行添加到 Div 网格

gis - 铯:铯可以与 float .tif 作为地形图 block 一起使用吗?