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

     

  • 相关阅读:
    IntelliJ IDEA + Maven + Tomcat 本地开发、部署、调试。
    IntelliJ IDEA 修改IDE字体、代码字体。
    IntelliJ IDEA 自动导入包的问题
    jersey中的 404 Not Found 错误。
    IntelliJ IDEA 创建maven项目一次后,然后删除,再次保存到此目录下,提供此目录已经被占用的问题。
    修饰符(字符篇)
    [讨论] 2015-8-13日 主题:关于指针和堆栈
    HDFS异构存储
    HDFS异构存储
    HDFS副本放置策略
  • 原文地址:https://www.cnblogs.com/PIESat/p/11249017.html
Copyright © 2020-2023  润新知