Cesium之车辆轨迹动态可视化

常见轨迹数据有车辆和飞机轨迹,车辆一般只考虑二维信息,飞机则要加入高程信息。本篇博客先以车辆轨迹为例。(本博客参考法克鸡丝博客https://www.cnblogs.com/fuckgiser/p/5706842.html,这里表示特别感谢!)

我拿到的车辆轨迹如图所示,其中3、4列分别表示XY坐标,是WGS84-UTM投影坐标,需要转为WGS84坐标,方法我在另一篇博客介绍了,这里不再赘述。第一列是车辆编号,第二列是该车辆下的轨迹段。

整体思路是这样以每辆车辆的每段轨迹段为单位,将每段数据每个点加到Entity,用billboard表示,然后设置每个点的显示,形成流动效果。要注意的NameID每段轨迹都应该从0开始,否则所有轨迹不会同时流动。核心代码如下:

var animationObj = {
     stepsRange: {
                   start: 0,
                   end: 100
                   },
     trails: 20,
     duration: 75
};

var _range = animationObj.stepsRange.end - animationObj.stepsRange.start;
var entity = viewer.entities.add({
                    position : Cesium.Cartesian3.fromDegrees(x,y,h),
                    nameID:nameid,
                    billboard :{
                        image : 'c2.png',
                        width:7,
                        height:7,
                        color : color
                    }
                });
entity.isAvailable = function(obj){
                    return function(currentTime){
                        if (!Cesium.defined(currentTime)) {
                            throw new Cesium.DeveloperError('time is required.');
                        }
                        var nMS = Cesium.JulianDate.toDate(currentTime).getTime()/animationObj.duration;
                        var time = (nMS%_range + animationObj.stepsRange.start);

                        var trails = trails || 10;
                        if (time && obj.nameID > time - trails && obj.nameID < time) {
                            obj.billboard.color._value.alpha = 0.8*(obj.nameID - time + trails)/trails;
                            return true;
                        } else {
                            return false;
                        }
                    }
                }(entity);

 

  • 2
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值