关于获得IFeature的属性字段

最近在做管线的相关操作的时候涉及到了几何网络的相关内容,就是IGeometricNetwork这个接口的一些操作,我们在帮助文档的Network Analysis话题中可以找到相关的一些接口,注意不是Network Analyst哦!

在相关接口中我们通过IEIDHelepr,IEnumEIDInfo与IEIDInfo可以获得当前的Network中的某个NetElement对应的Feature,当我们获得这个Feature以后想要通过row[“字段”] = item.get_Value(item.Fields.FindField(“字段”));这样获得它的除了OBJECTID,Shape等空间字段以外的属性字段返回的都是null,也就是说这个feature并没有实际的包含了属性字段。

相信大家都在网上或者文档中看到过这样的代码:
ISelection selection = pMap.FeatureSelection;
  IEnumFeatureSetup enumFeatureSetup = selection as IEnumFeatureSetup;
  enumFeatureSetup.AllFields = true;
  IEnumFeature enumFeature = enumFeatureSetup as IEnumFeature;
  enumFeature.Reset();
  IFeature feature = enumFeature.Next();
  while (feature != null)
  {
  stringvalue = feature.get_Value(index).ToString();//就可以得到任意字段的值了
  feature = enumFeature.Next();
  }
这里我们获取的Feature要素选择集和上面所述的要素一样并没有包含属性字段的相关信息,所以需要相关的设置;
如果想要获得拥有属性字段的Feature,那么就需要获取IFeatureCursor接口的实例对象。

上面所述的我们获得的没有属性字段的Feature如何获得他的属性字段呢?
0-获取到该Feature所在的FeatureClass;
1-使用FeatureClass的GetFeature(int OID)方法再次获取到Feature
这里的OID可以通过之前的Feature.OID获得;
2-再次通过row[“字段”] = item.get_Value(item.Fields.FindField(“字段”));就可以获得到你想要的字段值了。


刚刚发现了一个新的方法,在此补充:
0-获得了Feature可以得到FeatureClass;
IFeatureClass iFeatureClass=iFeature.Class as IFeatureClass;
1-使用FeatureClass来获得某个字段的索引;
int index=iFeatureClass.Fields.FindField(“字段名”);
2-通过之前的Feature来获取值
string 字段值=iFeature.get_Value(index);

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值