使用engine查询图层的属性表

 使用engine查询图层的属性表,有几个入口,可以通过

IFeatureLayer.FeatureClass 其中可以得到各个Field,也可以通过getFeature再查找相应的属性值

也可以通过 ((IDisplayTable)IFeatureLayer).DisplayTable来查询,从这个入口查询就类似于表单的查询了,是通过行列来查询值

 

这两种查询方式的主要区别在于:当图层与数据表进行了join之后,第一种,也即通过FeatureClass的查询方式不能查询到join的数据表中的内容,而第二种,也即通过IDisplayTable来查询可以查询到join的数据表的内容。

 

例:当图层与数据表进行了join之后,要针对数据表的某个字段来进行render,使用IDataStatistics接口来获取唯一值时,就应该使用以下代码:

IDisplayTable pDTab = (IDisplayTable)m_FeatureLayer; ICursor cursor = (ICursor)pDTab.SearchDisplayTable(null, false); IDataStatistics dataStatistics = new DataStatisticsClass(); dataStatistics.Field = fldname; dataStatistics.Cursor = cursor; System.Collections.IEnumerator enumerator = dataStatistics.UniqueValues; enumerator.Reset(); enumerator.MoveNext()

 

而不是:

IFeatureClass pFeatCls = pGeoFeatureLayer.FeatureClass; ICursor cursor = (ICursor)pFeatCls.Search(null, false); IDataStatistics dataStatistics = new DataStatisticsClass(); dataStatistics.Field = fldname; dataStatistics.Cursor = cursor; System.Collections.IEnumerator enumerator = dataStatistics.UniqueValues; enumerator.Reset(); enumerator.MoveNext();

你可能感兴趣的:(JOIN,null)