PIE SDK建立金字塔算法

1.算法功能簡介算法

  爲柵格影像創建了金字塔,這些影像便能快速進行顯示。除了在屏幕上顯示外,金字塔還包含了不少其餘信息。若是沒有金字塔,那麼在顯示時就要訪問整理柵格數據集,而後進行大量計算來選擇哪些柵格像元被顯示。金字塔是一種能對柵格影像按逐級下降分辨率的拷貝方式存儲的方法。經過選擇一個與顯示區域類似的分辨率,只需進行少許的查詢和少許的計算,從而減小顯示時間。ide

  PIE支持金字塔建立算法功能的執行,下面對該算法功能進行介紹。ui

2.算法功能實現說明spa

2.1 實現步驟3d

第一步code

算法參數設置orm

第二步對象

算法執行blog

第三步ci

結果顯示

2.2 算法參數

算法名稱

建立金字塔

C++算法DLL

ImagePyramidBuildAlgo.dll

C#算法DLL

PIE.CommonAlgo.dll

C#算法名稱

PIE.CommonAlgo.ImagePyramidBuildAlgo

參數結構體

參數說明

IList<String>

輸入建立金字塔的文件或文件夾路徑集合

 

2.3 示例代碼

數據路徑

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

示例代碼

 1 /// <summary>
 2 /// 金字塔建立
 3 /// </summary>
 4 public void BuildPyramic()
 5 {
 6     #region 參數設置
 7     string filePath = @"D:\data\China1\world\World.tif";
 8     IList<string> listFile = new List<string>();
 9     listFile.Add(filePath);
10     #endregion
11 
12     #region 建立算法對象
13     PIE.SystemAlgo.ISystemAlgo algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImagePyramidBuildAlgo");
14     if (algo == null) return;           
15     algo.Name = "建立金字塔";
16     algo.Params = listFile;
17     #endregion
18 
19     #region 執行算法 並顯示結果 
20     IRasterDataset dataset = DatasetFactory.OpenDataset(filePath, OpenMode.ReadOnly) as IRasterDataset;
21     if (dataset == null) return;
22     int oldLevel = dataset.GetPyramidLevel();//獲取金字塔級別
23     bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
24     if (result)
25     {
26         IRasterDataset dataset1 = DatasetFactory.OpenDataset(filePath, OpenMode.ReadOnly) as IRasterDataset;
27         if (dataset1 == null) return;
28         int newLevel = dataset.GetPyramidLevel();
29         string info = string.Format("金字塔算法執行成功,原來金字塔級別爲:{0},轉換後的爲:{1}", oldLevel, newLevel);
30         MessageBox.Show(info);
31         IRasterLayer rLayer = LayerFactory.CreateDefaultRasterLayer(dataset1);
32         if (rLayer == null) return;
33         m_HookHelper.ActiveView.FocusMap.AddLayer(rLayer as ILayer);
34         m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
35         (dataset1 as IDisposable).Dispose();
36         dataset1 = null;
37     }
38     (dataset as IDisposable).Dispose();
39     dataset = null;
40     #endregion
41 }
View Code

2.4 示例截圖

相關文章
相關標籤/搜索