1. 程式人生 > >PIE SDK柵格拉伸控制

PIE SDK柵格拉伸控制

 

1. 功能簡介

    在我們的實際應用中,對於一般16bit或者更大位元深度的影像,像元值都是大於255的。這種情況下,RGB的顯示器是不能夠直接使用像元值進行顯示的,需要將像元值換算到0~255的區間內以用於顯示。常用的增強方式是通過拉伸來增大柵格顯示的視覺對比度,以生成一副更清晰的影像,從而使某些要素變得更容易識別。

    常用的拉伸方式包括標包括最常見的標準差(Standard Deviation),最大最小值( Minimum–Maximum),直方圖均衡( Histogram Equalize)等等。對於不同柵格資料情況,應選擇最適合其的拉伸方式。

2. 功能實現說明

2.1 實現思路及原理說明

第一步

獲取柵格圖層的Render並進行介面轉換。

第二步

設定拉伸型別。

第三步

根據拉伸型別進行引數設定。

第四步

觸發渲染改變事件,重新繪製。

2.2 核心介面與方法

介面/類

方法

說明

 

 

Carto. IRasterStretch

StretchType

柵格拉伸型別屬性

LinearStretchPercent

拉伸百分比屬性

SetMinimumMaximum

設定指定波段拉伸顯示的最大值、最小值

2.3 示例程式碼

專案路徑

百度雲盤地址下/PIE示例程式/07圖層渲染/11.柵格拉伸控制

資料路徑

百度雲盤地址下/PIE示例資料/柵格資料/ GF1/

視訊路徑

百度雲盤地址下/PIE視訊教程/07圖層渲染/11.柵格拉伸控制.avi

示例程式碼

 1 方法(一)百分比拉伸
 2   if (mapControlMain.ActiveView.CurrentLayer == null) return;
 3     //獲取待拉伸的圖層
 4     IRasterLayer rasterLayer = mapControlMain.ActiveView.CurrentLayer as IRasterLayer;
 5     if (rasterLayer == null)
 6         return;
 7     //獲取拉伸物件
 8     IRasterRender render = rasterLayer.Render;
 9     IRasterStretch stretch = render as IRasterStretch;
10     //設定拉伸型別
11     stretch.StretchType = PIE.Carto.RasterStretchType.RasterStretch_PercentMinimumMaximum;
12     stretch.LinearStretchPercent = 4.0;
13     rasterLayer.RaiseRenderChanged();
14     //重新整理地圖
15  mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
16 
17 方法(二)標準差拉伸
18   if (mapControlMain.ActiveView.CurrentLayer == null)   return;
19     //獲取待拉伸的圖層
20     IRasterLayer rasterLayer = mapControlMain.ActiveView.CurrentLayer as IRasterLayer;
21     if (rasterLayer == null)  return;
22     //獲取拉伸物件
23     IRasterRender render = rasterLayer.Render;
24     IRasterStretch stretch = render as IRasterStretch;
25     //設定拉伸型別
26     stretch.StretchType = PIE.Carto.RasterStretchType.RasterStretch_StandardDeviations;
27     rasterLayer.RaiseRenderChanged();   mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
View Code

2.4 示例截圖

(一)4%拉伸效果圖

 

(二)標準差拉伸效果