PIE SDK算法的同步調用

 

1.    算法功能簡介

    同步調用一旦開始,調用者必須等到方法調用返回後,才能繼續後續的行爲。算法

    PIE SDK支持算法功能的執行,下面對算法的同步調用功能進行介紹。ide

2.    算法功能實現說明

2.1. 示例簡介

    AlgoFactory類實現了算法的管理,主要實現瞭如下方法:spa

    1)      AlgoFactory.Instance().CreateAlgo(A,B)實現算法Algo的建立;須要注意的是:A:「PIE.CommonAlgo.dll」,B: "PIE.CommonAlgo.ImageClipAlgo"。code

    2)      設置算法執行的參數;視頻

    3)      經過算法的Excute或AlgoFactory.Instance().ExcuteAlgo()方法實現算法的同步調用;blog

2.2. 實現步驟

第一步教程

算法建立CreateAlgoip

第二步ci

設置算法執行的參數;同步

第三步

同步執行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             //一、初始實例化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             //二、同步執行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. 示例截圖

相關文章
相關標籤/搜索