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

📄 form_query.cs

📁 C#+arcengine的一个适量数据编辑系统
💻 CS
📖 第 1 页 / 共 2 页
字号:
						//						if(m_FeatureClass.Fields.get_Field(j).Type==
						//							ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeGeometry) 
						//							    continue;
						FieldIndex=m_FeatureClass.Fields.FindField(comboBox_Field.Items[j].ToString());
						if(FieldIndex==-1) continue;
						if(m_FeatureClass.Fields.get_Field(FieldIndex).Type
							==ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeString)           //对string型字段搜索
						{
							SqlFilter=m_FeatureClass.Fields.get_Field(FieldIndex).Name + " Like '%" 
								+ comboBox_FeatureName.Text.ToString() + "%'";
							FindFeature(comboBox_TargetLayer.SelectedIndex - 1,SqlFilter);
						}
						//						if(m_FeatureClass.Fields.get_Field(FieldIndex).Type
						//							!=ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeString)
						//						{
						//							System.Windows.Forms.MessageBox.Show("暂时不能对非字符类型字段进行查找···");
						//							SqlFilter=m_FeatureClass.Fields.get_Field(FieldIndex).Name + "=" + comboBox_FeatureName.Text.ToString();
						//						    FindFeature(comboBox_TargetLayer.SelectedIndex - 1,SqlFilter);
						//						}					
					}
					
				}
				else                                                                                 //查找某一字段
				{
					FieldIndex=m_FeatureClass.Fields.FindField(comboBox_Field.Text);
					if(m_FeatureClass.Fields.get_Field(FieldIndex).Type
						==ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeString)           //对string型字段搜索
					{
						SqlFilter=m_FeatureClass.Fields.get_Field(FieldIndex).Name + " Like  '%" 
							+ comboBox_FeatureName.Text.ToString() + "%'";
						FindFeature(comboBox_TargetLayer.SelectedIndex - 1,SqlFilter);
					}
					if(m_FeatureClass.Fields.get_Field(FieldIndex).Type
						!=ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeString)
					{
						System.Windows.Forms.MessageBox.Show("暂时不能对非字符类型字段进行查找···");
						return;
						//						SqlFilter=m_FeatureClass.Fields.get_Field(FieldIndex).Name + "=" + comboBox_FeatureName.Text.ToString();
						//						FindFeature(comboBox_TargetLayer.SelectedIndex - 1,SqlFilter);
					}
				}		
			}
		}

		private void FindFeature(int LayerIndex,string Sqlstr)
		{
			IFeatureLayer m_FeatureLayer;
			m_FeatureLayer=(IFeatureLayer)m_MapControl.get_Layer(LayerIndex);
			
			

			IQueryFilter m_Filter;
			m_Filter=new QueryFilterClass();
			m_Filter.WhereClause=Sqlstr;                //sql条件语句
			
			
			m_FeatureCursor=m_FeatureLayer.Search(m_Filter,true);        //要素搜索方法

			IFeature m_Feature;
			m_Feature=m_FeatureCursor.NextFeature();

			listBox_Result.Items.Clear();                 //listBox_Result先清空原有记录
			while(m_Feature!=null)
			{
//				if(m_Feature.Shape.GeometryType==esriGeometryType.esriGeometryPoint)
//				{
//					IGeometry m_Point;
//					IPoint m_CenterPoint;
//					m_Point=m_Feature.Shape;
//					m_CenterPoint=new PointClass();
//					m_CenterPoint.X =m_Feature.Extent.XMax;
//					m_CenterPoint.Y=m_Feature.Extent.YMax;
//
//					IScreenDisplay pDisplay;
//					pDisplay=m_MapControl.ActiveView.ScreenDisplay;       //闪烁图形
//					FlashPoint(pDisplay,m_Point,5,300);

//					IEnvelope m_Env; 
//					m_Env=m_MapControl.ActiveView.Extent;   //放大定位
//					m_Env.CenterAt(m_CenterPoint);
//					m_Env.Expand(0.5,0.5,true); 
//					m_MapControl.ActiveView.Extent = m_Env; 

//					m_MapControl.ActiveView.Refresh();
//
//					m_MapControl.Map.SelectFeature(m_MapControl.get_Layer(LayerIndex),m_Feature);					
//				}
				listBox_Result.Items.Add(m_Feature.get_Value(3).ToString());           //要素名称(这个暂时没有通用性)
				result=true;              //找到要素记录
				m_Feature=m_FeatureCursor.NextFeature();

			}
		}


		private void FlashPoint(IScreenDisplay pDisplay,IGeometry pGeometry,int nTimer,int time)          //闪烁图形
		{
			ISimpleMarkerSymbol pPointSymbol;
			ISymbol pSymbol; 
			IRgbColor pRGBColor; 
		    
			pRGBColor=new RgbColorClass();
			pRGBColor.Red=255;
		    
			pPointSymbol=new SimpleMarkerSymbolClass();

			pPointSymbol.Color=pRGBColor;
			pSymbol=(ISymbol)pPointSymbol;
			pSymbol.ROP2=esriRasterOpCode.esriROPNotXOrPen;
		       
			pDisplay.StartDrawing(0,-1);
			pDisplay.SetSymbol(pSymbol);
		    
			for(int i=0;i< nTimer;i++)
			{
				pDisplay.DrawPoint(pGeometry);
				Thread.Sleep (time);
			}
			pDisplay.FinishDrawing();

		}

		private void Form_Query_Load(object sender, System.EventArgs e)
		{
			comboBox_TargetLayer.Items.Clear();
			comboBox_TargetLayer.Items.Add("所有图层");
			comboBox_TargetLayer.Text=comboBox_TargetLayer.Items[0].ToString();
			for(int i=0;i<=m_MapControl.Map.LayerCount-1;i++)
			{
				comboBox_TargetLayer.Items.Add(m_MapControl.Map.get_Layer(i).Name);
			}
			comboBox_Field.Items.Clear();
			comboBox_Field.Items.Add("所有字段");
			comboBox_Field.Text=comboBox_Field.Items[0].ToString();
			IFeatureLayer m_FeatureLayer;
			for(int i=0;i<=m_MapControl.Map.LayerCount - 1;i++)
			{
				m_FeatureLayer=(IFeatureLayer)m_MapControl.Map.get_Layer(i);
				IFeatureClass m_FeatureClass;
				m_FeatureClass=m_FeatureLayer.FeatureClass;
				for(int j=0;j<=m_FeatureClass.Fields.FieldCount - 1;j++)
				{
					if(m_FeatureClass.Fields.get_Field(j).Type!=ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeOID)
						if(m_FeatureClass.Fields.get_Field(j).Type!=
							ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeGeometry)
							for(int k=0;k<=comboBox_Field.Items.Count - 1;k++)
							{
								if(comboBox_Field.Items.IndexOf(m_FeatureClass.Fields.get_Field(j).Name)<0)
									comboBox_Field.Items.Add(m_FeatureClass.Fields.get_Field(j).Name);
							}
				}

			}	
		}

		private void comboBox_FeatureName_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
		{
			comboBox_FeatureName.Select(0,comboBox_FeatureName.Text.Length);
		
		}

		private void comboBox_TargetLayer_SelectedIndexChanged(object sender, System.EventArgs e)
		{
			comboBox_Field.Items.Clear();
			comboBox_Field.Items.Add("所有字段");
			comboBox_Field.Text=comboBox_Field.Items[0].ToString();
			IFeatureLayer m_FeatureLayer;
			if(comboBox_TargetLayer.SelectedIndex!=0)
			{
				m_FeatureLayer=(IFeatureLayer)m_MapControl.Map.get_Layer(comboBox_TargetLayer.SelectedIndex - 1);
				IFeatureClass m_FeatureClass;
				m_FeatureClass=m_FeatureLayer.FeatureClass;
				for(int i=0;i<=m_FeatureClass.Fields.FieldCount - 1;i++)
				{
					if(m_FeatureClass.Fields.get_Field(i).Type!=ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeOID)
						if(m_FeatureClass.Fields.get_Field(i).Type!=
							                               ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeGeometry)
					         comboBox_Field.Items.Add(m_FeatureClass.Fields.get_Field(i).Name);
				}
			}
			else
			{
				for(int i=0;i<=m_MapControl.Map.LayerCount-1;i++)
				{
					m_FeatureLayer=(IFeatureLayer)m_MapControl.Map.get_Layer(i);
					IFeatureClass m_FeatureClass;
					m_FeatureClass=m_FeatureLayer.FeatureClass;
					for(int j=0;j<=m_FeatureClass.Fields.FieldCount - 1;j++)
					{
						if(m_FeatureClass.Fields.get_Field(j).Type!=ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeOID)
							if(m_FeatureClass.Fields.get_Field(j).Type!=
								                               ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeGeometry)
                                for(int k=0;k<=comboBox_Field.Items.Count - 1;k++)
									{
										if(comboBox_Field.Items.IndexOf(m_FeatureClass.Fields.get_Field(j).Name)<0)
											comboBox_Field.Items.Add(m_FeatureClass.Fields.get_Field(j).Name);
									}
					}

				}
			}
		}

		private void comboBox_FeatureName_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
		{
			//回车确定
			if(e.KeyChar == (char)Keys.Enter)
			{
				result=false;           //初始化为false,没找到要素状态
				GetSQLString();         //生成SQl语句
				if(result==true)
				{
					for(int i =0; i < comboBox_FeatureName.Items.Count;i++)  //判断要添加的关键词是否已存在
					{
						if(comboBox_FeatureName.Items[i].ToString() == comboBox_FeatureName.Text)
							return;
					}
					comboBox_FeatureName.Items.Add(comboBox_FeatureName.Text);
				}
				else
				{
					System.Windows.Forms.MessageBox.Show("没有找到指定要素!");
				}
			}
											
		}

		private void button1_Click(object sender, System.EventArgs e)  //关闭窗体
		{
			this.Close();
		}

		private void comboBox_FeatureName_SelectedIndexChanged(object sender, System.EventArgs e)
		{
			result=false;           //初始化为false,没找到要素状态
			GetSQLString();         //生成SQl语句
			if(result==true)
			{
				for(int i =0; i < comboBox_FeatureName.Items.Count;i++)  //判断要添加的关键词是否已存在
				{
					if(comboBox_FeatureName.Items[i].ToString() == comboBox_FeatureName.Text)
						return;
				}
				comboBox_FeatureName.Items.Add(comboBox_FeatureName.Text);
			}
			else
			{
				System.Windows.Forms.MessageBox.Show("没有找到指定要素!");
			}		
		}

		private void listBox_Result_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
		{
			//单击记录,浏览定位到该要素
			if(result==true)
			{
				IFeatureCursor m_NewFeatureCursor;
				m_NewFeatureCursor=m_FeatureCursor;
				IFeature m_Feature;
				m_Feature=m_NewFeatureCursor.NextFeature();

				while(m_Feature!=null)
				{
					if(m_Feature.get_Value(3).ToString() == listBox_Result.SelectedItem.ToString())  //要素名称(这个暂时没有通用性)
					{
						if(m_Feature.Shape.GeometryType==esriGeometryType.esriGeometryPoint)
						{
							IGeometry m_Point;
							IPoint m_CenterPoint;
							m_Point=m_Feature.Shape;
							m_CenterPoint=new PointClass();
							m_CenterPoint.X =m_Feature.Extent.XMax;
							m_CenterPoint.Y=m_Feature.Extent.YMax;

							IScreenDisplay pDisplay;
							pDisplay=m_MapControl.ActiveView.ScreenDisplay;       //闪烁图形
							FlashPoint(pDisplay,m_Point,5,300);

							IEnvelope m_Env; 
							m_Env=m_MapControl.ActiveView.Extent;   //放大定位
							m_Env.CenterAt(m_CenterPoint);
							m_Env.Expand(0.5,0.5,true); 
							m_MapControl.ActiveView.Extent = m_Env; 
						}
					

						m_MapControl.ActiveView.Refresh();

//						m_MapControl.Map.SelectFeature(m_MapControl.get_Layer(LayerIndex),m_Feature);	
						
					}				
					m_Feature=m_FeatureCursor.NextFeature();
				}
			}
		}





		
		


	}
}

⌨️ 快捷键说明

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