![]()
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 }