云图动画,就是将一组序列图以动画的形式进行轮播,PIE SDK可以将云图动画以gif或avi格式进行导出,本文示例以云图动画导出gif为例,这样只需要点开gif文件就可以浏览云图动画。

下面来介绍下实现的主要代码:

要实现云图动画导出GIF步骤:

1、加载序列时数据(可以查看打开长时间序列数据

2、如何将云图动画导出GIF文件;

云图动画由一帧帧的画面组合,也即是加载的序列图的图层数,将云图动画导出GIF,主要是先将每一帧画面保存为图片的格式,本文选择png格式,然后将保存完的图片通过第三方插件Gif.Components.dll生成GIF文件

 /// <summary>
/// 云图动画导出GIF
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tbn_Export2GIF_Click(object sender, EventArgs e)
{
if (m_AnimationLayer.GetAnimationState() != && m_AnimationLayer == null) return;
//1、设置保存GIF的路径
if (!this.Enabled) return;
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Title = "请选择保存路径";
saveFileDialog.Filter = "GIF Files|*.gif;";
if (saveFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
string filePath = saveFileDialog.FileName; DevExpress.Utils.WaitDialogForm waitDialogForm = new DevExpress.Utils.WaitDialogForm("正在生成GIF动画,请耐心等候……", "生成GIF"); //2、将每一帧图都以png的格式保存在临时文件夹下
string filePath_D = Path.Combine(@"..\Data\Temp\Pic", DateTime.Now.ToString("yyyyMMddhhmmss"));
Directory.CreateDirectory(filePath_D);
Export2PicSilent(filePath_D); //3、将临时文件夹下的每一帧图片保存成GIF格式
string[] filePaths = Directory.GetFiles(filePath_D);
Parames_GeneralGIF para = new Parames_GeneralGIF();
para.WaitDialogFormA = waitDialogForm;
para.PicPaths = filePaths;
para.GIFPath = filePath;
GeneralGif(para);
} /// <summary>
/// 将每一帧动画保存为png图
/// </summary>
/// <param name="folder">存放图片的文件夹</param>
public void Export2PicSilent(string folder)
{
if (mapControlMain == null) return;
m_AnimationLayer.Stop();
Image image = null;
for (int i = ; i <= m_AnimationLayer.LayerCount - ; i++)
{
m_AnimationLayer.SetCurrentFrameIndex(i);
mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
System.Threading.Thread.Sleep();
image = mapControlMain.GetScreenshot();
image.Save(folder + "\\" + i + ".png");
}
m_AnimationLayer.Start();
} /// <summary>
/// 将帧图片生成GIF
/// </summary>
/// <param name="param"></param>
public void GeneralGif(object param)
{
if (param == null) return;
Parames_GeneralGIF param_GeneralGIF = param as Parames_GeneralGIF;
if (param_GeneralGIF == null) return; //生成gif图片实例化
Gif.Components.AnimatedGifEncoder gifEncoder = new Gif.Components.AnimatedGifEncoder();
gifEncoder.Start(param_GeneralGIF.GIFPath);
gifEncoder.SetDelay();//每帧播放时间
gifEncoder.SetRepeat(); //-1:不重复,0:重复 for (int i = ; i < param_GeneralGIF.PicPaths.Length; i++)
{
gifEncoder.AddFrame(System.Drawing.Image.FromFile(param_GeneralGIF.PicPaths[i]));
}
gifEncoder.Finish();
param_GeneralGIF.WaitDialogFormA.Invoke(new Action(() =>
{
param_GeneralGIF.WaitDialogFormA.Close();
}));
}

代码路径:

项目名称

百度云盘地址下/PIE示例程序/13.小工具集锦/云图动画导出/AnimationLayerExportToGIF

数据路径

百度云盘地址下/PIE示例数据/栅格数据/05.长时间序列数据

视频路径

百度云盘地址下/PIE视频教程/13.小工具集锦/云图动画导出.avi

注意:

在地图初始化的时候,图层树控件需要手动绑定地图控件:

tocControlMain.SetBuddyControl(mapControlMain as PIE.Carto.IPmdContents);

效果图:

PIE SDK云图动画导出的更多相关文章

  1. PIE SDK 文章目录索引

    1.PIE SDK介绍 1.1.  PIE软件介绍 1.2.  PIE SDK介绍 1.3.  PIE支持项目介绍 1.4.  PIE.NET-SDK插件式二次开发介绍 1.5.  PIE.NET-S ...

  2. PIE SDK Command&&Tool工具命令一览表

    PIE SDK Command&&Tool工具命令一览表 编号 模板 名称(中文) Command&Tool 程序集 备注 1 数据管理 加载栅格数据 PIE.Controls ...

  3. PIE SDK地图图层渲染方案管理

    1. 功能简介 在数据种类较多.渲染规则复杂的情况下,逐个设置其渲染方式是一件繁琐的工作.PIE SDK提供了一种省力省心的办法, PIE SDK提供栅格和矢量数据渲染方案的打开与保存.能够将配色方案 ...

  4. PIE SDK元素的保存与打开

    1.功能简介 绘制元素之后需要对元素进一步的保存操作,可以利用PIE SDK的ExportElementsCommand命令保存成xml格式的文件,打开元素可以利用ImportElementsComm ...

  5. PIE SDK 距离分类和最大似然分类

       1.算法功能简介 监督分类,也叫训练场地法.训练分类法,是遥感图像分类的一种,用被确认类别的样本像元去识别其他未知类别像元的过程.监督分类算法有平行算法.平行六面体法.最小距离法.最大似然法.马 ...

  6. PIE SDK与OpenCV结合说明文档

    1.功能简介 OpenCV是基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 ...

  7. PIE SDK影像坏线修复

    1.算法功能简介 坏条带的由来:2003年5月31日,Landsat-7ETM+机载扫描行校正器(SLC) 故障,导致此后获取的影像出现了数据条带丢失,严重影响了Landsat ETM遥感影像的使用. ...

  8. PIE SDK与GeoServer结合说明文档

    1.  GeoServer简介 GeoServer是OpenGIS Web服务器规范的J2EE实现的社区开源项目,利用GeoServer可以方便的发布地图数据,允许用户对特征数据进行更新.删除.插入操 ...

  9. PIE SDK组件式开发综合运用示例

    1. 功能概述 关于PIE SDK的功能开发,在我们的博客上已经分门别类的进行了展示,点击PIESat博客就可以访问,为了初学者入门,本章节将对从PIE SDK组件式二次开发如何搭建界面.如何综合开发 ...

随机推荐

  1. Cloud Design Patterns: Prescriptive Architecture Guidance for Cloud Applications

    January 2014 Containing twenty-four design patterns and ten related guidance topics, this guide arti ...

  2. web大文件上传控件-设置附加参数-Xproer.HttpUploader6

    自定义附加字段在up6.js中定义,也可以不用定义: 注意: 1.附加字段必须是字符串类型. 2.如果附加字段的值包含中文,在上传前必须使用encodeURIComponent进行编码.     在引 ...

  3. Java IO流的回顾与梳理(必记必会必写)

  4. Java 扫描器类 Scanner类

    1.Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象.Scanner reader=new Scanner(System.in); 2.reader对象调用下列方法(函数),读取用户 ...

  5. 国内物联网平台(8):中移物联网开放平台OneNet

    国内物联网平台(8)——中移物联网开放平台OneNet 马智 平台定位 OneNET是中移物联网有限公司搭建的开放.共赢设备云平台,为各种跨平台物联网应用.行业解决方案,提供简便的云端接入.存储.计算 ...

  6. linux系统上安装mysql5.6(详细步骤)

    为了学习mycat 尝试在虚拟机上装mysql(看了别人的博客比划着安装),但装了两次都没成功.因此总结了如下步骤 有需要的朋友可以试下(linux需要联网) mysql-5.6.26.tar.gz百 ...

  7. 八、Node.js-http模块

    JS代码如下: /* 如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi,来处理客户端的请求相应. 不过对 N ...

  8. UIView 动画

    1.UIView 动画 核心动画 和 UIView 动画 的区别: 核心动画一切都是假象,并不会真实的改变图层的属性值,如果以后做动画的时候,不需要与用户交互,通常用核心动画(转场). UIView ...

  9. 20165219 2017-2018-2 《Java程序设计》第5周学习总结

    20165219 2017-2018-2 <Java程序设计>第5周学习总结 课本知识总结 第7章 内部类与异常类 一 1 内部类:类的一种成员 2 外嵌类:包含内部类的类称为内部类的外嵌 ...

  10. 导出当前python安装了哪些第三方模块+批量安装python模块

    pip freeze > mokuai.txt  #导出你当前python环境里面有哪写第三方模块 pip install -r mokuai.txt #从文件里面批量安装模块