关于IFeatureClass和IFeatureLayer中的Search的区别
来源:互联网 发布:工程测量软件下载 编辑:程序博客网 时间:2024/05/21 13:54
近来做关于打开图层属性表时有个小发现,就是在遍历图层中的要素时要用的Search方法,但是IFeatureClass和IFeatureLayer中都有这个方法,到底用哪个呢?测试了下,如果用IFeatureClass中的Search方法,那么打开的是原始图层中所有元素的属性,那么即使我对一个图层进行了编辑,比如删除了这个图层中的某些要素,但是打开属性表时里面的数据内容还是原始图层的内容。因此,要想对更新后的图层进行属性表的浏览,就要用到IFeatureLayer.Search方法了。
现在贴出打开属性表的代码,以便更直观的展示给大家。
Public Sub LoadDatatoView(ByVal pFeatureLayer As ILayer, ByVal dtGridView As DataGridView)
Dim aa As IFeatureLayer = CType(pFeatureLayer, IFeatureLayer)
Dim pFields As IFields = aa.FeatureClass.Fields
Dim pDataTable As New DataTable
Dim i As Int32
For i = 0 To pFields.FieldCount - 1
Dim fldName As String
fldName = pFields.Field(i).AliasName
pDataTable.Columns.Add(fldName)
Next
Dim pFeatureCursor As IFeatureCursor
Dim pQueryFilter As IQueryFilter '查询过滤器
pQueryFilter = New QueryFilter '创建一个新的查询过滤器
pQueryFilter.WhereClause = ""
pFeatureCursor = aa.Search(pQueryFilter, False)
Dim pFeature As IFeature
pFeature = pFeatureCursor.NextFeature()
While (Not pFeature Is Nothing)
Dim j As Int32
Dim fldValue As String
Dim dr As DataRow = pDataTable.NewRow()
For j = 0 To pFields.FieldCount - 1
Dim fldName As String
fldName = pFields.Field(j).AliasName
If fldName = "Shape" Then
If pFeature.Shape.GeometryType = 1 Then
fldValue = "point"
ElseIf pFeature.Shape.GeometryType = 3 Then
fldValue = "polyline"
ElseIf pFeature.Shape.GeometryType = 4 Then
fldValue = "polygon"
Else
fldValue = "unknown type"
End If
Else
fldValue = pFeature.Value(j).ToString()
End If
dr(j) = fldValue
Next
pDataTable.Rows.Add(dr)
pFeature = pFeatureCursor.NextFeature()
End While
dtGridView.DataSource = pDataTable
End Sub
其中的pfeatureCursor = aa.Search(pQueryFilter, False),这句话aa是IFeatureLayer,而不是IFeatureClass.
现在贴出打开属性表的代码,以便更直观的展示给大家。
Public Sub LoadDatatoView(ByVal pFeatureLayer As ILayer, ByVal dtGridView As DataGridView)
Dim aa As IFeatureLayer = CType(pFeatureLayer, IFeatureLayer)
Dim pFields As IFields = aa.FeatureClass.Fields
Dim pDataTable As New DataTable
Dim i As Int32
For i = 0 To pFields.FieldCount - 1
Dim fldName As String
fldName = pFields.Field(i).AliasName
pDataTable.Columns.Add(fldName)
Next
Dim pFeatureCursor As IFeatureCursor
Dim pQueryFilter As IQueryFilter '查询过滤器
pQueryFilter = New QueryFilter '创建一个新的查询过滤器
pQueryFilter.WhereClause = ""
pFeatureCursor = aa.Search(pQueryFilter, False)
Dim pFeature As IFeature
pFeature = pFeatureCursor.NextFeature()
While (Not pFeature Is Nothing)
Dim j As Int32
Dim fldValue As String
Dim dr As DataRow = pDataTable.NewRow()
For j = 0 To pFields.FieldCount - 1
Dim fldName As String
fldName = pFields.Field(j).AliasName
If fldName = "Shape" Then
If pFeature.Shape.GeometryType = 1 Then
fldValue = "point"
ElseIf pFeature.Shape.GeometryType = 3 Then
fldValue = "polyline"
ElseIf pFeature.Shape.GeometryType = 4 Then
fldValue = "polygon"
Else
fldValue = "unknown type"
End If
Else
fldValue = pFeature.Value(j).ToString()
End If
dr(j) = fldValue
Next
pDataTable.Rows.Add(dr)
pFeature = pFeatureCursor.NextFeature()
End While
dtGridView.DataSource = pDataTable
End Sub
其中的pfeatureCursor = aa.Search(pQueryFilter, False),这句话aa是IFeatureLayer,而不是IFeatureClass.
- 关于IFeatureClass和IFeatureLayer中的Search的区别
- IFeatureClass to IFeaturelayer,IRater to IRasterlayer
- IFeatureClass.Search Method
- Python中的re.search和re.findall之间的区别
- linear search 和 binary search的区别
- IFeatureClass.Search(filter, Recycling)方法中Recycling参数的含义简介
- Engine中IFeatureClass.Search(filter, Recycling)方法中Recycling参数的理解
- 关于Search和Uninformed Search
- Python中的re.search和re.findall之间的区别2
- python 中,match和search的区别
- execl find和search函数的区别
- Python里面search()和match()的区别?
- python题目-----search()和match()的区别
- IFeatureClass.Search(IQuery Filter,bool Recycling)参数说明
- IFeatureClass.Search(IQuery Filter,bool Recycling)参数说明
- IFeatureClass.Search(IQuery Filter,bool Recycling)第二个参数说明
- 关于 HTTP 中的 Get 和 Post 方法的区别?
- 关于java异常中的throws和throw的区别
- zend framework 1.11 中缺省数据配置是如何读取和存储的
- sql 语句
- 如何配置商业管理
- ERROR:dpkg return code(1)
- 近几年高考报名人数考研人数趋势
- 关于IFeatureClass和IFeatureLayer中的Search的区别
- 面试问题--约瑟夫环
- sybase查看用户正在运行的sql语句
- dreamweaver中灵活的调整表格的宽高
- 人事管理决策
- 设备管理要以人为本
- 关于VirtualBox虚拟机安装GhostXP出现蓝屏processr.sys 的解决办法
- 得得得
- 关于aspnet_regsql的使用