博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PIE SDK算法的异步调用
阅读量:4506 次
发布时间:2019-06-08

本文共 4303 字,大约阅读时间需要 14 分钟。

 

1.算法功能简介

    异步方法一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。异步方法通常会在另外一个线程中,“真实”地执行着。整个过程,不会阻碍调用者的工作。

     PIE SDK支持算法功能的执行,下面对算法的异步调用功能进行介绍。

2.算法功能实现说明

2.1. 示例简介

    AlgoFactory类实现了算法的管理,主要实现了以下方法:

    1)      AlgoFactory.Instance().CreateAlgo(A,B)实现算法Algo的创建;需要注意的是:A:“PIE.CommonAlgo.dll”,B: "PIE.CommonAlgo.ImageClipAlgo"。

    2)      设置算法的参数;

    3)      通过AlgoFactory.Instance().AsynExcuteAlgo(algo)实现异步调用。

    ISystemAlgoEvents接口是算法进度变化事件接口,用来管理算法执行进度变化( OnProgressChangedEvent )以及执行完成( OnExcuteCompletedEvent )事件。

2.2. 实现步骤

第一步

算法创建CreateAlgo;

第二步

设置算法参数;

第三步

异步执行AsynExcuteAlgo;

第四步

编写算法执行完成事件

第五步

编写算法进度变化事件

2.3. 示例代码

项目路径

百度云盘地址下/PIE示例程序/10.算法调用/算法的调用方式/Algo.AsynExecute

数据路径

百度云盘地址下/PIE示例数据/栅格数据/01.GF1/ MS.tif

视频路径

百度云盘地址下/PIE视频教程/10.算法调用/算法的调用方式/算法的异步调用.avi

示例代码

1          ///  2         /// 单击方法 3         ///  4         public override void OnClick() 5         { 6             //Clip裁剪 7             PIE.CommonAlgo.DataPreImgClip_Exchange_Info info = new PIE.CommonAlgo.DataPreImgClip_Exchange_Info(); 8  9             info.InputFilePath = @"D:\Data\GF1_ortho.tif";  //待裁剪影像10             PIE.DataSource.IRasterDataset rDataset = PIE.DataSource.DatasetFactory.OpenRasterDataset(info.InputFilePath, PIE.DataSource.OpenMode.ReadOnly);11             if (rDataset == null) return;12             int count = rDataset.GetBandCount();13             List
list = new List
{ };14 for (int i = 0; i < count; i++)15 {16 17 list.Add(i);18 }19 info.listBands = list;20 info.XFactor = 1;21 info.YFactor = 1;22 info.bInvalidValue = false;23 info.OutputFilePath = @"D:\Data\clip_AsynExecute.tif"; //裁剪保存结果24 info.Type = 0; // (等于0表示通过栅格范围裁剪)25 info.XStart = 0;26 info.XEnd = 2000;27 info.YStart = 0;28 info.YEnd = 2000;29 info.FileType = "GTiff"; //Tiff数据的FileTypeCode为“GTiff”,IMG数据的FileTypeCode为"HFA",其他格式的为"ENVI"。;30 31 //1、初始实例化Instance,算法创建CreateAlgo32 PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImageClipAlgo");33 if (algo == null) return;34 35 //2、异步执行AsynExcuteAlgo36 PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;37 algo.Name = "影像裁剪";38 algo.Params = info;39 algoEvents.OnExecuteCompleted += OnAlgoExcuteCompleted;40 algoEvents.OnProgressChanged += OnAlgoProgressChanged;41 42 PIE.AxControls.IStatusBar statusBar = m_Application.StatusBar;43 statusBar.ShowProgress(0, 100, "");44 PIE.SystemAlgo.AlgoFactory.Instance().AsynExecuteAlgo(algo);45 }46 47 ///
48 /// 3、算法执行完成事件49 /// 50 ///
算法51 private void OnAlgoExcuteCompleted(PIE.SystemAlgo.ISystemAlgo algo)52 {53 PIE.AxControls.IStatusBar statusBar = m_Application.StatusBar;54 statusBar.UpdateProgress(100, "");55 statusBar.HideProgress();56 57 PIE.Carto.ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:\Data\clip_AsynExecute.tif");58 m_HookHelper.FocusMap.AddLayer(layer);59 m_HookHelper.ActiveView.PartialRefresh(PIE.Carto.ViewDrawPhaseType.ViewAll);60 61 PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;62 algoEvents.OnExecuteCompleted -= OnAlgoExcuteCompleted;63 algoEvents.OnProgressChanged -= OnAlgoProgressChanged;64 }65 66 ///
67 /// 4、算法进度变化事件68 /// 69 ///
进度70 ///
进度信息71 ///
算法72 ///
int
73 private int OnAlgoProgressChanged(double complete, string msg, PIE.SystemAlgo.ISystemAlgo algo)74 {75 PIE.AxControls.IStatusBar statusBar = m_Application.StatusBar;76 statusBar.UpdateProgress((int)complete, msg);77 return 0;78 }
View Code

2.4. 示例截图

算法的异步调用

 

算法的执行情况显示

转载于:https://www.cnblogs.com/PIESat/p/10231715.html

你可能感兴趣的文章
C++编译器之间的不同性能
查看>>
Environment 类
查看>>
力扣——只出现一次的数字
查看>>
IIS解决CPU和内存占用率过高的问题
查看>>
学习的一点遭遇
查看>>
verilog中assign和always@(*)的区别和值得注意
查看>>
cache、session与cookie
查看>>
Ant 入门
查看>>
新东方6级听写考点笔记
查看>>
MySQL积累
查看>>
gulp详细入门教程
查看>>
学习中 C 相关一些试题和答案
查看>>
python中的可迭代对象与迭代器
查看>>
WebKit的已实施srcset图像响应属性
查看>>
suggestion开发小结以及 对键盘事件的总结(针对中文输入法状态)
查看>>
Nio Client
查看>>
数据库 chapter 16 XML数据库
查看>>
spring mvc jsp运行不起来的问题
查看>>
tkinter笔记005-输入框
查看>>
大数据概述
查看>>