首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 数据库 第二书店 程序员

Tag/ 


共1个网摘 [ 1 ]   |  

Engine中IFeatureClass.Search(filter, Recycling)方法中Recycling

koufeng收录,使用标签:Engine中IFeatureClass.Search(filter, Recycling)方法中Recycling,时间:2008-4-6 14:06:25 | 相关网摘我也收藏

ArcGIS Engine中总调用IFeatureClass.Search(filter, Recycling)方法,习惯中会把Recycling参数设置为False,但就是不理解为什么要设置为False,和True有什么差别。之前也看过Engine的帮助文档,但感觉越看越糊涂,前几天有自己看了一下,加上之前的使用经验和试验,大致领悟了其中的差异。
参数Recycling为True的时候理解为传引用,为False的时候理解为传值。因此在应用的时候应该注意的“传值”和“传址”的差异。
我们知道引用传递(“传址”)效率较高,因此在绘画要素的时候可以采用
True参数。但当要进行遍历后将Feature的Geometry加入某个集合或插入到其他
FeatureClass的时候,必须使用传值调用,即参数为False,否则我们加入的都是最后
一个变量中的Geometry(因为传地址嘛)。这个我们可以用如下VBA代码试验得出结
论。
Private Sub UISearch_Click()
Dim pDoc As IMxDocument
Set pDoc = ThisDocument
Dim pWS As IFeatureWorkspace
Dim pWSEdit As IWorkspaceEdit
Dim pDataset As IDataset

Dim pMap As IMap
Set pMap = pDoc.FocusMap
Dim pFLayer As IFeatureLayer
Set pFLayer = pMap.Layer(0)

Dim pFC As IFeatureClass
Dim pFeatureCursor As IFeatureCursor
Set pFC = pFLayer.FeatureClass


Dim pColl As Collection
Set pColl = New Collection

Set pFeatureCursor = pFC.Search(Nothing, False) ',True) '

Dim pFeat As IFeature
Set pFeat = pFeatureCursor.NextFeature
Dim i As Long
i = 0
Dim dArea As Double
Dim pPolygon As IPolygon
Dim pArea As IArea

dArea = 0
Set pFeat = pFeatureCursor.NextFeature
Do Until pFeat Is Nothing
i = i + 1
Set pPolygon = pFeat.Shape
Set pArea = pPolygon
'MsgBox pArea.Area
dArea = dArea + pArea.Area
Call pColl.Add(pPolygon)

Set pFeat = pFeatureCursor.NextFeature
Loop
'MsgBox i & ":" & dArea

Dim pPolygon2 As IPolygon
For i = 1 To pColl.Count
Set pPolygon2 = pColl.Item(i)
Set pArea = pPolygon2
'pFC.Search(Nothing, False)的时候,每次弹出面积信息不等,因为集合
(pColl)中的每个Geometry是不一样的,原因在于参数设为False是传值调用
'pFC.Search(Nothing, True)的时候,每次弹出面积信息相等,是因为集合
(pColl)中的每个Geometry是一样的,其实就是遍历的最后一个IGeometry,原因在于参数
设为False是传地址调用
MsgBox pArea.Area
Next i
End Sub
可以自己换一下Search方法的第二个参数就看出结果有所不同了,这个试验是
加入VB的Collection集合,如果插入到其他FeatureClass也是一样的。

原文地址:http://blog.sina.com.cn/s/blog_4ad115cb01000a4i.html



共1个网摘 [ 1 ] 

Tag/相关标签



    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved