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 }

 

转载于:https://www.cnblogs.com/rockman/p/3324836.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
c# 读取.mdb中的栅格数据 string path = @"E:\zxl\npgDB.mdb"; axMapControl1.ActiveView.Clear(); axMapControl1.ActiveView.Refresh(); pFWorkspace = OpenAccessWorkspace(path, pFWorkspace); IFeatureLayer iflayer; iflayer = new FeatureLayerClass(); iflayer.FeatureClass = pFWorkspace.OpenFeatureClass("地标"); axMapControl1.AddLayer(iflayer, 0); IFeatureLayer featureLayer = iflayer; //this.axMapControl1.Map.get_Layer(0) as IFeatureLayer; IFeatureCursor featureCursor; IFeature feature; IGeometry geometry; IActiveView activeView = this.axMapControl1.ActiveView; ITopologicalOperator topo; featureCursor = featureLayer.FeatureClass.Search(null, false); feature = featureCursor.NextFeature(); ISpatialFilter spatialFilter = new SpatialFilterClass(); IFeatureSelection featureSelection; if (feature != null) { MessageBox.Show("if","tishi"); topo = feature.Shape as ITopologicalOperator; //double bufferLength = ConvertPixelsToMapUnits(activeView, 2); //geometry = topo.Buffer(bufferLength); geometry = topo.Buffer(1000); spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects; spatialFilter.Geometry = geometry; spatialFilter.GeometryField = featureLayer.FeatureClass.ShapeFieldName; spatialFilter.SubFields = "name"; spatialFilter.WhereClause = "name='第一教学楼'"; featureSelection = featureLayer as IFeatureSelection; featureSelection.SelectFeatures(spatialFilter, esriSelectionResultEnum.esriSelectionResultNew, false); ISelectionSet selectionSet = featureSelection.SelectionSet; ICursor cursor; selectionSet.Search(null, true, out cursor); featureCursor = cursor as IFeatureCursor; feature = featureCursor.NextFeature(); while (feature != null) { MessageBox.Show("while", "tishi"); this.axMapControl1.Map.SelectFeature(featureLayer, feature); feature = featureCursor.NextFeature(); } // activeView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null); activeView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, geometry.Envelope); } } private void button13_Click(object sender, EventArgs e) { string path = @"E:\zxl\npgDB.mdb"; axMapControl1.ActiveView.Clear(); axMapControl1.ActiveView.Refresh(); pFWorkspace = OpenAccessWorkspace(path, pFWorkspace); IFeatureLayer iflayer; iflayer = new FeatureLayerClass(); iflayer.FeatureClass = pFWorkspace.OpenFeatureClass("地标"); axMapControl1.AddLayer(iflayer, 0); Filter filter = new Filter(); ISpatialFilter filter1=new SpatialFilterClass(); filter1.WhereClause=""; //filter1. = "CITY_NAME = 'Phoenix'"; //Envelope envelope = new Envelope(-119, 32, -113, 35); //filter1.Geometry = envelope; //DisplayBuffer displaybuffer = new DisplayBuffer(); //displaybuffer.Distance = 200; //displaybuffer.Units = BufferUnits.Miles; //SimpleRenderer bufferrenderer = new SimpleRenderer(); //SimpleFillSymbol sfs = new SimpleFillSymbol(); //sfs.Color = System.Drawing.Color.Yellow; //sfs.Transparency = 50.0; //bufferrenderer.Symbol = sfs; //FeatureLayer bufferlayer = iflayer.CreateBufferLayer(filter, displaybuffer, bufferrenderer, "mybuffer"); //mapview.Layers.Add(bufferlayer); //mapview.Draw(); Geoprocessor gp=new Geoprocessor();

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值