获取图层字段的唯一值集合(ArcEngine)
有时我们需要读取图层中某个字段的所有值的唯一值集合,或做统计用途,或作为其他功能的输入。
一般通过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)相关推荐
- 【ArcGIS遇上Python】ArcGIS Python获取某个字段的唯一值(获取指定字段的不同属性值)
以土地利用数据为例,DLMC字段为每个图斑的用地类型,怎样用Python代码获取该字段的属性唯一值? Python代码实现结果: Python源代码: import arcpy from arcpy ...
- 获取要素集中字段的唯一值
/// <summary> /// 获取要素集中字段的唯一值 /// </summary> /// <param name="featureClass" ...
- ArcGIS按字段属性唯一值分割文件,分割出多个shp数据
一.导出shp文件,选择分割字段和存储文件夹. 二.成果展示. 需要工具的联系作者QQ:875782548
- ArcEngine获取字段唯一值的三种方法
在做GIS数据处理时,我们经常需要获取某个字段的唯一值.我在这里总结了三种方法,下面分别进行说明. 方法一:读取表记录 这种方法就是逐条读取记录,然后选用合适的数据结构进行查重,它的好处就在于:不必去 ...
- 获取DataTable字段唯一值(DISTINCT)
/// <summary> /// 将所选字段的唯一值复制到一个新的 DataTable. /// <para>如果字段包含 ...
- ArcEngine C# GIS开发入门作业 (三)Ex04——实现地图的简单渲染和唯一值渲染
文章评论 写评论 sinat_37432938: 可以说非常有参考的意义,谢谢分享 4周前 #2楼 举报回复查看回复(1) domen_dragon 回复 sinat_37432938: 哈哈,谢谢夸 ...
- 获取某一列_Excel VBA 8.2 获取多列唯一值,不用肉眼,VBA帮你快速搞定
前景提要(文末提供源码下载) 昨天我们学习了针对单列的数据进行获取唯一值的方法,今天我们提升下难度,来尝试下获取已多列为参照物,获取唯一值的方法,昨天有很多小伙伴说还可以用字典的方法更加的简单,其实, ...
- 从python中的列表中获取唯一值[重复]
本文翻译自:Get unique values from a list in python [duplicate] This question already has an answer here: ...
- python 获取唯一值_从Python列表中获取唯一值
python 获取唯一值 In this article, we will be understanding 3 ways to get unique values from a Python lis ...
- 获取的字段值是空值或者为null,而你自己的需求就是想要获取的字段为一个 * 默认的值
一.业务阐述 在开发中查询的数据库结果集,既要连接数据库.执行数据库操作.关闭数据库,还要把结果集的记录人为的设置到自己封装的DAO中等一系列的重复代码. 本文主要是想解决:用户只需要得到数据库连接, ...
最新文章
- 【身份认证及权限控制一】单点登录
- Unity3D 与 objective-c 之间数据交互。iOS SDK接口封装Unity3D接口
- java中 以下接口以键_java复习题
- jupyter notebook python环境_jupyter Notebook环境搭建
- TypeError: Cannot set properties of undefined (setting ‘innerHTML‘)
- Active Directory备份与还原
- matlab 图片最多显示几张_matlab 如何一次显示多个图像,subplot不合适
- Gantt - attachEvent事件监听 - 两个参数事件
- 计算机是怎么分类,计算机一般按什么分类
- Caffe框架的使用
- java web 视频教程下载_Java web(Servlet+Jsp),视频教程下载
- 【Pygame小游戏】魂斗罗经典BOSS都回来了 准备好再次击败他们了吗?(附源码)
- java统计有多少个单词_Java不同单词个数统计
- 币泳金:理安全的储存数字货币,冷钱包与热钱包的管理
- 司创电梯发卡软件_防复制电梯IC卡系统上位机管理软件设计
- 手机h5实现长按复制(支持安卓和ios)
- 易语言微信hook教程
- 示例程序 示例一、由 CLSID 得到 ProgID......
- android个人支付功能,个人app支付接入(三分钟搞定个人微信支付,支付宝支付问题)---贝贝支付...
- python实现最小堆