PIE SDK存儲格式轉換

 

1.算法功能簡介

    影像存儲格式轉換能夠實現柵格數據存儲格式的自由轉換,其中存儲格式能夠是 BSQ、 BIP、 BIL 三種格式。算法

    遙感數字圖像數據的存儲與分發,一般採用如下三種數據格式:ide

    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 是介於空間處理和波譜處理之間的一種折中的存儲格式。spa

    PIE支持算法功能的執行,下面對存儲格式轉換算法功能進行介紹。3d

2.算法功能實現說明

2.1. 實現步驟

第一步code

算法參數設置orm

第二步視頻

算法執行

第三步

結果顯示

 

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 一、參數設置
 7             PIE.CommonAlgo.FormatTran_Exchange_Info info = new PIE.CommonAlgo.FormatTran_Exchange_Info();
 8             info.strInFile = @"D:\Data\World.tif";
 9             info.strOutFile = @"D:\Data\World1.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             //二、算法執行
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             //三、結果顯示
21 ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:\Data\World1.img");
22             m_HookHelper.ActiveView.FocusMap.AddLayer(layer);            m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);                       
23   }
View Code

2.4. 示例截圖

  

相關文章
相關標籤/搜索