AE基础(6)数据查询与选择
1 using ESRI.ArcGIS.Carto; 2 using ESRI.ArcGIS.Controls; 3 using ESRI.ArcGIS.Geodatabase; 4 using ESRI.ArcGIS.Geometry; 5 using System; 6 using System.Collections.Generic; 7 using System.ComponentModel; 8 using System.Data; 9 using System.Drawing; 10 using System.Linq; 11 using System.Text; 12 using System.Threading.Tasks; 13 using System.Windows.Forms; 14 15 namespace Ch0207 16 { 17 public partial class Form1 : Form 18 { 19 public Form1() 20 { 21 InitializeComponent(); 22 } 23 24 private void Form1_Click(object sender, EventArgs e) 25 { 26 loadMapDocument(); 27 } 28 29 int flag = 0; 30 private void button1_Click(object sender, EventArgs e) 31 { 32 //点选 33 flag = 1; 34 } 35 36 private void button2_Click(object sender, EventArgs e) 37 { 38 //圆选 39 flag = 2; 40 } 41 42 private void button3_Click(object sender, EventArgs e) 43 {//矩形 44 flag = 3; 45 } 46 47 private void button4_Click(object sender, EventArgs e) 48 {//多边形 49 flag = 4; 50 } 51 52 private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e) 53 { 54 axMapControl1.MousePointer = esriControlsMousePointer.esriPointerCrosshair; 55 IGeometry geometry=null; 56 switch (flag) 57 { 58 case 1://点选 59 ESRI.ArcGIS.Geometry.Point point = new ESRI.ArcGIS.Geometry.Point(); 60 point.X = e.mapX; 61 point.Y = e.mapY; 62 geometry = point as IGeometry; 63 break; 64 case 2://圆选 65 geometry = axMapControl1.TrackCircle(); 66 break; 67 case 3://矩形 68 geometry = axMapControl1.TrackRectangle(); 69 break; 70 case 4://多边形选 71 geometry=axMapControl1.TrackPolygon(); 72 break; 73 74 } 75 axMapControl1.Map.SelectByShape(geometry,null,false); 76 axMapControl1.Refresh(esriViewDrawPhase.esriViewGeoSelection,null,null); 77 } 78 //加载地图文档 79 private void loadMapDocument() 80 { 81 System.Windows.Forms.OpenFileDialog openFileDialog; 82 openFileDialog = new OpenFileDialog(); 83 openFileDialog.Title = "打开地图文档"; 84 openFileDialog.Filter = "map documents(*.mxd)|*.mxd"; 85 openFileDialog.ShowDialog(); 86 string filePath = openFileDialog.FileName; 87 if (axMapControl1.CheckMxFile(filePath)) 88 { 89 axMapControl1.MousePointer = esriControlsMousePointer.esriPointerHourglass; 90 axMapControl1.LoadMxFile(filePath, 0, Type.Missing); 91 axMapControl1.MousePointer = esriControlsMousePointer.esriPointerDefault; 92 } 93 else 94 { 95 MessageBox.Show(filePath + "不是有效的地图文档"); 96 } 97 } 98 99 private void button6_Click(object sender, EventArgs e) 100 { 101 //清楚选择 102 IActiveView activeView = axMapControl1.Map as IActiveView; 103 activeView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection,axMapControl1.get_Layer(0),null); 104 axMapControl1.Map.ClearSelection(); 105 activeView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, axMapControl1.get_Layer(0), null); 106 } 107 108 private void button5_Click(object sender, EventArgs e) 109 { 110 //名称查询 111 string name = textBox1.Text.Trim(); 112 ILayer layer = axMapControl1.get_Layer(0); 113 IFeatureLayer featureLayer = layer as IFeatureLayer; 114 IFeatureClass featureClass = featureLayer.FeatureClass; 115 IQueryFilter queryFilter = new QueryFilter(); 116 IFeature feature = null;//"GNIS_Name" = 'Blue Creek' 117 queryFilter.WhereClause = "GNIS_Name like '%"+name+"%'"; 118 119 IFeatureCursor featureCursor; 120 featureCursor = featureClass.Search(queryFilter, true); 121 feature = featureCursor.NextFeature(); 122 123 if (feature != null) 124 { 125 axMapControl1.Map.SelectFeature(axMapControl1.get_Layer(0),feature); 126 axMapControl1.Refresh(esriViewDrawPhase.esriViewGeoSelection,null,null); 127 } 128 } 129 130 131 132 133 } 134 }