PIE SDK波譜運算

 

1.算法功能簡介

    波譜運算(Spectral Math)是一種靈活的波譜處理工具,能夠用數學表達式或IDL程序對波譜曲線(以及選擇的多波段圖像)進行處理。波譜曲線能夠來自一幅多波段圖像的Z剖面、波譜庫或ASCII文件。算法

    如圖1爲波譜運算的簡單示意圖——求三個波譜曲線的和。在表達式s1+s2+s3中(波譜運算中的變量是以s開頭),能夠分別給s一、s二、s3指定爲一條波譜曲線,獲得的結果是一條波譜曲線(x值與s一、s二、s3同樣,y值是三者之和);也能夠s1是一個多波段圖像文件(實際上是每一個像素點的Z-剖面),s2和s3分別是兩條波譜曲線,獲得的結果是一個與輸入的多波段圖像同樣波段數和行列數的圖像。ide

 

圖1波譜運算示意圖工具

    PIE SDK支持算法功能的執行,下面對波譜運算算法功能進行介紹。測試

2.算法功能實現說明

2.1.  實現步驟

第一步編碼

算法參數設置spa

第二步code

算法執行視頻

第三步blog

結果顯示教程

2.2. 算法參數

C#算法名稱

PIE.CommonAlgo. BandSpecAlgo

參數結構體

BandOper_Exchange_Info

參數說明

StrExp

String

波段運算公式,如"(b4-b3)/(b4+b3)";

SelectFileBands

IList<Int>

選中的圖像對應的波段band編號(是波段編號而非波段索引),根據波段運算公式的波段大小前後順序b三、b4肯定順序。new List<int> {3, 4}

SelectFileNames

IList<String>

選中的圖像對應的文件file名稱,根據波段運算公式的波段大小前後順序b三、b4肯定順序。new List<String> {b3對應文件路徑, b4對應文件路徑}

OutputFilePath

String

輸出文件路徑

FileTypeCode

String

根據輸出類型得到文件編碼類型

.tif/.tiff——GTiff

.img—————HFA

其餘—————ENVI

FuncName

String

C#算法名稱

2.3. 示例代碼

項目路徑

百度雲盤地址下/PIE示例程序/10.算法調用/多功能工具/  FundamentalToolDemo.BandSpecDemo 

數據路徑

百度雲盤地址下/ PIE示例數據/柵格數據/04.World/World.tif

視頻路徑

百度雲盤地址下/PIE視頻教程/10.算法調用/多功能工具/波譜運算算法.avi

示例代碼

 1          /// <summary>
 2         ///波譜運算算法測試,本算法實現了將World.tif文件的所有波段(稱爲一個光譜文件)生成World4.tif文件
 3         /// </summary>
 4         private void Test_KrigingInterpolationAlgo()
 5         {
 6             #region 一、參數設置
 7             PIE.CommonAlgo.BandOper_Exchange_Info info = new PIE.CommonAlgo.BandOper_Exchange_Info();
 8             info.StrExp = "s1";
 9             info.SelectFileBands = new List<int> { 1 };
10             info.SelectFileNames = new List<string> { @"D:\Data\World.tif", @"D:\Data\World.tif" };
11             info.OutputFilePath = @"D:\Data\World4.tif";
12             info.FileTypeCode = "GTiff";
13 
14             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.BandSpecAlgo");
15             if (algo == null) return;
16 #endregion
17 
18             //二、算法執行
19             PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
20             algo.Name = "波譜運算";
21             algo.Params = info;            PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);           
22             //三、結果顯示
23 ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:\Data\World4.tif");
24             m_HookHelper.ActiveView.FocusMap.AddLayer(layer);          m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);                      
25                     }
View Code

2.4. 示例截圖

 

相關文章
相關標籤/搜索