在咱们的实际应用中,对于通常16bit或者更大比特深度的影像,像元值都是大于255的。这种状况下,RGB的显示器是不可以直接使用像元值进行显示的,须要将像元值换算到0~255的区间内以用于显示。经常使用的加强方式是经过拉伸来增大栅格显示的视觉对比度,以生成一副更清晰的影像,从而使某些要素变得更容易识别。ide
经常使用的拉伸方式包括标包括最多见的标准差(Standard Deviation),最大最小值( Minimum–Maximum),直方图均衡( Histogram Equalize)等等。对于不一样栅格数据状况,应选择最适合其的拉伸方式。spa
第一步code |
获取栅格图层的Render并进行接口转换。视频 |
第二步对象 |
设置拉伸类型。blog |
第三步教程 |
根据拉伸类型进行参数设置。接口 |
第四步事件 |
触发渲染改变事件,从新绘制。ci |
接口/类 |
方法 |
说明 |
Carto. IRasterStretch |
StretchType |
栅格拉伸类型属性 |
LinearStretchPercent |
拉伸百分比属性 |
|
SetMinimumMaximum |
设置指定波段拉伸显示的最大值、最小值 |
项目路径 |
百度云盘地址下/PIE示例程序/07图层渲染/11.栅格拉伸控制 |
数据路径 |
百度云盘地址下/PIE示例数据/栅格数据/01.GF1/ GF1_PMS1_E116.5_N39.4_20131127_L1A0000117600-MSS1.tif |
视频路径 |
百度云盘地址下/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); |
(一)4%拉伸效果图
(二)标准差拉伸效果