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

     

  • 相关阅读:
    PPT2010中插入页码并且改变页码的位置
    Axis2发布webservice(2)--利用eclipse的axis2插件打包为arr发布
    Axis2发布webservice(1)--0配置发布
    权限设计
    网易2016实习生前端笔试题部分总结
    浅谈HTML文档模式
    从原型链看DOM--Node类型
    JavaScript之Function函数深入总结
    javascript之面向对象程序设计(对象和继承)
    javascript之基本包装类型(Boolean,Number,String)基础篇
  • 原文地址:https://www.cnblogs.com/PIESat/p/11248430.html
Copyright © 2011-2022 走看看