SuperMap iClient3D for WebGL 之卫星扫描

作者:Taco

        在iClient3D for WebGL的球面场景中,当地面上的效果已经处理的满意后,就会让人萌生出想要搞搞天上的效果。碰巧这几天有遇到一些客户想要实现在在空中添加卫星去扫描场景的。今天就来试试如何实现卫星扫描的功能。

 一,数据准备

        轨道的数据格式是CZML, 是一种基于JSON的文件,在该文件中引用了需要使用的模型(gltf),给模型附加的标注以及模型根据时间空间变化的信息,CZML可以准确的描述值随时间变化的属性。在大多是情况下,这种数据的属性是以数组的形式存在的,在每个数组中每个元素都会对应其时间值和属性值,时间间隔用interval来定义,通过ISO8601 interval格式的字面值表示。

 二,使用方法

         涉及到的接口是 CzmlDataSource,如下图可以在官方的api文档中找到该接口以及对应的参数设置(http://support.supermap.com.cn:8090/webgl/docs/Documentation/CzmlDataSource.html?classFilter=CzmlDataSource)

 完整代码

				var viewer = new Cesium.Viewer('cesiumContainer');

				var start = viewer.clock.startTime;
				var clock = viewer.clock;
				
				var cylinderEntity = viewer.entities.add({
					cylinder: {
						HeightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
						length: 600000,
						topRadius: 0,
						bottomRadius: 600000 / 4,
						material: Cesium.Color.RED.withAlpha(.4),
						outline: !0,
						numberOfVerticalLines: 0,
						outlineColor: Cesium.Color.RED.withAlpha(.8)
					}
				});

				var property;
				
			
					
			viewer.dataSources.add(Cesium.CzmlDataSource.load("./czml/MEO1-ECI.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.startTime, 300 * ind, new Cesium.JulianDate());
						var position = satellite.position.getValue(time);
						var cartographic = viewer.scene.globe.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
					});
				});

 三,效果展示

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值