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> |
輸入建立金字塔的文件或文件夾路徑集合 |
數據路徑 |
百度雲盤地址下/ 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 } |