PIE SDK剔除柵格塊算法

1.算法功能簡介

  剔除柵格塊即剔除柵格小斑塊功能。一幅影像圖層某一區域存在碎小斑塊,須要對其按照必定的條件進行剔除。算法

  PIE支持剔除柵格快算法功能的執行,下面對該算法功能進行介紹。緩存

2.算法功能實現說明

2.1 實現步驟

第一步ide

算法參數設置spa

第二步code

算法執行orm

第三步blog

結果顯示ci

2.2 算法參數

算法名稱event

剔除柵格塊table

C#算法DLL

PIE.CommonAlgo.dll

C#算法名稱

PIE.CommonAlgo.ImageSieveFilterAlgo

參數結構體

ImageSieveFilterDataset_Exchange_info

參數說明

InputRasterDataset

IRasterDataset

輸入的柵格數據集【輸入信息】

OutputRasterDataset

IRasterDataset

輸出的柵格數據集(*.tif;*.tiff) 【輸出信息】

MinArea

int

須要剔除的柵格塊的最小面積【輸入信息】

BModifyOriginal

bool

是否修改原始數據集

 

算法名稱

剔除柵格塊

C#算法DLL

PIE.CommonAlgo.dll

C#算法名稱

PIE.CommonAlgo.ImageSieveFilterAlgo

參數結構體

ImageSieveFilter_Exchange_info

參數說明

InputFile

String

輸入的柵格數據文件路徑(*.tif;*.tiff) 【輸入信息】

OutputFile

String

輸出的柵格數據文件路徑(*.tif;*.tiff) 【輸出信息】

MinArea

Int

須要剔除的柵格塊的最小面積【輸入信息】

2.3 示例代碼

數據路徑

百度雲盤地址下/ PIE示例數據/柵格數據/04.World/World.tif

示例代碼

 1  /// <summary>
 2 剔除柵格塊
 3 /// /// </summary>
 4 public void ImageSieveFilte ()
 5 {
 6    FrmImageSieveFilter frmImageSieveFilter = new FrmImageSieveFilter();
 7    if (frmImageSieveFilter.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
 8 IRasterDataset dataset = DatasetFactory.OpenRasterDataset(frm.Exchange_info.InputFile, OpenMode.ReadOnly);
 9     if (dataset == null) return;
10     ImageSieveFilter_Exchange_info info = new ImageSieveFilter_Exchange_info();//獲得生成實體文件用這種方法
11     info = frm.Exchange_info;
12     //ImageSieveFilterDataset_Exchange_info info = new ImageSieveFilterDataset_Exchange_info();//生成緩存數據集或者該別原數據集
13     //info.BModifyOriginal = false;
14     //info.InputRasterDataset = dataset;
15     //info.MinArea = frm.Exchange_info.MinArea;
16 
17     ISystemAlgo algo = AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImageSieveFilterAlgo");
18     if (algo == null) return;
19     algo.Params = info;
20     bool result = AlgoFactory.Instance().ExecuteAlgo(algo);
21     //info = algo.Params as ImageSieveFilterDataset_Exchange_info;//獲得執行後的結果輸出柵格數據集,算法執行完後把結果存在   OutputRasterDataset,須要從新獲取一下
22     if (result)
23     {
24         // ILayer layer = LayerFactory.CreateDefaultRasterLayer(info.OutputRasterDataset) as ILayer;
25         ILayer layer = LayerFactory.CreateDefaultLayer(info.OutputFile);
26         if (layer == null) return;
27         mapControlMain.ActiveView.FocusMap.AddLayer(layer);
28         mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
29     }
30 }
View Code

2.4 示例截圖

相關文章
相關標籤/搜索