剔除柵格塊即剔除柵格小斑塊功能。一幅影像圖層某一區域存在碎小斑塊,須要對其按照必定的條件進行剔除。算法
PIE支持剔除柵格快算法功能的執行,下面對該算法功能進行介紹。緩存
第一步ide |
算法參數設置spa |
第二步code |
算法執行orm |
第三步blog |
結果顯示ci |
算法名稱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 |
須要剔除的柵格塊的最小面積【輸入信息】 |
數據路徑 |
百度雲盤地址下/ 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 } |