现在的位置: 首页 > 综合 > 正文

我的比较差的初级的研究成果

2013年02月18日 ⁄ 综合 ⁄ 共 30210字 ⁄ 字号 评论关闭

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using stdole;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.Geoprocessing;
using ESRI.ArcGIS.Geoprocessor;
using ESRI.ArcGIS.AnalysisTools;

namespace HotFox.UI
{
    public partial class DOMPropertyConditionControl : UserControl, IPropertyQueryConditionControl
    {

        private string TotalSearchString = string.Empty;
        private string ScaleSearchString = string.Empty;
        private string ResolutionSearchString = string.Empty;
        private string DataCatgreySearchString = string.Empty;
        private string DateSearchString = string.Empty;

        private bool is数据集名称Checked = false;
        private bool is数据集编号Checked = false;
        private bool is整体数据Chenked = false;
        private bool is详细数据Checked = false;

        private bool is显示影像种类Checked = false;
        private bool is显示时间属性Checked = false;
        private bool is图符Checked = false;
        private bool is图符编号Checked = false;

        public event EventHandler ConditionChanged = null;
        private void fireConditionChangedEvent()
        {
            if (ConditionChanged != null)
                ConditionChanged(this, new EventArgs());
        }

        public event EventHandler OptionChanged = null;
        private void fireOptionChangedEvent()
        {
            if (OptionChanged != null)
                OptionChanged(this, new EventArgs());
        }

        #region 事件触发

        #region 查询条件

        #region 比例尺条件

        private void 比例尺ToolStripSplitButton_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            比例尺ToolStripSplitButton.Text = e.ClickedItem.Text;

            if (e.ClickedItem.Text != "任意")
                分辨率ToolStripSplitButton.Text = "任意";

            fireConditionChangedEvent();

            return;

            #region --
            //ScaleSearchString = 比例尺ToolStripSplitButton.Text.ToString();
            //if (ScaleSearchString == "任意")
            //{
            //    ScaleSearchString = "Scale <> 0 ";

            //}
            //else
            //{
            //    ScaleSearchString = ScaleSearchString.Substring(2);
            //    ScaleSearchString = "Scale" + " = " + ScaleSearchString;
            //}
            //refreshMap();
            //elementsDeleted();
            //totalDisplay();
            #endregion
        }

        private void 自定义比例尺ToolStripTextBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (自定义比例尺ToolStripTextBox.Text.Trim() != string.Empty)
                    比例尺ToolStripSplitButton.Text = 自定义比例尺ToolStripTextBox.Text;
                else
                    比例尺ToolStripSplitButton.Text = "任意";

                自定义比例尺ToolStripTextBox.Text = "自定义";
                比例尺ToolStripSplitButton.HideDropDown();

                fireConditionChangedEvent();
            }
        }

        #endregion

        #region 分辨率条件

        private void 分辨率ToolStripSplitButton_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            分辨率ToolStripSplitButton.Text = e.ClickedItem.Text;

            if (e.ClickedItem.Text != "任意")
                比例尺ToolStripSplitButton.Text = "任意";

            fireConditionChangedEvent();

            return;

            #region --
            //ResolutionSearchString = 分辨率ToolStripSplitButton.Text.ToString();

            // if (ResolutionSearchString == "任意")
            // {
            //     ResolutionSearchString = "Resolution NOT LIKE ''";
            // }
            // else
            // {
            //     ResolutionSearchString = ResolutionSearchString.Substring(0, ResolutionSearchString.Length - 1);
            //     ResolutionSearchString = "Resolution " + " LIKE " + " '" + ResolutionSearchString + "'";
            // }
            // refreshMap();
            // elementsDeleted();
            // totalDisplay();
            #endregion
        }

        private void 自定义分辨率ToolStripTextBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (自定义分辨率ToolStripTextBox.Text.Trim() != string.Empty)
                    分辨率ToolStripSplitButton.Text = 自定义分辨率ToolStripTextBox.Text;
                else
                    分辨率ToolStripSplitButton.Text = "任意";

                自定义分辨率ToolStripTextBox.Text = "自定义";
                分辨率ToolStripSplitButton.HideDropDown();

                fireConditionChangedEvent();
            }
        }

        #endregion

        #region 数据类型条件

        private void DataCategoryConditionsCheckBox_Click(object sender, EventArgs e)
        {
            fireConditionChangedEvent();

            return;

            #region --
            //generateCategoryCondition();
            //refreshMap();
            //elementsDeleted();
            //totalDisplay();
            #endregion
        }

        #endregion

        #region 时效性条件

        private void 时效性条件ToolStripSplitButton_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            时效性条件ToolStripSplitButton.Text = e.ClickedItem.Text;

            fireConditionChangedEvent();

            return;

            #region --
            //DateSearchString = 时效性条件ToolStripSplitButton.Text.ToString();
            //generateDateConditon();
            //refreshMap();
            //elementsDeleted();
            //totalDisplay();
            #endregion
        }

        #endregion

        #endregion

        #region 显示选项

        #region 图幅选项

        private void 图幅选项_Click(object sender, EventArgs e)
        {
            if (!显示图幅网格ToolStripCheckBox.Checked)
            {
                显示图幅号ToolStripCheckBox.Checked = false;
                显示图幅号ToolStripCheckBox.Enabled = false;

                显示新图幅号ToolStripCheckBox.Checked = false;
                显示新图幅号ToolStripCheckBox.Enabled = false;

                显示旧图幅号ToolStripCheckBox.Checked = false;
                显示旧图幅号ToolStripCheckBox.Enabled = false;
            }
            else
            {
                显示图幅号ToolStripCheckBox.Enabled = true;
                if (显示图幅号ToolStripCheckBox.Checked)
                {
                    显示新图幅号ToolStripCheckBox.Enabled = true;
                    显示旧图幅号ToolStripCheckBox.Enabled = true;
                }
                else
                {
                    显示新图幅号ToolStripCheckBox.Checked = false;
                    显示新图幅号ToolStripCheckBox.Enabled = false;
                    显示旧图幅号ToolStripCheckBox.Checked = false;
                    显示旧图幅号ToolStripCheckBox.Enabled = false;
                }
            }

            fireOptionChangedEvent();
        }

        #region 显示图幅网格

        private void 显示图幅网格ToolStripCheckBox_Click(object sender, EventArgs e)
        {
            if (显示图幅网格ToolStripCheckBox.Checked == true)
            {
                is图符Checked = true;
            }
            else
            {
                is图符Checked = false;

            }
            elementsDeleted();
            totalDisplay();
        }

        #endregion

        #region 显示图幅号

        private void 显示图幅号ToolStripCheckBox_Click(object sender, EventArgs e)
        {
            if (显示图幅号ToolStripCheckBox.Checked==true)
            {
                is图符编号Checked = true;
            }
            else
            {
                is图符编号Checked = false;
            }
            elementsDeleted();
            totalDisplay();
        }

        #endregion

        #region 显示新图幅号

        private void 显示新图幅号ToolStripCheckBox_Click(object sender, EventArgs e)
        {

        }

        #endregion

        #region 显示旧图幅号

        private void 显示旧图幅号ToolStripCheckBox_Click(object sender, EventArgs e)
        {

        }

        #endregion

        #endregion

        #region 元数据选项

        private void metadataDisplayOption_Click(object sender, EventArgs e)
        {
            fireOptionChangedEvent();
        }

        #region --

        private void 显示影像种类ToolStripCheckBox_Click(object sender, EventArgs e)
        {
            if (显示影像种类ToolStripCheckBox.Checked == true)
            {
                is显示影像种类Checked = true;
            }
            else
            {
                is显示影像种类Checked = false;
            }
            elementsDeleted();
            totalDisplay();
        }

        private void 显示时间属性ToolStripCheckBox_Click(object sender, EventArgs e)
        {
            if (显示时间属性ToolStripCheckBox.Checked == true)
            {
                is显示时间属性Checked = true;
            }
            else
            {
                is显示时间属性Checked = false;
            }
            elementsDeleted();
            totalDisplay();
        }

        #endregion
       
        #endregion

        #endregion

        #endregion

        public IEnumerable<string> GetCondition(ConditionNameEnum name)
        {
            switch (name)
            {
                case ConditionNameEnum.比例尺:
                    return get比例尺();
                case ConditionNameEnum.分辨率:
                    return get分辨率();
                case ConditionNameEnum.数据种类:
                    return get数据种类();
                case ConditionNameEnum.时效性:
                    return get时效性();
                default:
                    return null;
            }
        }

        public bool GetOption(OptionNameEnum name)
        {
            switch (name)
            {
                case OptionNameEnum.图幅网格:
                    return 显示图幅网格ToolStripCheckBox.Checked;
                case OptionNameEnum.图幅号:
                    return 显示图幅号ToolStripCheckBox.Checked;
                case OptionNameEnum.新图幅号:
                    return 显示新图幅号ToolStripCheckBox.Checked;
                case OptionNameEnum.旧图幅号:
                    return 显示旧图幅号ToolStripCheckBox.Checked;
                case OptionNameEnum.数据种类:
                    return 显示影像种类ToolStripCheckBox.Checked;
                case OptionNameEnum.时间属性:
                    return 显示时间属性ToolStripCheckBox.Checked;
                case OptionNameEnum.数据集名称:
                    return 显示数据集名称ToolStripCheckBox.Checked;
                case OptionNameEnum.详细数据:
                    return 显示详细数据ToolStripCheckBox.Checked;
                default:
                    return false;
            }
        }

        public void FireConditionChangedEvent()
        {
            fireConditionChangedEvent();
        }

        #region get比例尺()
        private IEnumerable<string> get比例尺()
        {
            List<string> condition = new List<string>();
            string text = 比例尺ToolStripSplitButton.Text.Trim();
            switch (text)
            {
                case "任意":
                    break;
                case "1:500":
                case "1:1000":
                case "1:2000":
                case "1:5000":
                case "1:10000":
                case "1:20000":
                case "1:50000":
                    condition.Add(text.Replace("1:", ""));
                    break;
                default:
                    string[] pieces = text.Split(',', ',');
                    int i;
                    foreach (string piece in pieces)
                    {
                        if (int.TryParse(piece, out i))
                            condition.Add(i.ToString());
                    }
                    break;
            }

            return condition;
        }
        #endregion

        #region get分辨率()
        private IEnumerable<string> get分辨率()
        {
            List<string> condition = new List<string>();

            string text = 分辨率ToolStripSplitButton.Text.Trim();
            switch (text)
            {
                case "任意":
                    break;
                case "0.1米":
                case "0.2米":
                case "0.5米":
                case "1米":
                case "2米":
                case "4米":
                case "10米":
                    condition.Add(text.Replace("米", ""));
                    break;
                default:
                    string[] pieces = text.Split(',', ',');
                    double i;
                    foreach (string piece in pieces)
                    {
                        if (double.TryParse(piece, out i))
                            condition.Add(i.ToString());
                    }
                    break;
            }

            return condition;
        }
        #endregion

        #region get数据种类()
        private IEnumerable<string> get数据种类()
        {
            List<string> condition = new List<string>();

            Syncfusion.Windows.Forms.Tools.ToolStripCheckBox check = null;
            foreach (ToolStripItem item in 数据种类ToolStripEx.Items)
            {
                if (!(item is Syncfusion.Windows.Forms.Tools.ToolStripCheckBox))
                    continue;

                check = item as Syncfusion.Windows.Forms.Tools.ToolStripCheckBox;
                if (check.Checked)
                    condition.Add(check.Text.Trim());
            }

            return condition;
        }
        #endregion

        #region get时效性
        private IEnumerable<string> get时效性()
        {
            List<string> condition = new List<string>();

            string text = 时效性条件ToolStripSplitButton.Text.Trim();
            switch (text)
            {
                case "任意":
                    break;
                case "今年":
                    condition.Add(DateTime.Now.ToString("yyyy-01-01"));
                    condition.Add(DateTime.Now.AddYears(1).ToString("yyyy-01-01"));
                    break;
                case "去年":
                    condition.Add(DateTime.Now.AddYears(-1).ToString("yyyy-01-01"));
                    condition.Add(DateTime.Now.ToString("yyyy-01-01"));
                    break;
                case "近两年":
                    condition.Add(DateTime.Now.AddYears(-1).ToString("yyyy-01-01"));
                    condition.Add(DateTime.Now.AddYears(1).ToString("yyyy-01-01"));
                    break;
                case "近三年":
                    condition.Add(DateTime.Now.AddYears(-2).ToString("yyyy-01-01"));
                    condition.Add(DateTime.Now.AddYears(1).ToString("yyyy-01-01"));
                    break;
                default:
                    break;
            }

            return condition;
        }
        #endregion

        #region --

        //检索和显示的交互
        private IQueryFilter pQueryFilter;

        //设置字体样式,最好可以通过设置参数来设置字体样式
        private ITextSymbol generateFont()
        {
            IFont pFont = new StdFontClass();
            pFont.Name = "宋体";
            pFont.Size = 30;
            IRgbColor pColor = new RgbColorClass();
            pColor.Red = 255;
            pColor.Blue = 0;
            pColor.Green = 0;
            ITextSymbol pTextSymbol = new TextSymbolClass();
            pTextSymbol.Color = pColor;
            pTextSymbol.Font = (IFontDisp)pFont;
            pTextSymbol.Size = 11;
            return pTextSymbol;
        }

        //生成拼接字符串:摄区名称、摄区编号、影像种类、显示时间属性
        private void  stringDisplay(IFeatureClass inputFeatureClass, ITextSymbol inputTextSymbol)
        {
            ITextElement pTextElement;
            IElement pElement;
            IArea pArea;
            IPoint pPoint = new PointClass();

            IGraphicsContainer pGraphicsContainer = (IGraphicsContainer)mapControl._AxMapControl.Map;
            IFeatureClass pFeatureClass = inputFeatureClass;

            IFeatureCursor pFeatureCursor = pFeatureClass.Search(this.pQueryFilter, false);
            string str=string.Empty;
            int index;
            IFeature pFeature = pFeatureCursor.NextFeature();

            while (pFeature != null)
            {
                str = string.Empty;
                pArea = (IArea)pFeature.Shape;
                pPoint = pArea.Centroid;
                //if (is摄区名称Checked)
                //{
                //    index = pFeature.Fields.FindField("ShequName");
                //    str += "\r\n"+ pFeature.get_Value(index).ToString();
                //}
                //if (is摄区编号Checked)
                //{
                //    index = pFeature.Fields.FindField("Shequhao");
                //    str +=  "\r\n" + pFeature.get_Value(index).ToString();
                //}
                if (is显示影像种类Checked)
                {
                    index = pFeature.Fields.FindField("ImgType");
                    str +=  "\r\n" + pFeature.get_Value(index).ToString();
                }
                if (is显示时间属性Checked)
                {
                    index = pFeature.Fields.FindField("StartDate");
                    str +=  "\r\n" + pFeature.get_Value(index).ToString().Substring(0,pFeature.get_Value(index).ToString().Length-8);
                    index = pFeature.Fields.FindField("EndDate");
                    str += "\r\n" + pFeature.get_Value(index).ToString().Substring(0,pFeature.get_Value(index).ToString().Length - 8);
                }

                pTextElement = new TextElementClass();
                pTextElement.Symbol = generateFont();
                pTextElement.ScaleText = true;
                pTextElement.Text = str;

                pElement = (IElement)pTextElement;
                pElement.Geometry = pPoint;
                pGraphicsContainer.AddElement(pElement, 0);

                pFeature = pFeatureCursor.NextFeature();
            }
            mapControl._AxMapControl.ActiveView.Refresh();
 
        }

        //显示注记控制,只用来控制网格
        private void elementsDisplay(IFeatureClass inputFeatureClass,string inputstrField,ITextSymbol inputTextSymbol)
        {
            ITextElement pTextElement;
            IElement pElement;
            IArea pArea;
            IPoint pPoint = new PointClass();

            IGraphicsContainer pGraphicsContainer = (IGraphicsContainer)mapControl._AxMapControl.Map;

            IFeatureClass pFeatureClass = inputFeatureClass;
            IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
            IFeature pFeature = pFeatureCursor.NextFeature();

            while (pFeature != null)
            {
                pArea = (IArea)pFeature.Shape;
                pPoint = pArea.Centroid;
                int index = pFeature.Fields.FindField(inputstrField);
                pTextElement = new TextElementClass();
                pTextElement.Symbol = generateFont();
                pTextElement.ScaleText = true;
                pTextElement.Text = pFeature.get_Value(index).ToString();
              
                pElement = (IElement)pTextElement;
                pElement.Geometry = pPoint;
                pGraphicsContainer.AddElement(pElement, 0);
                pFeature = pFeatureCursor.NextFeature();
            }
            mapControl._AxMapControl.ActiveView.Refresh();
        }
      
        //删除所有注记
        private void elementsDeleted()
        {
            IGraphicsContainer pGraphicsContainer = (IGraphicsContainer)mapControl._AxMapControl.Map;
            pGraphicsContainer.DeleteAllElements();
            mapControl._AxMapControl.ActiveView.Refresh();
        }
 
        //总显示控制
        private void totalDisplay()
        {

            if (is图符Checked)
            {
                //GetThe图符FeatureLayer(mapControl._AxMapControl).Visible = true;
            }
            else
            {  
                //GetThe图符FeatureLayer(mapControl._AxMapControl).Visible = false;
 
            }
            if (is图符编号Checked)
            {
                //elementsDisplay(GetThe图符FeatureClass(mapControl._AxMapControl), "新图符", generateFont());
            }

            if (is数据集名称Checked)
            {
                stringDisplay(GetThe摄区FeatureClass(mapControl._AxMapControl), generateFont());
                //elementsDisplay(GetThe摄区FeatureClass(mapControl._AxMapControl), "Name",generateFont());
            }

            if (is数据集编号Checked)
            {
                stringDisplay(GetThe摄区FeatureClass(mapControl._AxMapControl), generateFont());
                //elementsDisplay(GetThe摄区FeatureClass(mapControl._AxMapControl), "Code",generateFont());
            }

            if (is显示影像种类Checked)
            {
                stringDisplay(GetThe摄区FeatureClass(mapControl._AxMapControl), generateFont());   
                //elementsDisplay(GetThe摄区FeatureClass(mapControl._AxMapControl), "ImgType",generateFont());
            }
            if (is显示时间属性Checked)
            {
                stringDisplay(GetThe摄区FeatureClass(mapControl._AxMapControl), generateFont());
                //elementsDisplay(GetThe摄区FeatureClass(mapControl._AxMapControl), "StartDate",generateFont());
                //elementsDisplay(GetThe摄区FeatureClass(mapControl._AxMapControl), "EndDate",generateFont());
            }       
        }

        //总查询控制
        private void TotalSearch()
        {
            mapControl._AxMapControl.Map.ClearSelection();
            IActiveView pActiveView = (IActiveView)mapControl._AxMapControl.Map;
            IFeatureClass pFeatureClass = GetThe摄区FeatureClass(mapControl._AxMapControl);
            IFeatureLayer pFeatureLayer = GetThe摄区FeatureLayer(mapControl._AxMapControl);
    
            IFeatureLayerDefinition pFeatureLayerDef = (IFeatureLayerDefinition)pFeatureLayer;

            IFeature pFeature;
            IFeatureCursor pFeatureCursor;
            IQueryFilter pQueryFilter = new QueryFilterClass();

            string strAnd = string.Empty;
            TotalSearchString = string.Empty;
            if (DataCatgreySearchString != string.Empty)
            {
                TotalSearchString += strAnd + DataCatgreySearchString;
                strAnd = " And ";
            }

            if (ScaleSearchString != string.Empty)
            {
                TotalSearchString += strAnd + ScaleSearchString;
                strAnd = " And ";
            }

            if (ResolutionSearchString != string.Empty)
            {
                TotalSearchString += strAnd + ResolutionSearchString;
                strAnd = " And ";
            }
            if (DateSearchString != string.Empty)
            {
                TotalSearchString += strAnd + DateSearchString;
                strAnd = "And";
            }

            pQueryFilter.WhereClause = TotalSearchString;

            pFeatureCursor = pFeatureClass.Search(pQueryFilter, false);
            this.pQueryFilter = pQueryFilter;
            pFeature = pFeatureCursor.NextFeature();
            while (pFeature != null)
            {
                mapControl._AxMapControl.Map.SelectFeature(pFeatureLayer, pFeature);
                pFeature = pFeatureCursor.NextFeature();
            }
            pFeatureLayerDef.DefinitionExpression = TotalSearchString;
            pActiveView.Refresh();
        }
      
        public DOMPropertyConditionControl()
        {
            InitializeComponent();
        }

        private Middle_Search_Map mapControl = null;
        public void SetMapControl(Middle_Search_Map control)
        {
            mapControl = control;
        }

        private IFeatureClass GetThe摄区FeatureClass(AxMapControl axMapControl)
        {
            IMap pMap = axMapControl.Map;
            IFeatureLayer pFeatureLayer;
            IFeatureClass pFeatureClass=null;
            for (int i = 0; i < pMap.LayerCount; i++)
            {
                pFeatureLayer = (IFeatureLayer)pMap.get_Layer(i);
                if (pFeatureLayer.FeatureClass.AliasName.ToUpper() == "FeatureImageBase.SDE.ShequFeature".ToUpper())
                {
                    pFeatureClass = pFeatureLayer.FeatureClass;

                }
    
            }
            return pFeatureClass;
        }
        private IFeatureLayer GetThe摄区FeatureLayer(AxMapControl axMapControl)
        {
            IMap pMap = axMapControl.Map;
            IFeatureLayer pFeatureLayer = null;
            IFeatureLayer pReaturnFeatureLayer = null;
            for (int i = 0; i < pMap.LayerCount; i++)
            {
                pFeatureLayer = (IFeatureLayer)pMap.get_Layer(i);
                if (pFeatureLayer.FeatureClass.AliasName.ToUpper() == "FeatureImageBase.SDE.ShequFeature".ToUpper())
                {
                    pReaturnFeatureLayer = pFeatureLayer;

                }

            }
            return pReaturnFeatureLayer;
        }

        private IFeatureClass GetThe图符FeatureClass(AxMapControl axMapControl)
        {
            IMap pMap = axMapControl.Map;
            IFeatureLayer pFeatureLayer;
            IFeatureClass pFeatureClass = null;
            for (int i = 0; i < pMap.LayerCount; i++)
            {
                pFeatureLayer = (IFeatureLayer)pMap.get_Layer(i);
                if (pFeatureLayer.FeatureClass.AliasName.ToUpper() == "sde2.SDE.图符".ToUpper())
                {
                    pFeatureClass = pFeatureLayer.FeatureClass;

                }

            }
            return pFeatureClass;
        }
        private IFeatureLayer GetThe图符FeatureLayer(AxMapControl axMapControl)
        {
            IMap pMap = axMapControl.Map;
            IFeatureLayer pFeatureLayer = null;
            IFeatureLayer pReaturnFeatureLayer = null;
            for (int i = 0; i < pMap.LayerCount; i++)
            {
                pFeatureLayer = (IFeatureLayer)pMap.get_Layer(i);
                if (pFeatureLayer.FeatureClass.AliasName.ToUpper() == "sde2.SDE.图符".ToUpper())
                {
                    pReaturnFeatureLayer = pFeatureLayer;

                }

            }
            return pReaturnFeatureLayer;
        }

        private IFeatureClass GetThe分区FeatureClass(AxMapControl axMapControl)
        {
            IMap pMap = axMapControl.Map;
            IFeatureLayer pFeatureLayer;
            IFeatureClass pFeatureClass = null;
            for (int i = 0; i < pMap.LayerCount; i++)
            {
                pFeatureLayer = (IFeatureLayer)pMap.get_Layer(i);
                if (pFeatureLayer.FeatureClass.AliasName.ToUpper() == "FeatureImageBase.SDE.FenquFeature".ToUpper())
                {
                    pFeatureClass = pFeatureLayer.FeatureClass;

                }

            }
            return pFeatureClass;
        }
        private IFeatureLayer GetThe分区FeatureLayer(AxMapControl axMapControl)
        {
            IMap pMap = axMapControl.Map;
            IFeatureLayer pFeatureLayer = null;
            IFeatureLayer pReaturnFeatureLayer = null;
            for (int i = 0; i < pMap.LayerCount; i++)
            {
                pFeatureLayer = (IFeatureLayer)pMap.get_Layer(i);
                if (pFeatureLayer.FeatureClass.AliasName.ToUpper() == "FeatureImageBase.SDE.FenquFeature".ToUpper())
                {
                    pReaturnFeatureLayer = pFeatureLayer;

                }

            }
            return pReaturnFeatureLayer;
        }

        private IFeatureClass GetThe像点FeatureClass(AxMapControl axMapControl)
        {
            IMap pMap = axMapControl.Map;
            IFeatureLayer pFeatureLayer;
            IFeatureClass pFeatureClass = null;
            for (int i = 0; i < pMap.LayerCount; i++)
            {
                pFeatureLayer = (IFeatureLayer)pMap.get_Layer(i);
                if (pFeatureLayer.FeatureClass.AliasName.ToUpper() == "FeatureImageBase.SDE.XiangdianFeature".ToUpper())
                {
                    pFeatureClass = pFeatureLayer.FeatureClass;

                }

            }
            return pFeatureClass;
        }
        private IFeatureLayer GetThe像点FeatureLayer(AxMapControl axMapControl)
        {
            IMap pMap = axMapControl.Map;
            IFeatureLayer pFeatureLayer=null;
            IFeatureLayer pReaturnFeatureLayer=null;
            for (int i = 0; i < pMap.LayerCount; i++)
            {
                pFeatureLayer = (IFeatureLayer)pMap.get_Layer(i);
                if (pFeatureLayer.FeatureClass.AliasName.ToUpper() == "FeatureImageBase.SDE.XiangdianFeature".ToUpper())
                {
                    pReaturnFeatureLayer = pFeatureLayer;

                }

            }
            return pReaturnFeatureLayer;
        }
     
        private IFeatureClass GetThe航线FeatureClass(AxMapControl axMapControl)
        {
            IMap pMap = axMapControl.Map;
            IFeatureLayer pFeatureLayer;
            IFeatureClass pFeatureClass = null;
            for (int i = 0; i < pMap.LayerCount; i++)
            {
                pFeatureLayer = (IFeatureLayer)pMap.get_Layer(i);
                if (pFeatureLayer.FeatureClass.AliasName.ToUpper() == "FeatureImageBase.SDE.HangxianFeature".ToUpper())
                {
                    pFeatureClass = pFeatureLayer.FeatureClass;

                }

            }
            return pFeatureClass;
        }

        private IFeatureLayer GetThe航线FeatureLayer(AxMapControl axMapControl)
        {
            IMap pMap = axMapControl.Map;
            IFeatureLayer pFeatureLayer = null;
            IFeatureLayer pReaturnFeatureLayer = null;
            for (int i = 0; i < pMap.LayerCount; i++)
            {
                pFeatureLayer = (IFeatureLayer)pMap.get_Layer(i);
                if (pFeatureLayer.FeatureClass.AliasName.ToUpper() == "FeatureImageBase.SDE.HangxianFeature".ToUpper())
                {
                    pReaturnFeatureLayer = pFeatureLayer;

                }

            }
            return pReaturnFeatureLayer;
        }

        //生成日期选择字符串
        private void generateDateConditon()
        {
            DateTime Today = DateTime.Today;
            DateTime TodayOfLastYear =DateTime.Today.AddYears(-1);
            DateTime TodayOfLastTwoYear= DateTime.Today.AddYears(-2);
            DateTime TodayOfLastThreeYear =  DateTime.Today.AddYears(-3);

            string strOr=string.Empty;
            string condition =string.Empty;          
           
            if (DateSearchString == "任意")
            {
                condition += strOr+"StartDate <> '' OR EndDate <> ''";
                strOr="Or";
            }
            else
            {
                if (DateSearchString == "今年")
                {
                    condition = strOr + " StartDate <" + "'" + Today.ToString("yyyy-MM-dd") + "'" + " And " + " EndDate > " + "'" + TodayOfLastYear.ToString("yyyy-MM-dd") + "'";
                        strOr = "Or";
                }
                else if (DateSearchString == "去年")
                {
                    condition = strOr + " StartDate <" + "'" + TodayOfLastYear.ToString("yyyy-MM-dd") + "'" + " And " + " EndDate > " + "'" + TodayOfLastTwoYear.ToString("yyyy-MM-dd") + "'";
                    strOr = "Or";
                }
                else if (DateSearchString == "近两年")
                {
                    condition = strOr + " StartDate <" + "'" + Today.ToString("yyyy-MM-dd") + "'" + " And " + " EndDate > " + "'" + TodayOfLastTwoYear.ToString("yyyy-MM-dd") + "'";
                    strOr = "Or";
                }
                else if (DateSearchString == "近三年")
                {
                    condition = strOr + " StartDate <" + "'" + Today.ToString("yyyy-MM-dd") + "'" + " And " + " EndDate > " + "'" + TodayOfLastThreeYear.ToString("yyyy-MM-dd")+"'";
                    strOr = "Or";
                }

            }

            if (condition == string.Empty)
            {
                DateSearchString = string.Empty;
            }
            else
            {
                DateSearchString = "(" + condition + ")";

            }
 
        }

        //生成数据类型选择字符串
        private void generateCategoryCondition()
        {
            string condition = string.Empty;
            string strOr = string.Empty;
            if (全色ToolStripCheckBox.Checked)
            {
                condition += strOr + "( ImgType like '%全色%' )";
                strOr = " OR ";
            }
            if (真彩ToolStripCheckBox.Checked)
            {
                condition += strOr + "( ImgType like '%真彩%' )";
                strOr = " OR ";
            }
            if (彩红外ToolStripCheckBox.Checked)
            {
                condition += strOr + "( ImgType like '%彩红外%' )";
                strOr = " OR ";
            }
            //if (原始零级ToolStripCheckBox.Checked)
            //{
            //    condition += strOr + "( ImgType like '%0级%' )";
            //    strOr = " OR ";
            //}

            if (condition == string.Empty)
                DataCatgreySearchString = string.Empty;
            else
                DataCatgreySearchString = "( " + condition + " )";
        }
        //完成查询和刷新
        private void refreshMap()
        {
            mapControl._AxMapControl.Map.ClearSelection();
            TotalSearch();
            mapControl._AxMapControl.ActiveView.Refresh();
        }

        #endregion

    }
}

抱歉!评论已关闭.