几何查询名称查询

using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace taihu2
{
    public partial class Form3 : Form
    {
        MainForm pMF;
        public Form3(MainForm _pMF)
        {
            InitializeComponent();
            pMF = _pMF;
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            comboBox2.Items.Clear();

            listBox1.Items.Clear();
            IMap pMap = pMF.axMapControl1.Map;
            ILayer pLayer = pMap.get_Layer(comboBox1.SelectedIndex);
            IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;
            IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;

            if (comboBox1.SelectedIndex == 0)
            {
                comboBox2.Items.Add("测站名称");
                comboBox2.Items.Add("东经");
                comboBox2.Items.Add("北纬");
                comboBox2.Items.Add("雨量");
            }
            else if (comboBox1.SelectedIndex == 1)
            {
                comboBox2.Items.Add("测站名称");
                comboBox2.Items.Add("东经");
                comboBox2.Items.Add("北纬");

            }
            else
            {
                for (int i = 3; i < 12; i++)
                {
                    comboBox2.Items.Add(pFeatureClass.Fields.get_Field(i).Name);

                }
            }
            comboBox2.SelectedIndex = 0;
        }

        //选择属性改变
        string fieldname = "";

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            ILayer pLayer = pMF.axMapControl1.Map.get_Layer(comboBox1.SelectedIndex);
            IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;
            IFeature pFearure;
            IFeatureCursor pFCur;
            pFCur = pFeatureLayer.FeatureClass.Search(null, false);
            pFearure = pFCur.NextFeature();

            while (pFearure != null)
            {
                if (comboBox1.SelectedIndex != 2)
                {
                    if (comboBox2.SelectedItem.ToString() == "雨量")
                    {
                        fieldname = "YULIANG";
                    }
                    else if (comboBox2.SelectedItem.ToString() == "测站名称")
                    {

                        fieldname = "STNM";
                    }
                    else if (comboBox2.SelectedItem.ToString() == "东经")
                    {
                        if (comboBox1.SelectedIndex == 1)
                        {
                            fieldname = "LONITUDE";
                        }
                        else
                        {
                            fieldname = "LONGITUDE";
                        }
                    }
                    else if (comboBox2.SelectedItem.ToString() == "北纬")
                    {
                        if (comboBox2.SelectedIndex == 0)
                        {
                            fieldname = "LATITYDE";
                        }
                        else
                        {
                            fieldname = "LATITUDE";
                        }
                    }
                    else
                    {
                        fieldname = comboBox2.SelectedItem.ToString();
                    }
                }
                else
                {
                    fieldname = comboBox2.SelectedItem.ToString();
                }


                int dex = pFCur.FindField(fieldname);
                string item = pFearure.get_Value(dex).ToString();
                listBox1.Items.Add(item);
                pFearure = pFCur.NextFeature();
            }
            Distinct(listBox1.Items);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedItem != null)
            {
                listBox2.Items.Clear();
                string item1 = listBox1.SelectedItem.ToString();
                string item2 = comboBox2.SelectedItem.ToString();
                ILayer pLayer = pMF.axMapControl1.Map.get_Layer(comboBox1.SelectedIndex);
                IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;
                IFeature pFearure;
                IFeatureCursor pFCur;
                IQueryFilter pQF = new QueryFilter();
                if (item2 == "测站名称" || item2 == "水资源三级" || item2 == "水功能一级" || item2 == "水功能二级" || item2 == "行政区划" || item2 == "水质类别")
                {
                    pQF.WhereClause = fieldname + "='" + item1 + "'";
                }
                else
                {
                    pQF.WhereClause = fieldname + "=" + item1;
                }
                //MessageBox.Show(comboBox2.SelectedItem.ToString());
                //MessageBox.Show(listBox1.SelectedItem.ToString());
                pFCur = pFeatureLayer.FeatureClass.Search(pQF, false);
                pFearure = pFCur.NextFeature();
                while (pFearure != null)
                {
                    if (comboBox1.SelectedIndex == 2)
                    {
                        listBox2.Items.Add(comboBox1.SelectedItem.ToString() + "-" + pFearure.get_Value(6).ToString());
                    }
                    else
                    {
                        listBox2.Items.Add(comboBox1.SelectedItem.ToString() + "-" + pFearure.get_Value(4).ToString());
                    }
                    pFearure = pFCur.NextFeature();
                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (listBox2.SelectedItem != null)
            {
                int n = 0;
                string str = listBox2.SelectedItem.ToString();
                string[] s = str.Split(new char[] { '-' });
                string inf = "";
                if (s[0] == "雨量站") n = 0;
                else
                {
                    if (s[0] == "水文站") n = 1;
                    else n = 2;
                }
                IMap pMap = pMF.axMapControl1.Map;
                pMap.ClearSelection();
                IActiveView pActiveView = pMap as IActiveView;
                IFeatureLayer pFL = pMap.get_Layer(n) as IFeatureLayer;
                IFeatureClass pFC = pFL.FeatureClass;
                IQueryFilter queryFilter = new QueryFilter();
                IFeatureCursor featureCursor;
                IFeature pFeature;
                if (n == 2) queryFilter.WhereClause = "测站名称='" + s[1] + "'";
                else queryFilter.WhereClause = "STNM ='" + s[1] + "'";
                featureCursor = pFC.Search(queryFilter, false);
                pFeature = featureCursor.NextFeature();
                pMap.SelectFeature(pFL, pFeature);
                pMF.axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
                switch (n)
                {
                    case 0: inf = "雨量站信息:" + "\r\n" + "测站名称:" + pFeature.get_Value(4) + "\r\n" + "东经:" + pFeature.get_Value(5) + "\r\n" + "北纬:" + pFeature.get_Value(6) + "\r\n" + "雨量:" + pFeature.get_Value(8); break;
                    case 1: inf = "水文站信息:" + "\r\n" + "测站名称:" + pFeature.get_Value(4) + "\r\n" + "东经:" + pFeature.get_Value(5) + "\r\n" + "北纬:" + pFeature.get_Value(6); break;
                    case 2: inf = "水质站信息:" + "\r\n" + "测站名称:" + pFeature.get_Value(6) + "\r\n" + "东经:" + pFeature.get_Value(7) + "\r\n" + "北纬:" + pFeature.get_Value(8) + "\r\n" + "水资源三级:" + pFeature.get_Value(3) + "\r\n" + "水功能一级:" + pFeature.get_Value(4) + "\r\n" + "水功能二级:" + pFeature.get_Value(5) + "\r\n" + "行政区划:" + pFeature.get_Value(9) + "\r\n" + "代表河长:" + pFeature.get_Value(10) + "\r\n" + "水质类别:" + pFeature.get_Value(11); break;
                }
                IPoint point = pFeature.Shape as IPoint;
                point.Project(pMF.axMapControl1.Map.SpatialReference);
                pMF.axMapControl1.CenterAt(point);
                pMF.axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
                textBox1.Text = inf;
            }
            else
            {
                MessageBox.Show("未选择测站");
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            pMF.axMapControl1.Map.ClearSelection();
            pMF.axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
            this.Close();
        }

        private void Form3_FormClosed(object sender, FormClosedEventArgs e)
        {
            pMF.axMapControl1.Map.ClearSelection();
            pMF.axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
        }

        //去除重复项
        private void Distinct(ListBox.ObjectCollection items)
        {
            for (int i = 0; i < items.Count; i++)
            {
                for (int j = i + 1; j < items.Count; j++)
                {
                    if (items[i].Equals(items[j])) { items.Remove(items[j]); }
                }
            }
        }

 

posted on 2017-01-11 09:15  水熊虫OK  阅读(151)  评论(0)    收藏  举报

导航