cesium-时间系统
Cesium时间系统在动态数据可视化中发挥着重要的作用,在三维场景的基础上增加时间维信息,生成“四维"场景。三维GIS不再仅仅呈现某个时刻的静志坛景,还能深人展示段时间内 三维场景的动态变化。例如,可以研究洪水随着时间变化造成的淹没区范围,刻画城市中出租车的运动轨迹特征,也可构建地表开采沉陷模型,呈现地表的变形规律。而且在时间系统支持下,可以减少很多监听判断事件,节省内存资源,提高三维场景的流畅性。
Cesium中的Clock控件包含两部分: Animation控件和Timeline控件,Animetion控制时间的启动和暂停,Timeline控制时间线,两个控件绑定在一起,同时出现或隐藏。
let viewer = new Cesium.Viewer('cesiumContainer',{
animation: false,
timeline: false
})
Clolck以儒略日记录时间,我国采用北京时间,而Cesium显示协调世界时,则存在时间差问题,北京时间与协调世界时相差8个小时.例如。在Clock设置时间为12点,那么控件显示的时间将为4点,所以在设置时间时需要加8个小时才会显示为北京时间。Clock 中默认开始时间(SmnrTime)为当前时间,终止时间(stopTime)为24小时后,并能获取当前时间(currentTime)。下边示例代码展示如何调用clock并设置时间范围:
//设定起始时间
let start = Cesium.JulianDate.fromIso8601('2015-07-30');
//设定终止时间
let end = Cesium.JulianDate.fromIso8601('2016-07-319');
viewer.timeline.zoomTo(start,end);
//定义clock事件
let clock = viewer.clock;
//设定clock的起始时间
clock.startTime = start;
//设定clock的终止时间
clock.endTime = end;
//设定clock的当前时间
clock.currentTime.start;
//设定clock范围为不断循环
clock.clockRange=Cesium.ClockRange.LOOP_STOP:
//设定时间速率
clock.multiplier=10;
其中start和end分别代表起始和结束时间,multiplier表示时间轴进行速度,此值表示真实世界时间进度与Cesium中时间的比值关系,值越大时钟走得越快。若设置为86400,表示真实世界经过1秒,而在Cesium中时钟经过1天。clockRange属性表示时间轴达到终点之后的行为,用户可以根据自己的需要来设置,默认为UNBOUNDED值,各种模式如下:
-
CLAMPED:达到终止时间后停止。
-
LOOP_ STOP:达到终止时间后重新循环。
-
UNBOUNDED:达到终止时间后继续读秒。
儒略日(Juin day):指由公元前4713年1月1日.协调世界时中午12时开始所经过的天数,为简化起见,通常表示为当前年份和当天位于这一 年的第几天的组合数。例如2006年1月1日表示为2006001