|
|
|
|

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

在ArcMap中,进行属性查询的时候,Arcmap中提供了选中字段的属性的Unique Value。这样就可以从列表中选择了。以前也遇到类似问题,一直不知道怎么做,好在当时使用的ArcSDE Oracle数据,使用了一个SQL语句解决了。不过要是Coverage就没有办法了。...

作者:兔八哥来源:GIS空间站|2006年07月01日
在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没有尝试过)

上一篇:分幅地图拼接后期处理-----自己的一点想…

下一篇:ArcGIS中坐标系统小议