AE实现属性查询(主要接口:IFeatureCursor、IQueryFilter、IFeatureSelection)

it2024-07-05  43

private void button1_Click(object sender, EventArgs e) { IFeatureLayer flyr = axMapControl1.Map.get_Layer(0) as IFeatureLayer; IFeatureClass fl = flyr.FeatureClass; //null表示未设置查询条件,true表示不能修改 IFeatureCursor cursor = fl.Search(null, true); IFeature fea = cursor.NextFeature(); int cnt = 0; while (fea != null) { cnt = cnt + 1; fea = cursor.NextFeature(); } MessageBox.Show(cnt.ToString()); } private void button2_Click(object sender, EventArgs e) { IFeatureLayer lyr = axMapControl1.Map.get_Layer(0) as IFeatureLayer; IFeatureClass fc = lyr.FeatureClass; IQueryFilter flter = new QueryFilterClass(); flter.WhereClause = "Name='锦江区'"; IFeatureCursor cursor = fc.Search(flter, true);//true表示只读 IFeature fea = cursor.NextFeature(); int cnt = 0; while (fea != null) { cnt += 1; fea = cursor.NextFeature(); } MessageBox.Show(cnt.ToString()); } //IFeatureSelect中的SelectFeatures方法可以实现查询并高亮显示 private void button3_Click(object sender, EventArgs e) { IFeatureLayer lyr = axMapControl1.Map.get_Layer(0) as IFeatureLayer; IFeatureSelection fsec = lyr as IFeatureSelection; //定义查询过滤条件 IQueryFilter flt = new QueryFilterClass(); flt.WhereClause = "省代码=510000"; //false表示查询不只是显示查询中的一个要素 fsec.SelectFeatures(flt,esriSelectionResultEnum.esriSelectionResultNew,false); ISelectionSet set = fsec.SelectionSet; MessageBox.Show(set.Count.ToString()); axMapControl1.Refresh(); }
最新回复(0)