• PIE SDK创建金字塔算法


    1.算法功能简介

      为栅格影像建立了金字塔,这些影像便能快速进行显示。除了在屏幕上显示外,金字塔还包含了很多其他信息。如果没有金字塔,那么在显示时就要访问整理栅格数据集,然后进行大量计算来选择哪些栅格像元被显示。金字塔是一种能对栅格影像按逐级降低分辨率的拷贝方式存储的方法。通过选择一个与显示区域相似的分辨率,只需进行少量的查询和少量的计算,从而减少显示时间。

      PIE支持金字塔创建算法功能的执行,下面对该算法功能进行介绍。

    2.算法功能实现说明

    2.1 实现步骤

    第一步

    算法参数设置

    第二步

    算法执行

    第三步

    结果显示

    2.2 算法参数

    算法名称

    创建金字塔

    C++算法DLL

    ImagePyramidBuildAlgo.dll

    C#算法DLL

    PIE.CommonAlgo.dll

    C#算法名称

    PIE.CommonAlgo.ImagePyramidBuildAlgo

    参数结构体

    参数说明

    IList<String>

    输入创建金字塔的文件或文件夹路径集合

     

    2.3 示例代码

    数据路径

    百度云盘地址下/ PIE示例数据/栅格数/04.World/World.tif

    示例代码

     1 /// <summary>
     2 /// 金字塔创建
     3 /// </summary>
     4 public void BuildPyramic()
     5 {
     6     #region 参数设置
     7     string filePath = @"D:dataChina1worldWorld.tif";
     8     IList<string> listFile = new List<string>();
     9     listFile.Add(filePath);
    10     #endregion
    11 
    12     #region 创建算法对象
    13     PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImagePyramidBuildAlgo");
    14     if (algo == null) return;           
    15     algo.Name = "创建金字塔";
    16     algo.Params = listFile;
    17     #endregion
    18 
    19     #region 执行算法 并显示结果 
    20     IRasterDataset dataset = DatasetFactory.OpenDataset(filePath, OpenMode.ReadOnly) as IRasterDataset;
    21     if (dataset == null) return;
    22     int oldLevel = dataset.GetPyramidLevel();//获取金字塔级别
    23     bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
    24     if (result)
    25     {
    26         IRasterDataset dataset1 = DatasetFactory.OpenDataset(filePath, OpenMode.ReadOnly) as IRasterDataset;
    27         if (dataset1 == null) return;
    28         int newLevel = dataset.GetPyramidLevel();
    29         string info = string.Format("金字塔算法执行成功,原来金字塔级别为:{0},转换后的为:{1}", oldLevel, newLevel);
    30         MessageBox.Show(info);
    31         IRasterLayer rLayer = LayerFactory.CreateDefaultRasterLayer(dataset1);
    32         if (rLayer == null) return;
    33         m_HookHelper.ActiveView.FocusMap.AddLayer(rLayer as ILayer);
    34         m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
    35         (dataset1 as IDisposable).Dispose();
    36         dataset1 = null;
    37     }
    38     (dataset as IDisposable).Dispose();
    39     dataset = null;
    40     #endregion
    41 }
    View Code

    2.4 示例截图

     

  • 相关阅读:
    编译报错:实际参数列表和形式参数列表长度不同
    狂神说 GUI编程笔记
    狂神说 JavaSE入门笔记(三)
    狂神说 JavaSE入门笔记(二)
    狂神说 JavaSE入门笔记(一)
    安装ros的问题
    /opt/ros/kinetic/include/moveit/macros/declare_ptr.h:53:16: error: ‘shared_ptr’ in namespace ‘std’ does not name a template type typedef std::shared_ptr<const Type> Name##ConstPtr;
    [ERROR] [1583298467.643559437]: Exception while loading planner 'ompl_interface/OMPLPlanner': According to the loaded
    Linux常用命令大全
    机器人感知
  • 原文地址:https://www.cnblogs.com/PIESat/p/11248430.html
Copyright © 2020-2023  润新知