Example #1
0
        public static void classifyRender(IFeatureLayer featLayer, string classMethod, string fieldName, IColorRamp colorRamp, int count)
        {
            try
            {
                //值分级
                IBasicHistogram pBasicHis = new BasicTableHistogramClass();
                ITableHistogram pTabHis   = (ITableHistogram)pBasicHis;
                IClassifyGEN    pClassify = null;
                switch (classMethod)
                {
                case "等间距分级":
                    pClassify = new EqualIntervalClass();
                    break;

                case "自然断点分级":
                    pClassify = new NaturalBreaksClass();
                    break;
                }
                pTabHis.Field = fieldName;
                ILayer Layer = (ILayer)featLayer;
                ITable pTab  = (ITable)Layer;
                pTabHis.Table = pTab;
                object doubleArrVal, longArrFreq;
                pBasicHis.GetHistogram(out doubleArrVal, out longArrFreq);

                int nDes = count;
                pClassify.Classify(doubleArrVal, longArrFreq, ref nDes);
                double[] ClassNum;
                ClassNum = (double[])pClassify.ClassBreaks;
                int ClassCountResult         = ClassNum.GetUpperBound(0);
                IClassBreaksRenderer pRender = new ClassBreaksRendererClass();
                pRender.BreakCount = ClassCountResult;
                pRender.Field      = fieldName;
                ISimpleFillSymbol pSym;
                IColor            pColor;
                for (int j = 0; j < ClassCountResult; j++)
                {
                    pColor = colorRamp.get_Color(j * (colorRamp.Size - 1) / (ClassCountResult - 1));
                    pRender.set_Symbol(j, getISymbolByGeomType(featLayer, pColor));
                    pRender.set_Break(j, ClassNum[j + 1]);
                    pRender.set_Label(j, ClassNum[j].ToString("0.00") + " - " + ClassNum[j + 1].ToString("0.00"));
                }

                IGeoFeatureLayer pGeoLyr = (IGeoFeatureLayer)Layer;
                pGeoLyr.Renderer = (IFeatureRenderer)pRender;
            }
            catch {
                XtraMessageBox.Show("嗯,哪个,就一个值,别分级了好不好^_^");
            }
        }
Example #2
0
        public void LayerRender()
        {
            try
            {
                //值分级
                IBasicHistogram pBasicHis = new BasicTableHistogramClass();
                ITableHistogram pTabHis   = (ITableHistogram)pBasicHis;
                IClassifyGEN    pClassify = null;
                switch (classname)
                {
                case "自然断点分级":
                    pClassify = new NaturalBreaksClass();
                    break;

                case "等间距分级":
                    pClassify = new EqualIntervalClass();
                    break;
                }
                pTabHis.Field = FiledName;
                //IGeoFeatureLayer geolayer = (IGeoFeatureLayer)Layer;
                ITable pTab = (ITable)Layer;
                pTabHis.Table = pTab;
                object doubleArrVal, longArrFreq;
                pBasicHis.GetHistogram(out doubleArrVal, out longArrFreq);

                int nDes = count;
                pClassify.Classify(doubleArrVal, longArrFreq, ref nDes);
                object   classes = pClassify.ClassBreaks;
                double[] ClassNum;
                ClassNum = (double[])pClassify.ClassBreaks;
                int ClassCountResult         = ClassNum.GetUpperBound(0);
                IClassBreaksRenderer pRender = new ClassBreaksRendererClass();
                pRender.BreakCount = ClassCountResult;
                pRender.Field      = FiledName;
                ISimpleFillSymbol pSym;
                IColor            pColor;
                for (int j = 0; j < ClassCountResult; j++)
                {
                    pColor     = ramp.get_Color(j * (ramp.Size / ClassCountResult));
                    pSym       = new SimpleFillSymbolClass();
                    pSym.Color = pColor;
                    pRender.set_Symbol(j, (ISymbol)pSym);
                    pRender.set_Break(j, ClassNum[j + 1]);
                    if (ClassNum[j].ToString().Contains("."))
                    {
                        pRender.set_Label(j, ClassNum[j].ToString("0.000") + " - " + ClassNum[j + 1].ToString("0.000"));
                    }
                    else
                    {
                        pRender.set_Label(j, ClassNum[j].ToString() + " - " + ClassNum[j + 1].ToString());
                    }
                }

                IGeoFeatureLayer pGeoLyr = (IGeoFeatureLayer)Layer;
                pGeoLyr.Renderer = (IFeatureRenderer)pRender;
                axmapcontrol.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
                axtoccontrol.Update();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }
Example #3
0
        private void resultSymbologyTab()
        {
            IGeoFeatureLayer pGeoFeatureLayer = this.pLayer as IGeoFeatureLayer;
            TreeNode currentNode = this.trvSymbologyShows.SelectedNode;
            if (currentNode.Text == "单一符号")
            {
                if (this.singleSymbol == null)
                {
                    return;
                }
                ISimpleRenderer pSimpleRender = new SimpleRendererClass();
                pSimpleRender.Symbol = this.singleSymbol;
                pSimpleRender.Label = this.txtSingleSymbolLabel.Text;
                pSimpleRender.Description = this.txtSingleSymbolDescription.Text;
                pGeoFeatureLayer.Renderer = pSimpleRender as IFeatureRenderer;
            }
            else if (currentNode.Text == "唯一值")
            {
                if (this.lsvUniqueValue.Items.Count == 0 || this.pUniValueColorRamp == null)
                {
                    return;
                }
                this.pUniValueColorRamp.Size = this.lsvUniqueValue.Items.Count - 1;
                bool IsColorRampCreatedOK = false;
                this.pUniValueColorRamp.CreateRamp(out IsColorRampCreatedOK);
                if (IsColorRampCreatedOK)
                {
                    IEnumColors pEnumColors = pUniValueColorRamp.Colors;
                    pEnumColors.Reset();

                    IUniqueValueRenderer pUniqueValueRender = new UniqueValueRendererClass();
                    pUniqueValueRender.FieldCount = 1;
                    pUniqueValueRender.set_Field(0, this.cbbUniValueField.Text);

                    IColor pColor;

                    if (((IFeatureLayer2)this.pLayer).ShapeType == esriGeometryType.esriGeometryPolygon)
                    {
                        ISimpleFillSymbol pSimpleFillSymbol;
                        for (int i = 0; i < pUniValueColorRamp.Size; i++)
                        {
                            pColor = pEnumColors.Next();
                            pSimpleFillSymbol = new SimpleFillSymbolClass();
                            pSimpleFillSymbol.Color = pColor;
                            pUniqueValueRender.AddValue(this.lsvUniqueValue.Items[i + 1].Text, "", (ISymbol)pSimpleFillSymbol);
                        }
                    }
                    else if (((IFeatureLayer2)this.pLayer).ShapeType == esriGeometryType.esriGeometryPolyline)
                    {
                        ISimpleLineSymbol pSimpleLineSymbol;
                        for (int i = 0; i < pUniValueColorRamp.Size; i++)
                        {
                            pColor = pEnumColors.Next();
                            pSimpleLineSymbol = new SimpleLineSymbolClass();
                            pSimpleLineSymbol.Color = pColor;
                            pUniqueValueRender.AddValue(this.lsvUniqueValue.Items[i + 1].Text, "", (ISymbol)pSimpleLineSymbol);
                        }
                    }
                    else if (((IFeatureLayer2)this.pLayer).ShapeType == esriGeometryType.esriGeometryPoint)
                    {
                        ISimpleMarkerSymbol pSimpleMarkerSymbol;
                        for (int i = 0; i < pUniValueColorRamp.Size; i++)
                        {
                            pColor = pEnumColors.Next();
                            pSimpleMarkerSymbol = new SimpleMarkerSymbolClass();
                            pSimpleMarkerSymbol.Color = pColor;
                            pUniqueValueRender.AddValue(this.lsvUniqueValue.Items[i + 1].Text, "", (ISymbol)pSimpleMarkerSymbol);
                        }
                    }

                    pGeoFeatureLayer.Renderer = (IFeatureRenderer)pUniqueValueRender;
                }
            }
            else if (currentNode.Text == "分级颜色")
            {
                if (this.lsvClassBreaksSymbol.Items.Count == 0 || this.pClassBreaksColorRamp == null)
                {
                    return;
                }
                int classCount = int.Parse(this.cbbClassBreaksCount.Text);

                IClassBreaksRenderer pClassBreaksRenderer = new ClassBreaksRendererClass();
                pClassBreaksRenderer.BreakCount = classCount;
                pClassBreaksRenderer.Field = this.cbbClassBreakField.Text;
                pClassBreaksRenderer.SortClassesAscending = true;

                IColorRamp pColorRamp = this.pClassBreaksColorRamp;
                pColorRamp.Size = classCount;
                bool ok;
                pColorRamp.CreateRamp(out ok);
                if (!ok)
                {
                    return;
                }
                IEnumColors pEnumColors = pColorRamp.Colors;
                pEnumColors.Reset();
                IColor pColor;
                if (((IFeatureLayer2)this.pLayer).ShapeType == esriGeometryType.esriGeometryPolygon)
                {
                    for (int i = 0; i < classCount; i++)//为每个值范围设置符号(此处为SimpleFillSymbol)
                    {
                        pColor = pEnumColors.Next();
                        ISimpleFillSymbol pSimpleFillSymbol = new SimpleFillSymbolClass();
                        pSimpleFillSymbol.Color = pColor;
                        pSimpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;

                        pClassBreaksRenderer.set_Break(i, this.classBreaks[i + 1]);//设置临界值,注意下标,关键!!!

                        pClassBreaksRenderer.set_Symbol(i, (ISymbol)pSimpleFillSymbol);//设置Symbol,关键!!!

                        pClassBreaksRenderer.set_Label(i, this.lsvClassBreaksSymbol.Items[i].Text);
                        pClassBreaksRenderer.set_Description(i, this.lsvClassBreaksSymbol.Items[i].Text);
                    }
                }
                else if (((IFeatureLayer2)this.pLayer).ShapeType == esriGeometryType.esriGeometryPolyline)
                {
                    for (int i = 0; i < classCount; i++)//为每个值范围设置符号
                    {
                        pColor = pEnumColors.Next();
                        ISimpleLineSymbol pSimpleLineSymbol = new SimpleLineSymbolClass();
                        pSimpleLineSymbol.Color = pColor;
                        pClassBreaksRenderer.set_Symbol(i, (ISymbol)pSimpleLineSymbol);//设置Symbol,关键!!!
                        pClassBreaksRenderer.set_Label(i, this.lsvClassBreaksSymbol.Items[i].Text);
                        pClassBreaksRenderer.set_Break(i, this.classBreaks[i + 1]);//设置临界值,注意下标,关键!!!
                    }
                }
                else if (((IFeatureLayer2)this.pLayer).ShapeType == esriGeometryType.esriGeometryPoint)
                {
                    for (int i = 0; i < classCount; i++)//为每个值范围设置符号
                    {
                        pColor = pEnumColors.Next();
                        ISimpleMarkerSymbol pSimpleMarkerSymbol = new SimpleMarkerSymbolClass();
                        pSimpleMarkerSymbol.Color = pColor;
                        pClassBreaksRenderer.set_Symbol(i, (ISymbol)pSimpleMarkerSymbol);//设置Symbol,关键!!!
                        pClassBreaksRenderer.set_Label(i, this.lsvClassBreaksSymbol.Items[i].Text);
                        pClassBreaksRenderer.set_Break(i, this.classBreaks[i + 1]);//设置临界值,注意下标,关键!!!
                    }
                }

                pGeoFeatureLayer.Renderer = pClassBreaksRenderer as IFeatureRenderer;
            }
        }
Example #4
0
        private void resultSymbologyTab()
        {
            IGeoFeatureLayer pGeoFeatureLayer = this.pLayer as IGeoFeatureLayer;
            TreeNode         currentNode      = this.trvSymbologyShows.SelectedNode;

            if (currentNode.Text == "单一符号")
            {
                if (this.singleSymbol == null)
                {
                    return;
                }
                ISimpleRenderer pSimpleRender = new SimpleRendererClass();
                pSimpleRender.Symbol      = this.singleSymbol;
                pSimpleRender.Label       = this.txtSingleSymbolLabel.Text;
                pSimpleRender.Description = this.txtSingleSymbolDescription.Text;
                pGeoFeatureLayer.Renderer = pSimpleRender as IFeatureRenderer;
            }
            else if (currentNode.Text == "唯一值")
            {
                if (this.lsvUniqueValue.Items.Count == 0 || this.pUniValueColorRamp == null)
                {
                    return;
                }
                this.pUniValueColorRamp.Size = this.lsvUniqueValue.Items.Count - 1;
                bool IsColorRampCreatedOK = false;
                this.pUniValueColorRamp.CreateRamp(out IsColorRampCreatedOK);
                if (IsColorRampCreatedOK)
                {
                    IEnumColors pEnumColors = pUniValueColorRamp.Colors;
                    pEnumColors.Reset();

                    IUniqueValueRenderer pUniqueValueRender = new UniqueValueRendererClass();
                    pUniqueValueRender.FieldCount = 1;
                    pUniqueValueRender.set_Field(0, this.cbbUniValueField.Text);

                    IColor pColor;

                    if (((IFeatureLayer2)this.pLayer).ShapeType == esriGeometryType.esriGeometryPolygon)
                    {
                        ISimpleFillSymbol pSimpleFillSymbol;
                        for (int i = 0; i < pUniValueColorRamp.Size; i++)
                        {
                            pColor                  = pEnumColors.Next();
                            pSimpleFillSymbol       = new SimpleFillSymbolClass();
                            pSimpleFillSymbol.Color = pColor;
                            pUniqueValueRender.AddValue(this.lsvUniqueValue.Items[i + 1].Text, "", (ISymbol)pSimpleFillSymbol);
                        }
                    }
                    else if (((IFeatureLayer2)this.pLayer).ShapeType == esriGeometryType.esriGeometryPolyline)
                    {
                        ISimpleLineSymbol pSimpleLineSymbol;
                        for (int i = 0; i < pUniValueColorRamp.Size; i++)
                        {
                            pColor                  = pEnumColors.Next();
                            pSimpleLineSymbol       = new SimpleLineSymbolClass();
                            pSimpleLineSymbol.Color = pColor;
                            pUniqueValueRender.AddValue(this.lsvUniqueValue.Items[i + 1].Text, "", (ISymbol)pSimpleLineSymbol);
                        }
                    }
                    else if (((IFeatureLayer2)this.pLayer).ShapeType == esriGeometryType.esriGeometryPoint)
                    {
                        ISimpleMarkerSymbol pSimpleMarkerSymbol;
                        for (int i = 0; i < pUniValueColorRamp.Size; i++)
                        {
                            pColor = pEnumColors.Next();
                            pSimpleMarkerSymbol       = new SimpleMarkerSymbolClass();
                            pSimpleMarkerSymbol.Color = pColor;
                            pUniqueValueRender.AddValue(this.lsvUniqueValue.Items[i + 1].Text, "", (ISymbol)pSimpleMarkerSymbol);
                        }
                    }

                    pGeoFeatureLayer.Renderer = (IFeatureRenderer)pUniqueValueRender;
                }
            }
            else if (currentNode.Text == "分级颜色")
            {
                if (this.lsvClassBreaksSymbol.Items.Count == 0 || this.pClassBreaksColorRamp == null)
                {
                    return;
                }
                int classCount = int.Parse(this.cbbClassBreaksCount.Text);

                IClassBreaksRenderer pClassBreaksRenderer = new ClassBreaksRendererClass();
                pClassBreaksRenderer.BreakCount           = classCount;
                pClassBreaksRenderer.Field                = this.cbbClassBreakField.Text;
                pClassBreaksRenderer.SortClassesAscending = true;


                IColorRamp pColorRamp = this.pClassBreaksColorRamp;
                pColorRamp.Size = classCount;
                bool ok;
                pColorRamp.CreateRamp(out ok);
                if (!ok)
                {
                    return;
                }
                IEnumColors pEnumColors = pColorRamp.Colors;
                pEnumColors.Reset();
                IColor pColor;
                if (((IFeatureLayer2)this.pLayer).ShapeType == esriGeometryType.esriGeometryPolygon)
                {
                    for (int i = 0; i < classCount; i++)//为每个值范围设置符号(此处为SimpleFillSymbol)
                    {
                        pColor = pEnumColors.Next();
                        ISimpleFillSymbol pSimpleFillSymbol = new SimpleFillSymbolClass();
                        pSimpleFillSymbol.Color = pColor;
                        pSimpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;

                        pClassBreaksRenderer.set_Break(i, this.classBreaks[i + 1]);     //设置临界值,注意下标,关键!!!

                        pClassBreaksRenderer.set_Symbol(i, (ISymbol)pSimpleFillSymbol); //设置Symbol,关键!!!

                        pClassBreaksRenderer.set_Label(i, this.lsvClassBreaksSymbol.Items[i].Text);
                        pClassBreaksRenderer.set_Description(i, this.lsvClassBreaksSymbol.Items[i].Text);
                    }
                }
                else if (((IFeatureLayer2)this.pLayer).ShapeType == esriGeometryType.esriGeometryPolyline)
                {
                    for (int i = 0; i < classCount; i++)//为每个值范围设置符号
                    {
                        pColor = pEnumColors.Next();
                        ISimpleLineSymbol pSimpleLineSymbol = new SimpleLineSymbolClass();
                        pSimpleLineSymbol.Color = pColor;
                        pClassBreaksRenderer.set_Symbol(i, (ISymbol)pSimpleLineSymbol); //设置Symbol,关键!!!
                        pClassBreaksRenderer.set_Label(i, this.lsvClassBreaksSymbol.Items[i].Text);
                        pClassBreaksRenderer.set_Break(i, this.classBreaks[i + 1]);     //设置临界值,注意下标,关键!!!
                    }
                }
                else if (((IFeatureLayer2)this.pLayer).ShapeType == esriGeometryType.esriGeometryPoint)
                {
                    for (int i = 0; i < classCount; i++)//为每个值范围设置符号
                    {
                        pColor = pEnumColors.Next();
                        ISimpleMarkerSymbol pSimpleMarkerSymbol = new SimpleMarkerSymbolClass();
                        pSimpleMarkerSymbol.Color = pColor;
                        pClassBreaksRenderer.set_Symbol(i, (ISymbol)pSimpleMarkerSymbol); //设置Symbol,关键!!!
                        pClassBreaksRenderer.set_Label(i, this.lsvClassBreaksSymbol.Items[i].Text);
                        pClassBreaksRenderer.set_Break(i, this.classBreaks[i + 1]);       //设置临界值,注意下标,关键!!!
                    }
                }

                pGeoFeatureLayer.Renderer = pClassBreaksRenderer as IFeatureRenderer;
            }
        }