1. 程式人生 > >PIE SDK波段合成

PIE SDK波段合成

 

1.演算法功能簡介

    波段合成功能主要用於將多幅影象合併為一個新的多波段影象(即波段的疊加打包,構建一個新的多波段檔案),從而可根據不同的用途選擇不同波長範圍內的波段合成 RGB 彩色影象。

    PIE支援演算法功能的執行,下面對波段合成演算法功能進行介紹。

2.演算法功能實現說明

2.1 實現步驟

第一步

演算法引數設定

第二步

演算法執行

第三步

結果顯示

2.2 演算法引數

C#演算法DLL

PIE.CommonAlgo.dll

C#演算法名稱

PIE.CommonAlgo.BandCombinationAlgo

引數結構體

BandCombination_Exchange_Info

引數說明

m_vecFileptr

IIList< IRasterDataset>

輸入影像的資料集

獲取輸入柵格影像的RasterDataset

bands

IIList<IList<int>>

輸入每個波段需要合併的波段列表

tstrfile

String

輸出檔案路徑

m_strFileTypeCode

String

根據輸出型別獲得檔案編碼型別

.tif/.tiff——GTiff

.img—————HFA

其他—————ENVI

regioninfo

IList<Interestregion>

輸入影像的範圍集合

m_iOutRangeCrossType

Int

輸出範圍方式方式,0-交集,1-並集

 

Interestregion (輸入影像範圍)

ULx

Int

左上角的列座標(從0開始)

ULy

Int

左上角的行座標(從0開始)

height

Int

輸入的行數

Width

Int

輸入的列數

2.3示例程式碼

專案路徑

百度雲盤地址下/PIE示例程式/ FundamentalToolDemo.BandCombinationDemo

資料路徑

百度雲盤地址下/ PIE示例資料/柵格數/World/world.tiff

視訊路徑

百度雲盤地址下/PIE視訊教程/波段合成演算法avi

示例程式碼

 1          /// <summary>
 2         ///波段合成演算法測試,本演算法實現了將兩幅World.tif影像的1-3波段合併為具有6個波段的World5.tif影像
 3         /// </summary>
 4         private void Test_KrigingInterpolationAlgo()
 5         {
 6             #region 1、引數設定
 7             PIE.CommonAlgo.BandCombination_Exchange_Info info = new PIE.CommonAlgo.BandCombination_Exchange_Info();
 8             string path = @"D:\Data\World.tif";
 9             IRasterDataset rDataset = DatasetFactory.OpenDataset(path, OpenMode.ReadOnly) as IRasterDataset;
10 
11             info.m_vecFileptr = new List<IRasterDataset> { rDataset, rDataset };
12             List<int> list1 = new List<int> { 0,1,2 };
13             info.bands = new List<List<int>> { list1,list1 };
14             info.tstrfile = @"D:\Data\World5.tif";
15             info.m_strFileTypeCode = "GTiff";
16             PIE.CommonAlgo.Interestregion interestregion = new PIE.CommonAlgo.Interestregion();
17             interestregion.SetRegion(0, 0, rDataset.GetRasterYSize(), rDataset.GetRasterXSize());
18             info.regioninfo = new List<PIE.CommonAlgo.Interestregion> { interestregion, interestregion };
19             info.m_iOutRangeCrossType = 0;
20 
21             PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.BandCombinationAlgo");
22             if (algo == null) return;            
23 #endregion
24 
25             //2、演算法執行
26             PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
27             algo.Name = "波段合成";
28             algo.Params = info;
29             bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);        
30             //3、結果顯示
31 ILayer layer = PIE.Carto.LayerFactory.CreateDefaultLayer(@"D:\Data\World5.tif");
32             m_HookHelper.ActiveView.FocusMap.AddLayer(layer);           m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);                     
33                     }
View Code

2.4示例截圖