zoukankan      html  css  js  c++  java
  • 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 示例截图

     

  • 相关阅读:
    java面试②基础部分
    java面试①整体流程
    Mysql加锁过程详解(6)-数据库隔离级别(2)-通过例子理解事务的4种隔离级别
    Mysql加锁过程详解(6)-数据库隔离级别(1)
    CV3——学习笔记-实战项目(上):如何搭建和训练一个深度学习网络
    CV2——学习笔记-图像分类
    CV1——学习笔记
    思无邪
    C++学习笔记
    操作系统——学习笔记
  • 原文地址:https://www.cnblogs.com/PIESat/p/11248430.html
Copyright © 2011-2022 走看看