1. 功能简介
时间序列数据(time series data)是在不同时间上收集到的数据,这类数据是按时间顺序收集到的,用于所描述现象随时间变化的情况。当前随着遥感卫星技术日新月异的发展,遥感卫星的重访周期越来越短,外加历史数据的积累,产生了海量的遥感时间序列数据产品,这些数据真实地反映了地表在一段时间范围内的动态变化情况,成为了遥感影像信息提取和分析的重要数据参考。


[洞庭湖春、夏、秋、冬季影像图]
PIE支持长时间序列卫星影像数据的加载和动态显示,并且提供了便利的控制方式。
2. 功能实现说明
2.1 实现思路及原理说明
第一步
|
获取数据(序列化栅格数据至少两个数据)
|
第二步
|
将栅格图层添加至动画图层Animation对象中
|
第三步
|
将动画图层添加到地图中进行播放
|
2.2 核心接口与方法
接口/类
|
方法
|
说明
|
Carto. IAnimationLayer
|
AddLayer()
|
增加图层
|
Start()
|
开始图层播放
|
Pause()
|
暂停图层播放
|
Resume()
|
继续播放
|
SetInterval(int msec)
|
设置播放间隔
|
GetAnimationState
|
获取当前的动画状态
|
2.3 示例代码
项目名称
|
百度云盘地址下/PIE示例程序/03.数据加载/08.打开长时间序列数据
|
项目位置
|
百度云盘地址下/PIE示例数据/栅格数据/05.长时间序列数据/
|
代码位置
|
百度云盘地址下/PIE视频教程/03.数据加载/08.打开长时间序列数据.avi
|
示例代码
|
/// <summary>
/// 动画图层
/// </summary>
private IAnimationLayer m_AnimationLayer = null;
/// <summary>
/// 加载长时间序列数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_OpenSeriesData_Click(object sender, EventArgs e)
{
//1、获取数据
IList<string> listFile = new List<string>();
OpenFileDialog openDialog = new OpenFileDialog();
openDialog.Multiselect = true;
openDialog.Title = "打开长时间序列数据";
openDialog.Filter = "SeriesData(*.tiff)|*.tiff;*.tif";
if (openDialog.ShowDialog() != DialogResult.OK) return;
//2、加载动画图层
ILayer tempLayer = null;
m_AnimationLayer = new AnimationLayer();
foreach (var fileName in openDialog.FileNames)
{
tempLayer = LayerFactory.CreateDefaultLayer(fileName);
m_AnimationLayer.AddLayer(tempLayer);
}
ILayer layer = m_AnimationLayer as ILayer;
layer.Name = "长时间序列数据";
mapControlMain.FocusMap.AddLayer(layer);
mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
m_AnimationLayer.SetInterval();//设置时间间隔
m_AnimationLayer.Start();//开始播放
}
/// <summary>
/// 继续播放
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_Start_Click(object sender, EventArgs e)
{
m_AnimationLayer.Resume();
}
/// <summary>
/// 暂停播放
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_Pause_Click(object sender, EventArgs e)
{
m_AnimationLayer.Pause();
}
/// <summary>
/// 结束播放
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_End_Click(object sender, EventArgs e)
{
m_AnimationLayer.Stop();
}
|
2.4 示例截图
