• PIE SDK存储格式转换


     

    1.算法功能简介

        影像存储格式转换可以实现栅格数据存储格式的自由转换,其中存储格式可以是 BSQ、 BIP、 BIL 三种格式。

        遥感数字图像数据的存储与分发,通常采用以下三种数据格式:

        BSQ( Band Sequential) ): 按照波段顺序依次记录图像数据,数据排列遵循以下规律:第一波段位居第一,第二波段位居第二…第 n 波段位居第 n 位;在第一波段中,数据依据行号顺序依次排列,每一行内,数据按像素号顺序排列。其余波段依次类推。(即按照波段顺序,当第一波段所有的数据存储记录结束后,才开始记录第二波段的数据。) BSQ 是最简单的存储格式,提供了最佳的空间处理能力。它先将图像同一波段的数据逐行存储下来,再以相同的方式存储下一波段数据。如果要获取图像单个波普波段的空间点( X, Y)的信息,那么采用 BSQ方式存储是最佳的选择。

        BIP( Band Interleaved by Pixel): 按像元顺序记录图像数据,即在一行中,每个像元按波段次序交叉排列,属各波段数据间(按像元)交叉记录方式(即各波段数据间按列交叉排列方式)。数据排列遵循以下规律:在第一行中,第一波段的第一行第 1 个像素位居第一,第二波段的第一行第 1 个像素位居第二,第三波段的第一行第 1 个像素位居第三…第 n 波段的第一行第 1 个像素位居第 n 位,

    然后为第一波段第一行第 2 个像素位居第 n+1 位,第二波段的第一行第 2 个像素位居第 n+2 位…其余各波段第一行数据排列位置以此类推,其余各行数据的记录排列顺序也遵照此规律。 BIP 格式提供了最佳的波谱处理能力。

        BIL ( Band Interleaved by Pixel): 是逐行按波段次序排列的格式,即先记录第一波段第一行、第二波段第一行,第三波段第一行…第 n 波段第一行;再记录各波段第二行…其余数据记录排列顺序依次类推,属于各波段数据间(按行)交叉记录方式。 BIL 是介于空间处理和波谱处理之间的一种折中的存储格式。

        PIE支持算法功能的执行,下面对存储格式转换算法功能进行介绍。

    2.算法功能实现说明

    2.1. 实现步骤

    第一步

    算法参数设置

    第二步

    算法执行

    第三步

    结果显示

    2.2. 算法参数

    C#算法DLL

    PIE.CommonAlgo.dll

    C#算法名称

    PIE.CommonAlgo.FormatTranAlgo

    参数结构体

    FormatTran_Exchange_Info

    参数说明

    strInFile

    String

    输入栅格影像的路径

    必须输入波段数大于1的影像

    strOutFile

    String

    输出影像的路径

    m_strFileType

    String

    根据输出类型获得文件编码类型

    .tif/.tiff——GTiff

    .img—————HFA

    其他—————ENVI

    lOutDataType

    Int

    输出文件存储格式的类型

    0代表BIP,1代表BSQ,2代表BIL;

    注意:

    输出存储格式不能和输入文件的存储格式相同;

    输出GeoTIFF数据不支持BIL存储方式;

    输出ERDAS数据不支持BIL和BIP存储方式;

    2.3. 示例代码

    项目路径

    百度云盘地址下/PIE示例程序/ FundamentalToolDemo.FormatTranDemo

    数据路径

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

    视频路径

    百度云盘地址下/PIE视频教程/10.算法调用/多功能工具/存储格式转换算法.avi

    示例代码

     1          /// <summary>
     2         ///存储格式转换算法测试,本算法实现了将World.tif的存储格式转换为BSQ存储方式生成World1.img文件
     3         /// </summary>
     4         private void Test_KrigingInterpolationAlgo()
     5         {
     6             #region 1、参数设置
     7             PIE.CommonAlgo.FormatTran_Exchange_Info info = new PIE.CommonAlgo.FormatTran_Exchange_Info();
     8             info.strInFile = @"D:DataWorld.tif";
     9             info.strOutFile = @"D:DataWorld1.img";
    10             info.m_strFileType = "HFA";
    11             info.lOutDataType = 1;
    12             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.FormatTranAlgo");
    13             if (algo == null) return;
    14 #endregion
    15             //2、算法执行
    16             PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
    17             algo.Name = "存储格式转换";
    18             algo.Params = info;
    19           PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);           
    20             //3、结果显示
    21 ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:DataWorld1.img");
    22             m_HookHelper.ActiveView.FocusMap.AddLayer(layer);            m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);                       
    23   }
    View Code

    2.4. 示例截图

      

  • 相关阅读:
    编译原理第一次作业
    【码制】关于原码,反码,补码的一些笔记和理解
    输出1到50以内的所有素数【C】
    方法和数组
    if条件判断和switch,for do while
    变量
    全选,删除,添加
    java基础
    二级联
    轮播图
  • 原文地址:https://www.cnblogs.com/PIESat/p/10154157.html
Copyright © 2020-2023  润新知