ArcEngine中使用IMap.FeatureSelection获取被选中的要素

  1. public void getSelectedFeature()    
  2.         {  
  3.            try    
  4.            {    
  5.             IMap map = axMapControl1.Map;  
  6.             ISelection selection = map.FeatureSelection;  
  7.             IEnumFeatureSetup iEnumFeatureSetup = (IEnumFeatureSetup)selection;  
  8.             iEnumFeatureSetup.AllFields = true;  
  9.             IEnumFeature enumFeature = (IEnumFeature)iEnumFeatureSetup;  
  10.             enumFeature.Reset();    
  11.             IFeature feature = enumFeature.Next();    
  12.             while (feature != null)    
  13.              {  
  14.                  string hehe = feature.get_Value(5).ToString();  
  15.                  MessageBox.Show(hehe);  
  16.                feature = enumFeature.Next();    
  17.              }    
  18.            }    
  19.            catch (Exception e)    
  20.            {  
  21.            }  
  22.         }  

Feature和FeatureClass关系:

1、FeaturLayer是加载在地图文档中的数据层,只是要素类的表现形式;FeatureClass是一组空间实体的集合,在数据表中存储了统一的属性和行为,每一个FeatureClass都有一个Geometry类型,如shp文件;

2、IFeatureLayer继承自ILayer,IFeatureClass继承自IClass;

3、FeatureLayer可以创建自己的对象,而FeatureClass不行:

IFeatureClass=IFeatureLayer.FeatureClass 或者

IFeatureClass=IFeatureWorkspace.openFeatureClass(“xx”)

Feature是实现了Ifeature接口的实体类.它指要素类中的一个要素.
FeatureClass指要素类,FeatureLayer指要素图层,真正代表图层的还是FeatureClass,FeatureFLayer只是一个表层的东西,举个简单的例子,当某个图层的数据源丢失的时候,你就要去判断FeatureLayer.FeatureClass!=null ,
通过IfeatureClass.CreateFeature可以在要素类中创建一个要素,然后通过Store方法保存.

Feature和FeatureClass转换:IFeature pFeature = o as IFeature; IFeatureClass pFeatureClass = pFeature.Class
as IFeatureClass;

转载自:https://blog.csdn.net/mar_ljh/article/details/45394349

You may also like...