PIE SDK算法的同步调用

 

1.    算法功能简介

    同步调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。

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

2.    算法功能实现说明

2.1. 示例简介

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

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

    2)      设置算法执行的参数;

    3)      通过算法的Excute或AlgoFactory.Instance().ExcuteAlgo()方法实现算法的同步调用;

2.2. 实现步骤

第一步

算法创建CreateAlgo

第二步

设置算法执行的参数;

第三步

同步执行ExcuteAlgo

2.3. 示例代码

项目路径

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

数据路径

百度云盘地址下/PIE示例数据/栅格数据/04.World/ World.tif

视频路径

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

示例代码

 1          /// <summary>
 2         /// 单击方法
 3         /// </summary>
 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\World.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<int> list = new List<int> { };
14             for (int i = 0; i < count; i++)
15             {
16                 list.Add(i);
17             }
18             info.listBands = list;
19             info.XFactor = 1;
20             info.YFactor = 1;
21             info.bInvalidValue = false;
22             info.OutputFilePath = @"D:\Data\clip_Execute.tif";  //裁剪保存结果
23             info.Type = 0;  // (等于0表示通过栅格范围裁剪)
24             info.XStart = 0;
25             info.XEnd = 500;
26             info.YStart = 0;
27             info.YEnd = 500;
28             info.FileType = "GTiff";  //Tiff数据的FileTypeCode为“GTiff”,IMG数据的FileTypeCode为"HFA",其他格式的为"ENVI"。;
29 
30             //1、初始实例化Instance,算法创建CreateAlgo
31             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImageClipAlgo");
32             if (algo == null) return;
33 
34             //2、同步执行Excute
35             PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
36             algo.Name = "影像裁剪";
37             algo.Params = info;
38             bool OK = algo.Execute();
39 
40             PIE.Carto.ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:\Data\clip_Execute.tif");
41             m_HookHelper.FocusMap.AddLayer(layer);           m_HookHelper.ActiveView.PartialRefresh(PIE.Carto.ViewDrawPhaseType.ViewAll);
42         }
View Code

2.4. 示例截图

 

 

posted @ 2019-01-04 17:49  PIESAT  阅读(851)  评论(0编辑  收藏  举报