ArcEngine中使用IMap.FeatureSelection获取被选中的要素
- public void getSelectedFeature()
- {
- try
- {
- IMap map = axMapControl1.Map;
- ISelection selection = map.FeatureSelection;
- IEnumFeatureSetup iEnumFeatureSetup = (IEnumFeatureSetup)selection;
- iEnumFeatureSetup.AllFields = true;
- IEnumFeature enumFeature = (IEnumFeature)iEnumFeatureSetup;
- enumFeature.Reset();
- IFeature feature = enumFeature.Next();
- while (feature != null)
- {
- string hehe = feature.get_Value(5).ToString();
- MessageBox.Show(hehe);
- feature = enumFeature.Next();
- }
- }
- catch (Exception e)
- {
- }
- }
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