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

示例代码

          /// <summary>
///存储格式转换算法测试,本算法实现了将World.tif的存储格式转换为BSQ存储方式生成World1.img文件
/// </summary>
private void Test_KrigingInterpolationAlgo()
{
#region 1、参数设置
PIE.CommonAlgo.FormatTran_Exchange_Info info = new PIE.CommonAlgo.FormatTran_Exchange_Info();
info.strInFile = @"D:\Data\World.tif";
info.strOutFile = @"D:\Data\World1.img";
info.m_strFileType = "HFA";
info.lOutDataType = ;
PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.FormatTranAlgo");
if (algo == null) return;
#endregion
//2、算法执行
PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
algo.Name = "存储格式转换";
algo.Params = info;
PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
//3、结果显示
ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:\Data\World1.img");
m_HookHelper.ActiveView.FocusMap.AddLayer(layer); m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
}

2.4. 示例截图

PIE SDK存储格式转换的更多相关文章

  1. PIE SDK 文章目录索引

    1.PIE SDK介绍 1.1.  PIE软件介绍 1.2.  PIE SDK介绍 1.3.  PIE支持项目介绍 1.4.  PIE.NET-SDK插件式二次开发介绍 1.5.  PIE.NET-S ...

  2. PIE SDK Command&&Tool工具命令一览表

    PIE SDK Command&&Tool工具命令一览表 编号 模板 名称(中文) Command&Tool 程序集 备注 1 数据管理 加载栅格数据 PIE.Controls ...

  3. PIE SDK矢量数据的投影转换

    1. 功能简介 目前在地理信息领域中数据包括矢量和栅格两种数据组织形式 ,每一种数据都可以对投影进行转换,目前PIE SDK支持矢量和栅格数据的投影转换功能,下面对矢量数据的投影转换功能进行介绍. 2 ...

  4. PIE SDK栅格数据的投影转换

    1. 功能简介 为了适应不同数据显示分析的需要,数据的投影可以进行相应的转换,目前PIE SDK支持多种数据格式的投影转换,下面对栅格数据格式的投影转换功能进行介绍. 2. 功能实现说明 2.1. 实 ...

  5. PIE SDK矢量数据简单渲染

    1. 功能简介 PIE SDK对数据的符号化分为矢量数据渲染和栅格数据渲染两大类. 目前PIE SDK中针对矢量数据渲染包括简单渲染.唯一值渲染.分级渲染.自定义渲染:针对栅格数据渲染包括拉伸渲染.R ...

  6. PIE SDK矢量自定义渲染

    1. 功能简介 PIE SDK中关于矢量渲染提供了多种方案,包括简单渲染.分级渲染.唯一值渲染,这几种渲染方式具有一定的通用性,可以满足用户绝大多数的需求. 当面对复杂的业务,当前渲染方案无法满足用户 ...

  7. PIE SDK栅格RGB渲染

    1. 功能简介 RGB色彩模式是一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道的颜色,这个标准几乎包 ...

  8. PIE SDK栅格增强控制

    1. 功能简介 亮度是指发光体(反光体)表面发光(反光)强弱的物理量:对比度指的是一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量:透明度是描述光线透过的程度 栅格数据增强控制主要是通过对亮 ...

  9. PIE SDK栅格图层渲染变化事件监听

    1. 功能简介 通过PIE SDK加载图层后,会默认的赋值给数据一个渲染.当用户重新给数据赋值Render或改变数据显示效果时,会触发渲染变化事件. 所谓的事件监听是在事件触发时,将执行用户指定的函数 ...

随机推荐

  1. WCF把书读薄(4)——事务编程与可靠会话

    WCF把书读薄(3)——数据契约.消息契约与错误契约 真不愧是老A的书,例子多,而且也讲了不少原理方面的内容,不过越读越觉得压力山大……这次来稍微整理整理事务和可靠会话的内容. 十八.事务编程 WCF ...

  2. javascript总结15:Break语句 与 continue语句

    1 Break语句 解释:在循环体内,只要代码遇到break,程序立马结束当前循环. 当前循环指的是break语句所在的循环体. for (var i =1; i<10; i++){ if(i% ...

  3. 编写高质量代码改善C#程序的157个建议——建议57:实现ISerializable的子类型应负责父类的序列化

    建议57:实现ISerializable的子类型应负责父类的序列化 我们将要实现的继承自ISerializable的类型Employee有一个父类Person,假设Person没有实现序列化,而现在子 ...

  4. 如何快速搭建基于python+appium的自动化测试环境

    首先申明本文是基本于Python与Android来快速搭建Appium自动化测试环境: 主要分为以下几个步骤: 前提条件: 1)安装与配置python环境,打开 Python官网,找到“Downloa ...

  5. Android Hander、Looper、Message三者之间的联系

    1.首先Looper.prepare()在本线程中保存一个Looper实例,然后该实例中保存一个MessageQueue对象:因为Looper.prepare()在一个线程中只能调用一次,所以Mess ...

  6. Unity性能优化专题---腾讯牛人分享经验

    这里从三个纬度来分享下内存的优化经验:代码层面.贴图层面.框架设计层面. 一.代码层面. 1.foreach. Mono下的foreach使用需谨慎.频繁调用容易触及堆上限,导致GC过早触发,出现卡顿 ...

  7. Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'blog.t_blog.addTime' which is not functi

    sql报错: Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT ...

  8. 1442: Neo 的简单字符串(字符串)

    1442: Neo 的简单字符串 时间限制: 10 Sec 内存限制: 128 MB 提交: 9 解决: 3 统计 题目描述 Neo 给你一系列字符串,请你输出字符串中的不同单词个数以及总单词个数. ...

  9. B. Spreadsheets(进制转换,数学)

    B. Spreadsheets time limit per test 10 seconds memory limit per test 64 megabytes input standard inp ...

  10. 加密模块(md5)

    一.md5加密 import hashlib s = ' print(s.encode()) m = hashlib.md5(s.encode())# 必须得传一个bytes类型的 print(m.h ...