Cesium czml创建卫星轨迹 并模拟卫星扫描

最近一直在弄卫星轨迹的运动,并且模拟卫星扫描;

先晒个结果:

之前做了sgp4模拟卫星轨道,但是那个真实性太差,通过sgp4生成的轨道是不动的,真实的情况下卫星的轨道也是运动的,所以一般来说还得通过czml来生成轨道展示卫星运动;

在未加载扫描功能之前,单独加载czml可以正常展示卫星的运动情况,但后续客户提出了加上扫描功能,以及计算卫星何时过境,在某个时间段内会有哪几颗卫星过境;

先说下大致的思路:其中如动图所示,扫描的样式是用cylinder做的,这个后续会再完善成波纹形状;主要还是运用了sampleproperty,将卫星运动的time和position也绑定到cylinder上,并且将cylinder的高度修改为卫星的一半;

以下是核心代码:

var property;
		viewer.dataSources.add(Cesium.CzmlDataSource.load("../czml/GAOFEN1.czml")).then(function(dataSource) {
			satellite = dataSource.entities.getById("Satellite/GAOFEN 1");
			property = new Cesium.SampledPositionProperty();
			for (var ind = 0; ind < 292; ind++) {
				var time = Cesium.JulianDate.addSeconds(clock.currentTime, 300*ind, new Cesium.JulianDate());
				var position = satellite.position.getValue(time);
				var cartographic = ellipsoid.cartesianToCartographic(position);
				var lat = Cesium.Math.toDegrees(cartographic.latitude),
					lng = Cesium.Math.toDegrees(cartographic.longitude),
					hei = cartographic.height / 1.9;
				property.addSample(time, Cesium.Cartesian3.fromDegrees(lng, lat, hei));
			}
			
			cylinderEntity.position = property;
			cylinderEntity.position.setInterpolationOptions({ //设定位置的插值算法
				interpolationDegree: 5,
				interpolationAlgorithm: Cesium.LagrangePolynomialApproximation
			});
			
			viewer.clock.onTick.addEventListener(function(clock) {
				if (property) {
					var time = clock.currentTime;
					var val = property.getValue(clock.currentTime);
					console.log(val);
				}
			});

		});

demo连接:https://download.csdn.net/download/caozl1132/10993203

ps:之前想通过clock的ontick事件,然后监听卫星的位置再改变cylinder的位置,后来发现没法在这个ontick里面通过cylinderEntity.position = 某个值  来达到目的,后来想了一下  可能是渲染机制的问题(纯属猜测),不信的朋友可以试下,是没效果的;

### 回答1: Cesium是一种开源的虚拟地球软件库,它可以通过czml格式来绘制卫星推扫轨迹Cesium支持使用czml文件来定义卫星轨迹、位置、速度等属性,并在虚拟地球上进行显示。 在czml文件中,可以通过定义卫星的时间、位置、速度、旋转等属性来描述其运动轨迹Cesium可以根据这些属性来实时地绘制卫星的运动轨迹,同时显示轨迹的详细信息。在绘制卫星运动轨迹时,可以设置不同的颜色、宽度、曲率等属性,以便更加清晰地显示轨迹。 除了绘制卫星轨迹外,Cesium还可以显示卫星的静态信息,例如卫星名称、型号、发射日期等。通过czml格式,可以将这些信息与卫星轨迹信息一起保存到一个文件中,方便进行传输和共享。 总之,Cesiumczml格式极大地简化了卫星运动轨迹的绘制过程,使得用户可以更加方便地进行卫星的跟踪和监测。 ### 回答2: Cesium是一种基于WebGL的开源虚拟地球软件开发工具包,可以用于在网络地图的三维环境中展示地球表面、大气层等各种信息。在Cesium中,使用CZMLCesium Language)语言来描述各种地理信息对象的运动状态、形态、属性等。Cesium可以通过CZML文件中描述的轨迹、速度等信息来模拟卫星的运动或者绘制已有卫星的运行轨迹。 要绘制卫星的推扫轨迹,首先需要确定卫星的运动模型,包括轨道类型、轨道参数、卫星质心速度、自转角速度等。其次,需要知道卫星进行推扫的位置和方向。最后,根据CZML中定义的样式,将卫星轨迹绘制在地球的三维模型上。 在CZML中,可以使用Position、Velocity、Orientation和Reference Frame等属性对卫星进行描述。其中,Position指定卫星位置,Velocity指定卫星的速度向量,Orientation指定卫星的朝向,Reference Frame指定运动参照系。通过这些属性可以完整描述卫星的运动状态。 Cesium提供了各种工具和库来简化CZML创建和解析。使用Cesium来绘制卫星推扫轨迹需要将卫星轨迹数据转换为CZML格式,并在Cesium的三维环境中加载并显示这些数据。同时,还需要对CZML文件中定义的样式进行调整,以适应用户的需求。 总之,使用Cesium绘制卫星推扫轨迹需要熟悉CZML语言和卫星运动状态模型,同时还需要掌握Cesium的基本操作和开发工具。合理的使用Cesium可以让卫星的推扫轨迹更加直观、实时地展示在地球的三维模型中,为许多领域的应用提供帮助。 ### 回答3: Cesium是一个用于创建三维地球浏览器应用程序的开源JavaScript库。Cesium可用于绘制卫星推扫轨迹,并且支持使用CZMLCesium的标准树状描述语言)来进行标准化数据交换。 在绘制卫星推扫轨迹之前,需要先通过CZML描述轨迹的属性和位置。可以将CZML数据存储在一个JSON文件中,然后在Cesium中加载并解析。这需要先将卫星轨迹数据转换成特定格式的CZML数据,包括位置(经度、纬度和高度)、速度、方向和时间戳等信息。 一旦准备好CZML数据,就可以使用Cesium来绘制卫星推扫轨迹。将JSON文件加载到Cesium应用程序中,并将CZML对象添加到Cesium场景中。使用Cesium的“Entity”模块来定义轨迹的外观和样式,例如颜色、线条宽度和透明度等。还可以使用“Time”模块设置轨迹的时间段和速度等参数。 最后,Cesium将在场景中显示卫星推扫轨迹。通过调整视角和交互控件,可以查看轨迹的三维视图,并根据需要缩放和旋转视角。在这个过程中,Cesium会根据CZML数据自动更新轨迹位置和外观等属性,从而实现动画和互动效果。 绘制卫星推扫轨迹需要对CesiumCZML语言有一定的了解和技能,需要有一定的程序开发能力和实践经验。但是,Cesium提供了丰富的文档和示例以帮助开发者快速入门并快速熟悉。使用Cesium绘制卫星推扫轨迹可以为科学研究、地球观测和工程设计等领域提供有用的可视化工具和应用。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值