×
您的位置: 首页 > 编程笔记

用来获取图层中指定字段上的属性的Unique Value

UE 时间:2010-12-26  查看:702   收藏
摘要:在ArcMap中,进行属性查询的时候,Arcmap中提供了选中字段的属性的Unique Value。这样就可以从列表中选择了。以前也遇到类似问题,一直不知道怎么做,好在当时使用的ArcSDE Oracle数据,使用了一个SQL语句解决了。不过要是Coverage就没有办法了。其实AO中提供了这样的功能了,可通过IDataStatistics来实现,下面是今天中午的成果,做了一个函数,参数为图层和字段,返回该图层该字段的所有Unique Value 下面程序段是用来列出ArcMap中,指定图层和字段中,所有Unique Value 在ArcMap中,进行属性查询的时候,Arcmap中提供了选中字段的属性的Unique Value。这样就可以从列表中选择了。以前也遇到类似问题,一直不知道怎么做,好在当时使用的ArcSDE Oracle数据,使用了一个SQL语句解决了。不过要是Coverage就没有办法了。其实AO中提供了这样的功能了,可通过IDataStatistics来实现,下面是今天中午的成果,做了一个函数,参数为图层和字段,返回该图层该字段的所有Unique Value 下面程序段是用来列出ArcMap中,指定图层和字段中,所有Unique Value 2003年5月19日 兔八哥
Public Function listUniqueValue(pLayer As IFeatureLayer, pFieldName As String) As String()

 Dim pCursor As Icursor
 Set pCursor = pLayer.Search(Nothing, False)

 Dim pDataStat As IDataStatistics
 Dim pValue As Variant

 Set pDataStat = New DataStatistics
 pDataStat.Field = pFieldName
 Set pDataStat.Cursor = pCursor

 Dim pEnumVar As IEnumVariantSimple
 Set pEnumVar = pDataStat.UniqueValues

 pValue = pEnumVar.Next

 Dim I As Long
 Dim count As Long
 count = pDataStat.UniqueValueCount

 I = 0
 Dim value(200) As String 数组的长度按说应该使用pDataStat.UniqueValueCount来控制,但是编译只能使用
              常数,不能使用变量
 Do Until IsEmpty(pValue)
  value(I) = pValue
  I = I + 1
  pValue = pEnumVar.Next
 Loop
 listUniqueValue = value()

End Function

(说明:该函数兔八哥只在ArcMap VBA中运行过,没有问题,VB+AO没有尝试过)

 

0% (0)
0% (0)