⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formselectfield.cs

📁 运用ArcEngine9.2结合C#开发的gis系统
💻 CS
📖 第 1 页 / 共 2 页
字号:
            pRandomColorRamp.Size = pRender.ValueCount;
            bool flag;
            pRandomColorRamp.CreateRamp(out flag);

            IEnumColors pEnumColors = pRandomColorRamp.Colors;
            pEnumColors.Reset();

            for (long i = 0; i < pRender.ValueCount; i++)
            {
                string str = pRender.get_Value((int)i);
                if (str != "")
                {
                    ISimpleFillSymbol pSimpleFillSymbol = pRender.get_Symbol(str) as ISimpleFillSymbol;
                    pSimpleFillSymbol.Color = pEnumColors.Next();
                    pRender.set_Symbol(str, pSimpleFillSymbol as ISymbol);
                }
            }

            //
            pRender.ColorScheme = "Custom";
            pRender.set_FieldType(0, true);
            pGeoFeatureLayer.Renderer = pRender as IFeatureRenderer;
            pGeoFeatureLayer.DisplayField = field;

            /*IRendererPropertyPage pRendererPropertyPage = new UniqueValuePropertyPageClass();
            pGeoFeatureLayer.RendererPropertyPageClassID = pRendererPropertyPage.ClassID;*/
        }
        //miduxuanran
        private void dotValueRenderer()
        {
            string pField = fieldName;

            //IGeoFeatureLayer pGeoFeatureL;
            IDotDensityRenderer pDotDensityRenderer;
            IDotDensityFillSymbol pDotDensityFills;
            IRendererFields pRendererFields;
            ISymbolArray pSymbolArray;
            ISimpleMarkerSymbol pSimpleMarkerS;

           // pGeoFeatureL = pPrimaryTable as IGeoFeatureLayer;//(IGeoFeatureLayer)pMap.get_Layer(layerIndex);
            pDotDensityRenderer = new DotDensityRendererClass();

            pRendererFields = (IRendererFields)pDotDensityRenderer;
            pRendererFields.AddField(pField, pField);

            pDotDensityFills = new DotDensityFillSymbolClass();
            pDotDensityFills.DotSize = 3;
            pDotDensityFills.Color = GetRGB(0, 0, 0);
            pDotDensityFills.BackgroundColor = GetRGB(239, 228, 190);

            pSymbolArray = (ISymbolArray)pDotDensityFills;
            pSimpleMarkerS = new SimpleMarkerSymbolClass();
            pSimpleMarkerS.Size = 10;
            pSimpleMarkerS.Color = GetRGB(0, 0, 0);
            pSymbolArray.AddSymbol((ISymbol)pSimpleMarkerS);
            pDotDensityRenderer.DotDensitySymbol = pDotDensityFills;
            pDotDensityRenderer.DotValue = dotValue;
            pGeoFeatureL.Renderer = (IFeatureRenderer)pDotDensityRenderer;
        }
        //bilixuanran
        private void proportionalRenderer()
        {
            //IFeatureLayer pFeatureLayer;
            //IGeoFeatureLayer pGeoFeatureLayer;
            IProportionalSymbolRenderer pProportionalSymbolR;
            ITable pTable;
            IQueryFilter pQueryFilter;
            ICursor pCursor;
            IFillSymbol pFillSymbol;
            ICharacterMarkerSymbol pCharacterMarkerS;
            IDataStatistics pDataStatics;

            IStatisticsResults pStaticsResult;
            IRotationRenderer pRotationRenderer;
            string pField;

            pField = fieldName;

            //pFeatureLayer = (IFeatureLayer)pMap.get_Layer(layerIndex);
            //pGeoFeatureLayer = (IGeoFeatureLayer)pMap.get_Layer(layerIndex);

            pTable = (ITable)pPrimaryTable;//pFeatureLayer;

            pQueryFilter = new QueryFilterClass();
            pQueryFilter.AddField(pField);

            pCursor = pTable.Search(pQueryFilter, true);

            pDataStatics = new DataStatisticsClass();
            pDataStatics.Cursor = pCursor;

            pDataStatics.Field = pField;
            pStaticsResult = pDataStatics.Statistics;

            if (pStaticsResult == null)
            {
                MessageBox.Show("提示", "空", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk);
                return;
            }

            pFillSymbol = new SimpleFillSymbolClass();
            pFillSymbol.Color = GetRGB(239, 228, 190);

            pCharacterMarkerS = new CharacterMarkerSymbolClass();
            pCharacterMarkerS.CharacterIndex = 92;
            pCharacterMarkerS.Color = GetRGB(0, 0, 0);
            pCharacterMarkerS.Size = 5;


            pProportionalSymbolR = new ProportionalSymbolRendererClass();
            pProportionalSymbolR.ValueUnit = esriUnits.esriUnknownUnits;
            pProportionalSymbolR.Field = pField;
            pProportionalSymbolR.FlanneryCompensation = false;
            pProportionalSymbolR.MinDataValue = pStaticsResult.Minimum + 1;
            pProportionalSymbolR.MaxDataValue = pStaticsResult.Maximum;
            pProportionalSymbolR.BackgroundSymbol = pFillSymbol;
            pProportionalSymbolR.MinSymbol = (ISymbol)pCharacterMarkerS;
            pProportionalSymbolR.LegendSymbolCount = 5;
            pProportionalSymbolR.CreateLegendSymbols();

            pRotationRenderer = (IRotationRenderer)pProportionalSymbolR;
            pRotationRenderer.RotationField = pField;
            pRotationRenderer.RotationType = esriSymbolRotationType.esriRotateSymbolGeographic;
            pGeoFeatureL.Renderer = (IFeatureRenderer)pProportionalSymbolR;
        }
        private IRgbColor GetRGB(int R, int G, int B)
        {
            IRgbColor pRGB;
            pRGB = new RgbColorClass();
            pRGB.Red = R;
            pRGB.Green = G;
            pRGB.Blue = B;
            return pRGB;
        }
        //zhuzhuangxuanran
        private void chartRenderer()
        {
            //IGeoFeatureLayer pGeoFeatureL;
            IChartRenderer pChartRenderer;
            IRendererFields pRendererFields;
            ITable pTable;
            ICursor pCursor;
            IQueryFilter pQueryFilter;
            IRowBuffer pRowBuffer;
            int numFields = 2;
            int[] fieldIndecies;
            fieldIndecies = new int[numFields];
            //Dim fieldIndecies(0 To numFields - 1) As Long
            //long lFieldIndex;
            double dMaxValue;
            bool bFirstValue;
            double dFieldValue;
            IBarChartSymbol pBarChartSymbol;
            IFillSymbol pFillSymbol;
            IMarkerSymbol pMarkerSymbol;
            ISymbolArray pSymbolArray;
            IChartSymbol pChartSymol;

            string strPopField1 = fieldName;
            string strPopField2 = fieldName1;

            pChartRenderer = new ChartRendererClass();
            pRendererFields = (IRendererFields)pChartRenderer;
            pRendererFields.AddField(strPopField1, strPopField1);
            pRendererFields.AddField(strPopField2, strPopField2);

           // pGeoFeatureL = (IGeoFeatureLayer)pMap.get_Layer(0);
            pTable = (ITable)pGeoFeatureL;

            pQueryFilter = new QueryFilterClass();
            pQueryFilter.AddField(strPopField1);
            pQueryFilter.AddField(strPopField2);

            pCursor = pTable.Search(pQueryFilter, true);
            fieldIndecies[0] = pTable.FindField(strPopField1);
            fieldIndecies[1] = pTable.FindField(strPopField2);

            bFirstValue = true;
            dMaxValue = 0;

            pRowBuffer = pCursor.NextRow();
            while (pRowBuffer != null)
            {
                int i;
                for (i = 0; i < numFields; i++)
                {
                    if (pRowBuffer == null)
                        break;
                    dFieldValue = (double)pRowBuffer.get_Value(fieldIndecies[i]);
                    if (bFirstValue)
                    {
                        dMaxValue = dFieldValue;
                        bFirstValue = false;
                    }
                    else
                    {
                        if (dFieldValue > dMaxValue)
                            dMaxValue = dFieldValue;
                    }
                    pRowBuffer = pCursor.NextRow();
                }
            }

            if (dMaxValue < 0)
            {
                MessageBox.Show("最大值计算有误,或者是最大值等于0");
                return;
            }

            pBarChartSymbol = new BarChartSymbolClass();
            pChartSymol = (IChartSymbol)pBarChartSymbol;
            pBarChartSymbol.Width = 20;

            pMarkerSymbol = (IMarkerSymbol)pBarChartSymbol;
            pChartSymol.MaxValue = dMaxValue;
            pMarkerSymbol.Size = 30;

            pSymbolArray = (ISymbolArray)pBarChartSymbol;

            pFillSymbol = new SimpleFillSymbolClass();
            pFillSymbol.Color = GetRGB(213, 212, 252);
            pSymbolArray.AddSymbol((ISymbol)pFillSymbol);

            pFillSymbol = new SimpleFillSymbolClass();
            pFillSymbol.Color = GetRGB(193, 252, 179);
            pSymbolArray.AddSymbol((ISymbol)pFillSymbol);

            pChartRenderer.ChartSymbol = (IChartSymbol)pBarChartSymbol;
            pChartRenderer.Label = "人口";
            pFillSymbol = new SimpleFillSymbolClass();
            pFillSymbol.Color = GetRGB(239, 228, 190);
            pChartRenderer.BaseSymbol = (ISymbol)pFillSymbol;

            pChartRenderer.UseOverposter = false;

            pGeoFeatureL.Renderer = (IFeatureRenderer)pChartRenderer;
        }
        //private void pieRenderer()
        //{
        //    string pRenderField;
        //    Renderer pPie = new Renderer();
        //    pPie.pMap = axMapControl1.Map;
        //    pPie.ShowDialog();
        //    pRenderField = pPie.render;
        //    Num = pPie.Num;
        //    if (pRenderField == null || pRenderField == "") return;

        //    IFeatureLayer pFLayer = (IFeatureLayer)axMapControl1.get_Layer(Num);
        //    IGeoFeatureLayer pGeoFeaLayer = (IGeoFeatureLayer)pFLayer;
        //    IChartRenderer pChartRenderer = new ChartRendererClass();
        //    IRendererFields pRenderFields = (IRendererFields)pChartRenderer;
        //    pRenderFields.AddField(pRenderField, null);
        //    IPieChartRenderer pPieChartRender = (IPieChartRenderer)pChartRenderer;

        //    IQueryFilter pQueryFilter = new QueryFilterClass();
        //    ITable pTable = (ITable)pGeoFeaLayer;
        //    pQueryFilter.AddField(pRenderField);
        //    ICursor pCursor = pTable.Search(pQueryFilter, true);
        //    int fieldIndex;
        //    double MaxValue;
        //    bool firstValue;
        //    double fieldValue;
        //    fieldIndex = pTable.FindField(pRenderField);
        //    firstValue = true;
        //    MaxValue = 0;

        //    IRowBuffer pRow = pCursor.NextRow();
        //    while (pRow != null)
        //    {
        //        fieldValue = (double)pRow.get_Value(fieldIndex);
        //        if (firstValue)
        //        {
        //            MaxValue = fieldValue;
        //            firstValue = false;
        //        }
        //        if (fieldValue > MaxValue)
        //        {
        //            MaxValue = fieldValue;
        //        }
        //        pRow = pCursor.NextRow();
        //    }


        //    IPieChartSymbol pPiechartSymbol = new PieChartSymbolClass();
        //    IFillSymbol pFillSymbol = new SimpleFillSymbolClass();
        //    IChartSymbol pChartSymbol = (IChartSymbol)pPiechartSymbol;
        //    pPiechartSymbol.Clockwise = true;
        //    pPiechartSymbol.UseOutline = true;
        //    ILineSymbol pOutLine = new SimpleLineSymbolClass();
        //    pOutLine.Color = GetRGBColor(250, 0, 0);
        //    pOutLine.Width = 0.5;
        //    pPiechartSymbol.Outline = pOutLine;

        //    IMarkerSymbol pMarkerSymbol = (IMarkerSymbol)pPiechartSymbol;

        //    pChartSymbol.MaxValue = MaxValue;
        //    pMarkerSymbol.Size = 3;
        //    //像符号数组中添加 添加符号
        //    ISymbolArray pSymbolArray = (ISymbolArray)pPiechartSymbol;
        //    pFillSymbol.Color = GetRGBColor(218, 112, 214);
        //    pFillSymbol.Outline = pOutLine;
        //    pSymbolArray.AddSymbol((ISymbol)pFillSymbol);

        //    pFillSymbol.Color = GetRGBColor(183, 242, 122);
        //    pFillSymbol.Outline = pOutLine;
        //    pSymbolArray.AddSymbol((ISymbol)pFillSymbol);

        //    pFillSymbol.Color = GetRGBColor(252, 218, 213);
        //    pChartRenderer.BaseSymbol = (ISymbol)pFillSymbol;
        //    pChartRenderer.UseOverposter = false;
        //    pPieChartRender.MinSize = 30;
        //    pPieChartRender.MinValue = 21;
        //    pPieChartRender.FlanneryCompensation = false;
        //    pPieChartRender.ProportionalBySum = true;
        //    pChartRenderer.ChartSymbol = (IChartSymbol)pPiechartSymbol;
        //    pChartRenderer.CreateLegend();
        //    pGeoFeaLayer.Renderer = (IFeatureRenderer)pChartRenderer;
            
        //}
        private void comboBox3_SelectionChangeCommitted(object sender, EventArgs e)
        {
            listBox1.Items.Clear();

            listBox1.Enabled = true;

            fieldIndex1 = comboBox3.SelectedIndex;
            fieldName1 = pTable.Fields.get_Field(fieldIndex).Name;

            //给右侧的属性值列表框添加字段            
            IQueryFilter pQueryFilter;
            pQueryFilter = new QueryFilterClass();
            pQueryFilter.AddField(fieldName);

            rowCount = pTable.RowCount(pQueryFilter);
            fieldValue = new double[rowCount];

            for (int i = 0; i < rowCount; i++)
            {
                listBox1.Items.Add(pTable.GetRow(i).get_Value(fieldIndex).ToString());
                if (pTable.GetRow(i).get_Value(fieldIndex) is int || pTable.GetRow(i).get_Value(fieldIndex) is double)
                    fieldValue[i] = (double)pTable.GetRow(i).get_Value(fieldIndex);
            }     
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //点密度渲染时
            if (pFlag == "DotValue")
            {
                if (tbDotValue.Text == "")
                    MessageBox.Show("请填写“每个点代表数值”一栏", "提示");
                else
                {
                    dotValue = Double.Parse(tbDotValue.Text);
                    dotValueRenderer();
                }
            }
            //分类渲染
            else if (pFlag == "ClassBreak")
            {
                ClassBreak();
            }
            else if (pFlag == "Unique")
            {
                Unique();
            }
            else if (pFlag == "Proportional")
            {
                proportionalRenderer();
            }
            else if (pFlag == "Chart")
            {
                chartRenderer();
            }

            this.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -