zoukankan      html  css  js  c++  java
  • arcengine 的几种统计图绘制

    http://blog.csdn.net/tianxinzhe032/article/details/6660028

    //获取颜色对象
    static public IRgbColor getRGB(int r, int g, int b)
    {
        IRgbColor pColor;
        pColor = new RgbColorClass();

        pColor.Red = r;
        pColor.Green = g;
        pColor.Blue = b;
        return pColor;
    }
    static public IGeoFeatureLayer GetLevelMap(IGeoFeatureLayer geoFeatureLayer, string field, int classCount)
    {

        ITableHistogram tableHistogram;
        IBasicHistogram basicHistogram;
        ITable table;

        ILayer layer = geoFeatureLayer as ILayer;
        table = layer as ITable;
        tableHistogram = new BasicTableHistogramClass();
        //按照 数值字段分级
        tableHistogram.Table = table;
        tableHistogram.Field = field;
        basicHistogram = tableHistogram as IBasicHistogram;
        object values;
        object frequencys;
        //先统计每个值和各个值出现的次数
        basicHistogram.GetHistogram(out values, out frequencys);
        //创建平均分级对象
        IClassifyGEN classifyGEN = new QuantileClass();
        //用统计结果进行分级 ,级别数目为classCount
        classifyGEN.Classify(values, frequencys, ref classCount);
        //获得分级结果,是个 双精度类型数组
        double[] classes;
        classes = classifyGEN.ClassBreaks as double[];

        IEnumColors enumColors = CreateAlgorithmicColorRamp(classes.Length).Colors;
        IColor color;

        IClassBreaksRenderer classBreaksRenderer = new ClassBreaksRendererClass();
        classBreaksRenderer.Field = field;
        classBreaksRenderer.BreakCount = classCount;
        classBreaksRenderer.SortClassesAscending = true;

        ISimpleFillSymbol simpleFillSymbol;

        for (int i = 0; i < classes.Length - 1; i++)
        {
            color = enumColors.Next();
            simpleFillSymbol = new SimpleFillSymbolClass();
            simpleFillSymbol.Color = color;
            simpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;
            classBreaksRenderer.set_Symbol(i, simpleFillSymbol as ISymbol);
            classBreaksRenderer.set_Break(i, classes[i + 1]);

            //构造显示的文字
            classBreaksRenderer.set_Label(i, classes[i].ToString() + "——" + classes[i + 1].ToString());
            classBreaksRenderer.set_Description(i, "sfhskdfks");
            //着色对象的断点

        }

        if (geoFeatureLayer != null)
        {
            geoFeatureLayer.Renderer = classBreaksRenderer as IFeatureRenderer;
        }
        return geoFeatureLayer;
    }

    static public IGeoFeatureLayer GetChartMap(IGeoFeatureLayer geofeatureLayer, List<string> fields, List<string> alias)
    {
        //   IGeoFeatureLayer geofeatureLayer = Lib.Layer.getShpLayer(path, layerName)  as IGeoFeatureLayer; 
        ITable table = geofeatureLayer as ITable;
        geofeatureLayer.ScaleSymbols = true;
        IChartRenderer chartRenderer = new ChartRendererClass();
        IRendererFields rendererFields = chartRenderer as IRendererFields;
        for (int i = 0; i < fields.Count; i++)
        {
            rendererFields.AddField(fields[i], alias[i]);
        }

        double maxValue = 0;
        ICursor cursor = table.Search(null, true);
        IRowBuffer rowBuffer = cursor.NextRow();
        while (rowBuffer != null)
        {
            for (int i = 0; i < fields.Count; i++)
            {
                double fieldValue;
                try
                {
                    fieldValue = double.Parse(rowBuffer.get_Value(table.FindField(fields[i])).ToString());
                }
                catch (Exception ex)
                {
                    fieldValue = 0;
                }
                maxValue = Math.Max(maxValue, fieldValue);
            }
            rowBuffer = cursor.NextRow();
        }
        IBarChartSymbol barChartSymbol = new BarChartSymbolClass();
        barChartSymbol.Width = 5;
        IMarkerSymbol markerSymbol = barChartSymbol as IMarkerSymbol;
        markerSymbol.Size = 50;
        IChartSymbol chartSymbol = barChartSymbol as IChartSymbol;
        chartSymbol.MaxValue = maxValue;

        //添加渲染符号
        ISymbolArray symbolArray = barChartSymbol as ISymbolArray;
        IFillSymbol fillSymbol;
        IColorRamp colors = CreateRandomColorRamp(fields.Count);
        for (int i = 0; i < fields.Count; i++)
        {
            fillSymbol = new SimpleFillSymbolClass();
            fillSymbol.Color = colors.get_Color(i);
            symbolArray.AddSymbol(fillSymbol as ISymbol);
        }
        //设置柱状图符号
        chartRenderer.ChartSymbol = barChartSymbol as IChartSymbol;
        fillSymbol = new SimpleFillSymbolClass();

        fillSymbol.Color = getRGB(0, 255, 255);
        fillSymbol.Color.Transparency = 2;
        chartRenderer.BaseSymbol = fillSymbol as ISymbol;
        chartRenderer.UseOverposter = false;

        //创建图例
        chartRenderer.CreateLegend();
        geofeatureLayer.Renderer = chartRenderer as IFeatureRenderer;
        return geofeatureLayer;

    }
    ////生成颜色带 
    static public IColorRamp CreateAlgorithmicColorRamp(int count)
    {
        //IUniqueValueRenderer pUniqueValueR;
        IEnumColors pEnumRamp;
        AlgorithmicColorRamp pColorRamp;
        //pUniqueValueR = new UniqueValueRendererClass();
        //pUniqueValueR.FieldCount = 1;
        //pUniqueValueR.set_Field(0, FielName);

        pColorRamp = new AlgorithmicColorRampClass();
        pColorRamp.FromColor = getRGB(255, 255, 255);
        pColorRamp.ToColor = getRGB(32, 200, 150);
        pColorRamp.Size = count;

        bool ok = true;
        pColorRamp.CreateRamp(out ok);
        pEnumRamp = pColorRamp.Colors;
        return pColorRamp;
    }
    //生成颜色带 
    static public IColorRamp CreateRandomColorRamp(int count)
    {
        //IUniqueValueRenderer pUniqueValueR;
        IEnumColors pEnumRamp;
        IRandomColorRamp pColorRamp;
        //pUniqueValueR = new UniqueValueRendererClass();
        //pUniqueValueR.FieldCount = 1;
        //pUniqueValueR.set_Field(0, FielName);

        pColorRamp = new RandomColorRampClass();
        pColorRamp.StartHue = 0;
        pColorRamp.MinValue = 99;
        pColorRamp.MinSaturation = 15;
        pColorRamp.EndHue = 360;
        pColorRamp.MaxValue = 100;
        pColorRamp.MaxSaturation = 30;
        pColorRamp.Size = count * 2;

        bool ok = true;
        pColorRamp.CreateRamp(out ok);
        pEnumRamp = pColorRamp.Colors;
        return pColorRamp;
    }
    static public IGeoFeatureLayer GetSimpleSymbolLayer(IGeoFeatureLayer geoFeatureLayer, string field)
    {
        //  getGeoLayer("sichuan_county_landuse");
        IUniqueValueRenderer uniqueValueRenderer = new UniqueValueRendererClass();
        uniqueValueRenderer.FieldCount = 1;
        uniqueValueRenderer.set_Field(0, field);
        //简单填充符号

        ISimpleFillSymbol simpleFillSymbol = new SimpleFillSymbolClass();
        simpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;
        int areaNum = geoFeatureLayer.FeatureClass.FeatureCount(null);
        IFeatureCursor featureCursor = geoFeatureLayer.FeatureClass.Search(null, false);
        IFeature feature;
        if (featureCursor != null)
        {
            IEnumColors enumColors = CreateRandomColorRamp(areaNum).Colors;
            int fieldIndex = geoFeatureLayer.FeatureClass.Fields.FindField(field);
            feature = featureCursor.NextFeature();
            while (feature != null)
            {
                string nameValue = feature.get_Value(fieldIndex).ToString();
                simpleFillSymbol = new SimpleFillSymbolClass();
                simpleFillSymbol.Color = enumColors.Next();
                uniqueValueRenderer.AddValue(nameValue, field, simpleFillSymbol as ISymbol);
                feature = featureCursor.NextFeature();
            }
        }
        geoFeatureLayer.Renderer = uniqueValueRenderer as IFeatureRenderer;
        return geoFeatureLayer;
    }

  • 相关阅读:
    网络相关配置
    RestTemplate 工具类以及拦截器配置打印调用日志
    Redis(2)九大数据类型及落地案例
    JUC(7)ThreadLocal
    JUC(5)原子类
    JUC(6)LockSupport
    JUC(4)Volatile
    JUC(3)Java内存模型JMM
    JUC(1)说说Java“锁”事
    JUC(2)线程中断机制
  • 原文地址:https://www.cnblogs.com/adodo1/p/4328157.html
Copyright © 2011-2022 走看看