删除重复的feature vba VS 删除重复的feature python
2024-08-28 01:07:51
VBA:
Sub deleteDuplicatedFeature() Dim app As IApplication
Set app = Application Dim pMxDocument As IMxDocument
Set pMxDocument = Application.Document Dim pMap As IMap
Set pMap = pMxDocument.FocusMap Dim pFeatureLayer As IFeatureLayer
Set pFeatureLayer = pMap.Layer() Dim pFeatureClass As IFeatureClass
Set pFeatureClass = pFeatureLayer.FeatureClass Dim pFeatureCursor As IFeatureCursor
Set pFeatureCursor = pFeatureClass.Search(Nothing, False) Dim pArea As IArea
Dim pRelOp As IRelationalOperator
Dim pFeature As IFeature
Set pFeature = pFeatureCursor.NextFeature Dim findex As Integer
findex = pFeatureClass.FindField("ifCopyed") Dim fid As Integer
fid = pFeatureClass.FindField("FID") Dim pFilter As ISpatialFilter Dim pFeatureCursorCompared As IFeatureCursor
Dim pFeatureCompared As IFeature
Dim pShapeCompared As IPolygon
Dim pAreaCompared As IArea While Not pFeature Is Nothing Set pRelOp = pFeature.Shape Set pFilter = New SpatialFilter With pFilter
Set .Geometry = pFeature.Shape
.GeometryField = "SHAPE"
.SpatialRel = esriSpatialRelIntersects
End With Set pFeatureCursorCompared = pFeatureClass.Search(pFilter, False)
Set pFeatureCompared = pFeatureCursorCompared.NextFeature While Not pFeatureCompared Is Nothing Set pShapeCompared = pFeatureCompared.Shape If pRelOp.Equals(pShapeCompared) And pFeature.Value(fid) <> pFeatureCompared.Value(fid) Then pFeatureCompared.Delete '删除之后,查询可以可以自动调节 End If Set pFeatureCompared = pFeatureCursorCompared.NextFeature
Wend Set pFeature = pFeatureCursor.NextFeature
Wend
Python:
#run this program at arcgis10.0 environment please
import arcpy fc = "D:\Output.shp" #change to your own shapefile desc = arcpy.Describe(fc) shapefieldname = desc.ShapeFieldName rows = arcpy.SearchCursor(fc) for row in rows:
rows2 = arcpy.UpdateCursor(fc)
for row2 in rows2:
if row.getValue(shapefieldname).equals(row2.getValue(shapefieldname)) and row.getValue("FID") != row2.getValue ("FID"):
rows2.deleteRow(row2)
del row2 del rows
区别:
1 vba繁琐,python简洁
2 vba要用到接口跳转,python没有接口概念,只有类或者函数
3 vba使用变量要先声明,python直接使用,不用声明
4 vba在arcgis10以后不支持了,python会被支持,而且python用途非常之广
5 vba和arcengine中思路非常类似,python开辟了一些新的思路,就像当初接触arcserver javascript api带来的新思路一样
6 vba可以继续使用,大力使用python
7 vba中缩进没有含义,python中缩进具有语法含义
8 vba中的循环和判断语句有开头和结尾(for......end,if......end),python中循环和判断语句有冒号(:)
文章来源:http://www.cnblogs.com/zhangjun1130/archive/2012/10/16/2726000.html
最新文章
- 如何在网页标题栏加入logo图标?
- 站内全文检索服务来了,Xungle提供免费全文检索服务
- JsonTest
- C++注意事项
- jQuery iframe之间相互调用
- 升级ruby后再安装cocodPod
- Macbook Pro安装win7
- gc之四--Minor GC、Major GC和Full GC之间的区别
- 关于IE调试模式下才能显示效果
- SEO 网站URL优化
- Ext.js form 表单提交问题
- CSS初始化-KISSY CSS Reset 1.0
- Week14(12月9日)
- 关于Android中so解析那些事
- Python 面向对象1-面向对象介绍
- android-基础编程-ExpandableListview
- U盘安装CentOS 7卡住在 mounting configuration file system
- Chronic sleep loss cannot be cured that easily
- ossec安装
- javascript总述