PIE SDK剔除栅格块算法
1.算法功能簡介
剔除柵格塊即剔除柵格小斑塊功能。一幅影像圖層某一區域存在碎小斑塊,需要對其按照一定的條件進行剔除。
PIE支持剔除柵格快算法功能的執行,下面對該算法功能進行介紹。
2.算法功能實現說明
2.1 實現步驟
| 第一步 | 算法參數設置 |
| 第二步 | 算法執行 |
| 第三步 | 結果顯示 |
2.2 算法參數
| 算法名稱 | 剔除柵格塊 | |
| 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 示例截圖
?
轉載于:https://www.cnblogs.com/PIESat/p/11249017.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的PIE SDK剔除栅格块算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019.7.25作业
- 下一篇: 图像的掩膜操作