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