摘要:在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没有尝试过) |