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); }
/// <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; }
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; }
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); }
public static void uniqueRender(IRasterLayer rasterLayer) { if (rasterLayer == null) { return; } IRaster raster = rasterLayer.Raster; IRasterUniqueValueRenderer render = new RasterUniqueValueRendererClass(); IRasterRenderer rasterRender = render as IRasterRenderer; rasterRender.Raster = raster; rasterRender.Update(); IUniqueValues uniqueValues = new UniqueValuesClass(); IRasterCalcUniqueValues calcUniqueValues = new RasterCalcUniqueValuesClass(); calcUniqueValues.AddFromRaster(raster, 0, uniqueValues); IRasterRendererUniqueValues renderUniqueValues = render as IRasterRendererUniqueValues; renderUniqueValues.UniqueValues = uniqueValues; render.Field = "Value"; render.HeadingCount = 1; render.set_Heading(0, "淹没水深"); render.set_ClassCount(0, uniqueValues.Count); IRandomColorRamp ramp = new RandomColorRampClass(); ramp.Size = uniqueValues.Count; bool b = true; ramp.CreateRamp(out b); for (int i = 0; i < uniqueValues.Count; i++) { render.AddValue(0, i, uniqueValues.get_UniqueValue(i)); render.set_Label(0, i, uniqueValues.get_UniqueValue(i).ToString()); ISimpleFillSymbol fillSymbol = new SimpleFillSymbolClass(); fillSymbol.Color = ramp.get_Color(i); render.set_Symbol(0, i, fillSymbol as ISymbol); } rasterRender.Update(); rasterLayer.Renderer = rasterRender; }
//Ϊդ��ͼ�����ݽ���Ψһֵ��ɫ public static IRasterLayer GetRLayerUniqueColor(IRaster pRaster, double dMaxDis) { try { IRasterBandCollection pBandCol = pRaster as IRasterBandCollection; IRasterBand pBand = pBandCol.Item(0) as IRasterBand; bool ExistTable; ITable pTable = null; pBand.HasTable(out ExistTable); if (ExistTable == false) { pTable = pBand.AttributeTable as ITable; } int iNumOfValues = pTable.RowCount(null); string sFieldName = "Value"; int iFieldIndex = pTable.FindField(sFieldName); IRandomColorRamp pRamp = new RandomColorRampClass(); pRamp.Size = iNumOfValues; pRamp.Seed = 100; bool a = true; pRamp.CreateRamp(out a); IFillSymbol pFSymbol = new SimpleFillSymbolClass(); IRasterUniqueValueRenderer pUVRen = new RasterUniqueValueRendererClass(); IRasterRenderer pRasRen = pUVRen as IRasterRenderer; pRasRen.Raster = pRaster; pRasRen.Update(); pUVRen.HeadingCount = 1; pUVRen.set_Heading(0, "�ȼ�"); pUVRen.set_ClassCount(0, iNumOfValues); pUVRen.Field = sFieldName; //��ʼѭ��������ɫ double LabelValue; double s = Convert.ToDouble(dMaxDis / 5); IRgbColor pRGBColor = new RgbColorClass(); for (int i = 0; i < iNumOfValues - 1; i++) { IColor pColor = pRamp.get_Color(i); IRow pRow = pTable.GetRow(i); string sLabel = ""; LabelValue = Convert.ToDouble(pRow.get_Value(iFieldIndex)); if (LabelValue >= 0 || LabelValue <= s) { sLabel = "0" + "��" + s.ToString(); pRGBColor.Red = 0; pRGBColor.Green = 112; pRGBColor.Blue = 255; pColor = pRGBColor as IColor; } double h1 = s * 2; if (LabelValue >= s || LabelValue <= s * 2) { sLabel = s.ToString() + "��" + h1.ToString(); pRGBColor.Red = 0; pRGBColor.Green = 112; pRGBColor.Blue = 255; pColor = pRGBColor as IColor; } double h2 = s * 3; if (LabelValue >= s * 2 || LabelValue <= s * 3) { sLabel = h1.ToString() + "��" + h2.ToString(); pRGBColor.Red = 0; pRGBColor.Green = 112; pRGBColor.Blue = 255; pColor = pRGBColor as IColor; } double h3 = s * 4; if (LabelValue >= s * 3 || LabelValue <= s * 4) { sLabel = h2.ToString() + "��" + h3.ToString(); pRGBColor.Red = 0; pRGBColor.Green = 112; pRGBColor.Blue = 255; pColor = pRGBColor as IColor; } double h4 = s * 5; if (LabelValue >= s * 4 || LabelValue <= s * 5) { sLabel = h3.ToString() + "��" + h4.ToString(); pRGBColor.Red = 0; pRGBColor.Green = 112; pRGBColor.Blue = 255; pColor = pRGBColor as IColor; } pUVRen.AddValue(0, i, LabelValue); pUVRen.set_Label(0, i, sLabel); pFSymbol.Color = pColor; pUVRen.set_Symbol(0, i, pFSymbol as ISymbol); } pRasRen.Update(); IRasterLayer pRLayer = new RasterLayerClass(); pRLayer.CreateFromRaster(pRaster); pRLayer.Renderer = pUVRen as IRasterRenderer; return pRLayer; } catch (Exception ex) { Console.WriteLine(ex.Message); return null; } }
/// <summary> /// 设置图层渲染器。 /// </summary> /// <param name="rasterLayer">需要渲染唯一值的栅格图层。</param> /// <param name="renderfiled">渲染的字段(可选,默认为Value)。</param> /// <returns></returns> public IRasterRenderer UniqueValueRender(IRasterLayer rasterLayer, string renderfiled = "Value") { try { //这是从头用到尾的对象 IRasterUniqueValueRenderer uniqueValueRenderer = new RasterUniqueValueRendererClass { Field = renderfiled }; IRasterRenderer pRasterRenderer = uniqueValueRenderer as IRasterRenderer; //计算栅格唯一值 IRasterCalcUniqueValues calcUniqueValues = new RasterCalcUniqueValuesClass(); IUniqueValues uniqueValues = new UniqueValuesClass(); calcUniqueValues.AddFromRaster(rasterLayer.Raster, 0, uniqueValues); //设置唯一值 IRasterRendererUniqueValues renderUniqueValues = uniqueValueRenderer as IRasterRendererUniqueValues; renderUniqueValues.UniqueValues = uniqueValues; //创建色带 IRgbColor pFromColor = FromIC; IRgbColor pToColor = ToIC; IAlgorithmicColorRamp colorRamp = new AlgorithmicColorRampClass { FromColor = pFromColor, ToColor = pToColor, Size = uniqueValues.Count }; bool pOk; colorRamp.CreateRamp(out pOk); //设置标题 uniqueValueRenderer.HeadingCount = 1; uniqueValueRenderer.set_Heading(0, "All Data Value"); uniqueValueRenderer.set_ClassCount(0, uniqueValues.Count); //设置色带 IRasterRendererColorRamp pRasterRendererColorRamp = uniqueValueRenderer as IRasterRendererColorRamp; pRasterRendererColorRamp.ColorRamp = colorRamp; //需要对算出来的唯一值升序重排 double[] tmp = new double[uniqueValues.Count]; for (int i = 0; i < uniqueValues.Count; i++) { tmp[i] = Convert.ToDouble(uniqueValues.get_UniqueValue(i)); } System.Array.Sort(tmp); //对每一个唯一值设置颜色 for (int i = 0; i < uniqueValues.Count; i++) { //添加唯一值并设置标签 uniqueValueRenderer.AddValue(0, i, tmp[i]); uniqueValueRenderer.set_Label(0, i, tmp[i].ToString()); //透明色及参数 IRgbColor zerocolor = new RgbColorClass() { Transparency = 0, NullColor = true, }; IFillSymbol fs = new SimpleFillSymbol(); //唯一值填充符号 if (tmp[i] == 0) //将值为0的栅格颜色设为透明 { fs = new SimpleFillSymbol { Color = zerocolor }; } else //值不为零则设置为色带对应索引颜色 { fs.Color = colorRamp.get_Color(i); } uniqueValueRenderer.set_Symbol(0, i, fs as ISymbol); //对唯一值设置色带对应颜色 } return(pRasterRenderer); } catch (Exception ex) { MessageBox.Show(ex.ToString()); return(null); } }
//2009-5-21 /// <summary> /// Ψһֵ��ȾRaster /// </summary> /// <param name="pLayer">rasterͼ��</param> /// <remarks></remarks> public void UValueRenderer(IRasterLayer pLayer, string VlaueFieldName,IList<Color> lstColor/*IColor fromColor, IColor toColor*/,IColor noColor) { //��ȡRater IRasterLayer pRLayer = pLayer; IRaster pRaster = pRLayer.Raster; // ��ȡ������Ҳ���Ǽ�¼�� IRasterBandCollection pBandCol = pRaster as IRasterBandCollection; IRasterBand pBand = pBandCol.Item(0); bool TableExist ; pBand.HasTable(out TableExist); if (!TableExist) return ; ITable pTable = pBand.AttributeTable; int NumOfValues = 0; NumOfValues = pTable.RowCount(null); // Specified a field and get the field index for the specified field to be rendered. //ָ��һ���ֶΣ���ȡ���ֶζ�Ӧ���ֶ���ţ�ʹ�ø��ֶν�����Ⱦ int FieldIndex = 0; string FieldName =null; if (VlaueFieldName.Length > 0) FieldName = VlaueFieldName; //Value ��Ĭ�ϵ��ֶΣ�����ָ���������ֶ��� FieldIndex = pTable.FindField(FieldName); if (FieldIndex < 0) return; //bool bRamp; ISimpleFillSymbol pFSymbol = default(ISimpleFillSymbol); // Create UniqueValue renderer and QI RasterRenderer IRasterUniqueValueRenderer pUVRen = new RasterUniqueValueRendererClass(); IRasterRenderer pRasRen = pUVRen as IRasterRenderer; // Connect renderer and raster pRasRen.Raster = pRaster; pRasRen.Update(); // Set UniqueValue renerer pUVRen.HeadingCount = 1; // Use one heading pUVRen.set_Heading(0,"All Data Values"); pUVRen.set_ClassCount(0,NumOfValues); pUVRen.Field = FieldName; IRow pRow = default(IRow); object LabelValue = null; for (int i = 0; i <= NumOfValues - 1; i++) { pRow = pTable.GetRow(i); //Get a row from the table LabelValue = pRow.get_Value(FieldIndex); // Get value of the given index pUVRen.AddValue(0, i, LabelValue); //Set value for the renderer pUVRen.set_Label(0, i,LabelValue.ToString()); //Set label pFSymbol = new SimpleFillSymbol(); pFSymbol.Color = Convert2ESRIColor(lstColor[i])/*colorRamp.get_Color(I)*/; //Set symbol pUVRen.set_Symbol(0, i,pFSymbol as ISymbol); } if (noColor.RGB != 16777215) //255 + 65535 + 255 * 65535=16777215 //����ǰ�ɫ������ɫ���ӱ���ɫ��������ɫESRIĬ��Ϊ��ɫ (pUVRen as IRasterDisplayProps).NoDataColor = noColor; // Update render and refresh layer pRasRen.Update(); pRLayer.Renderer = pUVRen as IRasterRenderer; pRLayer.Draw(esriDrawPhase.esriDPGeography, m_MainMap.ActiveView.ScreenDisplay, null); m_MainMap.ActiveView.Refresh(); m_MainTOC.Update(); }