因为村相对于图斑要少得多,一个区县村通常只有近百个,而图斑达数万甚至几十万。如果用区县来选择图斑可以减少查询的次数,速度应该会快一点。所以我采用一个只读的Search Cursor内嵌套可更新的Update Cursor,我发现论坛上的那些人也是这样的模式,有些人说是Update Cursor锁定了表,对象没有释放,但是即便你用完后用Set pCursor = Nothing也于事无补。周末我有空就在思考这个问题,感觉应该把Update Cursor放在外面可能能够解决问题,结果真如我想象的那样,UpdateFeature工作得很好!
关键代码如下:
featureCount = 0
Set pLCursor = pLandUseFC.Update(Nothing, False)
Set pLFeature = pLCursor.NextFeature
Do While Not pLFeature Is Nothing
If IsNull(pLFeature.Value(fldLBlock)) Then
blockCode = ""
Else
blockCode = pLFeature.Value(fldLBlock)
End If
Set pSpatialFilter.Geometry = pLFeature.Shape
Set pVCursor = pVillageFC.Search(pSpatialFilter, False)
Set pVFeature = pVCursor.NextFeature
Do While Not pVFeature Is Nothing
If Not IsNull(pVFeature.Value(fldVBlock)) Then
If blockCode = "" Then
blockCode = pVFeature.Value(fldVBlock)
Else
blockCode = blockCode & "," & pVFeature.Value(fldVBlock)
End If
End If
Set pVFeature = pVCursor.NextFeature
Loop
pLFeature.Value(fldLBlock) = blockCode
pLCursor.UpdateFeature pLFeature
featureCount = featureCount + 1
If featureCount = 1000 Then
pLCursor.flush
featureCount = 0
End If
Set pLFeature = pLCursor.NextFeature
Loop
pLCursor.flush
382



被折叠的 条评论
为什么被折叠?



