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

📄 huanchongqufenxi.cs

📁 运用ArcEngine9.2结合C#开发的gis系统
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;

namespace WindowsApplication1
{
    public partial class huanchongqufenxi : Form
    {
        IGeoFeatureLayer pgeolayer;
        public int layerIndex = 0;
        //ITable pConnectionTable;
        IFeatureLayer pFeatureLayer;

        public IMap pMap;
        public string pRenderField;
        string pRenderField1, pRenderField2, pRenderField3;
        // public int no;
        public bool pBool;
        public bool[] pBoollean;
        public bool Buffer;
        public huanchongqufenxi()
        {
            InitializeComponent();
        }

        private void huanchongqufenxi_Load(object sender, EventArgs e)
        {
            for (int k = 0; k < pMap.LayerCount; k++)
                comboBox1.Items.Add(pMap.get_Layer(k).Name);
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            IFeatureClass pFeatureClass;
            IField pField;
            IFields pFields;

            layerIndex = comboBox1.SelectedIndex;

            pFeatureLayer = (IFeatureLayer)pMap.get_Layer(comboBox1.SelectedIndex);
            pgeolayer = pFeatureLayer as IGeoFeatureLayer;
            pFeatureClass = (IFeatureClass)pFeatureLayer.FeatureClass;
            IDisplayTable mytable = (IDisplayTable)pFeatureLayer;
            pFields = mytable.DisplayTable.Fields;

            pBoollean = new bool[pFields.FieldCount];
            for (int j = 0; j < pFields.FieldCount; j++)
            {
                pField = (IField)pFields.get_Field(j);
                if (pField.Name == pField.AliasName && pField.Name != "FID" && pField.Name != "Shape")
                {
                    listBox1.Items.Add(pField.Name);
                    if (pField.Type == esriFieldType.esriFieldTypeInteger || pField.Type == esriFieldType.esriFieldTypeSmallInteger || pField.Type == esriFieldType.esriFieldTypeDouble || pField.Type == esriFieldType.esriFieldTypeSingle)
                        pBoollean[j] = true;
                    else
                        pBoollean[j] = false;
                }
            }
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            IFeatureLayer pLayer;
            IDataStatistics pDataStatics;
            ICursor pCursor;
            IQueryFilter pQueryFilter;

            pQueryFilter = new QueryFilterClass();
            pQueryFilter.AddField(listBox1.SelectedItem.ToString());

            pLayer = (IFeatureLayer)pMap.get_Layer(comboBox1.SelectedIndex);
            IDisplayTable mytable = (IDisplayTable)pLayer;

            pCursor = (ICursor)mytable.SearchDisplayTable(pQueryFilter, false);

            pDataStatics = new DataStatisticsClass();
            pDataStatics.Field = listBox1.SelectedItem.ToString();
            pDataStatics.Cursor = pCursor;

            listBox2.Items.Clear();
            System.Collections.IEnumerator pEnumVariantSimple;
            pEnumVariantSimple = (System.Collections.IEnumerator)pDataStatics.UniqueValues;
            pEnumVariantSimple.Reset();
            while (pEnumVariantSimple.MoveNext())
            {
                object value = pEnumVariantSimple.Current;
                listBox2.Items.Add(value.ToString());
            }
            listBox2.Refresh();

            pRenderField1 = listBox1.SelectedItem.ToString();
            pRenderField = pRenderField1 + pRenderField2 + pRenderField3;
            textBox1.Text = pRenderField;
        }

        private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            pBool = pBoollean[listBox1.SelectedIndex + 2];
            pRenderField3 = listBox2.SelectedItem.ToString();

            if (pBool == false)//判断字段是否字符串型
                pRenderField3 = "'" + pRenderField3 + "'";

            pRenderField = pRenderField1 + pRenderField2 + pRenderField3;
            textBox1.Text = pRenderField;
        }

        private void button7_Click(object sender, EventArgs e)
        {
            if (Buffer == true)
            {
                this.Close();
                return;
            }
            IActiveView pActiveView;
            pActiveView = (IActiveView)pMap;

            IFeature pFeature;
            IQueryFilter pQueryFilter;
            pQueryFilter = new QueryFilterClass();
            pQueryFilter.WhereClause = pRenderField;
            IFeatureCursor pFeatureCursor;
            IFeatureLayer pLayer;
            pLayer = (IFeatureLayer)pMap.get_Layer(comboBox1.SelectedIndex);
            IDisplayTable mytable = (IDisplayTable)pLayer;
            pFeatureCursor = (IFeatureCursor)mytable.SearchDisplayTable(pQueryFilter, false);
            pFeature = pFeatureCursor.NextFeature();

            while (pFeature != null)
            {
                pMap.SelectFeature(pFeatureLayer, pFeature);
                pFeature = pFeatureCursor.NextFeature();
            }

            pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
        }

        private void button8_Click(object sender, EventArgs e)
        {
            pRenderField = "";
            this.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            pRenderField2 = ">"; 
            pRenderField = pRenderField1 + pRenderField2 + pRenderField3;
            textBox1.Text = pRenderField;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            pRenderField2 = "<"; 
            pRenderField = pRenderField1 + pRenderField2 + pRenderField3;
            textBox1.Text = pRenderField;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            pRenderField2 = ">=";
            pRenderField = pRenderField1 + pRenderField2 + pRenderField3;
            textBox1.Text = pRenderField;
        }

        private void button4_Click(object sender, EventArgs e)
        {
            pRenderField2 = "<="; 
            pRenderField = pRenderField1 + pRenderField2 + pRenderField3;
            textBox1.Text = pRenderField;
        }

        private void button5_Click(object sender, EventArgs e)
        {
            pRenderField2 = "="; 
            pRenderField = pRenderField1 + pRenderField2 + pRenderField3;
            textBox1.Text = pRenderField;
        }

        private void button6_Click(object sender, EventArgs e)
        {
            pRenderField2 = "<>"; 
            pRenderField = pRenderField1 + pRenderField2 + pRenderField3;
            textBox1.Text = pRenderField;
        }
    }
}

⌨️ 快捷键说明

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