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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值