有时我们需要读取图层中某个字段的所有值的唯一值集合,或做统计用途,或作为其他功能的输入。

一般通过IDataStatistics接口来获取唯一值集合,代码如下:

''' <summary>
    ''' 通过IDataStatistic接口获取图层指定字段的唯一值
    ''' </summary>
    ''' <param name='pFeatureLayer'>目标图层</param>
    ''' <param name='strField'>目标字段名</param>
    ''' <returns>目标字段的所有值的唯一值集合</returns>
    ''' <remarks></remarks>
    Public Function GetUVByDataStatisticsFunction GetUVByDataStatisticsByVal pFeatureLayer As IFeatureLayer, ByVal strField As String As IListOf String
        Dim uvList As IListOf String = New ListOf String

Dim pQueryFilter As IQueryFilter = New QueryFilter
        Dim pFeatureCur As IFeatureCursor
        pQueryFilter.SubFields = strField
        pFeatureCur = pFeatureLayer.FeatureClass.SearchpQueryFilter, True

Dim pDataStatic As IDataStatistics = New DataStatistics
        pDataStatic.Field = strField
        pDataStatic.Cursor = pFeatureCur
        Dim pEnumvar As System.Collections.IEnumerator = pDataStatic.UniqueValues
        pEnumvar.Reset
        While pEnumvar.MoveNext
            Dim pObj As Object = pEnumvar.Current
            uvList.AddpObj.ToString
        End While
        Return uvList
    End Function

但当图层的数据量很大时,以上这种方法执行起来速度较慢,性能影响比较明显,得考虑使用另外一种方法。通过IQueryDef接口使用类似SQL的查询语句来获取图层字段的唯一值集合,执行速度等同于执行SQL查询语句。

Public Function GetUVByQueryDefFunction GetUVByQueryDefByVal pFeatureLayer As IFeatureLayer, ByVal strField As String As IListOf String
        Dim uvList As IListOf String = New ListOf String

Dim pQueryDef As IQueryDef
        Dim pRow As IRow
        Dim pCursor As ICursor
        Dim pFeatureWorkspace As IFeatureWorkspace
        Dim pDataset As IDataset

pDataset = pFeatureLayer.FeatureClass
        pFeatureWorkspace = pDataset.Workspace
        pQueryDef = pFeatureWorkspace.CreateQueryDef
        With pQueryDef
            .Tables = pDataset.Name ' Fully qualified table name
            .SubFields = 'DISTINCT' & strField & ''
            pCursor = .Evaluate
        End With

pRow = pCursor.NextRow
        While Not pRow Is Nothing
            Dim pObj As Object = pRow.Value0
            uvList.AddpObj.ToString
            pRow = pCursor.NextRow
        End While
        Return uvList
    End Function

转载于:https://www.cnblogs.com/linhugh/articles/2520883.html

获取图层字段的唯一值集合(ArcEngine)相关推荐

  1. 【ArcGIS遇上Python】ArcGIS Python获取某个字段的唯一值(获取指定字段的不同属性值)

    以土地利用数据为例,DLMC字段为每个图斑的用地类型,怎样用Python代码获取该字段的属性唯一值? Python代码实现结果: Python源代码: import arcpy from arcpy ...

  2. 获取要素集中字段的唯一值

    /// <summary> /// 获取要素集中字段的唯一值 /// </summary> /// <param name="featureClass" ...

  3. ArcGIS按字段属性唯一值分割文件,分割出多个shp数据

    一.导出shp文件,选择分割字段和存储文件夹. 二.成果展示. 需要工具的联系作者QQ:875782548

  4. ArcEngine获取字段唯一值的三种方法

    在做GIS数据处理时,我们经常需要获取某个字段的唯一值.我在这里总结了三种方法,下面分别进行说明. 方法一:读取表记录 这种方法就是逐条读取记录,然后选用合适的数据结构进行查重,它的好处就在于:不必去 ...

  5. 获取DataTable字段唯一值(DISTINCT)

            /// <summary>         /// 将所选字段的唯一值复制到一个新的 DataTable.          /// <para>如果字段包含  ...

  6. ArcEngine C# GIS开发入门作业 (三)Ex04——实现地图的简单渲染和唯一值渲染

    文章评论 写评论 sinat_37432938: 可以说非常有参考的意义,谢谢分享 4周前 #2楼 举报回复查看回复(1) domen_dragon 回复 sinat_37432938: 哈哈,谢谢夸 ...

  7. 获取某一列_Excel VBA 8.2 获取多列唯一值,不用肉眼,VBA帮你快速搞定

    前景提要(文末提供源码下载) 昨天我们学习了针对单列的数据进行获取唯一值的方法,今天我们提升下难度,来尝试下获取已多列为参照物,获取唯一值的方法,昨天有很多小伙伴说还可以用字典的方法更加的简单,其实, ...

  8. 从python中的列表中获取唯一值[重复]

    本文翻译自:Get unique values from a list in python [duplicate] This question already has an answer here: ...

  9. python 获取唯一值_从Python列表中获取唯一值

    python 获取唯一值 In this article, we will be understanding 3 ways to get unique values from a Python lis ...

  10. 获取的字段值是空值或者为null,而你自己的需求就是想要获取的字段为一个 * 默认的值

    一.业务阐述 在开发中查询的数据库结果集,既要连接数据库.执行数据库操作.关闭数据库,还要把结果集的记录人为的设置到自己封装的DAO中等一系列的重复代码. 本文主要是想解决:用户只需要得到数据库连接, ...

最新文章

  1. 【身份认证及权限控制一】单点登录
  2. Unity3D 与 objective-c 之间数据交互。iOS SDK接口封装Unity3D接口
  3. java中 以下接口以键_java复习题
  4. jupyter notebook python环境_jupyter Notebook环境搭建
  5. TypeError: Cannot set properties of undefined (setting ‘innerHTML‘)
  6. Active Directory备份与还原
  7. matlab 图片最多显示几张_matlab 如何一次显示多个图像,subplot不合适
  8. Gantt - attachEvent事件监听 - 两个参数事件
  9. 计算机是怎么分类,计算机一般按什么分类
  10. Caffe框架的使用
  11. java web 视频教程下载_Java web(Servlet+Jsp),视频教程下载
  12. 【Pygame小游戏】魂斗罗经典BOSS都回来了 准备好再次击败他们了吗?(附源码)
  13. java统计有多少个单词_Java不同单词个数统计
  14. 币泳金:理安全的储存数字货币,冷钱包与热钱包的管理
  15. 司创电梯发卡软件_防复制电梯IC卡系统上位机管理软件设计
  16. 手机h5实现长按复制(支持安卓和ios)
  17. 易语言微信hook教程
  18. 示例程序 示例一、由 CLSID 得到 ProgID......
  19. android个人支付功能,个人app支付接入(三分钟搞定个人微信支付,支付宝支付问题)---贝贝支付...
  20. python实现最小堆

热门文章

  1. ashx中使用Session
  2. [19/06/08-星期六] CSS基础_表格表单
  3. python第二十二课——list函数
  4. Jmeter中主要管理器功用
  5. k8s踩坑记第2篇--3个IP折磨人的故事
  6. notepad++查看aspx
  7. SQL Server 触发器触发器
  8. php字符编码转换问题
  9. BigData | 一文带你搞清楚“数据倾斜”
  10. R语言初级教程: R编程环境的搭建