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 } |
2.4 示例截图