private void RGBCompositeRender(ILayer pLayerR, int bandred, int bandgreen, int bandblue) { // Get raster input from layer IRasterLayer rasterLayer = (IRasterLayer)pLayerR; IRaster raster = rasterLayer.Raster; IRasterBandCollection bandCol = (IRasterBandCollection)raster; if (bandCol.Count < 3) { return; } // Create UniqueValue renderer and QI RasterRenderer IRasterRGBRenderer2 rasterRGBRen = new RasterRGBRenderer() as IRasterRGBRenderer2; IRasterRenderer rasterRen = (IRasterRenderer)rasterRGBRen; // Connect the renderer and the raster rasterRen.Raster = raster; rasterRen.Update(); rasterRGBRen.RedBandIndex = bandred; rasterRGBRen.GreenBandIndex = bandgreen; rasterRGBRen.BlueBandIndex = bandblue; //Update render and refresh layer rasterRen.Update(); rasterLayer.Renderer = (IRasterRenderer)rasterRGBRen; }
//分级渲染函数 private void RasterClassifyRender(IRasterLayer pRasterLayer) { try { IColorRamp pColorRamp = (IColorRamp)EnumStyleItem[comboBoxColor.SelectedIndex]; IRasterClassifyColorRampRenderer pRClassRend = new RasterClassifyColorRampRenderer() as IRasterClassifyColorRampRenderer; IRasterRenderer pRRend = pRClassRend as IRasterRenderer; IRaster pRaster = pRasterLayer.Raster; IRasterBandCollection pRBandCol = pRaster as IRasterBandCollection; IRasterBand pRBand = pRBandCol.Item(0); if (pRBand.Histogram == null) { pRBand.ComputeStatsAndHist(); } pRRend.Raster = pRaster; pRRend.Update(); IRgbColor pFromColor = new RgbColor() as IRgbColor; pFromColor.Red = 255; pFromColor.Green = 0; pFromColor.Blue = 0; IRgbColor pToColor = new RgbColor() as IRgbColor; pToColor.Red = 0; pToColor.Green = 0; pToColor.Blue = 255; IAlgorithmicColorRamp colorRamp = new AlgorithmicColorRamp() as IAlgorithmicColorRamp; //colorRamp = pColorRamp as IAlgorithmicColorRamp;/////// colorRamp.Size = comboBoxClassValue.SelectedIndex + 1; //colorRamp.FromColor = pFromColor; //colorRamp.ToColor = pToColor; int nClass = comboBoxClassValue.SelectedIndex + 1; colorRamp.FromColor = pColorRamp.get_Color(0); colorRamp.ToColor = pColorRamp.get_Color(nClass - 1); bool createColorRamp; colorRamp.CreateRamp(out createColorRamp); IFillSymbol fillSymbol = new SimpleFillSymbol() as IFillSymbol; for (int i = 0; i < nClass; i++) { fillSymbol.Color = colorRamp.get_Color(i); pRClassRend.set_Symbol(i, fillSymbol as ISymbol); pRClassRend.set_Label(i, pRClassRend.get_Break(i).ToString("0.00")); } pRasterLayer.Renderer = pRRend; m_mapControl.Refresh(); } catch (Exception e) { MessageBox.Show("创建失败!"); } }
public IRasterRenderer CreateDefaultRasterRenderer(IRaster raster) { //Get raster dataset IRasterBandCollection rasterBandCollection = (IRasterBandCollection)raster; IRasterBand rasterBand = rasterBandCollection.Item(0); IRasterDataset rasterDataset = (IRasterDataset)rasterBand; //Check for TIFF format string format_Renamed = rasterDataset.Format; if (format_Renamed.Substring(0, 4) != "TIFF") { return(null); } //check for bit depth IRasterProps rasterProps = (IRasterProps)rasterBand; if (rasterProps.PixelType != rstPixelType.PT_U1) { return(null); } //create renderer for 1 bit raster //Create a unique value renderer and associate it with raster IRasterUniqueValueRenderer rasterUniqueValueRenderer = new RasterUniqueValueRendererClass(); IRasterRenderer rasterRenderer = (IRasterRenderer)rasterUniqueValueRenderer; rasterRenderer.Raster = raster; rasterRenderer.Update(); //Define the renderer rasterUniqueValueRenderer.HeadingCount = 1; rasterUniqueValueRenderer.set_Heading(0, ""); rasterUniqueValueRenderer.set_ClassCount(0, 2); rasterUniqueValueRenderer.Field = "VALUE"; rasterUniqueValueRenderer.AddValue(0, 0, 0); rasterUniqueValueRenderer.AddValue(0, 1, 1); rasterUniqueValueRenderer.set_Label(0, 0, "0"); rasterUniqueValueRenderer.set_Label(0, 1, "1"); // Define symbology for rendering value 0 IColor color1 = (IColor)(CreateRGBColor(200, 50, 0)); //Brown color ISimpleFillSymbol simpleFillSymbol1 = new SimpleFillSymbolClass(); simpleFillSymbol1.Color = color1; rasterUniqueValueRenderer.set_Symbol(0, 0, (ISymbol)simpleFillSymbol1); IColor color2 = new RgbColorClass(); color2.NullColor = true; ISimpleFillSymbol simpleFillSymbol2 = new SimpleFillSymbolClass(); simpleFillSymbol2.Color = color2; rasterUniqueValueRenderer.set_Symbol(0, 1, (ISymbol)simpleFillSymbol2); return(rasterRenderer); }
private void btnChangeRGBRenderer_Click(object sender, EventArgs e) { //Only effective to Raster Layer IMap map = axMapControl1.ActiveView.FocusMap; ILayer aLayer = map.get_Layer(0); //IRasterLayer rLayer = map.get_Layer(3) as IRasterLayer; //IRasterLayer rLayer = (IRasterLayer)aLayer; IRasterLayer rLayer = aLayer as IRasterLayer; IRaster raster = rLayer.Raster; IRasterBandCollection bandCol = raster as IRasterBandCollection; if (bandCol.Count < 3) { //not meet the requirements return; } IRasterRGBRenderer rgbRen = new RasterRGBRenderer(); IRasterRenderer rasRen = rgbRen as IRasterRenderer; rasRen.Raster = raster; rasRen.Update(); //change band ro renderer rgbRen.RedBandIndex = 2; rgbRen.GreenBandIndex = 1; rgbRen.BlueBandIndex = 0; //updtae renderer and refresh layer rLayer.Renderer = rgbRen as IRasterRenderer; axMapControl1.ActiveView.Refresh(); axTOCControl1.Update(); }
private void btn_OkStretch_Click(object sender, EventArgs e) { try { string RasterName = cbb_RasterLayersStretch.SelectedItem.ToString(); rasterlayer = GetRasterLayer(RasterName); IRasterStretchColorRampRenderer rasStreRen = new RasterStretchColorRampRendererClass(); IRasterRenderer rasRen = rasStreRen as IRasterRenderer; rasRen.Raster = rasterlayer.Raster; rasRen.Update(); rasStreRen.BandIndex = cbb_BandStretch.SelectedIndex; pListRamp = style.pListRamp; rasStreRen.ColorRamp = (IColorRamp)pListRamp[cbbs_ColorStretch.SelectedIndex]; rasRen.Update(); rasterlayer.Renderer = rasStreRen as IRasterRenderer; IRasterStretch2 stretch = rasStreRen as IRasterStretch2; stretch.BackgroundValue = 0; stretch.Background = true; stretch.BackgroundColor = RasterRender.GET(255, 255, 255) as IColor; axmapcontrol.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); axtoccontrol.Update(); axmapcontrol.Extent = rasterlayer.AreaOfInterest; this.Close(); } catch (Exception ec) { MessageBox.Show(ec.Message); } }
internal static void UsingRasterClassifyRendered1(IRasterLayer irasterLayer_0, int int_0, string string_0) { bool flag; IRaster raster = irasterLayer_0.Raster; IRasterClassifyColorRampRenderer o = new RasterClassifyColorRampRenderer(); IRasterRenderer renderer2 = o as IRasterRenderer; renderer2.Raster = raster; o.ClassField = string_0; o.ClassCount = int_0; IClassify classify = new EqualInterval() as IClassify; UID classID = classify.ClassID; IRasterClassifyUIProperties properties = o as IRasterClassifyUIProperties; properties.ClassificationMethod = classID; renderer2.Update(); IColorRamp ramp = ColorManage.CreateColorRamp(); ramp.Size = int_0; ramp.CreateRamp(out flag); IFillSymbol symbol = new SimpleFillSymbol(); for (int i = 0; i < o.ClassCount; i++) { symbol.Color = ramp.get_Color(i); o.set_Symbol(i, symbol as ISymbol); } renderer2.Update(); irasterLayer_0.Renderer = o as IRasterRenderer; Marshal.ReleaseComObject(o); o = null; }
public void AddAssociatedSurface(AssocSurface assocRow) { IGroupLayer pAssocGrpLyr = AddAssociatedSurfaceGroupLayer(assocRow.DEM); short dTransparency = GCDCore.Properties.Settings.Default.TransparencyAssociatedLayers ? GCDCore.Properties.Settings.Default.AutoTransparencyValue : (short)-1; IRasterRenderer rasterRenderer = null; switch (assocRow.AssocSurfaceType) { case AssocSurface.AssociatedSurfaceTypes.InterpolationError: if (!GCDCore.Properties.Settings.Default.ApplyComparativeSymbology) { rasterRenderer = RasterSymbolization.CreateClassifyRenderer(assocRow.Raster, 11, "Slope"); } break; case AssocSurface.AssociatedSurfaceTypes.PointQuality3D: if (!GCDCore.Properties.Settings.Default.ApplyComparativeSymbology) { rasterRenderer = RasterSymbolization.CreateClassifyRenderer(assocRow.Raster, 11, "Precipitation", true); } break; case AssocSurface.AssociatedSurfaceTypes.PointDensity: assocRow.Raster.ComputeStatistics(); decimal rasterMax = assocRow.Raster.GetStatistics()["max"]; if (rasterMax <= 2 & rasterMax > 0.25m) { rasterRenderer = RasterSymbolization.CreateClassifyRenderer(assocRow.Raster, 11, "Green to Blue", 1.1, true); } else { rasterRenderer = RasterSymbolization.CreateClassifyRenderer(assocRow.Raster, 11, "Green to Blue", true); } break; case AssocSurface.AssociatedSurfaceTypes.GrainSizeStatic: rasterRenderer = RasterSymbolization.CreateGrainSizeStatisticColorRamp(assocRow.Raster, ProjectManager.Project.Units.VertUnit); break; case AssocSurface.AssociatedSurfaceTypes.Roughness: rasterRenderer = RasterSymbolization.CreateRoughnessColorRamp(assocRow.Raster); break; case AssocSurface.AssociatedSurfaceTypes.SlopeDegree: rasterRenderer = RasterSymbolization.CreateSlopeDegreesColorRamp(assocRow.Raster); break; case AssocSurface.AssociatedSurfaceTypes.SlopePercent: rasterRenderer = RasterSymbolization.CreateSlopePrecentRiseColorRamp(assocRow.Raster); break; } AddRasterLayer(assocRow.Raster, rasterRenderer, assocRow.Name, pAssocGrpLyr, assocRow.LayerHeader, dTransparency); }
/// <summary> /// 唯一值渲染(注意字段类型要一致) /// </summary> /// <param name="uniqueValue">唯一值列表</param> /// <param name="uniqueFiled">字段</param> /// <param name="pStyleGalleryItem">颜色带样式</param> public void UniqueRenderer <T>(List <T> uniqueValue, string uniqueFiled, IStyleGalleryItem pStyleGalleryItem) { if (pStyleGalleryItem == null) { MessageBox.Show(@"Color ramp cannot be empty"); return; } IRasterUniqueValueRenderer uniqueValueRenderer = new RasterUniqueValueRendererClass(); IRasterRenderer pRasterRenderer = uniqueValueRenderer as IRasterRenderer; pRasterRenderer.Raster = rasterLayer.Raster; pRasterRenderer.Update(); int uniqueCount = uniqueValue.Count; if (uniqueCount == 0) { MessageBox.Show(@"The count of unique value cannot be zero"); return; } //设置唯一值渲染属性 SetUniqueRendererProperty(uniqueValueRenderer, uniqueFiled, uniqueCount); IEnumColors enumColors = RenderHelper.GetEnumColors(pStyleGalleryItem, uniqueCount); enumColors.Reset(); //添加唯一值和设置标注符号 AddValueAndSetLabelSymbol(uniqueValueRenderer, uniqueValue, enumColors); rasterLayer.Renderer = pRasterRenderer; }
/// <summary> /// 浮点类型图层的唯一值渲染 /// </summary> /// <param name="pStyleGalleryItem">颜色带样式</param> public void FloatRasterUniqueRenderer(IStyleGalleryItem pStyleGalleryItem) { if (pStyleGalleryItem == null) { MessageBox.Show(@"Color ramp cannot be empty"); return; } IRasterUniqueValueRenderer uniqueValueRenderer = new RasterUniqueValueRendererClass(); IRasterRenderer pRasterRenderer = uniqueValueRenderer as IRasterRenderer; pRasterRenderer.Raster = rasterLayer.Raster; pRasterRenderer.Update(); //必须设置栅格渲染的唯一值,不然只能渲染0值 SetRasterUniqueValue(uniqueValueRenderer); //获取排好序的唯一值 List <object> uniqueValue = GetFloatSortedUniqueValue(); int uniqueCount = uniqueValue.Count; if (uniqueCount == 0) { MessageBox.Show(@"The count of unique value cannot be zero"); return; } uniqueValueRenderer.set_ClassCount(0, uniqueCount); IEnumColors enumColors = RenderHelper.GetEnumColors(pStyleGalleryItem, uniqueCount); enumColors.Reset(); //添加唯一值和设置标注符号 AddValueAndSetLabelSymbol(uniqueValueRenderer, uniqueValue, enumColors); rasterLayer.Renderer = pRasterRenderer; }
/// <summary> /// 栅格分级渲染(注意选中字段唯一值个数不能小于设置的唯一值个数) /// </summary> /// <param name="rasterClassRenderer">分级渲染设置</param> /// <param name="pStyleGalleryItem">颜色带样式</param> public void ClassRenderer(IRasterClassifyColorRampRenderer rasterClassRenderer, IStyleGalleryItem pStyleGalleryItem) { if (pStyleGalleryItem == null) { MessageBox.Show(@"Color ramp cannot be empty"); return; } IRasterRenderer rasterRend = (IRasterRenderer)rasterClassRenderer; rasterRend.Raster = rasterLayer.Raster; rasterRend.Update(); IEnumColors enumColors = RenderHelper.GetColorRamp(pStyleGalleryItem, rasterClassRenderer.ClassCount).Colors; enumColors.Reset(); IFillSymbol fillSymbol = new SimpleFillSymbolClass(); for (int i = 0; i < rasterClassRenderer.ClassCount; i++) { fillSymbol.Color = enumColors.Next(); rasterClassRenderer.set_Symbol(i, (ISymbol)fillSymbol); string label = Math.Round(rasterClassRenderer.Break[i], 2) + "-" + Math.Round(rasterClassRenderer.Break[i + 1], 2); rasterClassRenderer.set_Label(i, label); } rasterLayer.Renderer = rasterRend; }
/// <summary> /// Gets the render type of the input raster layer. /// </summary> /// <param name="rasterLayer"></param> /// <returns></returns> public static RenderType GetRenderType(IRasterLayer rasterLayer) { IRasterRenderer rasterRenderer = rasterLayer.Renderer; if (rasterRenderer is RasterClassifyColorRampRenderer) { return(RenderType.Classified); } else if (rasterRenderer is RasterDiscreteColorRenderer) { return(RenderType.DiscreteColor); } else if (rasterRenderer is RasterStretchColorRampRenderer) { return(RenderType.Stretched); } else if (rasterRenderer is RasterUniqueValueRenderer) { return(RenderType.UniqueValues); } else { return(RenderType.Unknow); } }
/// <summary> /// 根据单波段拉伸渲染 /// </summary> /// <param name="rasterDataset">栅格数据集</param> /// <param name="graypos">第几波段</param> /// <param name="stretchType">拉伸方式</param> /// <param name="pFromColor">fromColor</param> /// <param name="pToColor">toColor</param> /// <returns></returns> public static IRasterRenderer StretchRenderer(ESRI.ArcGIS.Geodatabase.IRasterDataset rasterDataset, int graypos, esriRasterStretchTypesEnum stretchType, IRgbColor pFromColor, IRgbColor pToColor) { try { //Create the color ramp. IAlgorithmicColorRamp colorRamp = new AlgorithmicColorRampClass(); colorRamp.Size = 255; colorRamp.FromColor = pFromColor; colorRamp.ToColor = pToColor; bool createColorRamp; colorRamp.CreateRamp(out createColorRamp); //Create a stretch renderer. IRasterStretchColorRampRenderer stretchRenderer = new RasterStretchColorRampRendererClass(); IRasterRenderer rasterRenderer = (IRasterRenderer)stretchRenderer; //Set the renderer properties. IRaster raster = rasterDataset.CreateDefaultRaster(); rasterRenderer.Raster = raster; rasterRenderer.Update(); stretchRenderer.BandIndex = graypos; stretchRenderer.ColorRamp = colorRamp; //Set the stretch type. IRasterStretch pRasterStretch = (IRasterStretch)rasterRenderer; pRasterStretch.StretchType = stretchType; pRasterStretch.StandardDeviationsParam = 2; return(rasterRenderer); } catch { return(null); } }
private void StretchRender() { if (comboBoxBand.SelectedItem == null) { MessageBox.Show("波段不能为空!"); return; } IColorRamp pColorRamp = (IColorRamp)EnumStyleItem[comboBoxColor.SelectedIndex]; IRasterLayer pRasterLayr = m_layer as IRasterLayer; IRasterStretchColorRampRenderer pStretchRenderer = new RasterStretchColorRampRendererClass(); IRasterRenderer pRasterRenderer = (IRasterRenderer)pStretchRenderer; IRaster pRaster = pRasterLayr.Raster; pRasterRenderer.Raster = pRaster; pRasterRenderer.Update(); pStretchRenderer.BandIndex = comboBoxBand.SelectedIndex; pStretchRenderer.ColorRamp = pColorRamp; IRasterStretch pStretchType = (IRasterStretch)pRasterRenderer; pStretchType.StretchType = esriRasterStretchTypesEnum.esriRasterStretch_StandardDeviations; pStretchType.StandardDeviationsParam = Convert.ToDouble(textBoxStandardValue.Text); pRasterLayr.Renderer = pRasterRenderer; m_mapControl3.Refresh(); }
public IRasterLayer RasterRenderedLayer(IRasterLayer pRL, bool renderType, int grayBandIndex, int[] rgbBandIndex) { //实例新的栅格图层 IRasterLayer rlayer = new RasterLayerClass(); string fullPath = pRL.FilePath; IRasterDataset rasterDataset = OpenFileRasterDataset(fullPath); //单波段 if (rgbBandIndex == null) { //如果grayBandIndex=-1 try { //定义拉伸颜色条 IRgbColor pFromColor = new RgbColorClass(); pFromColor.Red = this.userControl_Color1.FromColor.R; pFromColor.Green = this.userControl_Color1.FromColor.G; pFromColor.Blue = this.userControl_Color1.FromColor.B; IRgbColor pToColor = new RgbColorClass(); pToColor.Red = this.userControl_Color1.ToColor.R; pToColor.Green = this.userControl_Color1.ToColor.G; pToColor.Blue = this.userControl_Color1.ToColor.B; IRasterRenderer render = null; render = BandCombinationShow.StretchRenderer(rasterDataset, grayBandIndex, this.stretchType, pFromColor, pToColor); rlayer.CreateFromDataset(rasterDataset); rlayer.Renderer = render as IRasterRenderer; return(rlayer); } catch (Exception ex) { MessageBox.Show(ex.ToString()); return(null); } } else//多波段显示 { try { //设置彩色合成顺序 生成新的渲染模式 IRasterRGBRenderer render = new RasterRGBRendererClass(); render.RedBandIndex = rgbBandIndex[0]; render.GreenBandIndex = rgbBandIndex[1]; render.BlueBandIndex = rgbBandIndex[2]; IRasterStretch stretchType = (IRasterStretch)render; stretchType.StretchType = this.stretchType; stretchType.StandardDeviationsParam = 2; rlayer.CreateFromDataset(rasterDataset); rlayer.Renderer = render as IRasterRenderer; return(rlayer); } catch (Exception ex) { MessageBox.Show(ex.ToString()); return(null); } } }
private void cboColorRamp_SelectedIndexChanged(object sender, EventArgs e) { if (this.bool_0) { bool flag; this.icolorRamp_0 = this.cboColorRamp.GetSelectStyleGalleryItem().Item as IColorRamp; (this.irasterStretchColorRampRenderer_0 as IRasterRendererColorRamp).ColorScheme = this.cboColorRamp.Text; IRasterStretchColorRampRenderer renderer = this.irasterStretchColorRampRenderer_0; IRasterRenderer renderer2 = (IRasterRenderer)renderer; if (this.icolorRamp_0 == null) { IAlgorithmicColorRamp ramp = new AlgorithmicColorRampClass(); IColor color = new RgbColorClass(); (color as IRgbColor).Red = 255; (color as IRgbColor).Red = 0; (color as IRgbColor).Green = 0; (color as IRgbColor).Blue = 0; IColor color2 = new RgbColorClass(); (color2 as IRgbColor).Red = 255; (color2 as IRgbColor).Green = 255; (color2 as IRgbColor).Blue = 255; ramp.FromColor = color; ramp.ToColor = color2; this.icolorRamp_0 = ramp; } this.icolorRamp_0.Size = 255; this.icolorRamp_0.CreateRamp(out flag); renderer.ColorRamp = this.icolorRamp_0; renderer2.Update(); } }
/// <summary> /// Asigna la simbologia establecida a la capa de probabilidades /// </summary> /// <param name="pRLayer">Objeto RasterLayer a Simbolizar</param> private void AsignarSimbologiaProbabilidad(IRasterLayer pRLayer) { IRasterUniqueValueRenderer pRUVRenderer = new RasterUniqueValueRendererClass(); IRasterRenderer pRRenderer = pRUVRenderer as IRasterRenderer; string sLayerName = pRLayer.Name; int iNumDias = 0; try { iNumDias = System.Convert.ToInt32(sLayerName.Substring(sLayerName.Length - 1, 1)); } catch (Exception ex) { MessageBox.Show(ex.Message); } IRgbColor pColor = new RgbColorClass(); pRRenderer.Raster = pRLayer.Raster; pRRenderer.ResamplingType = rstResamplingTypes.RSP_BilinearInterpolation; pRUVRenderer.HeadingCount = 1; pRUVRenderer.set_Heading(0, "Probabilidad para " + iNumDias.ToString() + " días"); pRUVRenderer.set_ClassCount(0, 6); AsignarColorAClase(0, "", 255, 255, 255, pRUVRenderer); AsignarColorAClase(1, "Muy Baja", 0, 255, 0, pRUVRenderer); AsignarColorAClase(2, "Baja", 255, 240, 70, pRUVRenderer); AsignarColorAClase(3, "Moderada", 255, 220, 100, pRUVRenderer); AsignarColorAClase(4, "Alta", 255, 100, 20, pRUVRenderer); AsignarColorAClase(5, "Muy Alta", 255, 0, 0, pRUVRenderer); pRUVRenderer.UseDefaultSymbol = false; pRRenderer.Update(); pRLayer.Renderer = pRRenderer; }
private void btnRasterOK_Click_1(object sender, EventArgs e) { try { IRasterStretchColorRampRenderer rasStreRen = new RasterStretchColorRampRendererClass(); IRasterRenderer rasRen = rasStreRen as IRasterRenderer; rasRen.Raster = rasterlayer.Raster; rasRen.Update(); rasStreRen.BandIndex = cmbBand.SelectedIndex; pListRamp = style.pListRamp; rasStreRen.ColorRamp = (IColorRamp)pListRamp[cmbsymRaster.SelectedIndex]; rasRen.Update(); rasterlayer.Renderer = rasStreRen as IRasterRenderer; IRasterStretch2 stretch = rasStreRen as IRasterStretch2; stretch.BackgroundValue = 0; stretch.Background = true; stretch.BackgroundColor = RasterRender.GET(255, 255, 255) as IColor; //axmapcontrol.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); axmapcontrol.Refresh(); axtoccontrol.Update(); axmapcontrol.Extent = rasterlayer.AreaOfInterest; } catch (Exception ec) { MessageBox.Show(ec.Message); } }
private void cboBand_SelectedIndexChanged(object sender, EventArgs e) { if (this.bool_0 && (this.cboBand.SelectedIndex != -1)) { bool flag; IRasterStretchColorRampRenderer renderer = this.irasterStretchColorRampRenderer_0; IRasterRenderer renderer2 = (IRasterRenderer)renderer; renderer.BandIndex = this.cboBand.SelectedIndex; if (this.icolorRamp_0 == null) { IAlgorithmicColorRamp ramp = new AlgorithmicColorRampClass(); IColor color = new RgbColorClass(); (color as IRgbColor).Red = 255; (color as IRgbColor).Red = 0; (color as IRgbColor).Green = 0; (color as IRgbColor).Blue = 0; IColor color2 = new RgbColorClass(); (color2 as IRgbColor).Red = 255; (color2 as IRgbColor).Green = 255; (color2 as IRgbColor).Blue = 255; ramp.FromColor = color; ramp.ToColor = color2; this.icolorRamp_0 = ramp; } this.icolorRamp_0.Size = 255; this.icolorRamp_0.CreateRamp(out flag); renderer.ColorRamp = this.icolorRamp_0; renderer2.Update(); } }
/// <summary> /// 拉伸渲染raster图层 /// </summary> /// <params name="pRLayer">raster图层</params> /// <remarks></remarks> public void UsingRasterStretchColorRampRender(IRasterLayer pRLayer) { //获得图层 IRaster pRaster = default(IRaster); pRaster = pRLayer.Raster; //创建渲染并转换到栅格渲染 IRasterStretchColorRampRenderer pStretchRen = default(IRasterStretchColorRampRenderer); pStretchRen = new RasterStretchColorRampRenderer(); IRasterRenderer pRasRen = default(IRasterRenderer); pRasRen = (IRasterRenderer)pStretchRen; //栅格渲染赋值和更新 pRasRen.Raster = pRaster; pRasRen.Update(); //定义起止颜色 IRgbColor pFromColor = new RgbColorClass(); pFromColor.Red = 0; pFromColor.Green = 255; pFromColor.Blue = 0; IRgbColor pToColor = new RgbColorClass(); pToColor.Red = 255; pToColor.Green = 0; pToColor.Blue = 0; //创建颜色条 IAlgorithmicColorRamp pRamp = new AlgorithmicColorRamp(); pRamp.Size = 255; pRamp.FromColor = pFromColor; pRamp.ToColor = pToColor; bool bOK; pRamp.CreateRamp(out bOK); //插入颜色条和选择渲染波段 pStretchRen.BandIndex = 0; pStretchRen.ColorRamp = pRamp; //用新的设置更新渲染并赋值给图层 pRasRen.Update(); pRLayer.Renderer = (IRasterRenderer)pStretchRen; //释放内存 pRLayer = null; pRaster = null; pStretchRen = null; pRasRen = null; pRamp = null; pToColor = null; pFromColor = null; }
public void InitRasterRendererObject(List <FieldInfo> pFieldInfo, IRasterRenderer pRenderer) { flag = true; IRasterStretchColorRampRenderer pBreakRenderer = pRenderer as IRasterStretchColorRampRenderer; flag = false; }
public void createSSTrst(ILayer layer) { IRasterClassifyColorRampRenderer pRClassRend = new RasterClassifyColorRampRenderer() as IRasterClassifyColorRampRenderer; IRasterRenderer pRRend = pRClassRend as IRasterRenderer; IRasterLayer rstLayer = layer as IRasterLayer; IRaster pRaster = rstLayer.Raster; IRasterBandCollection pRBandCol = pRaster as IRasterBandCollection; IRasterBand pRBand = pRBandCol.Item(0); if(pRBand.Histogram == null) { pRBand.ComputeStatsAndHist(); } pRRend.Raster = pRaster; pRClassRend.ClassCount = 10; pRRend.Update(); IRgbColor pFromColor = new RgbColor() as IRgbColor; pFromColor.Red = 0; pFromColor.Green = 0; pFromColor.Blue = 255; IRgbColor pToColor = new RgbColor() as IRgbColor; pToColor.Red = 255; pToColor.Green = 0; pToColor.Blue = 0; IAlgorithmicColorRamp colorRamp = new AlgorithmicColorRamp() as IAlgorithmicColorRamp; colorRamp.Size = 10; colorRamp.FromColor = pFromColor; colorRamp.ToColor = pToColor; bool createColorRamp; colorRamp.CreateRamp(out createColorRamp); IFillSymbol fillSymbol = new SimpleFillSymbol() as IFillSymbol; for(int i = 0; i < pRClassRend.ClassCount; i++) { fillSymbol.Color = colorRamp.get_Color(i); pRClassRend.set_Symbol(i, fillSymbol as ISymbol); pRClassRend.set_Label(i, pRClassRend.get_Break(i).ToString("0.00")); } rstLayer.Renderer = pRRend; axMapControl1.AddLayer(rstLayer); this.axMapControl1.ActiveView.Refresh(); this.axTOCControl1.Update(); }
public static void classifyRender(IRasterLayer rastlayer, string classMethod, int count, IColorRamp ramp) { try { IRasterBand band = GetBand(rastlayer); if (band.Histogram == null) { band.ComputeStatsAndHist(); } IRasterClassifyColorRampRenderer rasClassifyRender = new RasterClassifyColorRampRendererClass(); IRasterRenderer rasRender = rasClassifyRender as IRasterRenderer; rasRender.Raster = rastlayer.Raster; rasRender.Update(); int numClasses = count; IClassify classify = null; switch (classMethod) { case "等间距分级": classify = new EqualIntervalClass(); break; case "自然断点分级": classify = new NaturalBreaksClass(); break; } classify.Classify(ref numClasses); double[] Classes = classify.ClassBreaks as double[]; UID pUid = classify.ClassID; IRasterClassifyUIProperties rasClassifyUI = rasClassifyRender as IRasterClassifyUIProperties; rasClassifyUI.ClassificationMethod = pUid; rasClassifyRender.ClassField = "Value"; rasClassifyRender.ClassCount = count; rasRender.Update(); IColor pColor; ISimpleFillSymbol pSym; for (int j = 0; j < count; j++) { pColor = ramp.get_Color(j * (ramp.Size - 1) / (count - 1)); pSym = new SimpleFillSymbolClass(); pSym.Color = pColor; rasClassifyRender.set_Symbol(j, (ISymbol)pSym); rasClassifyRender.set_Break(j, rasClassifyRender.get_Break(j)); } rasRender.Update(); rastlayer.Renderer = rasClassifyRender as IRasterRenderer; } catch { XtraMessageBox.Show("唯一值数量已达到限制(65536)"); } }
private void method_0() { if (((this.irasterLayer_1 != null) && ((this.ibasicMap_0 == null) || this.irasterLayer_1.Renderer.CanRender(this.irasterLayer_1.Raster))) && (this.irasterLayer_1.Raster != null)) { int count = 1; if (this.irasterLayer_1.Raster is IRasterBandCollection) { count = (this.irasterLayer_1.Raster as IRasterBandCollection).Count; } this.listBox1.Items.Clear(); if (count == 3) { this.listBox1.Items.Add("Stretched"); this.listBox1.Items.Add("RGB"); } else { this.listBox1.Items.Add("Stretched"); this.listBox1.Items.Add("分类"); } if (this.iuserControl_0 != null) { (this.iuserControl_0 as UserControl).Visible = false; } IRasterRenderer renderer = this.irasterLayer_1.Renderer; if (renderer is IRasterStretchColorRampRenderer) { this.listBox1.SelectedIndex = 0; this.iuserControl_0 = this.rasterStretchedRenderPage_0; this.rasterClassifiedRenderPage_0.Visible = false; this.rasterStretchedRenderPage_0.Visible = true; this.rasterRGBRendererPage_0.Visible = false; } else if (renderer is IRasterClassifyColorRampRenderer) { this.listBox1.SelectedIndex = 1; this.iuserControl_0 = this.rasterClassifiedRenderPage_0; this.rasterClassifiedRenderPage_0.Visible = true; this.rasterStretchedRenderPage_0.Visible = false; this.rasterRGBRendererPage_0.Visible = false; } else if (renderer is IRasterRGBRenderer) { this.listBox1.SelectedIndex = 1; this.iuserControl_0 = this.rasterRGBRendererPage_0; this.rasterClassifiedRenderPage_0.Visible = false; this.rasterStretchedRenderPage_0.Visible = false; this.rasterRGBRendererPage_0.Visible = true; } else if (!(renderer is IRasterUniqueValueRenderer)) { } } }
public static IRasterRenderer CreateSlopePrecentRiseColorRamp(Raster gRaster) { try { // Open file raster dataset and ensure that statistics and histograms are present (absence of histograms will cause Renderer.Update() to crash) IRasterDataset rasterDataset = ArcMapUtilities.GetRasterDataset(gRaster); ESRI.ArcGIS.DataSourcesRaster.IRasterBandCollection pRastBands = (ESRI.ArcGIS.DataSourcesRaster.IRasterBandCollection)rasterDataset; ESRI.ArcGIS.DataSourcesRaster.IEnumRasterBand enumRasterBand = (ESRI.ArcGIS.DataSourcesRaster.IEnumRasterBand)pRastBands.Bands; rasterDataset.PrecalculateStats(0); ESRI.ArcGIS.DataSourcesRaster.IRasterBand pRastBand = enumRasterBand.Next(); pRastBand.ComputeStatsAndHist(); IRasterClassifyColorRampRenderer classifyRenderer = new RasterClassifyColorRampRendererClass(); IRasterRenderer rasterRenderer = (IRasterRenderer)classifyRenderer; IRaster raster = rasterDataset.CreateDefaultRaster(); rasterRenderer.Raster = raster; classifyRenderer.ClassCount = 10; rasterRenderer.Update(); classifyRenderer.Break[0] = 0; classifyRenderer.Label[0] = "0 to 3.5%"; classifyRenderer.Break[1] = 3.5; classifyRenderer.Label[1] = "3.5% to 8.75%"; classifyRenderer.Break[2] = 8.75; classifyRenderer.Label[2] = "8.75% to 15%"; classifyRenderer.Break[3] = 15; classifyRenderer.Label[3] = "15% to 25%"; classifyRenderer.Break[4] = 25; classifyRenderer.Label[4] = "25% to 45%"; classifyRenderer.Break[5] = 45; classifyRenderer.Label[5] = "45% to 70%"; classifyRenderer.Break[6] = 70; classifyRenderer.Label[6] = "70% to 100%"; classifyRenderer.Break[7] = 100; classifyRenderer.Label[7] = "100% to 175%"; classifyRenderer.Break[8] = 175; classifyRenderer.Label[8] = "175% to 565%"; classifyRenderer.Break[9] = 565; classifyRenderer.Label[9] = "> 565%"; List <RgbColor> lColors = CreateSlopeColorRamp(); IFillSymbol fillSymbol = new SimpleFillSymbolClass(); for (int i = 0; i < classifyRenderer.ClassCount; i++) { fillSymbol.Color = lColors[i]; classifyRenderer.Symbol[i] = (ISymbol)fillSymbol; } return(rasterRenderer); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); return(null); } }
public static bool UniqueValueRenderer(IColorRamp colorRamp, IRasterLayer rasterLayer, string renderfiled = "Value") { try { IRasterUniqueValueRenderer uniqueValueRenderer = new RasterUniqueValueRendererClass(); IRasterRenderer pRasterRenderer = uniqueValueRenderer as IRasterRenderer; pRasterRenderer.Raster = rasterLayer.Raster; pRasterRenderer.Update(); IUniqueValues uniqueValues = new UniqueValuesClass(); IRasterCalcUniqueValues calcUniqueValues = new RasterCalcUniqueValuesClass(); calcUniqueValues.AddFromRaster(rasterLayer.Raster, 0, uniqueValues);//iBand=0 IRasterRendererUniqueValues renderUniqueValues = uniqueValueRenderer as IRasterRendererUniqueValues; renderUniqueValues.UniqueValues = uniqueValues; uniqueValueRenderer.Field = renderfiled; colorRamp.Size = uniqueValues.Count; uniqueValueRenderer.HeadingCount = 1; uniqueValueRenderer.set_Heading(0, "All Data Value"); uniqueValueRenderer.set_ClassCount(0, uniqueValues.Count); bool pOk; colorRamp.CreateRamp(out pOk); IRasterRendererColorRamp pRasterRendererColorRamp = uniqueValueRenderer as IRasterRendererColorRamp; pRasterRendererColorRamp.ColorRamp = colorRamp; for (int i = 0; i < uniqueValues.Count; i++) { uniqueValueRenderer.AddValue(0, i, uniqueValues.get_UniqueValue(i)); uniqueValueRenderer.set_Label(0, i, uniqueValues.get_UniqueValue(i).ToString()); IFillSymbol fs = new SimpleFillSymbol(); //fs.Color = colorRamp.get_Color(i); IColor color = new RgbColorClass(); if ((Convert.ToByte(uniqueValues.get_UniqueValue(i)) == 255) || (Convert.ToByte(uniqueValues.get_UniqueValue(i)) == 0)) { color.NullColor = true; color.Transparency = 0; fs.Color = color; } else { IRgbColor rgbColor = color as IRgbColor; rgbColor.Red = 0; rgbColor.Green = 255; rgbColor.Blue = 0; fs.Color = rgbColor as IColor; } uniqueValueRenderer.set_Symbol(0, i, fs as ISymbol); } pRasterRenderer.Update(); rasterLayer.Renderer = pRasterRenderer; } catch (Exception ex) { return(false); } return(true); }
private void method_4(IColorRamp icolorRamp_1, IRasterClassifyColorRampRenderer irasterClassifyColorRampRenderer_1, int int_0, ITable itable_0, string string_0, string string_1) { try { bool flag; if (string_0.Length > 0) { irasterClassifyColorRampRenderer_1.ClassField = string_0; } if (string_1.Length > 0) { irasterClassifyColorRampRenderer_1.NormField = string_1; } IRasterRenderer renderer = (IRasterRenderer)irasterClassifyColorRampRenderer_1; renderer.Raster = this.irasterLayer_0.Raster; irasterClassifyColorRampRenderer_1.ClassCount = int_0; renderer.Update(); this.bool_0 = false; this.cboClassifyNum.SelectedIndex = irasterClassifyColorRampRenderer_1.ClassCount - 1; this.bool_0 = true; icolorRamp_1.Size = irasterClassifyColorRampRenderer_1.ClassCount; icolorRamp_1.CreateRamp(out flag); IEnumColors colors = icolorRamp_1.Colors; ISymbol symbol = null; for (int i = 0; i < irasterClassifyColorRampRenderer_1.ClassCount; i++) { string str; IColor color = colors.Next(); ISimpleFillSymbol symbol2 = new SimpleFillSymbolClass { Color = color, Style = esriSimpleFillStyle.esriSFSSolid }; symbol = symbol2 as ISymbol; irasterClassifyColorRampRenderer_1.set_Symbol(i, symbol); if (i == (irasterClassifyColorRampRenderer_1.ClassCount - 1)) { str = irasterClassifyColorRampRenderer_1.get_Break(i).ToString("0.####"); } else { str = irasterClassifyColorRampRenderer_1.get_Break(i).ToString("0.####") + " - " + irasterClassifyColorRampRenderer_1.get_Break(i + 1).ToString("0.####"); } irasterClassifyColorRampRenderer_1.set_Label(i, str); } } catch (Exception exception) { Logger.Current.Error("", exception, ""); } }
private IColorRamp GetCurrentColorRamp() { IRasterLayer pRasterLayr = m_layer as IRasterLayer; IRasterStretchColorRampRenderer pStretchRenderer = new RasterStretchColorRampRendererClass(); IRasterRenderer pRasterRenderer = (IRasterRenderer)pStretchRenderer; IRaster pRaster = pRasterLayr.Raster; pRasterRenderer.Raster = pRaster; pRasterRenderer.Update(); pStretchRenderer.BandIndex = comboBoxBand.SelectedIndex; return(pStretchRenderer.ColorRamp); }
/// <summary> /// 获取拉伸标注 /// </summary> /// <param name="rasterLayer">图层</param> /// <returns></returns> public static string[] GetStretchLabels(IRasterLayer rasterLayer) { IRasterStretchColorRampRenderer rasterStretchColorRampRenderer = new RasterStretchColorRampRendererClass(); IRasterRenderer rasterRenderer = rasterStretchColorRampRenderer as IRasterRenderer; rasterRenderer.Raster = rasterLayer.Raster; rasterRenderer.Update(); string[] labels = new string[2]; labels[0] = rasterStretchColorRampRenderer.LabelHigh; labels[1] = rasterStretchColorRampRenderer.LabelLow; return(labels); }
public void SetRasterNoDataColor() { try { if (m_pLyr == null) { return; } ILayer pLayer = m_pLyr; if (!(pLayer is IRasterLayer) && !(pLayer is IRasterCatalogLayer)) { return; } //获得当前图层的符号 IRasterRenderer pRasterRender = null; if (pLayer is IRasterLayer) { IRasterLayer pRasterLayer = pLayer as IRasterLayer; pRasterRender = pRasterLayer.Renderer; } else if (pLayer is IRasterCatalogLayer) { IRasterCatalogLayer pRasterCatalogLayer = pLayer as IRasterCatalogLayer; pRasterRender = pRasterCatalogLayer.Renderer; } else { return; } if (pRasterRender == null) { return; } IRasterDisplayProps pRasterDisplayProps = pRasterRender as IRasterDisplayProps; if (pRasterDisplayProps == null) { return; } //获得当前的颜色值 并设置 IColor pColor = ConvertColorToIColor(this.colorNoData.SelectedColor); pColor.Transparency = (byte)this.sliderTransparency.Value; pRasterDisplayProps.NoDataColor = pColor; } catch { } }
public static IRasterRenderer CreateGrainSizeStatisticColorRamp(GCDConsoleLib.Raster gRaster, UnitsNet.Units.LengthUnit eUnits) { try { // Open file raster dataset and ensure that statistics and histograms are present (absence of histograms will cause Renderer.Update() to crash) IRasterDataset rasterDataset = ArcMapUtilities.GetRasterDataset(gRaster); ESRI.ArcGIS.DataSourcesRaster.IRasterBandCollection pRastBands = (ESRI.ArcGIS.DataSourcesRaster.IRasterBandCollection)rasterDataset; ESRI.ArcGIS.DataSourcesRaster.IEnumRasterBand enumRasterBand = (ESRI.ArcGIS.DataSourcesRaster.IEnumRasterBand)pRastBands.Bands; rasterDataset.PrecalculateStats(0); ESRI.ArcGIS.DataSourcesRaster.IRasterBand pRastBand = enumRasterBand.Next(); pRastBand.ComputeStatsAndHist(); IRasterClassifyColorRampRenderer classifyRenderer = new RasterClassifyColorRampRendererClass(); IRasterRenderer rasterRenderer = (IRasterRenderer)classifyRenderer; IRaster raster = rasterDataset.CreateDefaultRaster(); rasterRenderer.Raster = raster; classifyRenderer.ClassCount = 5; rasterRenderer.Update(); classifyRenderer.Break[0] = 0; classifyRenderer.Label[0] = "Fines, Sand (0 to 2 mm)"; classifyRenderer.Break[1] = UnitsNet.Length.From(2, UnitsNet.Units.LengthUnit.Millimeter).As(eUnits); classifyRenderer.Label[1] = "Fine Gravel (2 mm to 16 mm)"; classifyRenderer.Break[2] = UnitsNet.Length.From(16, UnitsNet.Units.LengthUnit.Millimeter).As(eUnits); classifyRenderer.Label[2] = "Coarse Gravel (16 mm to 64 mm)"; classifyRenderer.Break[3] = UnitsNet.Length.From(64, UnitsNet.Units.LengthUnit.Millimeter).As(eUnits); classifyRenderer.Label[3] = "Cobbles (64 mm to 256 mm)"; classifyRenderer.Break[4] = UnitsNet.Length.From(256, UnitsNet.Units.LengthUnit.Millimeter).As(eUnits); classifyRenderer.Label[4] = "Boulders (> 256 mm)"; List <RgbColor> lColors = new List <RgbColor>(); lColors.Add(CreateRGBColor(194, 82, 60)); lColors.Add(CreateRGBColor(240, 180, 17)); lColors.Add(CreateRGBColor(123, 237, 0)); lColors.Add(CreateRGBColor(27, 168, 124)); lColors.Add(CreateRGBColor(11, 44, 122)); IFillSymbol fillSymbol = new SimpleFillSymbol(); for (int i = 0; i < classifyRenderer.ClassCount; i++) { fillSymbol.Color = lColors[i]; classifyRenderer.Symbol[i] = (ISymbol)fillSymbol; } return(rasterRenderer); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); return(null); } }