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

示例代码

  /// <summary>
剔除栅格块
/// /// </summary>
public void ImageSieveFilte ()
{
FrmImageSieveFilter frmImageSieveFilter = new FrmImageSieveFilter();
if (frmImageSieveFilter.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
IRasterDataset dataset = DatasetFactory.OpenRasterDataset(frm.Exchange_info.InputFile, OpenMode.ReadOnly);
if (dataset == null) return;
ImageSieveFilter_Exchange_info info = new ImageSieveFilter_Exchange_info();//得到生成实体文件用这种方法
info = frm.Exchange_info;
//ImageSieveFilterDataset_Exchange_info info = new ImageSieveFilterDataset_Exchange_info();//生成缓存数据集或者该别原数据集
//info.BModifyOriginal = false;
//info.InputRasterDataset = dataset;
//info.MinArea = frm.Exchange_info.MinArea; ISystemAlgo algo = AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImageSieveFilterAlgo");
if (algo == null) return;
algo.Params = info;
bool result = AlgoFactory.Instance().ExecuteAlgo(algo);
//info = algo.Params as ImageSieveFilterDataset_Exchange_info;//得到执行后的结果输出栅格数据集,算法执行完后把结果存在 OutputRasterDataset,需要重新获取一下
if (result)
{
// ILayer layer = LayerFactory.CreateDefaultRasterLayer(info.OutputRasterDataset) as ILayer;
ILayer layer = LayerFactory.CreateDefaultLayer(info.OutputFile);
if (layer == null) return;
mapControlMain.ActiveView.FocusMap.AddLayer(layer);
mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
}
}

2.4 示例截图

最新文章

  1. javascript动画系列第二篇——磁性吸附
  2. 安全的将excel导入sqlite3的解决方案
  3. 在 ML2 中 enable local network - 每天5分钟玩转 OpenStack(79)
  4. django xadmin 插件(1)
  5. zepto源码--核心方法(类数组相关)--学习笔记
  6. ASCII码对照表 (转)
  7. 数据库事务隔离级ORACLE数据库事务隔离级别介绍
  8. Java 读Properties
  9. ExtJs批量更新
  10. 再议Swift操作符重载
  11. ExpandableListView 箭头样式
  12. SpringMVC 学习-上传文件分解器 CommonsMultipartResolver 类
  13. 冒泡算法给0~9随机n位数字排序
  14. CSS效果:焦点图片
  15. python异步编程之asyncio(百万并发)
  16. MySQL字符集详解
  17. MongoError: no primary found in replicaset
  18. CSS3 的box-shadow进阶之 - 基础知识篇
  19. fdisk -l 参数详解
  20. LVM逻辑卷管理测试——逻辑卷扩展、收缩、快照及删除

热门文章

  1. Ninja——小而快的构建系统
  2. 201871010118-唐敬博《面向对象程序设计(java)》第十周学习总结
  3. day13_7.15 迭代器和生成器
  4. JetBrains优惠码分享
  5. goto命令
  6. haproxy是什么以及作用?
  7. MySQL中连接超时自动断开的解决方案
  8. 2019-2020 ICPC Asia Hong Kong Regional Contest
  9. c++ 使用 vcpkg
  10. spring boot开启gzip