关于卫星轨迹的绘制
卫星轨迹(卫星轨道)是一个很复杂的系统,涉及到的天体参数、卫星参数也很多,飞行速度、低轨道、高轨道、顺行轨道、逆行轨道、赤道轨道、地球同步轨道、对地静止轨道、极地轨道、太阳同步轨道、长轴、短轴、轨道倾角、轨道高度等等,当然如果我们去研究这个,那就太难了。
我们要介绍的卫星轨迹是一种较为简单的场景,即卫星的运动轨迹数据我们已经拿到了,我们要做的仅仅是把它的轨迹呈现出来。
效果图
Cesium中的卫星轨迹绘制
在已经有了卫星轨迹数据的情况下,格式如下:
{"Time":"2019-01-01 00:00","Lat":"0.0","Lon":"0.0","Alt":"1000"}
卫星在某一个具体的时刻Time,知道其所在位置(Lon, Lat, Alt),通过绘制Entity的方式即可。
1、根据数据筛选起始时间startTime 和终止时间 endTime。
var start = parseTime(routerInfo[0].Time); // parseTime函数的作用是将普通字符时间转换为JulianDate,自行处理
var stop = parseTime(routerInfo[routerInfo.length - 1].Time);
2、设置时间轴范围
viewer.clock.startTime = start.clone();
viewer.clock.stopTime = stop.clone();
viewer.clock.currentTime = start.clone();
viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP;
viewer.clock.multiplier = 1;
viewer.timeline.zoomTo(start, stop);
3、计算轨迹
var property = new Cesium.SampledPositionProperty();
for (var i = 0; i < routerInfo.length; i++) {
var time = parseTime(routerInfo[i].Time);
var position = Cesium.Cartesian3.fromDegrees(parseFloat(routerInfo[i].Lon), parseFloat(routerInfo[i].Lat), parseFloat(routerInfo[i].Alt) * 1000);
property.addSample(time, position);
}
4、添加entity
viewer.entities.add({
availability: new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({
start: start,
stop: stop
})]),
position: position,
orientation: new Cesium.VelocityOrientationProperty(position),
model: {
uri: './demo.gltf',
minimumPixelSize: 16
},
path: {
show: true,
resolution: 1,
material: Cesium.Color.PALETURQUOISE,
width: 1
}
});
具体实操代码以及数据因客观原因不能提供。
可参照官网示例:
cesiumjs.org/Cesium/Buil…
cesiumjs.org/Cesium/Buil…