logo资料库

ArcEngine栅格数据渲染.doc

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
using System; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.DataSourcesRaster; using ESRI.ArcGIS.Display; using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.esriSystem; using DevComponents.DotNetBar.Controls; namespace CASC.Class { /// /// 渲染栅格图层 /// class RenderRasterLayer { ILayer pLayerR; public RenderRasterLayer(ILayer pLayer) { this.pLayerR = pLayer; } /// /// RGB渲染,必须为多波段影像 /// public void RGBRenderer(int bandred, int bandgreen, int bandblue, int alpha, int styleindex, int param,bool backgorund,IColor pcolor) { IRasterLayer rasterLayer = this.pLayerR as IRasterLayer; IRaster raster = rasterLayer.Raster; IRasterBandCollection bandCol = raster as IRasterBandCollection; if (bandCol.Count < 3) { return; } IRasterRGBRenderer2 rasterRGBRen = new RasterRGBRendererClass(); IRasterRenderer rasterRen = (IRasterRenderer)rasterRGBRen; rasterRen.Raster = raster; rasterRen.Update(); if (bandred > -1) { rasterRGBRen.UseRedBand = true; rasterRGBRen.RedBandIndex = bandred; } else { rasterRGBRen.UseRedBand = false; } if (bandgreen > -1) { rasterRGBRen.UseGreenBand = true;
rasterRGBRen.GreenBandIndex = bandgreen; } else { rasterRGBRen.UseGreenBand = false; } if (bandblue > -1) { rasterRGBRen.UseBlueBand = true; rasterRGBRen.BlueBandIndex = bandblue; } else { rasterRGBRen.UseBlueBand = false; } if (alpha > -1) { rasterRGBRen.UseAlphaBand = true; rasterRGBRen.AlphaBandIndex = alpha; } else { rasterRGBRen.UseAlphaBand = false; } IRasterStretch2 rasterStretchType = (IRasterStretch2)rasterRGBRen; if (styleindex ==0) { rasterStretchType.StretchType = esriRasterStretchTypesEnum.esriRasterStretch_StandardDeviations; rasterStretchType.StandardDeviationsParam = param; } else if (styleindex == 1) { rasterStretchType.StretchType = esriRasterStretchTypesEnum.esriRasterStretch_HistogramEqualize; } else if (styleindex == 2) { rasterStretchType.StretchType = esriRasterStretchTypesEnum.esriRasterStretch_HistogramSpecification; } else if (styleindex == 3) { esriRasterStretchTypesEnum.esriRasterStretch_MinimumMaximum; rasterStretchType.StretchType = } else
{ esriRasterStretchTypesEnum.esriRasterStretch_NONE; rasterStretchType.StretchType = } rasterStretchType.Invert = true; rasterStretchType.Background = backgorund; rasterStretchType.BackgroundColor = pcolor; rasterRen.Update(); rasterLayer.Renderer = rasterRGBRen as IRasterRenderer; } /// /// 分类色带渲染 /// /// 分类数 /// 色带 public void ClassifyColorRampRenderer( IColorRamp colorRamp,string classfield,DataGridViewX datagridview) { try { IRasterLayer pRasterLayer = this.pLayerR as IRasterLayer; IRaster raster = pRasterLayer.Raster; IRasterRenderer pRasterRenderer = new RasterClassifyColorRampRendererClass(); pRasterRenderer.Raster = raster; IRasterClassifyColorRampRenderer classifyRenderer = pRasterRenderer as IRasterClassifyColorRampRenderer; int classcount = datagridview.RowCount; classifyRenderer.ClassCount = classcount; classifyRenderer.ClassField = classfield; for (int i = 0; i < datagridview.RowCount; i++) { classifyRenderer.set_Break(i,double.Parse( datagridview.Rows[i].Cells[0].Value.ToS tring())); } pRasterRenderer.Update(); colorRamp.Size = 15; bool pOk; colorRamp.CreateRamp(out pOk); //create symbol for the classes IFillSymbol fillSymbol = new SimpleFillSymbolClass(); for (int i = 0; i < classifyRenderer.ClassCount-1; i++) { fillSymbol.Color = colorRamp.get_Color(i); classifyRenderer.set_Symbol(i, (ISymbol)fillSymbol);
classifyRenderer.set_Label(i, classifyRenderer.get_Break(i).ToString() + "—" + datagridview.Rows[i].Cells[1].Value.ToString()); } pRasterLayer.Renderer = classifyRenderer as IRasterRenderer; } catch { } } /// /// 色带渲染,类似于拉伸渲染,这里没找到相应方法 /// public void ColorMapRenderer() { try { IRasterLayer pRasterLayer = this.pLayerR as IRasterLayer; IRasterRenderer pRasterRenderer = new RasterColormapRendererClass(); pRasterRenderer.Raster = pRasterLayer.Raster; } catch { } } /// /// 唯一值渲染 /// /// public void UniqueValueRenderer(IColorRamp colorRamp,string renderfiled) { try { IRasterLayer pRasterLayer = this.pLayerR as IRasterLayer; IRasterUniqueValueRenderer uniqueValueRenderer = new RasterUniqueValueRendererClass(); IRasterRenderer pRasterRenderer = uniqueValueRenderer as IRasterRenderer; IUniqueValues uniqueValues = new UniqueValuesClass(); IRasterCalcUniqueValues calcUniqueValues = new RasterCalcUniqueValuesClass(); calcUniqueValues.AddFromRaster(pRasterLayer.Raster, 0, uniqueValues); uniqueValueRenderer as IRasterRendererUniqueValues; IRasterRendererUniqueValues renderUniqueValues = renderUniqueValues.UniqueValues = uniqueValues; uniqueValueRenderer.Field = renderfiled;
colorRamp.Size = uniqueValues.Count; bool pOk; colorRamp.CreateRamp(out pOk); IRasterRendererColorRamp pRasterRendererColorRamp = uniqueValueRenderer as IRasterRendererColorRamp; pRasterRendererColorRamp.ColorRamp = colorRamp; pRasterRenderer.Update(); pRasterLayer.Renderer = uniqueValueRenderer as IRasterRenderer; } catch { } } /// /// 拉伸渲染 /// /// 色带 public void StretchColorRampRenderer(IColorRamp colorRamp,int bandindex,bool background,int strechstyle,int parm,IColor pcolor) { try { IRasterLayer pRasterLayer = this.pLayerR as IRasterLayer; IRasterRenderer pRasterRenderer = new RasterStretchColorRampRendererClass(); pRasterRenderer.Raster = pRasterLayer.Raster; IRasterStretchColorRampRenderer pRasterStretchRenderer = pRasterRenderer as IRasterStretchColorRampRenderer; IRasterStretch2 rasterStretchType = pRasterStretchRenderer as IRasterStretch2; if (strechstyle == 0) { rasterStretchType.StretchType = esriRasterStretchTypesEnum.esriRasterStretch_StandardDeviations; rasterStretchType.StandardDeviationsParam = parm; } else if (strechstyle == 1) { rasterStretchType.StretchType = esriRasterStretchTypesEnum.esriRasterStretch_HistogramEqualize; } else if (strechstyle==2) { rasterStretchType.StretchType = esriRasterStretchTypesEnum.esriRasterStretch_HistogramSpecification; } else if (strechstyle == 3)
{ esriRasterStretchTypesEnum.esriRasterStretch_MinimumMaximum ; rasterStretchType.StretchType = } else { rasterStretchType.StretchType = esriRasterStretchTypesEnum.esriRasterStretch_NONE; } rasterStretchType.Invert = true; rasterStretchType.Background =background; rasterStretchType.BackgroundColor = pcolor; colorRamp.Size = 5; bool pOk; colorRamp.CreateRamp(out pOk); pRasterStretchRenderer.BandIndex = bandindex; pRasterStretchRenderer.ColorRamp = colorRamp; pRasterLayer.Renderer = pRasterStretchRenderer as IRasterRenderer; } catch { } } /// /// 点密度渲染 /// /// public void DiscreteColorRenderer(IColorRamp colorRamp,int colornum) { try { IRasterLayer pRasterLayer = this.pLayerR as IRasterLayer; IRasterDiscreteColorRenderer pDiscreteColorRenderer = new RasterDiscreteColorRendererClass(); IRasterRenderer pRasterRenderer = pDiscreteColorRenderer as IRasterRenderer; colorRamp.Size = 300; bool pOk; colorRamp.CreateRamp(out pOk); IRasterRendererColorRamp pRasterEndererColorRamp = pRasterRenderer as IRasterRendererColorRamp; pRasterEndererColorRamp.ColorRamp = colorRamp; pDiscreteColorRenderer.NumColors = colornum; pRasterRenderer.Raster = pRasterLayer.Raster; pRasterLayer.Renderer = pRasterRenderer; } catch
{ } } public void uniquevalue(IColorRamp colorRamp) { IRasterUniqueValueRenderer pUVRenderer = new RasterUniqueValueRendererClass(); IRasterRenderer pRenderer = (IRasterRenderer)pUVRenderer; IRasterLayer prasterlayer = pLayerR as IRasterLayer; //Get raster from layer and associate with renderer IRaster pRaster =prasterlayer.Raster; //Calculate unique values from the raster dataset. IUniqueValues pUValues = new UniqueValuesClass(); IRasterCalcUniqueValues pUVCal = new RasterCalcUniqueValuesClass(); pUVCal.AddFromRaster(pRaster, 0, pUValues); //Set the unique values to the renderer IRasterRendererUniqueValues pRenUniqueValues = (IRasterRendererUniqueValues)pUVRenderer; pRenUniqueValues.UniqueValues = pUValues; //Define color ramp for the renderer IRasterRendererColorRamp pRamp = (IRasterRendererColorRamp)pUVRenderer; //IRandomColorRamp pColorRamp = new RandomColorRampClass(); //pColorRamp.Size = pUValues.Count; //pColorRamp.Seed = 500; //Boolean createColorRamp; //pColorRamp.CreateRamp(out createColorRamp); pRamp.ColorRamp = colorRamp; //Update the renderer and plug into layer pRenderer.Update(); prasterlayer.Renderer = (IRasterRenderer)pUVRenderer; } /// /// 创建一个色带 /// /// public IColorRamp ColorRamp() { IRandomColorRamp pRandomColorRamp = new RandomColorRampClass(); //为渲染符号创建一个色带 pRandomColorRamp.MinSaturation = 20; pRandomColorRamp.MaxSaturation = 40;
pRandomColorRamp.MinValue = 85; pRandomColorRamp.MaxValue = 100; pRandomColorRamp.StartHue = 76; pRandomColorRamp.EndHue = 188; pRandomColorRamp.UseSeed = true; pRandomColorRamp.Seed = 43; return pRandomColorRamp as IColorRamp; } } }
分享到:
收藏